Browse Source

针对方大钢铁钢材报表

shxiaoc 1 year ago
parent
commit
e772c86d57

+ 66 - 0
src/main/java/com/steerinfo/dil/controller/StatisticalReportController.java

@@ -770,6 +770,72 @@ public class StatisticalReportController extends BaseRESTfulController {
         return success(report);
     }
 
+    @ApiOperation(value="查询销售统计报表")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "mapValue", value = "表头和参数", required = false, dataType = "map"),
+            @ApiImplicitParam(name = "apiId(423)", value = "动态表头", required = false, dataType = "Integer"),
+            @ApiImplicitParam(name = "pageNum", value = "页码", required = false, dataType = "Integer"),
+            @ApiImplicitParam(name = "pageSize", value = "页", required = false, dataType = "Integer"),
+            @ApiImplicitParam(name = "status", value = "状态码", required = false, dataType = "Integer"),
+    })
+    @PostMapping("/getSaleSteelReportFD")
+    public RESTfulResult getSaleSteelReportFD(@RequestBody(required=false) Map<String,Object> map,
+                                            String startTime,
+                                            String endTime,
+                                            String carrierSsoId,
+                                            String receiveName,
+                                            String materialName,
+                                            String specification,
+                                            String remark,
+                                            String capacityNo,
+                                            String carrierName,
+                                            String consigneeName,
+                                            String saler,
+                                            String easPrimaryId
+    ){
+        DataChange.queryDataByDateTimeYestDay(startTime, endTime, map, sdfDateTime);//根据时间段查询数据
+        if(carrierSsoId != null){
+            if(!"null".equals(carrierSsoId) && carrierSsoId != null){
+                map.put("carrierSsoId", carrierSsoId);
+            }
+        }
+        if (receiveName != null && !"null".equals(receiveName)) {
+            map.put("receivName","%" + receiveName + "%");
+        }
+        if (remark != null && !"".equals(remark) && !"null".equals(remark)) {
+            map.put("remark","%" + remark + "%");
+        }
+        if (capacityNo != null && !"".equals(capacityNo) && !"null".equals(capacityNo)) {
+            map.put("capacityNum","%" + capacityNo + "%");
+        }
+        if (carrierName != null && !"".equals(carrierName) && !"null".equals(carrierName)) {
+            map.put("carrierNames","%" + carrierName + "%");
+        }
+        if (consigneeName != null && !"".equals(consigneeName) && !"null".equals(consigneeName)) {
+            map.put("consigneeNames","%" + consigneeName + "%");
+        }
+        if (saler != null && !"".equals(saler) && !"null".equals(saler)) {
+            //如果业务员登录进来,就去查询业务员所关联的片区
+            List<String> saleAreaRemark = statisticalReportService.getSaleAreaRemark(saler);
+            if(saleAreaRemark.size() > 0) {
+                map.put("saleAreaRemark",saleAreaRemark);
+            }
+            map.put("salers",saler);
+        }
+        if (easPrimaryId != null && !"".equals(easPrimaryId) && !"null".equals(easPrimaryId)) {
+            map.put("easPrimaryId",easPrimaryId);
+        }
+        if(map.get("orderStatusActuallyList") == null || ((List<?>)map.get("orderStatusActuallyList")).size() < 1){
+            List<String> orderStatusActuallyList = new ArrayList<>();
+            orderStatusActuallyList.add("已出厂");
+            orderStatusActuallyList.add("已完成");
+            map.put("orderStatusActuallyList", orderStatusActuallyList);
+        }
+        //分页数据
+        List<Map<String, Object>> report = statisticalReportService.getSaleSteelReportFD(map);
+        return success(report);
+    }
+
     @ApiOperation(value="查询销售统计报表")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "mapValue", value = "表头和参数", required = false, dataType = "map"),

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

