Browse Source

'拉取后上传'

HUJIANGUO 3 năm trước cách đây
mục cha
commit
6a7bd47f00

+ 11 - 7
src/main/java/com/steerinfo/dil/controller/TmstruckMeasureCommissionController.java

@@ -62,14 +62,18 @@ public class TmstruckMeasureCommissionController extends BaseRESTfulController {
             @ApiImplicitParam(name = "resultId", value = "装车作业实绩ID", required = false, dataType = "Integer"),
     })
     @PostMapping("/sendMeasureCommission")
-    public RESTfulResult sendMeasureCommission(@RequestBody(required = false) Map<String, Object> map) throws Exception {
-        int i = 0;
-        try {
-            i = tmstruckMeasureCommissionService.sendMeasureCommssion(map);
-        } catch (Exception e) {
-            e.getMessage();
+    public RESTfulResult sendMeasureCommission(@RequestBody(required = false) Map<String, Object> map){
+        int i = tmstruckMeasureCommissionService.sendMeasureCommssion(map);
+        if(i == 0){
+            return failed("委托发送失败!请联系管理员");
+        }else if(i == 2){
+            return failed("该物资已计量!无法撤回委托");
+        }else if(i == 3){
+            return success("委托撤回成功!");
+        }else if(i == 4){
+            return failed("还有物资未计量完成!不允许继续发送委托");
         }
-        return success(i);
+        return success("委托发送成功");
     }
 
 

+ 12 - 0
src/main/java/com/steerinfo/dil/mapper/TmstruckMeasureCommissionMapper.java

@@ -94,4 +94,16 @@ public interface TmstruckMeasureCommissionMapper extends IBaseMapper<TmstruckMea
 
     //查找未计量完成的物资
     List<Map<String,Object>> getMaterialIdAndCalculateId(Map<String,Object> map);
+
+    //修改订单子表
+    int updateOmsTruckMaterial(Map<String, Object> map);
+
+    //通过订单号和物资ID查询计量实绩是否有数据
+    List<Integer> checkoutWeightCommission(Map<String, Object> map);
+
+    //查询已经发送过委托的物资Id
+    Integer getAlreadySentMaterialId(Map<String, Object> map);
+
+    //查询最后一个发委托的物资 通过这个物资查询是否含有净重 或者是没有计量实绩
+    Map<String, Object> checkoutWeightCommission2(Map<String, Object> map);
 }

+ 1 - 0
src/main/java/com/steerinfo/dil/mapper/TmstruckUnloadResultMapper.java

@@ -51,4 +51,5 @@ public interface TmstruckUnloadResultMapper extends IBaseMapper<TmstruckUnloadRe
      //查询物资是否被计量(map:orderNumber,MaterialId)
     Integer selectUnloadMaterialId(Map<String,Object> map);
 
+    Map<String,Object> selectOrderId(Map<String, Object> map);
 }

+ 3 - 3
src/main/java/com/steerinfo/dil/mapper/UtilsMapper.java

