luobang vor 2 Jahren
Ursprung
Commit
0658e8bcc6

+ 2 - 0
src/main/java/com/steerinfo/dil/mapper/StatisticalReportMapper.java

@@ -121,4 +121,6 @@ public interface StatisticalReportMapper {
 
     int updateTw(BigDecimal weightTaskId, BigDecimal dataToBigDecimal);
 
+    List<Map<String, Object>> saleSteelReportContinue(Map<String, Object> map);
+
 }

+ 93 - 25
src/main/java/com/steerinfo/dil/service/impl/StatisticalReportImpl.java

@@ -11,6 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.web.bind.annotation.RequestBody;
 
+import javax.xml.crypto.Data;
 import java.math.BigDecimal;
 import java.util.*;
 
@@ -373,30 +374,6 @@ public class StatisticalReportImpl implements IStatisticalReportService {
         return saleSteelReport;
     }
 
-    private Set<Map<String, Object>> setListMap(List<Map<String, Object>> list, String name) {
-        Set<Map<String, Object>> setString = new HashSet<>();
-        for (Map<String, Object> map : list) {//遍历每条数据
-            Map<String, Object> map1 = new HashMap<>();
-            //map.get(name)获取每条数据中对应表头字段的数据
-            map1.put("text", map.get(name));
-            if (map.get(name) != null) {
-                map1.put("value", map.get(name));
-                setString.add(map1);
-            }
-        }
-        return setString;
-    }
-
-    //public PageListAdd tableColumnData(Integer apiId, List<Map<String, Object>> list, List<Map<String,Object>> data) {
-    //    for (Map<String, Object> columnData : columnDataList) {
-    //        //每个表头字段的过滤条件
-    //        columnData.put("filters", setListMap(data, columnData.get("prop").toString()));
-    //    }
-    //    PageListAdd pageList = new PageListAdd(data);
-    //    pageList.setColumnData(columnDataList);
-    //    return pageList;
-    //}
-
 
     @Override
     public List<Map<String, Object>> getSaleSteelSpellingReport(Map<String, Object> mapValue) {
@@ -511,9 +488,100 @@ public class StatisticalReportImpl implements IStatisticalReportService {
 
     @Override
     public List<Map<String, Object>> steelTransportReport(Map<String, Object> map) {
+        //查询出来的结果是根据省(承运方向)、市(承运线路)、承运商、运单状态来分组,不含自提车辆,默认查询时间为昨天八点到今天早上八点
         List<Map<String, Object>> saleSteelReport = statisticalReportMapper.steelTransportReport(map);
+        //再查询今天继续装的归在昨天
+        List<Map<String,Object>> saleSteelReportContinue = statisticalReportMapper.saleSteelReportContinue(map);
+        saleSteelReport.addAll(saleSteelReportContinue);
+        List<Map<String,Object>> mapList = new ArrayList<>();
+        for (int i=0 ;i < saleSteelReport.size();i++) {
+            //map里面key有省、市、承运商、运单状态
+            Map<String, Object> stringObjectMap  = saleSteelReport.get(i);
+            stringObjectMap.put("arrageTruckNumber",0);
+            stringObjectMap.put("enFactoryLoading",0);
+            stringObjectMap.put("unEnfactory",0);
+            stringObjectMap.put("unArragePlanTruckNumber",0);
+            stringObjectMap.put("actuallyFinish",0);
+            if(i == 0) {
+                if(stringObjectMap.get("orderStatusByOrder") != null) {
+                    stringObjectMap.put("arrageTruckNumber",DataChange.dataToBigDecimal(stringObjectMap.get("planTruckNumber")).intValue());
+                    //进厂待装是进了厂,排队中的,且订单状态为5的
+                    if(DataChange.dataToBigDecimal(stringObjectMap.get("orderStatusByOrder")).intValue() == 5
+                            && ("排队中".equals(stringObjectMap.get("orderStatusByResult")) || "已进厂".equals(stringObjectMap.get("orderStatusByResult")))){
+                        stringObjectMap.put("enFactoryLoading",DataChange.dataToBigDecimal(stringObjectMap.get("planTruckNumber")).intValue());
+                    }
+                    if(DataChange.dataToBigDecimal(stringObjectMap.get("orderStatusByOrder")).intValue() == 4 ||
+                            (DataChange.dataToBigDecimal(stringObjectMap.get("orderStatusByOrder")).intValue() == 5 && "已接收".equals(stringObjectMap.get("orderStatusByResult")))){
+                        stringObjectMap.put("unEnfactory",DataChange.dataToBigDecimal(stringObjectMap.get("planTruckNumber")).intValue());
+                        //已该条件去查询,那些未进厂是什么情况
+                        //List<Map<String,Object>> remarkList =
+                    }
+                    stringObjectMap.put("actuallyFinish",DataChange.dataToBigDecimal(stringObjectMap.get("planTruckNumber")).intValue() -
+                            DataChange.dataToBigDecimal(stringObjectMap.get("enFactoryLoading")).intValue() -
+                            DataChange.dataToBigDecimal(stringObjectMap.get("unEnfactory")).intValue());
+                }else{
+                    stringObjectMap.put("unArragePlanTruckNumber",DataChange.dataToBigDecimal(stringObjectMap.get("unArragePlanTruckNumber")).intValue());
+                }
+                mapList.add(stringObjectMap);
+            }else{
+                Map<String,Object> spanMap = mapList.get(mapList.size() - 1);
+                //判断如果承运方向和承运商相同,就需要进行处理,否则加进数组
+                String carrierDirection = spanMap.get("carrierDirection").toString();
+                String carrierDirection1 = stringObjectMap.get("carrierDirection").toString();
+                String carrier = spanMap.get("carrier").toString();
+                String carrier1 = stringObjectMap.get("carrier").toString();
+                if(carrier.compareTo(carrier1) == 0 && carrierDirection.compareTo(carrierDirection1) == 0){
+                    //首先,将承运线路拼进来
+                    if(!spanMap.get("carrierLine").toString().contains(stringObjectMap.get("carrierLine").toString())) {
+                        spanMap.put("carrierLine",spanMap.get("carrierLine") + "、" + stringObjectMap.get("carrierLine"));
+                    }
+                    //然后计算销售下达计划车数
+                    spanMap.put("planTruckNumber",DataChange.dataToBigDecimal(spanMap.get("planTruckNumber")).intValue() + DataChange.dataToBigDecimal(stringObjectMap.get("planTruckNumber")).intValue());
+                    //计算承运商安排运力数(不含取消)
+                    if(stringObjectMap.get("orderStatusByOrder") != null) {
+                        spanMap.put("arrageTruckNumber",DataChange.dataToBigDecimal(spanMap.get("arrageTruckNumber")).intValue() + DataChange.dataToBigDecimal(stringObjectMap.get("planTruckNumber")).intValue());
+                        //进厂待装是进了厂,排队中的,且订单状态为5的
+                        if(DataChange.dataToBigDecimal(stringObjectMap.get("orderStatusByOrder")).intValue() == 5
+                                && ("排队中".equals(stringObjectMap.get("orderStatusByResult")) || "已进厂".equals(stringObjectMap.get("orderStatusByResult")))){
+                            spanMap.put("enFactoryLoading",DataChange.dataToBigDecimal(stringObjectMap.get("planTruckNumber")).intValue() + DataChange.dataToBigDecimal(spanMap.get("enFactoryLoading")).intValue());
+                        }
+                        //未进厂是订单状态为4或者已接收
+                        if(DataChange.dataToBigDecimal(stringObjectMap.get("orderStatusByOrder")).intValue() == 4 ||
+                                (DataChange.dataToBigDecimal(stringObjectMap.get("orderStatusByOrder")).intValue() == 5 && "已接收".equals(stringObjectMap.get("orderStatusByResult")))){
+                            spanMap.put("unEnfactory",DataChange.dataToBigDecimal(stringObjectMap.get("planTruckNumber")).intValue() + DataChange.dataToBigDecimal(spanMap.get("unEnfactory")).intValue());
+                        }
+                        spanMap.put("actuallyFinish",DataChange.dataToBigDecimal(spanMap.get("planTruckNumber")).intValue() -
+                                DataChange.dataToBigDecimal(spanMap.get("enFactoryLoading")).intValue() -
+                                DataChange.dataToBigDecimal(spanMap.get("unEnfactory")).intValue());
+                    }else{
+                        spanMap.put("unArragePlanTruckNumber",DataChange.dataToBigDecimal(spanMap.get("unArragePlanTruckNumber")).intValue() + DataChange.dataToBigDecimal(stringObjectMap.get("planTruckNumber")).intValue());
+                    }
+                }else{
+                    if(stringObjectMap.get("orderStatusByOrder") != null) {
+                        stringObjectMap.put("arrageTruckNumber",DataChange.dataToBigDecimal(stringObjectMap.get("planTruckNumber")).intValue());
+                        //进厂待装是进了厂,排队中的,且订单状态为5的
+                        if(DataChange.dataToBigDecimal(stringObjectMap.get("orderStatusByOrder")).intValue() == 5
+                                && ("排队中".equals(stringObjectMap.get("orderStatusByResult")) || "已进厂".equals(stringObjectMap.get("orderStatusByResult")))){
+                            stringObjectMap.put("enFactoryLoading",DataChange.dataToBigDecimal(stringObjectMap.get("planTruckNumber")).intValue());
+                        }
+                        //未进厂是订单状态为4或者已接收
+                        if(DataChange.dataToBigDecimal(stringObjectMap.get("orderStatusByOrder")).intValue() == 4 ||
+                                (DataChange.dataToBigDecimal(stringObjectMap.get("orderStatusByOrder")).intValue() == 5 && "已接收".equals(stringObjectMap.get("orderStatusByResult")))){
+                            spanMap.put("unEnfactory",DataChange.dataToBigDecimal(stringObjectMap.get("planTruckNumber")).intValue() + DataChange.dataToBigDecimal(spanMap.get("unEnfactory")).intValue());
+                        }
+                        stringObjectMap.put("actuallyFinish",DataChange.dataToBigDecimal(stringObjectMap.get("planTruckNumber")).intValue() -
+                                DataChange.dataToBigDecimal(stringObjectMap.get("enFactoryLoading")).intValue() -
+                                DataChange.dataToBigDecimal(stringObjectMap.get("unEnfactory")).intValue());
+                    }else{
+                    stringObjectMap.put("unArragePlanTruckNumber",DataChange.dataToBigDecimal(stringObjectMap.get("unArragePlanTruckNumber")).intValue());
+                }
+                    mapList.add(stringObjectMap);
+                }
+            }
 
-        return saleSteelReport;
+
+        }
+        return mapList;
     }
 
     public int testTb() {

+ 95 - 2
src/main/resources/com/steerinfo/dil/mapper/StatisticalReportMapper.xml

@@ -2006,7 +2006,6 @@
                         end
                         ) "capacityNumbers",
                     NVL(R_CARRIER.CARRIER_ID,0) "carrierIds",
-                    OO.CAN_WORK     "canwork",
                     OO.ORDER_STATUS              "carStatus",
                     RSA.AREA_NAME "areaName",
                     OO.INSERT_UPDATE_REMARK "orderInsertUpdateRemark",
@@ -3470,6 +3469,7 @@
         NVL(R_CARRIER.CARRIER_ID,0) "carrierIds",
         OO.CAN_WORK     "canwork",
         OO.ORDER_STATUS              "carStatus",
+        ASOM.TRUCK_REMARK       "truckRemark",
         RSA.AREA_NAME "areaName",
         RSA.AREA_NAME "saleArea",
         DECODE(ASO.SALE_ORDER_STATUS,1,'销售订单已上报',
@@ -3834,7 +3834,52 @@
         )
     </select>
     <select id="steelTransportReport" resultType="java.util.Map">
-
+        SELECT
+        RRA.ADDRESS_PROVINCE "carrierDirection",
+        RRA.ADDRESS_DISTRICT|| RRA.ADDRESS_TOWN "carrierLine",
+        R_CARRIER.CARRIER_ABBREVIATION "carrier",
+        COUNT( ASOM.SALE_ORDER_MATERIAL_ID ) "planTruckNumber",
+        OO.ORDER_STATUS "orderStatusByOrder",
+        TTR.ORDER_STATUS "orderStatusByResult"
+        FROM
+        AMS_SALE_ORDER ASO
+        LEFT JOIN AMS_SALE_ORDER_MATERIAL ASOM ON ASOM.SALE_ORDER_ID = ASO.SALE_ORDER_ID
+        LEFT JOIN RMS_RECEIVE_PLACE RRP ON RRP.PLACE_ID = ASOM.SALE_SHIPPING_ADDRESS_ID
+        LEFT JOIN RMS_RECEIVE_ADDRESS RRA ON RRA.ADDRESS_ID = RRP.ADDRESS_ID
+        LEFT JOIN AMS_DISPATCH_SALE_ORDER ADSO ON ADSO.SALE_ORDER_MATERIAL_ID = ASOM.SALE_ORDER_MATERIAL_ID
+        LEFT JOIN RMS_CARRIER R_CARRIER ON R_CARRIER.CARRIER_ID = ADSO.CARRIER_ID
+        LEFT JOIN OMSTRUCK_ORDER OO ON OO.ORDER_PLAN_ID = ASOM.SALE_ORDER_MATERIAL_ID
+        AND NVL( OO.ORDER_TYPE, 0 ) IN ( 0, 1 )
+        LEFT JOIN TMSTRUCK_TOTAL_RESULT TTR ON TTR.ORDER_ID = OO.ORDER_ID
+        WHERE
+        ASO.SALE_ORDER_ISSELF_MENTION = '否'
+        AND NVL(OO.CAPACITY_ID,0) != 35128
+        AND (
+        aso.DELETED BETWEEN 1
+        AND 2
+        AND aso.SALE_ORDER_STATUS = 4
+        OR aso.DELETED = 0
+        AND aso.SALE_ORDER_STATUS BETWEEN 0
+        AND 4
+        )
+        AND R_CARRIER.CARRIER_ABBREVIATION IS NOT NULL
+        AND NVL(ASOM.WARRANTY_NUMBER,0) = 0
+        AND NVL(OO.ORDER_STATUS,0) IN (0,2,4,5)
+        AND ASO.SALE_TYPE = 1
+        <if test="oneDate != null">
+            and to_date(#{oneDate}, 'yyyy-mm-dd') &lt;= to_date(to_char(ASOM.SALE_DATE_OF_RECEIPT-1,'yyyy-mm-dd'),'yyyy-mm-dd')
+        </if>
+        <if test="startDate != null">
+            and to_date(#{startDate}, 'yyyy-mm-dd') &lt;=  to_date(to_char(ASOM.SALE_DATE_OF_RECEIPT-1,'yyyy-mm-dd'),'yyyy-mm-dd')
+            and to_date(#{endDate}, 'yyyy-mm-dd') >=  to_date(to_char(ASOM.SALE_DATE_OF_RECEIPT-1,'yyyy-mm-dd'),'yyyy-mm-dd')
+        </if>
+        GROUP BY
+        RRA.ADDRESS_PROVINCE,
+        RRA.ADDRESS_DISTRICT|| RRA.ADDRESS_TOWN,
+        R_CARRIER.CARRIER_ABBREVIATION,
+        OO.ORDER_STATUS,
+        TTR.ORDER_STATUS
+        ORDER BY RRA.ADDRESS_PROVINCE,R_CARRIER.CARRIER_ABBREVIATION
     </select>
     <select id="getNoSaleterialIdWeight" resultType="java.util.Map">
         SELECT DISTINCT OO.ORDER_ID "orderId",
@@ -3871,4 +3916,52 @@
         SET TWR.SALE_MATERIAL_ID = #{dataToBigDecimal}
         WHERE TWR.WEIGHT_TASK_RESULT_ID = #{weightTaskId}
     </update>
+    <select id="saleSteelReportContinue" resultType="java.util.Map">
+        SELECT
+        RRA.ADDRESS_PROVINCE "carrierDirection",
+        RRA.ADDRESS_DISTRICT|| RRA.ADDRESS_TOWN "carrierLine",
+        R_CARRIER.CARRIER_ABBREVIATION "carrier",
+        COUNT( ASOM.SALE_ORDER_MATERIAL_ID ) "planTruckNumber",
+        OO.ORDER_STATUS "orderStatusByOrder",
+        TTR.ORDER_STATUS "orderStatusByResult"
+        FROM
+        AMS_SALE_ORDER ASO
+        LEFT JOIN AMS_SALE_ORDER_MATERIAL ASOM ON ASOM.SALE_ORDER_ID = ASO.SALE_ORDER_ID
+        LEFT JOIN RMS_RECEIVE_PLACE RRP ON RRP.PLACE_ID = ASOM.SALE_SHIPPING_ADDRESS_ID
+        LEFT JOIN RMS_RECEIVE_ADDRESS RRA ON RRA.ADDRESS_ID = RRP.ADDRESS_ID
+        LEFT JOIN AMS_DISPATCH_SALE_ORDER ADSO ON ADSO.SALE_ORDER_MATERIAL_ID = ASOM.SALE_ORDER_MATERIAL_ID
+        LEFT JOIN RMS_CARRIER R_CARRIER ON R_CARRIER.CARRIER_ID = ADSO.CARRIER_ID
+        LEFT JOIN OMSTRUCK_ORDER OO ON OO.ORDER_PLAN_ID = ASOM.SALE_ORDER_MATERIAL_ID
+        AND NVL( OO.ORDER_TYPE, 0 ) IN ( 0, 1 )
+        LEFT JOIN TMSTRUCK_TOTAL_RESULT TTR ON TTR.ORDER_ID = OO.ORDER_ID
+        WHERE
+        ASO.SALE_ORDER_ISSELF_MENTION = '否'
+        AND NVL(OO.CAPACITY_ID,0) != 35128
+        AND (
+        aso.DELETED BETWEEN 1
+        AND 2
+        AND aso.SALE_ORDER_STATUS = 4
+        OR aso.DELETED = 0
+        AND aso.SALE_ORDER_STATUS BETWEEN 0
+        AND 4
+        )
+        AND R_CARRIER.CARRIER_ABBREVIATION IS NOT NULL
+        AND NVL(ASOM.WARRANTY_NUMBER,0) = 1
+        AND NVL(OO.ORDER_STATUS,0) IN (0,2,4,5)
+        AND ASO.SALE_TYPE = 1
+        <if test="oneDate != null">
+            and to_date(#{oneDate} , 'yyyy-mm-dd') &lt;= to_date(to_char(ASOM.SALE_DATE_OF_RECEIPT-2,'yyyy-mm-dd'),'yyyy-mm-dd')
+        </if>
+        <if test="startDate != null">
+            and to_date(#{startDate} , 'yyyy-mm-dd') &lt;=  to_date(to_char(ASOM.SALE_DATE_OF_RECEIPT-2,'yyyy-mm-dd'),'yyyy-mm-dd')
+            and to_date(#{endDate} , 'yyyy-mm-dd') >=  to_date(to_char(ASOM.SALE_DATE_OF_RECEIPT-2,'yyyy-mm-dd'),'yyyy-mm-dd')
+        </if>
+        GROUP BY
+        RRA.ADDRESS_PROVINCE,
+        RRA.ADDRESS_DISTRICT|| RRA.ADDRESS_TOWN,
+        R_CARRIER.CARRIER_ABBREVIATION,
+        OO.ORDER_STATUS,
+        TTR.ORDER_STATUS
+        ORDER BY RRA.ADDRESS_PROVINCE,R_CARRIER.CARRIER_ABBREVIATION
+    </select>
 </mapper>