@@ -78,6 +78,8 @@ public interface StatisticalReportMapper {
     //查询销售钢材统计报表
     List<Map<String, Object>> getSaleSteelReport(Map<String, Object> mapValue);
 
+    List<Map<String, Object>> getSaleSteelReportFD(Map<String, Object> mapValue);
+
     //查询销售钢材统计报表
     List<Map<String, Object>> getSaleSteelSpellingReport(Map<String, Object> mapValue);
 

+ 2 - 0
src/main/java/com/steerinfo/dil/service/IStatisticalReportService.java

@@ -75,6 +75,8 @@ public interface IStatisticalReportService {
 
     List<Map<String, Object>> getSaleSteelReport(Map<String, Object> mapValue);
 
+    List<Map<String, Object>> getSaleSteelReportFD(Map<String, Object> mapValue);
+
     List<Map<String, Object>> getSaleSteelReportNew(Map<String, Object> mapValue);
 
     List<Map<String, Object>> getSettledSaleSteelReportNew(Map<String, Object> mapValue);

+ 178 - 0
src/main/java/com/steerinfo/dil/service/impl/StatisticalReportImpl.java

@@ -432,6 +432,184 @@ public class StatisticalReportImpl implements IStatisticalReportService {
         return saleSteelReport;
     }
 
+    @Override
+    public List<Map<String, Object>> getSaleSteelReportFD(Map<String, Object> mapValue) {
+        List<Map<String, Object>> saleSteelReport = statisticalReportMapper.getSaleSteelReportFD(mapValue);
+        HashSet set = new HashSet<>();
+        HashSet quxiaoSet = new HashSet();
+        HashSet<Map<String,Object>> filterConsigneeList = new HashSet<>();
+        HashSet<Map<String,Object>> filterCarrierList = new HashSet<>();
+        HashSet<Map<String,Object>> filterCapacityList = new LinkedHashSet<>();
+        HashSet<Map<String,Object>> filtermaterialNameList = new HashSet<>();
+        HashSet<Map<String,Object>> filterorderStatus = new HashSet<>();
+        HashSet<Map<String,Object>> filterorderStatusActually = new HashSet<>();
+        HashSet<Map<String,Object>> filteraddressPlace = new HashSet<>();
+        HashSet<Map<String,Object>> filtermaterialSpe = new HashSet<>();
+        HashSet<Map<String,Object>> filterSaleRemark = new HashSet<>();
+        HashSet<Map<String,Object>> filterTruckRemark = new HashSet<>();
+        HashSet<Map<String,Object>> filterAreaName = new HashSet<>();
+        int totalNumber = 0;
+        BigDecimal totalNetWeight = new BigDecimal(0);
+        for (int j = 0; j < saleSteelReport.size();j++) {
+            Map<String,Object> stringObjectMap = saleSteelReport.get(j);
+            //车牌号筛选
+
+            stringObjectMap.put("rowKey",j + 1);
+            if(j == 0) {
+                stringObjectMap.put("group",j);
+                //根据车序号ID去查询正常状态分录的个数
+                //BigDecimal spellNum = statisticalReportMapper.getSpellNum(DataChange.dataToBigDecimal(stringObjectMap.get("saleOrderMaterialId")));
+                //stringObjectMap.put("spellNum",spellNum);
+                Map<String,Object> filterCapacityMap = new HashMap<>();
+                filterCapacityMap.put("text","空白");
+                filterCapacityMap.put("value","空白");
+                filterCapacityList.add(filterCapacityMap);
+                Map<String,Object> filterCapacityMap1 = new HashMap<>();
+                filterCapacityMap1.put("text","取消");
+                filterCapacityMap1.put("value","取消");
+                filterCapacityList.add(filterCapacityMap1);
+            }else{
+                if((saleSteelReport.get(j-1).get("saleOrderMaterialId")).equals(stringObjectMap.get("saleOrderMaterialId"))){
+                    stringObjectMap.put("group",saleSteelReport.get(j-1).get("group"));
+                    //stringObjectMap.put("spellNum",saleSteelReport.get(j-1).get("spellNum"));
+                }else{
+                    stringObjectMap.put("group",Integer.parseInt(saleSteelReport.get(j-1).get("group").toString()) + 1);
+                    //BigDecimal spellNum = statisticalReportMapper.getSpellNum(DataChange.dataToBigDecimal(stringObjectMap.get("saleOrderMaterialId")));
+                    //stringObjectMap.put("spellNum",spellNum);
+                }
+            }
+            if(!"取消".equals(stringObjectMap.get("newCapacityNo"))) {
+                set.add(stringObjectMap.get("saleOrderMaterialId"));
+            }else{
+                quxiaoSet.add(stringObjectMap.get("saleOrderMaterialId"));
+            }
+            Map<String,Object> filterCapacityMap = new HashMap<>();
+            if(stringObjectMap.get("newCapacityNo") == null) {
+                filterCapacityMap.put("text","空白");
+                filterCapacityMap.put("value","空白");
+            }else{
+                filterCapacityMap.put("text",stringObjectMap.get("newCapacityNo"));
+                filterCapacityMap.put("value",stringObjectMap.get("newCapacityNo"));
+            }
+            filterCapacityList.add(filterCapacityMap);
+            calculateDifferenceTime(stringObjectMap);
+            //收货客户筛选
+            Map<String, Object> filterConsigneeMap = new HashMap<>();
+            filterConsigneeMap.put("text",stringObjectMap.get("consigneeName"));
+            filterConsigneeMap.put("value",stringObjectMap.get("consigneeName"));
+            filterConsigneeList.add(filterConsigneeMap);
+            //承运商筛选
+            Map<String,Object> filterCarrierMap = new HashMap<>();
+            filterCarrierMap.put("text",stringObjectMap.get("carrierName"));
+            filterCarrierMap.put("value",stringObjectMap.get("carrierName"));
+            filterCarrierList.add(filterCarrierMap);
+            //物资筛选
+            Map<String,Object> filtermaterialNameMap = new HashMap<>();
+            filtermaterialNameMap.put("text",stringObjectMap.get("materialName"));
+            filtermaterialNameMap.put("value",stringObjectMap.get("materialName"));
+            filtermaterialNameList.add(filtermaterialNameMap);
+            //运单状态筛选
+            Map<String,Object> filterorderStatusMap = new HashMap<>();
+            filterorderStatusMap.put("text",stringObjectMap.get("orderStatus"));
+            filterorderStatusMap.put("value",stringObjectMap.get("orderStatus"));
+            filterorderStatus.add(filterorderStatusMap);
+            //运单实际状态筛选
+            Map<String,Object> filterorderStatusActuallyMap = new HashMap<>();
+            filterorderStatusActuallyMap.put("text",stringObjectMap.get("orderStatusActually"));
+            if("已派单".equals(stringObjectMap.get("orderStatusActually"))) {
+                filterorderStatusActuallyMap.put("text","未接收");
+            }
+            filterorderStatusActuallyMap.put("value",stringObjectMap.get("orderStatusActually"));
+            filterorderStatusActually.add(filterorderStatusActuallyMap);
+            //收货地址筛选
+            Map<String,Object> filteraddressPlaceMap = new HashMap<>();
+            filteraddressPlaceMap.put("text",stringObjectMap.get("addressPlace"));
+            filteraddressPlaceMap.put("value",stringObjectMap.get("addressPlace"));
+            filteraddressPlace.add(filteraddressPlaceMap);
+            //物资规格筛选
+            Map<String,Object> filtermaterialSpeMap = new HashMap<>();
+            filtermaterialSpeMap.put("text",stringObjectMap.get("materialSpe"));
+            filtermaterialSpeMap.put("value",stringObjectMap.get("materialSpe"));
+            filtermaterialSpe.add(filtermaterialSpeMap);
+            //摘要筛选
+            Map<String,Object> filterSaleRemarkMap = new HashMap<>();
+            filterSaleRemarkMap.put("text",stringObjectMap.get("saleRemark"));
+            filterSaleRemarkMap.put("value",stringObjectMap.get("saleRemark"));
+            filterSaleRemark.add(filterSaleRemarkMap);
+            //备注筛选
+            Map<String,Object> filterTruckRemarkMap = new HashMap<>();
+            filterTruckRemarkMap.put("text",stringObjectMap.get("truckRemark"));
+            filterTruckRemarkMap.put("value",stringObjectMap.get("truckRemark"));
+            filterTruckRemark.add(filterTruckRemarkMap);
+            //片区筛选
+            Map<String,Object> filterAreaNameMap = new HashMap<>();
+            filterAreaNameMap.put("text",stringObjectMap.get("areaName"));
+            filterAreaNameMap.put("value",stringObjectMap.get("areaName"));
+            filterAreaName.add(filterAreaNameMap);
+            if(!"取消".equals(stringObjectMap.get("newCapacityNo"))) {
+                totalNumber += Integer.parseInt(stringObjectMap.get("materialNum").toString());
+                if(j == 0) {
+                    totalNetWeight = totalNetWeight.add(DataChange.dataToBigDecimal(stringObjectMap.get("netWeight")));
+                }
+                if(j > 0 && DataChange.dataToBigDecimal(stringObjectMap.get("weightBatchId")).compareTo(DataChange.dataToBigDecimal(saleSteelReport.get(j-1).get("weightBatchId"))) != 0) {
+                    totalNetWeight = totalNetWeight.add(DataChange.dataToBigDecimal(stringObjectMap.get("netWeight")));
+                }
+            }
+            String capacityNumbers= (String) stringObjectMap.get("capacityNumbers");
+            //确认是否有多个收货单位
+            //if (shippingAddressIds !=null && !("".equals(shippingAddressIds))){
+            //    String[] split = shippingAddressIds.split(",");
+            //    String address="";
+            //    int i=0;
+            //    for (String s : split) {
+            //        i++;
+            //        String getaddress = getaddress(DataChange.dataToBigDecimal(s));
+            //        if (i==1){
+            //            address+="旧地址:"+getaddress+",";
+            //        }else if (i==2){
+            //            address+="新地址:"+getaddress;
+            //        }
+            //    }
+            //    stringObjectMap.put("addressPlace",address);
+            //}
+            //确认是否有多个车牌号
+            if (capacityNumbers!=null &&!("".equals(capacityNumbers))){
+                String[] split = capacityNumbers.split(",");
+                String capacityNumber="";
+                int flag=0;
+                for (String s : split) {
+                    flag++;
+                    String s1 = getcapacityNumber(DataChange.dataToBigDecimal(s));
+                    if (flag==1){
+                        capacityNumber+="旧车号:"+s1+",";
+                    }else if (flag==2){
+                        capacityNumber+="新车号:"+s1;
+                        break;
+                    }
+                }
+                stringObjectMap.put("capacityNo",capacityNumber);
+            }
+        }
+        if(saleSteelReport.size() > 0 && saleSteelReport.get(0) != null){
+            saleSteelReport.get(0).put("quxiaoCapacityNum",quxiaoSet.size());
+            saleSteelReport.get(0).put("totalCapacity",set.size());
+            saleSteelReport.get(0).put("totalNumber",totalNumber);
+            saleSteelReport.get(0).put("totalNetWeight",totalNetWeight);
+            saleSteelReport.get(0).put("filterConsigneeList",filterConsigneeList);
+            saleSteelReport.get(0).put("filtermaterialNameList",filtermaterialNameList);
+            saleSteelReport.get(0).put("filterorderStatus",filterorderStatus);
+            saleSteelReport.get(0).put("filterorderStatusActually",filterorderStatusActually);
+            saleSteelReport.get(0).put("filteraddressPlace",filteraddressPlace);
+            saleSteelReport.get(0).put("filtermaterialSpe",filtermaterialSpe);
+            saleSteelReport.get(0).put("filterCapacityList",filterCapacityList);
+            saleSteelReport.get(0).put("filterCarrierList",filterCarrierList);
+            saleSteelReport.get(0).put("filterSaleRemark",filterSaleRemark);
+            saleSteelReport.get(0).put("filterTruckRemark",filterTruckRemark);
+            saleSteelReport.get(0).put("filterAreaName",filterAreaName);
+        }
+        return saleSteelReport;
+    }
+
 
     @Override
     public List<Map<String, Object>> getSaleSteelSpellingReport(Map<String, Object> mapValue) {

+ 490 - 0
src/main/resources/com/steerinfo/dil/mapper/StatisticalReportMapper.xml

@@ -2447,6 +2447,496 @@
                      )
     </select>
 
+    <select id="getSaleSteelReportFD" resultType="java.util.Map" parameterType="java.util.Map">
+        SELECT * FROM (
+        SELECT distinct OO.ORDER_ID "orderId",
+        ASO.SALE_ORDER_ID "saleOrderId",
+        ASM.TRANSFER_OUT_OF_WAREHOUSE "areaName",
+        to_char(ASM.SALE_MAKE_DATE,'yyyy-mm-dd HH24:mi')  "saleMakeDate",
+        to_char(ASOM.SALE_DATE_OF_RECEIPT-1,'yyyy-mm-dd') "orderTime",
+        ASO.INSERT_UPDATE_REMARK "saleOrderInertUpdateRemark",
+        ASO.SALE_NUMBER "saleOrderNo",
+        ASO.UPDATE_TIME "updateTime",
+        ASM.SALE_MATERIAL_ID "saleMaterialId",
+        ASM.MATERIAL_NUMBER "materialNum",
+        ASM.EAS_PRIMARY_ID "closeEntryId",
+        ASM.STEEL_METER "steelMeters",
+        ASM.DELETED "deletedStatus",
+        decode(asm.DELETED,null,'正常','关闭') "flStatus",
+        RC.CONSIGNEE_COMPANY_NAME "consigneeName",
+        ASOM.SALE_ORDER_MATERIAL_ID "saleOrderMaterialId",
+        RS.SHIPPER_NAME "shipperName",
+        (CASE WHEN
+        RCA.CAPACITY_NUMBER != '空白'
+        then RCA.CAPACITY_NUMBER
+        else ''
+        END) "capacityNo",
+        RCA.CAPACITY_NUMBER "newCapacityNo",
+        NVL(OO.CAPACITY_ID,0)  "capacityIds",
+        OO.CAPACITY_ID "capacityId",
+        DECODE(OO.IS_ACCEPT,1,'已接收','') "isAccept",
+        ASOM.SALE_ORDER_MATERIAL_TRUCK_NO "truckNo",
+        ASOM.SALE_ORDER_CONSIGNEE_TEL "consigneeTel",
+        ASOM.TRUCK_REMARK "truckRemark",
+        OO.ORDER_LINE_SEQUENCE "lineSequence",
+        ASO.SALE_ORDER_ISSELF_MENTION "isSelfMention",
+        RSR.SALER_NAME "saler",
+        RM.MATERIAL_ID  "materialId",
+        RM.MATERIAL_NAME  "materialName",
+        RM.MATERIAL_SPECIFICATION || '(' || RM.MATERIAL_MODEL || ')' "materialSpe",
+        (CASE WHEN ASO.SALE_ORDER_ISSELF_MENTION = '否'
+        THEN R_CARRIER.CARRIER_ABBREVIATION
+        ELSE '自提'
+        END)
+        "carrierName",
+        OO.ORDER_NUMBER "orderNo",
+        (CASE WHEN RRA_HISTORY.ADDRESS_PROVINCE is not null
+        THEN '新地址:' || RRA.ADDRESS_PROVINCE || RRA.ADDRESS_DISTRICT ||
+        RRA.ADDRESS_TOWN || RRP.ADDRESS_DELIVERY_ADDRESS
+        || ';旧地址:' || RRA_HISTORY.ADDRESS_PROVINCE || RRA_HISTORY.ADDRESS_DISTRICT ||
+        RRA_HISTORY.ADDRESS_TOWN || RRP_HISTORY.ADDRESS_DELIVERY_ADDRESS
+        ELSE
+        RRA.ADDRESS_PROVINCE || RRA.ADDRESS_DISTRICT ||
+        RRA.ADDRESS_TOWN || RRP.ADDRESS_DELIVERY_ADDRESS
+        END)   "addressPlace",
+        RRP.PLACE_ID "placeId",
+        RRP.ADDRESS_DELIVERY_ADDRESS "place",
+        RRA.ADDRESS_ID "shipperAddressId",
+        RRA.ADDRESS_PROVINCE "addressProvince",
+        RRA.ADDRESS_DISTRICT "addressDistrict",
+        RRA.ADDRESS_TOWN "addressTown",
+        OO.ORDER_LINE_SEQUENCE "lineSqe",
+        OO.DRIVER_TEL "capacityTel",
+        (CASE WHEN
+        OO.ORDER_STATUS = 2 and TTR.ORDER_STATUS = '已出厂'
+        THEN '已完成'
+        WHEN TTR.ORDER_STATUS IS NULL
+        THEN '未派发'
+        ELSE TTR.ORDER_STATUS
+        END) "orderStatusActually",
+        QQR.RESULT_START_TIME   "queueStartTime",
+        QQR.UPDATE_TIME         "allowEnfactoryTime",
+        TWB .WEIGHT_BATCH_ID "weightBatchId",
+        (
+        CASE
+        WHEN TWB.WEIGHT_BATCH_ID IS NOT NULL
+        THEN TWB.BATCH_GROSS_WEIGHT
+        ELSE TWR.RESULT_GROSS_WEIGHT
+        END
+        ) "grossWeight",
+        (
+        CASE
+        WHEN TWB.WEIGHT_BATCH_ID IS NOT NULL
+        THEN TWB.BATCH_GROSS_WEIGHT_TIME
+        ELSE TWR.RESULT_GROSS_WEIGHT_TIME
+        END
+        ) "grossWeightTime",
+        (
+        CASE
+        WHEN TWB.WEIGHT_BATCH_ID IS NOT NULL
+        THEN TWB.BATCH_TARE_WEIGHT
+        ELSE TWR.RESULT_TARE_WEIGHT
+        END
+        ) "tareWeight",
+        (
+        CASE
+        WHEN TWB.WEIGHT_BATCH_ID IS NOT NULL
+        THEN TWB.BATCH_TARE_WEIGHT_TIME
+        ELSE TWR.RESULT_TARE_WEIGHT_TIME
+        END
+        ) "tareWeightTime",
+        (
+        CASE
+        WHEN TWB.WEIGHT_BATCH_ID IS NOT NULL
+        THEN TWB.BATCH_NET_WEIGHT
+        ELSE TWR.RESULT_NET_WEIGHT
+        END
+        ) "netWeight",
+        TWR.RESULT_NET_WEIGHT   "toExcelNetWeight",
+        TLFR.RESULT_OUT_GATE_TIME    "outGateTime",
+        TER.RESULT_ENTRY_GATE_TIME   "entryGateTime",
+        TER.RESULT_ENTRY_GATE_TIME   "resultEntryGateTime",
+        TLFR.RESULT_OUT_GATE_TIME   "resultOutGateTime",
+        TAR.RESULT_ARRIVAL_ADDRESS "arrivalAddress",
+        TRR.RESULT_ARRIVAL_ADDRESS "receiptAddress",
+        ASOM.SALE_DATE_OF_RECEIPT   "saleDateReceipt",
+        ASM.MATERIAL_PLAN_NUMBER    "materialPlanNumber",
+        ASO.SALE_ORDER_RECEIVE_CUSTOMER "saleOrderReceiveCustomer",
+        (CASE
+        WHEN
+        ASOM.WARRANTY_NUMBER IS NULL
+        THEN '否'
+        WHEN ASOM.WARRANTY_NUMBER IS NOT NULL AND ASOM.PREVIOUS_ORDER_NUMBER IS NULL
+        THEN '否'
+        WHEN ASOM.WARRANTY_NUMBER IS NOT NULL AND ASOM.PREVIOUS_ORDER_NUMBER IS NOT NULL
+        THEN '是'
+        end)      "isContinue",
+        aso.BUSINESS_DATE           "insertUploadTime",
+        (CASE WHEN
+        ASM.IS_POUND_SALE = 0 AND TWR.RESULT_NET_WEIGHT IS NOT NULL
+        THEN TWR.RESULT_NET_WEIGHT
+        WHEN ASM.IS_POUND_SALE = 1 AND TWR.RESULT_NET_WEIGHT IS NOT NULL
+        THEN ASM.MATERIAL_WEIGHT
+        ELSE ASM.MATERIAL_WEIGHT
+        END) "materialThoWeight",
+        R_CARRIER.CARRIER_ID        "carrierId",
+        (CASE WHEN
+        RCA.CAPACITY_NUMBER = '空白'
+        THEN null
+        else
+        OO.CAPACITYIDS
+        end
+        ) "capacityNumbers",
+        NVL(R_CARRIER.CARRIER_ID,0) "carrierIds",
+        OO.ORDER_STATUS              "carStatus",
+        OO.INSERT_UPDATE_REMARK "orderInsertUpdateRemark",
+        TAR.INSERT_TIME "arrivalTime",
+        TRR.INSERT_TIME "receiptTime",
+        (CASE WHEN ASM.TRANSFER_IN_OF_WAREHOUSE IS NOT NULL
+        THEN ASM.TRANSFER_IN_OF_WAREHOUSE
+        ELSE ASO.SALE_REMARK
+        END) "saleRemark",
+        (CASE WHEN
+        TLFR.RESULT_OUT_GATE_TIME IS NULL
+        then null
+        WHEN OO.PRINTNUMBER >= 1
+        then '已打印'
+        else  '未打印'
+        END)  "isPrintDelivery",
+        (CASE WHEN
+        TLFR.RESULT_OUT_GATE_TIME IS NULL
+        then null
+        WHEN TTR.SMS_STATUS is null
+        then '未发送'
+        else  '已发送'
+        END) "smsResultId",
+        (CASE WHEN
+        ASO.DELETED = 2 then '关闭'
+        when ASO.DELETED = 1 then '反审批'
+        when ASO.SALE_ORDER_STATUS = 4 then '审核'
+        when ASO.SALE_ORDER_STATUS = 2 then '提交'
+        when ASO.SALE_ORDER_STATUS = 1 then '保存'
+        when ASO.SALE_ORDER_STATUS = 0 then '未上报'
+        END
+        ) "saleOrderStatus",
+        (CASE
+        when OO.ORDER_STATUS =2
+        then '已完成'
+        when OO.ORDER_STATUS=4
+        then '已派单'
+        when nvl(OO.ORDER_STATUS,0)=0
+        then '未派发'
+        when OO.ORDER_STATUS=7
+        then '已关闭'
+        when OO.ORDER_STATUS=8
+        then '已关闭'
+        WHEN TRR.INSERT_TIME IS NOT NULL
+        THEN '已完成'
+        WHEN TLFR.RESULT_OUT_GATE_TIME IS NOT NULL
+        THEN '已出厂'
+        WHEN TER.RESULT_ENTRY_GATE_TIME IS NOT NULL
+        THEN '已进厂'
+        WHEN QQR.RESULT_START_TIME IS NOT NULL
+        THEN '排队中'
+        when OO.ORDER_STATUS=5
+        then '已接单'
+        WHEN TER.INSERT_TIME IS NULL
+        THEN ' '
+        WHEN TLFR.INSERT_TIME IS NULL THEN ' '
+        END)
+        "orderStatus",
+        (SELECT count(asm.SALE_MATERIAL_ID)  FROM AMS_SALE_TRUCKNO_MATERIAL ASTM
+        LEFT JOIN AMS_SALE_MATERIAL ASM
+        ON ASM.SALE_MATERIAL_ID = ASTM.MATERIAL_ID
+        WHERE ASM.SALE_MATERIAL_ID IS NOT NULL
+        AND   ASM.DELETED IS NULL
+        AND   ASTM.SALE_ORDER_MATERIAL_ID = asom.SALE_ORDER_MATERIAL_ID) "spellNum"
+        FROM AMS_SALE_ORDER ASO
+        LEFT JOIN RMS_CONSIGNEE RC
+        ON RC.CONSIGNEE_ID = ASO.RECEIVE_ID
+        LEFT JOIN RMS_SHIPPER RS
+        ON RS.SHIPPER_ID = ASO.SHIPPER_ID
+        LEFT JOIN RMS_SALE_AREA RSA
+        ON RSA.AREA_ID=RC.AREA_ID
+        LEFT JOIN RMS_SALER RSR
+        ON RSR.SALER_ID = ASO.SALER_ID
+        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 RMS_RECEIVE_PLACE RRP_HISTORY
+        ON RRP_HISTORY.PLACE_ID = ASOM.HISTORY_SHIPPING_ADDRESS_ID
+        LEFT JOIN RMS_RECEIVE_ADDRESS RRA_HISTORY
+        ON RRA_HISTORY.ADDRESS_ID = RRP_HISTORY.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 AMS_SALE_TRUCKNO_MATERIAL ASTM
+        ON ASTM.SALE_ORDER_MATERIAL_ID = ASOM.SALE_ORDER_MATERIAL_ID
+        LEFT JOIN AMS_SALE_MATERIAL ASM
+        ON ASM.SALE_MATERIAL_ID = ASTM.MATERIAL_ID
+        LEFT JOIN RMS_MATERIAL RM
+        ON RM.MATERIAL_ID = ASM.MATERIAL_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 RMS_CAPACITY RCA
+        ON RCA.CAPACITY_ID = OO.CAPACITY_ID
+        LEFT JOIN TMSTRUCK_TOTAL_RESULT TTR
+        ON TTR.ORDER_ID = OO.ORDER_ID
+        LEFT JOIN QMS_QUEUE_RESULT QQR
+        ON QQR.RESULT_TOTAL_ID = TTR.RESULT_TOTAL_ID
+        LEFT JOIN TMSTRUCK_ENFACTORY_RESULT TER
+        ON TER.RESULT_TOTAL_ID = TTR.RESULT_TOTAL_ID
+        LEFT JOIN TMSTRUCK_WEIGHT_RESULT TWR
+        ON
+        TWR.SALE_MATERIAL_ID = ASM.SALE_MATERIAL_ID
+        AND TWR.RESULT_TOTAL_ID = TTR.RESULT_TOTAL_ID
+        LEFT JOIN TMSTRUCK_LEAVE_FACTORY_RESULT TLFR
+        ON TLFR.RESULT_TOTAL_ID = TTR.RESULT_TOTAL_ID
+        LEFT JOIN TMSTRUCK_ARRIVAL_RESULT TAR
+        ON TAR.RESULT_TOTAL_ID = TTR.RESULT_TOTAL_ID
+        LEFT JOIN TMStRUCK_RECEIPT_RESULT TRR
+        ON TTR.RESULT_TOTAL_ID = TRR.RESULT_TOTAL_ID
+        LEFT JOIN TMSTRUCK_WEIGHT_BATCH TWB
+        ON TWB .WEIGHT_BATCH_ID = ASM .WEIGHT_BATCH_ID
+        WHERE
+        ASM.SALE_MATERIAL_ID IS NOT NULL
+        and asm.SALE_ORDER_ID != -1
+        <if test="carrierSsoId != null">
+            and R_CARRIER.CARRIER_SSO_ID = #{carrierSsoId}
+        </if>
+        <if test="remark != null" >
+            and  RSR.SALER_NAME || RCA.CAPACITY_NUMBER ||
+            RC.CONSIGNEE_COMPANY_NAME || (CASE WHEN ASO.SALE_ORDER_ISSELF_MENTION = '是'
+            THEN '自提'
+            ELSE R_CARRIER.CARRIER_ABBREVIATION
+            END) ||
+            RM.MATERIAL_NAME || RM.MATERIAL_MODEL ||
+            RM.MATERIAL_SPECIFICATION || (CASE WHEN RRA_HISTORY.ADDRESS_PROVINCE is not null
+            THEN '新地址:' || RRA.ADDRESS_PROVINCE || RRA.ADDRESS_DISTRICT ||
+            RRA.ADDRESS_TOWN || RRP.ADDRESS_DELIVERY_ADDRESS
+            || ';旧地址:' || RRA_HISTORY.ADDRESS_PROVINCE || RRA_HISTORY.ADDRESS_DISTRICT ||
+            RRA_HISTORY.ADDRESS_TOWN || RRP_HISTORY.ADDRESS_DELIVERY_ADDRESS
+            ELSE
+            RRA.ADDRESS_PROVINCE || RRA.ADDRESS_DISTRICT ||
+            RRA.ADDRESS_TOWN || RRP.ADDRESS_DELIVERY_ADDRESS
+            END) LIKE #{remark}
+        </if>
+        <if test="receiveAddress != null" >
+            and (CASE WHEN RRA_HISTORY.ADDRESS_PROVINCE is not null
+            THEN '新地址:' || RRA.ADDRESS_PROVINCE || RRA.ADDRESS_DISTRICT ||
+            RRA.ADDRESS_TOWN || RRP.ADDRESS_DELIVERY_ADDRESS
+            || ';旧地址:' || RRA_HISTORY.ADDRESS_PROVINCE || RRA_HISTORY.ADDRESS_DISTRICT ||
+            RRA_HISTORY.ADDRESS_TOWN || RRP_HISTORY.ADDRESS_DELIVERY_ADDRESS
+            ELSE
+            RRA.ADDRESS_PROVINCE || RRA.ADDRESS_DISTRICT ||
+            RRA.ADDRESS_TOWN || RRP.ADDRESS_DELIVERY_ADDRESS
+            END) LIKE '%${receiveAddress}%'
+        </if>
+        <if test="receiveCustomer != null">
+            and ASO.SALE_ORDER_RECEIVE_CUSTOMER = #{receiveCustomer}
+        </if>
+        <if test="easPrimaryId != null">
+            and ASM.EAS_PRIMARY_ID = #{easPrimaryId}
+        </if>
+        <if test="capacityNum != null">
+            and  RCA.CAPACITY_NUMBER like #{capacityNum}
+        </if>
+        <if test="capacityList != null and capacityList.size > 0">
+            and <foreach collection="capacityList" item="item" open="(" separator="or" close=")">
+            <if test="item == null">
+                RCA.CAPACITY_NUMBER is null
+            </if>
+            <if test="item != null">
+                nvl(RCA.CAPACITY_NUMBER,'空白') like '%${item}%'
+            </if>
+        </foreach>
+        </if>
+        <if test="saleAreaRemark != null">
+            and <foreach collection="saleAreaRemark" item="item" open="(" separator="or" close=")">
+            (CASE WHEN ASM.TRANSFER_IN_OF_WAREHOUSE IS NOT NULL THEN ASM.TRANSFER_IN_OF_WAREHOUSE ELSE ASO.SALE_REMARK END) like '%${item}%'
+        </foreach>
+        </if>
+        <if test="consigneeNames != null">
+            and RC.CONSIGNEE_COMPANY_NAME like #{consigneeNames}
+        </if>
+        <if test="consigneeNameList != null and consigneeNameList.size > 0">
+            and <foreach collection="consigneeNameList" item="item" open="(" separator="or" close=")">
+            RC.CONSIGNEE_COMPANY_NAME like '%${item}%'
+        </foreach>
+        </if>
+        <if test="flStatusList != null and flStatusList.size > 0">
+            and <foreach collection="flStatusList" item="item" open="(" separator="or" close=")">
+            decode(asm.DELETED,null,'正常','关闭') like '%${item}%'
+        </foreach>
+        </if>
+        <if test="carrierNames != null">
+            and (CASE WHEN ASO.SALE_ORDER_ISSELF_MENTION = '是'
+            THEN '自提'
+            ELSE R_CARRIER.CARRIER_ABBREVIATION
+            END) like #{carrierNames}
+        </if>
+        <if test="carrierList != null and  carrierList.size > 0">
+            and <foreach collection="carrierList" item="item" open="(" separator="or" close=")">
+            <if test="item == null">
+                R_CARRIER.CARRIER_ABBREVIATION is null
+            </if>
+            <if test="item != null">
+                (CASE WHEN ASO.SALE_ORDER_ISSELF_MENTION = '是'
+                THEN '自提'
+                ELSE R_CARRIER.CARRIER_ABBREVIATION
+                END) like '%${item}%'
+            </if>
+        </foreach>
+        </if>
+        <if test="materialNameList != null and materialNameList.size > 0">
+            and <foreach collection="materialNameList" item="item" open="(" separator="or" close=")">
+            RM.MATERIAL_NAME like '%${item}%'
+        </foreach>
+        </if>
+        <if test="saleAreaList != null and saleAreaList.size > 0">
+            and <foreach collection="saleAreaList" item="item" open="(" separator="or" close=")">
+            RSA.AREA_NAME like '%${item}%'
+        </foreach>
+        </if>
+        <if test="isContinueList != null and isContinueList.size > 0">
+            and <foreach collection="isContinueList" item="item" open="(" separator="or" close=")">
+            (CASE
+            WHEN
+            ASOM.WARRANTY_NUMBER IS NULL
+            THEN '否'
+            WHEN ASOM.WARRANTY_NUMBER IS NOT NULL AND ASOM.PREVIOUS_ORDER_NUMBER IS NULL
+            THEN '否'
+            WHEN ASOM.WARRANTY_NUMBER IS NOT NULL AND ASOM.PREVIOUS_ORDER_NUMBER IS NOT NULL
+            THEN '是'
+            end)  like '%${item}%'
+        </foreach>
+        </if>
+        <if test="spellNumList != null and spellNumList.size > 0">
+            and <foreach collection="spellNumList" item="item" open="(" separator="or" close=")">
+            (SELECT count(asm.SALE_MATERIAL_ID)  FROM AMS_SALE_TRUCKNO_MATERIAL ASTM
+            LEFT JOIN AMS_SALE_MATERIAL ASM
+            ON ASM.SALE_MATERIAL_ID = ASTM.MATERIAL_ID
+            WHERE ASM.SALE_MATERIAL_ID IS NOT NULL
+            AND   ASM.DELETED IS NULL
+            AND   ASTM.SALE_ORDER_MATERIAL_ID = asom.SALE_ORDER_MATERIAL_ID) like '%${item}%'
+        </foreach>
+        </if>
+        <if test="orderStatusList != null and orderStatusList.size > 0">
+            and <foreach collection="orderStatusList" item="item" open="(" separator="or" close=")">
+            (CASE
+            when OO.ORDER_STATUS =2
+            then '作业已完成'
+            when OO.ORDER_STATUS=4
+            then '物流公司已派单'
+            when nvl(OO.ORDER_STATUS,0)=0
+            then '未派发'
+            when OO.ORDER_STATUS=7
+            then '已关闭'
+            when OO.ORDER_STATUS=8
+            then '已关闭'
+            WHEN TRR.INSERT_TIME IS NOT NULL
+            THEN '已完成'
+            WHEN TLFR.RESULT_OUT_GATE_TIME IS NOT NULL
+            THEN '已出厂'
+            WHEN TER.RESULT_ENTRY_GATE_TIME IS NOT NULL
+            THEN '已进厂'
+            WHEN QQR.RESULT_START_TIME IS NOT NULL
+            THEN '排队中'
+            when OO.ORDER_STATUS=5
+            then '司机已接单'
+            WHEN TER.INSERT_TIME IS NULL
+            THEN ' '
+            WHEN TLFR.INSERT_TIME IS NULL THEN ' '
+            END) like '%${item}%'
+        </foreach>
+        </if>
+        <if test="orderStatusActuallyList != null and orderStatusActuallyList.size > 0">
+            and <foreach collection="orderStatusActuallyList" item="item" open="(" separator="or" close=")">
+            (CASE WHEN
+            OO.ORDER_STATUS = 2 and TTR.ORDER_STATUS = '已出厂'
+            THEN '已完成'
+            WHEN TTR.ORDER_STATUS IS NULL
+            THEN '未派发'
+            ELSE TTR.ORDER_STATUS
+            END) like '%${item}%'
+        </foreach>
+        </if>
+        <if test="addressPlaceList != null and addressPlaceList.size > 0">
+            and <foreach collection="addressPlaceList" item="item" open="(" separator="or" close=")">
+            RRA.ADDRESS_PROVINCE || RRA.ADDRESS_DISTRICT ||
+            RRA.ADDRESS_TOWN || RRP.ADDRESS_DELIVERY_ADDRESS like '%${item}%'
+        </foreach>
+        </if>
+        <if test="materialSpeList != null and materialSpeList.size > 0 ">
+            and <foreach collection="materialSpeList" item="item" open="(" separator="or" close=")">
+            RM.MATERIAL_SPECIFICATION || '(' || RM.MATERIAL_MODEL || ')' like '%${item}%'
+        </foreach>
+        </if>
+        <if test="saleOrderStatusList != null and saleOrderStatusList.size > 0">
+            and <foreach collection="saleOrderStatusList" item="item" open="(" separator="or" close=")">
+            (CASE WHEN
+            ASO.DELETED = 2 then '关闭'
+            when ASO.DELETED = 1 then '反审批'
+            when ASO.SALE_ORDER_STATUS = 4 then '审核'
+            when ASO.SALE_ORDER_STATUS = 2 then '提交'
+            when ASO.SALE_ORDER_STATUS = 1 then '保存'
+            when ASO.SALE_ORDER_STATUS = 0 then '未上报'
+            END
+            ) like '%${item}%'
+        </foreach>
+        </if>
+        <if test="saleRemarkList != null and saleRemarkList.size > 0">
+            and <foreach collection="saleRemarkList" item="item" open="(" separator="or" close=")">
+            (CASE WHEN ASM.TRANSFER_IN_OF_WAREHOUSE IS NOT NULL THEN ASM.TRANSFER_IN_OF_WAREHOUSE ELSE ASO.SALE_REMARK END) like '%${item}%'
+        </foreach>
+        </if>
+        <if test="truckRemarkList != null and truckRemarkList.size > 0">
+            and <foreach collection="truckRemarkList" item="item" open="(" separator="or" close=")">
+            ASOM.TRUCK_REMARK like '%${item}%'
+        </foreach>
+        </if>
+        <if test="consigneeLoginName != null">
+            and (RC.CONSIGNEE_COMPANY_NAME LIKE '%${consigneeLoginName}%'
+            or  ASO.SALE_ORDER_RECEIVE_CUSTOMER LIKE '%${consigneeLoginName}%')
+        </if>
+        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 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>
+        <if test="steelTransFlag != null">
+            and NVL(RCA.CAPACITY_ID,0) != 35128
+            AND ASO.DELETED = 0
+            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(#{startDate}, 'yyyy-mm-dd') >=  to_date(to_char(ASOM.SALE_DATE_OF_RECEIPT-1,'yyyy-mm-dd'),'yyyy-mm-dd')
+            AND NVL(ASOM.WARRANTY_NUMBER,0) = 0
+            or
+            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(#{startDate}, 'yyyy-mm-dd') >=  to_date(to_char(ASOM.SALE_DATE_OF_RECEIPT-2,'yyyy-mm-dd'),'yyyy-mm-dd')
+            AND NVL(ASOM.WARRANTY_NUMBER,0) = 1
+            AND ASOM.PREVIOUS_ORDER_NUMBER IS NOT NULL
+            OR
+            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(#{startDate}, 'yyyy-mm-dd') >=  to_date(to_char(ASOM.SALE_DATE_OF_RECEIPT-1,'yyyy-mm-dd'),'yyyy-mm-dd')
+            AND NVL(ASOM.WARRANTY_NUMBER,0) = 1
+            AND ASOM.PREVIOUS_ORDER_NUMBER IS  NULL)
+        </if>
+        <if test="saleNo != null">
+            and aso.sale_number like '%${saleNo}%'
+        </if>
+        order by ASO.SALE_ORDER_ID DESC, ASOM.SALE_ORDER_MATERIAL_ID DESC,OO.ORDER_ID  DESC,TWB .WEIGHT_BATCH_ID DESC
+        )
+    </select>
+
     <select id="getSaleSteelSpellingReport" resultType="java.util.Map" parameterType="java.util.Map">
         SELECT
         "areaName",