@@ -45,7 +45,7 @@ public interface UtilsMapper {
     //查询当前路段顺序号通过订单Id
     Integer getLineSequenceByOrderId(@Param("orderId") BigDecimal orderId);
 
-    //通过订单号查询订单实绩
+    //通过订单号查询订单路段顺序号
     Integer getLineSequenceByOrderNumber(String orderNumber);
 
     //查询订单跟订单物资中间表 查询是否有多个物资Id
@@ -81,8 +81,8 @@ public interface UtilsMapper {
     //通过路段顺序号和线路ID查找 线路子表的子表的ID 和门岗ID或汽车衡ID
     List<Integer> getLineSegmentGateCalcId(Map<String, Object> map);
 
-    //通过运输订单id查找运输订单类型
-    BigDecimal getOrderTypeByOrderId(BigDecimal orderId);
+    //通过运输订单id查找运输订单信息
+    Map<String, Object> getOrderMesByOrderId(BigDecimal orderId);
 
     //通过运输订单号查询运输订单类型
     Map<String, Object> getOrderTypeByOrderNumber(String orderNumber);

+ 1 - 1
src/main/java/com/steerinfo/dil/service/ITmstruckMeasureCommissionService.java

@@ -29,6 +29,6 @@ public interface ITmstruckMeasureCommissionService{
     int addMaoMeasureCommission(Map<String, Object> map);
 
     //发送计量委托
-    int sendMeasureCommssion(Map<String,Object> map) throws Exception;
+    int sendMeasureCommssion(Map<String,Object> map);
 
 }

+ 8 - 5
src/main/java/com/steerinfo/dil/service/impl/TmstruckEnfactoryResultServiceImpl.java

@@ -153,17 +153,20 @@ public class TmstruckEnfactoryResultServiceImpl implements ITmstruckEnfactoryRes
         String orderNumber = (String) map.get("orderNumber");
         //通过订单号查询订单类型 及总实绩Id
         Map<String, Object> mesMap = utilsMapper.getOrderTypeByOrderNumber(orderNumber);
+        String capacityNumber = (String) mesMap.get("capacityNumber");
+        BigDecimal resultTotalId = DataChange.dataToBigDecimal(mesMap.get("totalId"));
         Integer orderType = DataChange.dataToBigDecimal(mesMap.get("orderType")).intValue();
-
         if(orderType == 11){
             //内转订单类型  没有生成实绩 直接新增
-            Integer sqe = utilsMapper.getLineSequenceByOrderNumber(orderNumber);
-            sqe = sqe == null ? 1 : sqe + 1;
+            Integer sqe = DataChange.dataToBigDecimal(mesMap.get("Sqe")).intValue();
+            sqe = sqe + 1;
             map.put("resultId", tmstruckEnfactoryResultMapper.selectMaxId());  //插入进厂实绩Id
             map.put("Sqe", sqe); //查询路段顺序号 + 1
+            map.put("totalId",resultTotalId);
             i += tmstruckEnfactoryResultMapper.insertSelective(generateEnFactoryResult(map));
             mesMap.put("orderLineSequence", sqe);
             i += utilsService.updateOrderLineSqeByOrderNumber(mesMap); //更新路段顺序号
+            utilsService.pushMesToWebsocket(capacityNumber, "车辆进厂");
             return i;
         }
 
@@ -180,7 +183,7 @@ public class TmstruckEnfactoryResultServiceImpl implements ITmstruckEnfactoryRes
         }
         map.putAll(selectMap);
         BigDecimal orderId = DataChange.dataToBigDecimal(map.get("orderId"));
-        BigDecimal resultTotalId = DataChange.dataToBigDecimal(map.get("resultTotalId"));
+
         //判断委托是否发送成功
         int checkMeasureCommission = 0;
         switch (orderType){
@@ -240,7 +243,7 @@ public class TmstruckEnfactoryResultServiceImpl implements ITmstruckEnfactoryRes
         i += tmstruckEnfactoryResultMapper.updateByPrimaryKeySelective(generateEnFactoryResult(map)); //添加进厂实绩
         //修改路段顺序号
         i += utilsService.updateOrderLineSequence(map);
-        utilsService.pushMesToWebsocket((String) map.get("capacityNumber"), "车辆进厂");
+        utilsService.pushMesToWebsocket(capacityNumber, "车辆进厂");
         return i;
 
     }

+ 43 - 5
src/main/java/com/steerinfo/dil/service/impl/TmstruckLeaveFactoryResultServiceImpl.java

@@ -165,8 +165,26 @@ public class TmstruckLeaveFactoryResultServiceImpl implements ITmstruckLeaveFact
     public int leaveFactoryByPDA(Map<String, Object> map) throws Exception{
         int i = 0;
         String orderNumber = (String) map.get("orderNumber");
-        String substring = orderNumber.substring(0, orderNumber.length() - 1);
-        Map<String, Object> selectMap = tmstruckLeaveFactoryResultMapper.selectResultId(substring);
+        orderNumber = orderNumber.substring(0, orderNumber.length() - 1);
+        //通过订单号查询订单类型 及总实绩Id
+        Map<String, Object> mesMap = utilsMapper.getOrderTypeByOrderNumber(orderNumber);
+        Integer orderType = DataChange.dataToBigDecimal(mesMap.get("orderType")).intValue();
+        String capacityNumber = (String) mesMap.get("capacityNumber");
+        if(orderType == 11){
+            //内转订单类型 没有生成实绩 直接新增
+            Integer sqe = DataChange.dataToBigDecimal(mesMap.get("Sqe")).intValue();
+            sqe = sqe + 1;
+            map.put("resultId",tmstruckLeaveFactoryResultMapper.selectMaxId());//出厂实绩ID
+            map.put("Sqe",sqe);//查询路段顺序号+1
+            map.put(("totalId"),mesMap.get("totalId"));
+            i += tmstruckLeaveFactoryResultMapper.insertSelective(generateLeaveFactory(map));
+            //更新路段顺序号
+            mesMap.put("orderLineSequence",sqe);
+            i += utilsService.updateOrderLineSqeByOrderNumber(mesMap);
+            utilsService.pushMesToWebsocket(capacityNumber, "出厂");
+            return i;
+        }
+        Map<String, Object> selectMap = tmstruckLeaveFactoryResultMapper.selectResultId(orderNumber);
         if(selectMap == null){
             throw new Exception("该车已出厂!!");
         }else{
@@ -178,13 +196,12 @@ public class TmstruckLeaveFactoryResultServiceImpl implements ITmstruckLeaveFact
             }
         }
         map.putAll(selectMap);
-        map.put("orderNumber", substring);
-        BigDecimal orderType = DataChange.dataToBigDecimal(map.get("orderTypee"));
+        map.put("orderNumber", orderNumber);
         BigDecimal orderId = DataChange.dataToBigDecimal(map.get("orderId"));
         i += updateLeaveResultByPDA(map); //更新出厂实绩
         //更新路段顺序号
         i += utilsService.updateOrderLineSequence(map);
-        switch (orderType.intValue()){
+        switch (orderType){
             case 1:
                 break;
             case 2:
@@ -268,6 +285,27 @@ public class TmstruckLeaveFactoryResultServiceImpl implements ITmstruckLeaveFact
         return i;
     }
 
+    //内转订单类型新增出厂实绩
+    private TmstruckLeaveFactoryResult generateLeaveFactory(Map<String, Object> map) {
+        TmstruckLeaveFactoryResult tmstruckLeaveFactoryResult = new TmstruckLeaveFactoryResult();
+        //获取出厂实绩ID
+        tmstruckLeaveFactoryResult.setResultId(DataChange.dataToBigDecimal(map.get("resultId")));
+        //添加门岗
+        tmstruckLeaveFactoryResult.setGatepostId(DataChange.dataToBigDecimal(map.get("gatepostId")));
+        //添加出厂时间
+        tmstruckLeaveFactoryResult.setResultOutGateTime(new Date());
+        tmstruckLeaveFactoryResult.setInsertTime(new Date());
+        tmstruckLeaveFactoryResult.setResultOutMode("手动抬杆");
+        tmstruckLeaveFactoryResult.setInsertUsername("admin");
+        if(map.get("Sqe") !=null){
+            tmstruckLeaveFactoryResult.setSegmentSqe(DataChange.dataToBigDecimal(map.get("Sqe")));
+        }
+        if(map.get("totalId") !=null){
+            tmstruckLeaveFactoryResult.setResultTotalId(DataChange.dataToBigDecimal(map.get("totalId")));
+        }
+        return tmstruckLeaveFactoryResult;
+    }
+
     /**
      * 更新出厂实绩
      * @param mapValue {运输订单号:orderNumber 门岗名称:gatepostName}

+ 55 - 15
src/main/java/com/steerinfo/dil/service/impl/TmstruckLoadResultServiceImpl.java

@@ -255,10 +255,30 @@ public class TmstruckLoadResultServiceImpl implements ITmstruckLoadResultService
      */
     @Transactional
     public int addXS2LoadResult(Map<String, Object> map) throws Exception {
-        int j=0;
+
+        //通过运输订单号查询订单类型
+        String orderNumber = (String) map.get("orderNumber");
+        //通过订单号查询订单类型 及总实绩Id
+        Map<String, Object> mesMap = utilsMapper.getOrderTypeByOrderNumber(orderNumber);
+        String capacityNumber = (String) mesMap.get("capacityNumber");
+        BigDecimal orderType = DataChange.dataToBigDecimal(mesMap.get("orderType"));
+        BigDecimal resultTotalId = DataChange.dataToBigDecimal(mesMap.get("totalId"));
+        if(orderType.intValue() == 11){
+            Integer sqe = DataChange.dataToBigDecimal(mesMap.get("Sqe")).intValue();
+            sqe = sqe + 1;
+            map.put("resultId",tmstruckLoadResultMapper.selectMaxId());
+            map.put("Sqe",sqe);//查询路段顺序号+1
+            map.put("resultTotalId", resultTotalId);
+            int i =tmstruckLoadResultMapper.insertSelective(generateLoad(map));
+            //更新路段顺序号
+            mesMap.put("orderLineSequence",sqe);
+            utilsService.updateOrderLineSqeByOrderNumber(mesMap);
+            //推送消息到websocket
+            utilsService.pushMesToWebsocket(capacityNumber, "装货");
+            return i;
+        }
         //通过运输订单号 查询 总实绩ID、订单类型
         Map<String,Object> orderMap = tmstruckEnfactoryResultMapper.selectTotalResultIdByCpAndOn(map);
-        BigDecimal resultTotalId = (BigDecimal) orderMap.get("resultTotalId");
         //查询装车实绩ID
         map.putAll(tmstruckLoadResultMapper.getLoadResultIdByMIdAndTotalId(resultTotalId.intValue(), null));
         TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
@@ -281,18 +301,6 @@ public class TmstruckLoadResultServiceImpl implements ITmstruckLoadResultService
                 tmstruckLoadResult.setLoaderId(new BigDecimal(personnelId));
             }
         }
-        BigDecimal orderType =(BigDecimal) orderMap.get("orderType");
-        BigDecimal orderId=DataChange.dataToBigDecimal("orderId");
-        if (orderType.intValue()==11){
-            //判断是否需要第二次计量
-            //根据运输订单号查找物资
-            Integer materialNum = utilsMapper.countMaterialByOrderId(orderId);
-            if (materialNum>1) {
-                //发送第二次计量委托
-                j += tmstruckMeasureCommissionService.sendMeasureCommssion(map);
-
-            }
-        }
         // 更新装货点
         tmstruckLoadResult.setLoadingId(DataChange.dataToBigDecimal(map.get("warehouseId")));
         //更新路段顺序号
@@ -305,16 +313,48 @@ public class TmstruckLoadResultServiceImpl implements ITmstruckLoadResultService
             }
             tmstruckLoadResult.setInsertUpdateRemark(insertUpdateRemark);
         }
