liyg 1 anno fa
parent
commit
455ffdeacc

+ 148 - 99
src/main/java/com/steerinfo/dil/controller/TMSController.java

@@ -431,6 +431,8 @@ public class TMSController extends BaseRESTfulController {
         map.put("list", list);
         //统计通知单的重量车数和车牌号
         Set<String> capacitySet = new HashSet<>();//车牌号
+        List<String> requirementList = new ArrayList<>();
+        String loadDate = null;
         for (Map<String, Object> item : list) {
             //校验行
             if(item.get("通知单号")==null || item.get("通知单号").equals("")
@@ -443,31 +445,46 @@ public class TMSController extends BaseRESTfulController {
             }
             //通知单统计
             String requirementNumber = item.get("通知单号").toString();
-            if (map.get("requirementNumber") != null) {
-                if (map.get("requirementNumber").equals(requirementNumber)) {
-                    //已存在,修改
-                    BigDecimal weight = DataChange.dataToBigDecimal(map.get("weight"));
-                    BigDecimal truckNumber = DataChange.dataToBigDecimal(map.get("truckNumber"));
-                    String loadTime = map.get("loadTime").toString();
-                    weight = weight.add(DataChange.dataToBigDecimal(item.get("净重")));
-                    truckNumber = truckNumber.add(new BigDecimal(1));
-                    map.put("weight", weight);
-                    map.put("truckNumber", truckNumber);
-                    if(!loadTime.equals(item.get("装车日期").toString())){
-                        throw new Exception("同一个Excel只允许一批车辆,请检查装车日期!");
-                    }
-                } else {
-                    throw new Exception("同一个Excel文件中只允许有一个通知单号!");
+            if (map.get(requirementNumber) != null) {
+                //已存在,修改
+                Map<String,Object> requirementMap =(Map<String, Object>) map.get(requirementNumber);
+                BigDecimal weight = DataChange.dataToBigDecimal(requirementMap.get("weight"));
+                BigDecimal truckNumber = DataChange.dataToBigDecimal(requirementMap.get("truckNumber"));
+                String loadTime = requirementMap.get("loadTime").toString();
+                List<Map<String,Object>> trainList = (ArrayList) requirementMap.get("trainList");
+                weight = weight.add(DataChange.dataToBigDecimal(item.get("净重")));
+                truckNumber = truckNumber.add(new BigDecimal(1));
+                trainList.add(item);
+                requirementMap.put("weight", weight);
+                requirementMap.put("truckNumber", truckNumber);
+                requirementMap.put("trainList",trainList);
+                if(!loadTime.equals(item.get("装车日期").toString())){
+                    throw new Exception("同一个Excel只允许一批车辆,请检查装车日期!");
                 }
             } else {
                 //不存在,新增
+                Map<String,Object> requirementMap = new HashMap<>();
+                List<Map<String,Object>> trainList = new ArrayList<>();
+                trainList.add(item);
                 BigDecimal weight = DataChange.dataToBigDecimal(item.get("净重"));
                 BigDecimal truckNumber = new BigDecimal(1);
                 String loadTime = item.get("装车日期").toString();
-                map.put("requirementNumber", requirementNumber);
-                map.put("weight", weight);
-                map.put("truckNumber", truckNumber);
-                map.put("loadTime",loadTime);
+                if(loadDate == null){
+                    loadDate = loadTime;
+                    map.put("loadDate",loadDate);
+                }else if(!loadDate.equals(loadTime)){
+                    throw new Exception("同一个Excel只允许一批车辆,请检查装车日期!");
+                }
+                requirementMap.put("requirementNumber", requirementNumber);
+                requirementMap.put("weight", weight);
+                requirementMap.put("truckNumber", truckNumber);
+                requirementMap.put("loadTime",loadTime);
+                requirementMap.put("trainList",trainList);
+                requirementMap.put("userId",userId);
+                requirementMap.put("userName",userName);
+                requirementMap.put("businessType",businessType);
+                requirementList.add(requirementNumber);
+                map.put(requirementNumber, requirementMap);
             }
             //车牌号去重
             capacitySet.add(item.get("车号").toString());
@@ -478,26 +495,23 @@ public class TMSController extends BaseRESTfulController {
         }
         //新增火车运力资源
         String[] capacities = capacitySet.toArray(new String[0]);//车牌号
-        if (capacities.length != list.size()) {
-            throw new Exception("车号不允许重复!");
-        } else {
-            try{
-                new Runnable() {
-                    @Override
-                    public void run() {
-                        Map<String, Object> capacityMap = new HashMap<>();
-                        capacityMap.put("capacities", capacities);
-                        capacityMap.put("userId", userId);
-                        capacityMap.put("userName", userName);
-                        rmsFeign.batchInsertCapacityTrain(capacityMap);
-                    }
-                }.run();
-            }catch (Exception e){e.printStackTrace();}
-        }
+        try{
+            new Runnable() {
+                @Override
+                public void run() {
+                    Map<String, Object> capacityMap = new HashMap<>();
+                    capacityMap.put("capacities", capacities);
+                    capacityMap.put("userId", userId);
+                    capacityMap.put("userName", userName);
+                    rmsFeign.batchInsertCapacityTrain(capacityMap);
+                }
+            }.run();
+        }catch (Exception e){e.printStackTrace();}
         //新增AMS及TMS
         map.put("userId",userId);
         map.put("userName",userName);
         map.put("businessType",businessType);
+        map.put("requirementList",requirementList);
         return tmsFeign.purchaseTrainLoad(map);
     }
 
@@ -524,6 +538,7 @@ public class TMSController extends BaseRESTfulController {
         List<Map<String, Object>> list = ExcelToolUtils.getExcelList(file, 0);
         map.put("list", list);
         Set<String> capacitySet = new HashSet<>();//车牌号
+        String weightTime = null;
         for (Map<String, Object> item : list) {
             //校验行
             if(item.get("通知单号")==null || item.get("通知单号").equals("")
@@ -535,25 +550,10 @@ public class TMSController extends BaseRESTfulController {
                 throw new Exception("单元格数据异常(通知单号/车号/计量日期/净重/皮重/毛重),请检查模板或数据是否正确!");
             }
             //校验数据
-            String requirementNumber = item.get("通知单号").toString();
-            if (map.get("requirementNumber") != null) {
-                if (map.get("requirementNumber").equals(requirementNumber)) {
-                    String weightTime = map.get("weightTime").toString();
-                    if(!weightTime.equals(item.get("计量日期").toString())){
-                        throw new Exception("同一个Excel只允许一批车辆,请检查计量日期!");
-                    }
-                    //更新重量
-                    BigDecimal weight = DataChange.dataToBigDecimal(map.get("weight"));
-                    weight = weight.add(DataChange.dataToBigDecimal(item.get("净重")));
-                    map.put("weight", weight);
-                } else {
-                    throw new Exception("同一个Excel文件中只允许有一个通知单号!");
-                }
-            } else {
-                //不存在,新增
-                map.put("requirementNumber", requirementNumber);
-                map.put("weightTime",item.get("计量日期").toString());
-                map.put("weight",DataChange.dataToBigDecimal(item.get("净重")));
+            if(weightTime == null){
+                weightTime = item.get("计量日期").toString();
+            }else if(!weightTime.equals(item.get("计量日期").toString())){
+                throw new Exception("同一个Excel只允许一批车辆,请检查计量日期!");
             }
             //车牌号去重
             capacitySet.add(item.get("车号").toString());
@@ -566,19 +566,52 @@ public class TMSController extends BaseRESTfulController {
         map.put("userName",userName);
         map.put("businessType",businessType);
         //获取火车运单及计量详情
-        List<Map<String,Object>> orderList = universalMapper.findTrainWeight(map);
-        if (orderList.size() <= 0) {
+        List<Map<String,Object>> orderListAll = universalMapper.findTrainWeight(map);
+        if (orderListAll.size() <= 0) {
             throw new Exception("未查询到装车信息,请先上传装车作业!");
-        } else if(orderList.size() != universalMapper.countTransOrder(orderList.get(0))){
-            throw new Exception("计量信息与装车信息数量不一致,请重新上传!");
-        } else if(orderList.get(0).get("unloadResultId")!=null){
-            throw new Exception("车皮已卸车,不允许再上传计量!");
         }
-        map.put("orderList",orderList);
-        map.put("transPlanId",orderList.get(0).get("transPlanId"));
-        map.put("materialId",orderList.get(0).get("materialId"));
-        //新增TMS
-        return tmsFeign.purchaseTrainWeight(map);
+        List<String> requireList = new ArrayList<>();
+        for(Map<String,Object> order : orderListAll){
+            if(order.get("unloadResultId") != null){
+                throw new Exception(order.get("capacityId")+"已卸车,不允许再上传计量!");
+            }
+            String requireNumber = order.get("requireNumber").toString();
+            Map<String,Object> requirementMap =(Map<String, Object>) map.get(requireNumber);
+            if(requirementMap!=null){
+                List<Map<String,Object>> orderList = (ArrayList) requirementMap.get("orderList");
+                orderList.add(order);
+                BigDecimal weight = DataChange.dataToBigDecimal(requirementMap.get("weight"));
+                requirementMap.put("weight",weight.add(DataChange.dataToBigDecimal(order.get("netWeight"))));
+                requirementMap.put("orderList",orderList);
+            }else{
+                requirementMap = new HashMap<>();
+                List<Map<String,Object>> orderList = new ArrayList<>();
+                orderList.add(order);
+                BigDecimal weight = DataChange.dataToBigDecimal(order.get("netWeight"));
+                requirementMap.put("transPlanId",order.get("transPlanId"));
+                requirementMap.put("materialId",order.get("materialId"));
+                requirementMap.put("weight",weight);
+                requirementMap.put("weightTime",weightTime);
+                requirementMap.put("userId",userId);
+                requirementMap.put("userName",userName);
+                requirementMap.put("orderList",orderList);
+                requireList.add(requireNumber);
+            }
+            map.put(requireNumber,requirementMap);
+        }
+        Map<String,Object> result = null;
+        for(String requireNumber : requireList){
+            Map<String,Object> requirementMap =(Map<String, Object>) map.get(requireNumber);
+            List<Map<String,Object>> orderList = (ArrayList) requirementMap.get("orderList");
+            if(universalMapper.countTransOrder(requirementMap) != orderList.size()){
+                throw new Exception("计量车数与装车车数不一致!");
+            }
+            result = tmsFeign.purchaseTrainWeight(requirementMap);
+            if (!"succeed".equals(result.get("status"))) {
+                throw new Exception("计量上传失败:" + result.get("message"));
+            }
+        }
+        return result;
     }
 
 
@@ -604,6 +637,7 @@ public class TMSController extends BaseRESTfulController {
         List<Map<String, Object>> list = ExcelToolUtils.getExcelList(file, 0);
         map.put("list", list);
         Set<String> capacitySet = new HashSet<>();//车牌号
+        String unloadTime = null;
         for (Map<String, Object> item : list) {
             //校验行
             if(item.get("通知单号")==null || item.get("通知单号").equals("")
@@ -613,23 +647,10 @@ public class TMSController extends BaseRESTfulController {
                 throw new Exception("单元格数据异常(通知单号/车号/卸车日期/净重),请检查模板或数据是否正确!");
             }
             //校验数据
-            String requirementNumber = item.get("通知单号").toString();
-            BigDecimal weight = DataChange.dataToBigDecimal(item.get("净重"));
-            if (map.get("requirementNumber") != null) {
-                if (map.get("requirementNumber").equals(requirementNumber)) {
-                    String unloadTime = map.get("unloadTime").toString();
-                    if(!unloadTime.equals(item.get("卸车日期").toString())){
-                        throw new Exception("同一个Excel只允许一批车辆,请检查卸车日期!");
-                    }
-                } else {
-                    throw new Exception("同一个Excel文件中只允许有一个通知单号!");
-                }
-                map.put("weight", weight.add(DataChange.dataToBigDecimal(map.get("weight"))));
-            } else {
-                //不存在,新增
-                map.put("requirementNumber", requirementNumber);
-                map.put("weight", weight);
-                map.put("unloadTime",item.get("卸车日期").toString());
+            if(unloadTime == null){
+                unloadTime = item.get("卸车日期").toString();
+            }else if(!unloadTime.equals(item.get("卸车日期").toString())){
+                throw new Exception("同一个Excel只允许一批车辆,请检查卸车日期!");
             }
             //车牌号去重
             capacitySet.add(item.get("车号").toString());
@@ -642,26 +663,54 @@ public class TMSController extends BaseRESTfulController {
         map.put("userName",userName);
         map.put("businessType",businessType);
         //获取火车运单及计量详情
-        List<Map<String,Object>> orderList = universalMapper.findTrainUnload(map);
-        if (orderList.size() <= 0) {
+        List<Map<String,Object>> orderListAll = universalMapper.findTrainUnload(map);
+        if (orderListAll.size() <= 0) {
             throw new Exception("未查询到装车信息,请先上传装车作业!");
-        } else if(orderList.size() != universalMapper.countTransOrder(orderList.get(0))){
-            throw new Exception("卸货信息与装车信息数量不一致,请重新上传!");
         }
-        //获取原本重量之和
-        BigDecimal weightOld = BigDecimal.ZERO;
-        for(Map<String,Object> item : orderList){
-            weightOld = weightOld.add(DataChange.dataToBigDecimal(item.get("unloadWeightOld")));
+        List<String> requireList = new ArrayList<>();
+        for(Map<String,Object> order : orderListAll){
+            if(order.get("unloadResultId") != null){
+                throw new Exception(order.get("capacityId")+"已卸车,不允许再上传!");
+            }
+            String requireNumber = order.get("requireNumber").toString();
+            Map<String,Object> requirementMap =(Map<String, Object>) map.get(requireNumber);
+            if(requirementMap!=null){
+                List<Map<String,Object>> orderList = (ArrayList) requirementMap.get("orderList");
+                orderList.add(order);
+                BigDecimal weight = DataChange.dataToBigDecimal(requirementMap.get("weight"));
+                requirementMap.put("weight",weight.add(DataChange.dataToBigDecimal(order.get("unloadWeight"))));
+                requirementMap.put("orderList",orderList);
+            }else{
+                requirementMap = new HashMap<>();
+                List<Map<String,Object>> orderList = new ArrayList<>();
+                orderList.add(order);
+                BigDecimal weight = DataChange.dataToBigDecimal(order.get("unloadWeight"));
+                requirementMap.put("transPlanId",order.get("transPlanId"));
+                requirementMap.put("materialId",order.get("materialId"));
+                requirementMap.put("unloadPointId",order.get("unloadPointId"));
+                requirementMap.put("weight",weight);
+                requirementMap.put("unloadTime",unloadTime);
+                requirementMap.put("userId",userId);
+                requirementMap.put("userName",userName);
+                requirementMap.put("orderList",orderList);
+                requirementMap.put("requirementSerialNumber",requireNumber);
+                requireList.add(requireNumber);
+            }
+            map.put(requireNumber,requirementMap);
+        }
+        Map<String,Object> result = null;
+        for(String requireNumber : requireList){
+            Map<String,Object> requirementMap =(Map<String, Object>) map.get(requireNumber);
+            List<Map<String,Object>> orderList = (ArrayList) requirementMap.get("orderList");
+            if(universalMapper.countTransOrder(requirementMap) != orderList.size()){
+                throw new Exception("卸车车数与装车车数不一致!");
+            }
+            result = tmsFeign.purchaseTrainUnload(requirementMap);
+            if (!"succeed".equals(result.get("status"))) {
+                throw new Exception("上传失败:" + result.get("message"));
+            }
         }
-        map.put("weightOld",weightOld);
-        map.put("diff",DataChange.dataToBigDecimal(map.get("weight").toString()).subtract(weightOld));
-        map.put("orderList",orderList);
-        map.put("requirementSerialNumber",orderList.get(0).get("requirementSerialNumber"));
-        map.put("transPlanId",orderList.get(0).get("transPlanId"));
-        map.put("materialId",orderList.get(0).get("materialId"));
-        map.put("unloadPointId",orderList.get(0).get("unloadPointId"));
-        //新增TMS
-        return tmsFeign.purchaseTrainUnload(map);
+        return result;
     }
 
     @ApiOperation(value = "查询采购火运卸车")

+ 22 - 10
src/main/resources/com/steerinfo/dil/mapper/UniversalMapper.xml

@@ -1126,11 +1126,11 @@
         LEFT JOIN AMS_TRANS_REQUIREMENT ATR ON ATR.TRANS_REQUIREMENT_ID = ARC.TRANS_REQUIREMENT_ID
         <where>
             OTO.DELETED != 1
-            AND ATR.SERIAL_NUMBER =#{requirementNumber}
-            AND TLR.LOAD_START_TIME = to_date(#{loadTime}, 'yyyymmdd')
-            AND OTO.CAPACITY_ID IN
-            <foreach collection="list" item="item"  open="(" close=")" separator="," >
-                #{item.车号}
+            AND TLR.LOAD_START_TIME = to_date(#{loadDate}, 'yyyymmdd')
+            AND
+            <foreach collection="list" item="item"  open="(" close=")" separator="OR" >
+                ATR.SERIAL_NUMBER = #{item.通知单号}
+                AND OTO.CAPACITY_ID = #{item.车号}
             </foreach>
         </where>
     </select>
@@ -1196,21 +1196,25 @@
             APC .MATERIAL_ID "materialId",
             TWR .RESULT_ID "resultId",
             TUR .RESULT_ID "unloadResultId",
+            #{item.通知单号} "requireNumber",
             #{item.车号} "capacityId",
             #{item.净重} "netWeight",
             #{item.皮重} "tareWeight",
             #{item.毛重} "grossWeight"
             FROM 	OMS_TRANS_ORDER OTO
             LEFT JOIN OMS_ORDER_CHILD OOC ON OOC .TRANS_ORDER_ID = OTO .TRANS_ORDER_ID
+            LEFT JOIN TMS_LOAD_RESULT TLR ON TLR .TRANS_ORDER_ID = OTO .TRANS_ORDER_ID
             LEFT JOIN TMS_WEIGHT_RESULT TWR
-                ON TWR .TRANS_ORDER_ID = OTO .TRANS_ORDER_ID AND TWR.NET_WEIGHT_TIME = to_date(#{weightTime}, 'yyyymmdd')
+                ON TWR .TRANS_ORDER_ID = OTO .TRANS_ORDER_ID AND TWR.NET_WEIGHT_TIME = to_date(#{item.计量日期}, 'yyyymmdd')
             LEFT JOIN TMS_UNLOAD_RESULT TUR ON TUR .TRANS_ORDER_ID = OTO .TRANS_ORDER_ID
             LEFT JOIN  AMS_PLAN_CHILD APC ON APC.PLAN_CHILD_ID = OOC.PLAN_CHILD_ID
             LEFT JOIN AMS_REQUIREMENT_CHILD ARC ON ARC.REQUIREMENT_CHILD_ID = APC.REQUIREMENT_CHILD_ID
             LEFT JOIN AMS_TRANS_REQUIREMENT ATR ON ATR.TRANS_REQUIREMENT_ID = ARC.TRANS_REQUIREMENT_ID
             <where>
                 OTO.DELETED != 1
-                AND ATR.SERIAL_NUMBER =#{requirementNumber}
+                AND 7 >= TO_NUMBER (to_date(#{item.计量日期}, 'yyyymmdd') - TLR.LOAD_START_TIME)
+                AND TO_NUMBER (to_date(#{item.计量日期}, 'yyyymmdd') - TLR.LOAD_START_TIME) >= 0
+                AND ATR.SERIAL_NUMBER =#{item.通知单号}
                 AND OTO.CAPACITY_ID = #{item.车号}
             </where>
         </foreach>
@@ -1226,17 +1230,25 @@
             ARC .RECEIVING_POINT_ID "unloadPointId",
             APC .MATERIAL_ID "materialId",
             #{item.车号} "capacityId",
-            #{item.净重} "unloadWeight"
+            #{item.通知单号} "requireNumber",
+            CASE
+                WHEN TWR .NET_WEIGHT > 0 THEN TWR .NET_WEIGHT
+                ELSE TLR .ACTUAL_TONNAGE
+            END  "unloadWeight"
             FROM 	OMS_TRANS_ORDER OTO
             LEFT JOIN OMS_ORDER_CHILD OOC ON OOC .TRANS_ORDER_ID = OTO .TRANS_ORDER_ID
+            LEFT JOIN TMS_LOAD_RESULT TLR ON TLR .TRANS_ORDER_ID = OTO .TRANS_ORDER_ID
+            LEFT JOIN TMS_WEIGHT_RESULT TWR ON TWR .TRANS_ORDER_ID = OTO .TRANS_ORDER_ID
             LEFT JOIN TMS_UNLOAD_RESULT TUR
-            ON TUR .TRANS_ORDER_ID = OTO .TRANS_ORDER_ID AND TUR.UNLOAD_START_TIME = to_date(#{unloadTime}, 'yyyymmdd')
+            ON TUR .TRANS_ORDER_ID = OTO .TRANS_ORDER_ID AND TUR.UNLOAD_START_TIME = to_date(#{item.卸车日期}, 'yyyymmdd')
             LEFT JOIN  AMS_PLAN_CHILD APC ON APC.PLAN_CHILD_ID = OOC.PLAN_CHILD_ID
             LEFT JOIN AMS_REQUIREMENT_CHILD ARC ON ARC.REQUIREMENT_CHILD_ID = APC.REQUIREMENT_CHILD_ID
             LEFT JOIN AMS_TRANS_REQUIREMENT ATR ON ATR.TRANS_REQUIREMENT_ID = ARC.TRANS_REQUIREMENT_ID
             <where>
                 OTO.DELETED != 1
-                AND ATR.SERIAL_NUMBER =#{requirementNumber}
+                AND 7 >= TO_NUMBER (to_date(#{item.卸车日期}, 'yyyymmdd') - TLR.LOAD_START_TIME)
+                AND TO_NUMBER (to_date(#{item.卸车日期}, 'yyyymmdd') - TLR.LOAD_START_TIME) >= 0
+                AND ATR.SERIAL_NUMBER =#{item.通知单号}
                 AND OTO.CAPACITY_ID = #{item.车号}
             </where>
         </foreach>