+<<<<<<< HEAD
 //        if (j == 0) {
 //            throw new Exception("第二次委托发送失败");
 //        }
+=======
+>>>>>>> bf4c2967e0e6aa0fe1e443c7ac538afb6341c61d
         tmstruckLoadResult.setCaseNumber((String) map.get("caseNumber"));
         i += tmstruckLoadResultMapper.updateByPrimaryKeySelective(tmstruckLoadResult);
         //推送消息到websocket
-        utilsService.pushMesToWebsocket((String) orderMap.get("capacityNumber"), "装货");
+        utilsService.pushMesToWebsocket(capacityNumber, "装货");
         return i;
     }
 
+    //内转添加装货实绩
+    private TmstruckLoadResult generateLoad(Map<String, Object> map) {
+        TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
+        tmstruckLoadResult.setId(DataChange.dataToBigDecimal(map.get("resultId")));
+        tmstruckLoadResult.setResultTotalId(DataChange.dataToBigDecimal(map.get("resultTotalId")));
+        tmstruckLoadResult.setStatus(new BigDecimal(0));
+        tmstruckLoadResult.setSegmentSqe(DataChange.dataToBigDecimal(map.get("Sqe")));
+        tmstruckLoadResult.setMaterialId(DataChange.dataToBigDecimal(map.get("materialId")));
+        //添加装车开始时间
+        Date loadStartTime = new Date((long) map.get("loadStartTime"));
+        tmstruckLoadResult.setResultLoadStartTime(loadStartTime);
+        //添加装车结束时间(当前时间)
+        Date loadEndTime = new Date();
+        tmstruckLoadResult.setResultLoadEndTime(loadEndTime);
+        //计算装车时长 取分钟
+        long differentTime = (loadEndTime.getTime() - loadStartTime.getTime()) / 60000;
+        tmstruckLoadResult.setResultLoadDuration(new BigDecimal(differentTime));
+        if(map.get("personnelSsoId") != null){
+            //通过SSo主键查询人员管理主键
+            Integer personnelId = utilsMapper.getPersonnelIdBySsoId((String) map.get("personnelSsoId"));
+            if(personnelId != null){
+                tmstruckLoadResult.setLoaderId(new BigDecimal(personnelId));
+            }
+        }
+        // 添加装货点
+        tmstruckLoadResult.setLoadingId(DataChange.dataToBigDecimal(map.get("warehouseId")));
+        return tmstruckLoadResult;
+    }
+
     /**
      * 更改最大路段顺序号 -1
      * @Author TXF

+ 89 - 31
src/main/java/com/steerinfo/dil/service/impl/TmstruckMeasureCommissionServiceImpl.java

@@ -89,7 +89,6 @@ public class TmstruckMeasureCommissionServiceImpl implements ITmstruckMeasureCom
      */
     public int addMaoMeasureCommission(Map<String, Object> map){
         int i = 0;
-        addMeasureCommission(map); // 添加计毛委托
         //发送数据给计量系统 必要数据 orderTypee:订单类型  resultTotalId: 总实绩Id   orderId
         int orderType = DataChange.dataToBigDecimal(map.get("orderTypee")).intValue();
         if(orderType == 10){
@@ -119,7 +118,6 @@ public class TmstruckMeasureCommissionServiceImpl implements ITmstruckMeasureCom
      */
     public int addXSMeasureCommission(Map<String, Object> map){
         int i = 0;
-        addMeasureCommission(map); // 添加计毛委托
         //发送数据给计量系统 必要数据 orderTypee:订单类型  resultTotalId: 总实绩Id   orderId
         //获取当前订单是属于哪个厂区订单
         Integer shipperId = tmstruckMeasureCommissionMapper.getShipperIdByOrderId(DataChange.dataToBigDecimal(map.get("orderId")));
@@ -188,7 +186,6 @@ public class TmstruckMeasureCommissionServiceImpl implements ITmstruckMeasureCom
                 i = sendDXMeasureCommissionMes(map);//如果有两条没有净重的实绩则需要给达兴发委托  否则给达钢发委托
             }
         }
-        addMeasureCommission(map); // 添加计毛委托
         return i;
     }
 
@@ -226,10 +223,9 @@ public class TmstruckMeasureCommissionServiceImpl implements ITmstruckMeasureCom
      * @param map orderTypee 订单类型  type 计皮0还是计毛1类型  orderId  订单ID
      */
     public int sendMeasureCommissionMes(Map<String, Object> map){
-        Map<String, Object> measureCommission = new HashMap<>();
+        Map<String, Object> measureCommission = null;
         //查询计量委托
         Integer orderType = DataChange.dataToBigDecimal(map.get("orderTypee")).intValue();
-        BigDecimal orderId=DataChange.dataToBigDecimal(map.get("orderId"));
         switch (orderType){
             case 1:
                 break;
@@ -239,24 +235,6 @@ public class TmstruckMeasureCommissionServiceImpl implements ITmstruckMeasureCom
                 break;
             case 10:
                 break;
-            case 11://纯内转发送计量委托
-                 //查找是否是多拼
-                 Integer materialNu = utilsMapper.countMaterialByOrderId(orderId);
-                 if (materialNu > 1){
-                     List<Map<String, Object>> inwardCommission = tmstruckMeasureCommissionMapper.getMaterialIdAndCalculateId(map);
-                 }else {
-                     measureCommission = tmstruckMeasureCommissionMapper.purchaseNzMeasure(map);
-                 }
-                 measureCommission.put("isRelationEAS", false);
-                 measureCommission.put("flowTo", "进厂");
-                 measureCommission.put("isDel", false);
-                 measureCommission.put("isInsert", true);
-                 measureCommission.put("IsAssembly", false);
-                 measureCommission.put("deliveryMethod", "磅重交货");
-                 measureCommission.put("packagesNum", 0);
-                 measureCommission.put("ReceivUnit","四川省达州钢铁集团有限责任公司");
-                 measureCommission.put("sendUnit","四川省达州钢铁集团有限责任公司");
-                 break;
             case 4:
                 break;
             case 5:
@@ -265,6 +243,9 @@ public class TmstruckMeasureCommissionServiceImpl implements ITmstruckMeasureCom
             case 8:
 //            case 9:
                 measureCommission =  tmstruckMeasureCommissionMapper.purchaseMeasure(map);
+                if(measureCommission == null){
+                    return 0;
+                }
                 if(orderType == 6){
                     measureCommission.put("isRelationEAS", false);
                 }else {
@@ -277,11 +258,35 @@ public class TmstruckMeasureCommissionServiceImpl implements ITmstruckMeasureCom
                 measureCommission.put("deliveryMethod", "磅重交货");
                 measureCommission.put("packagesNum", 0);
                 break;
+            case 11:
+                //纯内转发送计量委托
+                measureCommission = tmstruckMeasureCommissionMapper.purchaseNzMeasure(map);
+                if(measureCommission == null){
+                    return 0;
+                }
+                if(map.get("deletedCommission") != null){
+                    measureCommission.put("isDel", true);
+                    measureCommission.put("isInsert", false);
+                }else {
+                    measureCommission.put("isDel", false);
+                    measureCommission.put("isInsert", true);
+                }
+                measureCommission.put("isRelationEAS", false);
+                measureCommission.put("flowTo", "中转");
+                measureCommission.put("IsAssembly", false);
+                measureCommission.put("deliveryMethod", "磅重交货");
+                measureCommission.put("packagesNum", 0);
+                measureCommission.put("ReceivUnit","四川省达州钢铁集团有限责任公司");
+                measureCommission.put("sendUnit","四川省达州钢铁集团有限责任公司");
+                break;
             case 12:
             case 13:
                  //内转零星进厂(老厂区)
                 //零星计量委托(老厂区)
                 measureCommission = tmstruckMeasureCommissionMapper.sproadicMeasure(map);
+                if(measureCommission == null){
+                    return 0;
+                }
                 measureCommission.put("isRelationEAS",false);
                 measureCommission.put("flowTo","进厂");
                 measureCommission.put("isDel", false);
@@ -294,6 +299,9 @@ public class TmstruckMeasureCommissionServiceImpl implements ITmstruckMeasureCom
             case 16:
                 //零星计量委托(老厂区)  会有多拼
                 measureCommission = tmstruckMeasureCommissionMapper.sproadicMeasure(map);
+                if(measureCommission == null){
+                    return 0;
+                }
                 measureCommission.put("isRelationEAS",false);
                 measureCommission.put("flowTo","出厂");
                 measureCommission.put("isDel", false);
@@ -303,14 +311,20 @@ public class TmstruckMeasureCommissionServiceImpl implements ITmstruckMeasureCom
                 break;
             case 20://采购内转委托总厂区
                 measureCommission=tmstruckMeasureCommissionMapper.purchaseXqCgNzMeasure(map);
+                if(measureCommission == null){
+                    return 0;
+                }
                 measureCommission.put("isRelationEAS",false);
                 measureCommission.put("flowTo","进厂");
                 measureCommission.put("isDel",false);
                 measureCommission.put("isInsert",true);
                 measureCommission.put("deliveryMethod", "磅重交货");
                 measureCommission.put("packagesNum", 0);
-
         }
+        if(measureCommission != null)
+            map.put("materialId", measureCommission.get("materialId"));
+        addMeasureCommission(map); // 添加计量委托
+        System.out.println(measureCommission);
         /*访问接口发送数据*/
         return 1;
 //        return sendMesToMeasure(measureCommission);
@@ -397,6 +411,9 @@ public class TmstruckMeasureCommissionServiceImpl implements ITmstruckMeasureCom
                 break;
             
         }
+        if(measureCommission != null)
+            map.put("materialId", measureCommission.get("item"));
+        addMeasureCommission(map); // 添加计量委托
         /*访问接口发送数据*/
         return sendMesToDXMeasure(measureCommission);
     }
@@ -464,13 +481,36 @@ public class TmstruckMeasureCommissionServiceImpl implements ITmstruckMeasureCom
 
     //发送计量委托
     @Override
-    @Transactional(rollbackFor = Exception.class)
-    public int sendMeasureCommssion(Map<String, Object> map)  throws Exception {
+    @Transactional
+    public int sendMeasureCommssion(Map<String, Object> map){
+        if(map.get("deletedCommission") != null){
+            //在计量实绩中查询是否有计量数据,如果有则代表已经计量过了不允许撤回
+            List<Integer> commission = tmstruckMeasureCommissionMapper.checkoutWeightCommission(map);
+            if(commission.size() != 0){
+                return 2;
+            }
+        }else {
+            //查询最后发送委托的物资
+            Integer alreadySentMaterialId = tmstruckMeasureCommissionMapper.getAlreadySentMaterialId(map);
+            if(alreadySentMaterialId != null){
+                map.put("checkMaterialId", alreadySentMaterialId);
+                //判断当前订单是否有已经发送过委托 但是还未计量完成的物资
+                Map<String, Object> checkoutMesMap = tmstruckMeasureCommissionMapper.checkoutWeightCommission2(map);
+                if(checkoutMesMap == null){ // 为空则是这个物资还没有计量
+                    return 4;
+                }else {
+                    //如果不为空, 判断是否有净重 如果有净重则是计量完成 否则 没有
+                    if(checkoutMesMap.get("resultNetWeight") == null){
+                        return 4;
+                    }
+                }
+            }
+        }
         int i=0;
         //获取订单类型
         BigDecimal orderId = DataChange.dataToBigDecimal(map.get("orderId"));
-        BigDecimal orderType = utilsMapper.getOrderTypeByOrderId(orderId);
-        map.put("orderTypee", orderType);
+        map.putAll(utilsMapper.getOrderMesByOrderId(orderId));
+        BigDecimal orderType = DataChange.dataToBigDecimal(map.get("orderTypee"));
         //根据运输订单id查找运输订单号
         switch (orderType.intValue()){
             case 1: //查询未装车实绩
@@ -500,15 +540,33 @@ public class TmstruckMeasureCommissionServiceImpl implements ITmstruckMeasureCom
 //            case 9:
             case 10:
             case 11:
+                i += addNZMeasureCommission(map);
+                break;
 //            case 17:
             case 18:
-                //通过订单ID查询物资Id
                 i+=addMaoMeasureCommission(map);
         }
-        if (i==0){
-            throw new Exception("委托发送失败");
+        if(i == 1){
+            //发送委托成功后修改订单物资表
+            tmstruckMeasureCommissionMapper.updateOmsTruckMaterial(map);
+            if(map.get("deletedCommission") != null){
+                i = 3;
+            }
         }
         return i;
     }
 
+    /**
+     * 添加内转委托
+     * @Author TXF
+     * @Date 2022/2/19 12:23
+     * @param map
+     * @return
+     **/
+    public int addNZMeasureCommission(Map<String, Object> map){
+        int i = 0;
+        addMeasureCommission(map); // 添加计毛委托
+        i += sendMeasureCommissionMes(map); //往老厂区发送委托
+        return i;
+    }
 }

+ 56 - 1
src/main/java/com/steerinfo/dil/service/impl/TmstruckUnloadResultServiceImpl.java

@@ -8,6 +8,8 @@ import com.steerinfo.dil.util.DataChange;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+
+import javax.xml.crypto.Data;
 import java.math.BigDecimal;
 import java.util.Date;
 import java.util.HashMap;
@@ -140,8 +142,29 @@ public class TmstruckUnloadResultServiceImpl implements ITmstruckUnloadResultSer
     @Transactional
     public int updateUnloadResult(Map<String, Object> map) {
         int i = 0;
+        //通过运输订单号查询订单类型
+        String orderNumber = (String) map.get("orderNumber");
+        //通过订单号查询订单类型 及总实绩Id
+        Map<String, Object> mesMap = utilsMapper.getOrderTypeByOrderNumber(orderNumber);
+        BigDecimal orderType = DataChange.dataToBigDecimal(mesMap.get("orderType"));
+        //判断是不是内转
+        if(orderType.intValue() == 11){
+            //如果是内转新增卸货实绩
+            Integer sqe = utilsMapper.getLineSequenceByOrderNumber((String) map.get("orderNumber"));
+            sqe = sqe == null ? 1 : sqe +1;
+            BigDecimal totalId = DataChange.dataToBigDecimal(mesMap.get("totalId"));
+            map.put("resultId",tmstruckUnloadResultMapper.selectMaxId());
+            map.put("Sqe",sqe);
+            map.put("totalId",totalId);
+            i += tmstruckUnloadResultMapper.insertSelective(generateUnload(map));
+            //更新路段顺序号
+            mesMap.put("orderLineSequence",sqe);
+            i += utilsService.updateOrderLineSqeByOrderNumber(mesMap);
+            //卸货成功后推送消息给websocket
+            utilsService.pushMesToWebsocket((String) map.get("capacityNumber"), "卸货");
+            return i;
+        }
         map.putAll(tmstruckUnloadResultMapper.selectTotalIdByOrderNo((String) map.get("orderNumber")));
-        BigDecimal orderType = DataChange.dataToBigDecimal(map.get("orderTypee"));
         i += updateUnloadResultBy(map); //更新卸货实绩
         //路段顺序号 + 1
         i += utilsService.updateOrderLineSequence(map);
@@ -179,6 +202,38 @@ public class TmstruckUnloadResultServiceImpl implements ITmstruckUnloadResultSer
         return i;
     }
 
+    /*
+    内转物流新增卸货实绩
+     */
+    private TmstruckUnloadResult generateUnload(Map<String, Object> map) {
+        TmstruckUnloadResult tmstruckUnloadResult = new TmstruckUnloadResult();
+        tmstruckUnloadResult.setResultId(DataChange.dataToBigDecimal(map.get("resultId")));
+        tmstruckUnloadResult.setResultTotalId(DataChange.dataToBigDecimal(map.get("totalId")));
+        tmstruckUnloadResult.setSegmentSqe(DataChange.dataToBigDecimal(map.get("Sqe")));
+        //添加卸货点
+        if(map.get("warehouseId") !=null){
+            tmstruckUnloadResult.setResultUnloadPlaceId(DataChange.dataToBigDecimal(map.get("warehouseId")));
+        }if(map.get("personnelSsoId") !=null){
+            //通过SSo主键查询人员管理主键
+            Integer personnelId = utilsMapper.getPersonnelIdBySsoId((String)map.get("personnelSsoId"));
+            if(personnelId !=null){
+                tmstruckUnloadResult.setUnloaderId(new BigDecimal(personnelId));
+            }
+        }
+        //判断物资是否为空
+        if(map.get("materialId") != null){
+            tmstruckUnloadResult.setUnloaderId(DataChange.dataToBigDecimal(map.get("materialId")));
+        }
+        //添加卸货时间
+        tmstruckUnloadResult.setResultEndTime(new Date());
+        //确认卸货设为同意
+        tmstruckUnloadResult.setUnloadStatus("同意");
+        tmstruckUnloadResult.setInsertTime(new Date());
+        tmstruckUnloadResult.setInsertUsername("admin");
+        return tmstruckUnloadResult;
+
+
+    }
 
 
     /**

+ 0 - 3
src/main/resources/com/steerinfo/dil/mapper/TmstruckEnfactoryResultMapper.xml

@@ -661,7 +661,6 @@
                OO.ORDER_TYPE              "orderTypee", --避免与筛选条件重名
                OO.ORDER_TYPE              "orderType",
                TER.RESULT_TOTAL_ID        "resultTotalId",
-               RC.CAPACITY_NUMBER         "capacityNumber",
                TER.SEGMEN_SQE             "segmentSqe", --进厂的路段顺序号
                OO.ORDER_LINE_SEQUENCE       "orderSegmentSqe",
                ter.result_entry_gate_time
@@ -670,8 +669,6 @@
             on OO.ORDER_ID = TTR.ORDER_ID
           left join TMSTRUCK_ENFACTORY_RESULT TER
             on TER.RESULT_TOTAL_ID = TTR.RESULT_TOTAL_ID
-          left join RMS_CAPACITY RC
-            on RC.CAPACITY_ID = OO.CAPACITY_ID
          where OO.ORDER_NUMBER = #{orderNumber}
            and ter.result_entry_gate_time is null
          order by TER.SEGMEN_SQE)

+ 0 - 3
src/main/resources/com/steerinfo/dil/mapper/TmstruckLeaveFactoryResultMapper.xml

@@ -594,7 +594,6 @@
                         OO.ORDER_TYPE       "orderTypee",
                         TTR.RESULT_TOTAL_ID "resultTotalId",
                         OO.CAPACITY_ID      "capacityId",
-                        RC.CAPACITY_NUMBER  "capacityNumber",
                         TLFR.SEGMENT_SQE    "segmentSqe",
                         OO.ORDER_LINE_SEQUENCE      "orderSegmentSqe",
                         OO.PRICE_ID             "priceId"
@@ -603,8 +602,6 @@
                                     on OO.ORDER_ID = TTR.ORDER_ID
                           left join TMSTRUCK_LEAVE_FACTORY_RESULT TLFR
                                     on TLFR.RESULT_TOTAL_ID = TTR.RESULT_TOTAL_ID
-                          left join RMS_CAPACITY RC
-                                    on RC.CAPACITY_ID = OO.CAPACITY_ID
                  where OO.ORDER_NUMBER = #{orderNumber} and TLFR.RESULT_OUT_GATE_TIME is null
                  order by TLFR.SEGMENT_SQE
              )

+ 65 - 38
src/main/resources/com/steerinfo/dil/mapper/TmstruckMeasureCommissionMapper.xml

@@ -1142,45 +1142,28 @@
         WHERE
             ROWNUM = 1
     </select>
+
+<!--  查询内转计量委托  -->
     <select id="purchaseNzMeasure" resultType="java.util.Map" parameterType="java.util.Map">
-        SELECT
-            *
-        FROM
-            (
-                SELECT
-                    OO.ORDER_NUMBER "transportNum",
-                    RC.CAPACITY_NUMBER "carNum",
-                    APO.PURCHASE_ORDER_NO "purchaseOrder",
-                    RW.WAREHOUSE_NAME "unloadPlace",
-                    TWR.INSERT_UPDATE_REMARK "demo",
-                    RM.MATERIAL_ID "materialId",
-                    RM.MATERIAL_NAME "materiaName",
-                    concat( RM.MATERIAL_SPECIFICATION, RM.MATERIAL_MODEL ) "goodsType",
-                    RTC.TRUCK_CALCULATE_NUMBER "steelyardNum"
-                FROM
-                    OMSTRUCK_ORDER OO
-                        LEFT JOIN RMS_CAPACITY RC ON RC.CAPACITY_ID = OO.CAPACITY_ID
-                        LEFT JOIN AMSTRUCK_INWARD_PLAN AIP ON AIP.PLAN_ID = OO.ORDER_PLAN_ID
-                        LEFT JOIN AMSTRUCK_REQUIREMENT_PLAN ARP ON ARP.PLAN_ID = AIP.PLAN_ID
-                        LEFT JOIN AMSTRUCK_INWARD_REQUIREMENT AIR ON AIR.REQUIREMENT_ID = ARP.REQUIREMENT_ID
-                        LEFT JOIN AMS_PURCHASE_ORDER APO ON APO.PURCHASE_ORDER_ID = AIR.PURCHASE_ORDER_ID
-                        LEFT JOIN RMS_SUPPLIER RS ON RS.SUPPLIER_ID = APO.SUPPLIER_UNIT_ID
-                        LEFT JOIN RMS_CONSIGNEE RCE ON RCE.CONSIGNEE_ID = APO.RECEIVE_UNIT_ID
-                        LEFT JOIN TMSTRUCK_TOTAL_RESULT TTR ON TTR.ORDER_ID = OO.ORDER_ID
-                        LEFT JOIN TMSTRUCK_UNLOAD_RESULT TUR ON TUR.RESULT_TOTAL_ID = TTR.RESULT_TOTAL_ID
-                        LEFT JOIN RMS_WAREHOUSE RW ON RW.WAREHOUSE_ID = AIR.REQUIREMENT_UNLOAD_UNIT_ID
-                        LEFT JOIN TMSTRUCK_WEIGHT_RESULT TWR ON TWR.RESULT_TOTAL_ID = TTR.RESULT_TOTAL_ID
-                        LEFT JOIN OMSTRUCK_ORDER_MATERIAL OOM ON OOM.ORDER_ID = OO.ORDER_ID
-                        LEFT JOIN RMS_MATERIAL RM ON RM.MATERIAL_ID = OOM.MATERIAL_ID
-                        LEFT JOIN RMS_TRUCK_CALCULATE RTC ON RTC.TRUCK_CALCULATE_ID = TWR.RESULT_TARE_PLACE_ID
-                WHERE
-                    OO.ORDER_ID = #{orderId}
-                ORDER BY
-                    TWR.TARE_SEGMENT_SQE DESC,
-                    OOM.MATERIAL_PRIORITY DESC
-            )
-        WHERE
-            ROWNUM = 1
+       select OO.ORDER_NUMBER       "transportNum",
+              RC.CAPACITY_NUMBER    "carNum",
+              RM.MATERIAL_NAME      "materiaName",
+              CONCAT(RM.MATERIAL_SPECIFICATION, RM.MATERIAL_MODEL) "goodsType",
+              OO.INSERT_UPDATE_REMARK   "demo",
+              RM.MATERIAL_ID          "materialId",
+              RW.WAREHOUSE_NAME       "unloadPlace"
+       from OMSTRUCK_ORDER OO
+        left join AMSTRUCK_INWARD_PLAN  AIP on OO.ORDER_PLAN_ID = AIP.PLAN_ID
+        left join AMSTRUCK_REQUIREMENT_PLAN ARP on ARP.PLAN_ID = AIP.PLAN_ID
+        left join AMSTRUCK_INWARD_REQUIREMENT AIR ON AIR.REQUIREMENT_ID = ARP.REQUIREMENT_ID
+        LEFT JOIN AMSTRUCK_REQUIREMENT_MATERIAL ARM ON ARM.REQUIREMENT_ID = AIR.REQUIREMENT_ID
+        LEFT JOIN RMS_WAREHOUSE RW on RW.WAREHOUSE_ID = ARM.REQUIREMENT_UNLOAD_UNIT_ID
+        left join OMSTRUCK_ORDER_MATERIAL OOM  on OO.ORDER_ID = OOM.ORDER_ID
+        left join RMS_MATERIAL  RM on OOM.MATERIAL_ID = RM.MATERIAL_ID
+        left join RMS_CAPACITY  RC on OO.CAPACITY_ID = RC.CAPACITY_ID
+        where OOM.ORDER_ID = #{orderId}
+              and OOM.MATERIAL_ID = #{materialId}
+              AND ARM.MATERIAL_ID = #{materialId}
     </select>
 
 <!--  查找未计量完成的物资  -->
@@ -1221,5 +1204,49 @@
 
     </select>
 
+    <select id="checkoutWeightCommission" parameterType="map" resultType="java.lang.Integer">
+        select TWR.WEIGHT_TASK_RESULT_ID
+        from TMSTRUCK_TOTAL_RESULT TTR
+            left join TMSTRUCK_WEIGHT_RESULT TWR
+                on TWR.RESULT_TOTAL_ID = TTR.RESULT_TOTAL_ID
+            where TTR.ORDER_ID = #{orderId} and TWR.MATERIAL_ID = #{materialId}
+    </select>
+
+    <select id="checkoutWeightCommission2" parameterType="map" resultType="java.util.Map">
+        select TWR.WEIGHT_TASK_RESULT_ID "weightTaskResultId",
+               TWR.RESULT_NET_WEIGHT    "resultNetWeight"
+        from TMSTRUCK_WEIGHT_RESULT TWR
+                 left join TMSTRUCK_TOTAL_RESULT TTR
+                           on TTR.RESULT_TOTAL_ID = TWR.RESULT_TOTAL_ID
+        where TTR.ORDER_ID = #{orderId}
+          and TWR.MATERIAL_ID = #{checkMaterialId}
+
+    </select>
+
+    <select id="getAlreadySentMaterialId" parameterType="map" resultType="java.lang.Integer">
+        select *
+        from (
+                 select OOM.MATERIAL_ID
+                 from OMSTRUCK_ORDER_MATERIAL OOM
+                 where OOM.MATERIAL_MEASSION = 1
+                   and OOM.ORDER_ID = #{orderId}
+                 order by OOM.UPDATE_TIME DESC
+             )
+        where rownum = 1
+    </select>
+
+    <update id="updateOmsTruckMaterial" parameterType="map">
+        update OMSTRUCK_ORDER_MATERIAL OOM
+            <set>
+                OOM.UPDATE_TIME = SYSDATE,
+                <if test="deletedCommission == null">
+                     OOM.MATERIAL_MEASSION = 1
+                </if>
+                <if test="deletedCommission != null">
+                     OOM.MATERIAL_MEASSION = null
+                </if>
+            </set>
+        where OOM.ORDER_ID = #{orderId} and OOM.MATERIAL_ID = #{materialId}
+    </update>
 
 </mapper>

+ 10 - 0
src/main/resources/com/steerinfo/dil/mapper/TmstruckUnloadResultMapper.xml

@@ -1048,5 +1048,15 @@
                 LEFT JOIN TMSTRUCK_WEIGHT_RESULT TWR ON TWR.RESULT_TOTAL_ID = TTR.RESULT_TOTAL_ID
         WHERE OOM.MATERIAL_ID=#{materialId}  AND OO.ORDER_ID=#{orderId}
     </select>
+    <select id="selectOrderId" resultType="java.util.Map" parameterType="java.util.Map">
+        SELECT OO.ORDER_ID "orderId",
+               oo.ORDER_NUMBER "orderNumber",
+
+               TTR.RESULT_TOTAL_ID "totalId"
+               FROM OMSTRUCK_ORDER OO
+               LEFT JOIN TMSTRUCK_TOTAL_RESULT TTR
+               ON TTR.ORDER_ID = OO.ORDER_ID
+               WHERE OO.ORDER_NUMBER = #{orderNumber}
+    </select>
 
 </mapper>

+ 14 - 3
src/main/resources/com/steerinfo/dil/mapper/UtilsMapper.xml

@@ -178,9 +178,12 @@
                            on RLGC.SEGMENT_ID = RLS.SEGMENT_ID
         where RLS.LINE_ID = #{lineId} and RLS.SEGMENT_SQE = #{segmentSqe}
     </select>
-    <select id="getOrderTypeByOrderId" resultType="java.math.BigDecimal">
-        select OO.ORDER_TYPE "orderType"
+    <select id="getOrderMesByOrderId" resultType="java.util.Map">
+        select OO.ORDER_TYPE "orderTypee",
+               TTR.RESULT_TOTAL_ID  "resultTotalId"
         from OMSTRUCK_ORDER OO
+        left join TMSTRUCK_TOTAL_RESULT TTR
+            on OO.ORDER_ID = TTR.ORDER_ID
         where  OO.ORDER_ID=#{orderId}
     </select>
      <!-- 根据运输订单id查找是否有多个物资 -->
@@ -193,11 +196,19 @@
     <select id="getOrderTypeByOrderNumber" parameterType="string" resultType="map">
         select OO.ORDER_TYPE "orderType",
                TTR.RESULT_TOTAL_ID "totalId",
-               OO.ORDER_ID      "orderId"
+               OO.ORDER_ID      "orderId",
+               OO.ORDER_LINE_SEQUENCE "Sqe",
+               RC.CAPACITY_NUMBER   "capacityNumber"
         from OMSTRUCK_ORDER OO
         left join TMSTRUCK_TOTAL_RESULT TTR
             on TTR.ORDER_ID = OO.ORDER_ID
+<<<<<<< HEAD
         where  OO.ORDER_NUMBER=#{orderNumber}
+=======
+        left join RMS_CAPACITY RC
+            on OO.CAPACITY_ID = RC.CAPACITY_ID
+        where  OO.order_Number=#{orderNumber}
+>>>>>>> bf4c2967e0e6aa0fe1e443c7ac538afb6341c61d
     </select>
 
     <select id="getLineSequenceByOrderNumber" parameterType="string" resultType="java.lang.Integer">