Browse Source

修改接收订单生成实绩取作业点

txf 3 years ago
parent
commit
5114b4e52d

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

@@ -63,7 +63,7 @@ public interface UtilsMapper {
     //查询最大路段顺序号 以及当前订单路段顺序号(执行到哪一步)
     Map<String, Object> getLineSeqAndOrderSeq(Map<String, Object> map);
 
-    //通过订单ID查询物资ID(针对单拼)
+    //通过订单ID查询物资ID (除了单拼外会有多个)
     List<Integer> getMaterialIdByOrderId(BigDecimal orderId);
 
     //查询订单ID查询第一个计量的物资Id(物资子表)
@@ -74,4 +74,7 @@ public interface UtilsMapper {
 
     //查询订单是否确认
     Integer getDriverConfirmation(BigDecimal orderId);
+
+    //通过路段顺序号和线路ID查找 线路子表的子表的ID 和门岗ID或汽车衡ID
+    List<Integer> getLineSegmentGateCalcId(Map<String, Object> map);
 }

+ 14 - 78
src/main/java/com/steerinfo/dil/service/impl/TmstruckEnfactoryResultServiceImpl.java

@@ -53,7 +53,7 @@ public class TmstruckEnfactoryResultServiceImpl implements ITmstruckEnfactoryRes
 
     /**
      * 派单时新增进厂实绩
-     * map: 总实绩Id、线路起点
+     * map: 总实绩Id、线路Id、路段顺序号
      * @param map
      * @return
      */
@@ -61,16 +61,14 @@ public class TmstruckEnfactoryResultServiceImpl implements ITmstruckEnfactoryRes
     public int addEnFactoryResult(Map<String, Object> map) {
         TmstruckEnfactoryResult tmstruckEnfactoryResult = new TmstruckEnfactoryResult();
         BigDecimal resultTotalId = DataChange.dataToBigDecimal(map.get("resultTotalId"));
-        //生成进厂作业主键Id
+        tmstruckEnfactoryResult.setResultTotalId(resultTotalId);
         //添加主键
         tmstruckEnfactoryResult.setResultId(tmstruckEnfactoryResultMapper.selectMaxId());
-        //通过总实绩ID查询订单类型
-        Map<String, Object> mesMap = utilsMapper.getOrderTypeByTotalId(resultTotalId);
-        int gatepostId = rulesService.calculateDxGatepostId(mesMap);
-        //添加门岗ID
+        List<Integer> gatepostIdList = utilsMapper.getLineSegmentGateCalcId(map);
+        //随机取门岗Id
+        Integer gatepostId = utilsService.randomGetValue(gatepostIdList);
+        //获取门岗ID
         tmstruckEnfactoryResult.setGatepostId(new BigDecimal(gatepostId));
-        //添加实绩总表Id
-        tmstruckEnfactoryResult.setResultTotalId(resultTotalId);
         // 添加路段顺序号
         tmstruckEnfactoryResult.setSegmenSqe(DataChange.dataToBigDecimal(map.get("segmentSqe")));
         return tmstruckEnfactoryResultMapper.insertSelective(tmstruckEnfactoryResult);
@@ -160,47 +158,18 @@ public class TmstruckEnfactoryResultServiceImpl implements ITmstruckEnfactoryRes
         int checkMeasureCommission = 0;
         switch (orderType.intValue()){
             case 1:
-            case 4:
                 //查询未装车实绩
                 List<Map<String, Object>> mapList = rulesService.judgeLastMaterial(DataChange.dataToBigDecimal(map.get("orderId")));
-                if(mapList.size() == 1){
-                    //如果是单拼 不需要走计算 直接走钢材的汽车衡(钢材)
-                    Map<String, Object> mesMap = new HashMap<>();
-                    mesMap.put("materialId",mapList.get(0).get("materialId"));
-                    map.put("materialId", mapList.get(0).get("materialId"));
-                    mesMap.put("nature", 1);
-                    mesMap.put("orderId", orderId);
-                    mesMap.put("orderType", orderType);
-                    //计算计皮汽车衡
-                    int tarePlaceId = rulesService.calculateWeighbridge(mesMap);
-                    mesMap.put("tarePlaceId", tarePlaceId);
-                    //更新汽车衡
-                    i += tmstruckWeightResultService.updateWeightResult(mesMap);
-                }else {
-                    //如果是多拼
-                    Map<String, Object> mesMap = rulesService.calculateMaterial(mapList);
-                    //获取物资ID
-                    HashMap<String, Object> calculateMap = new HashMap<>();
-                    calculateMap.put("orderId", map.get("orderId"));
-                    calculateMap.put("materialId", mesMap.get("materialId"));
-                    calculateMap.put("nature", 1); // 1:进厂秤
-                    //计算计皮汽车衡
-                    int tarePlaceId = rulesService.calculateWeighbridge(calculateMap);
-                    calculateMap.put("tarePlaceId", tarePlaceId);
-                    //更新汽车衡
-                    i += tmstruckWeightResultService.updateWeightResult(calculateMap);
-                }
+                map.put("materialId", mapList.get(0).get("materialId"));
                 checkMeasureCommission = tmstruckMeasureCommissionService.addXSMeasureCommission(map); //添加计皮委托
                 break;
+            case 4:
+                break;
             case 2:
             case 3:
-                Map<String, Object> mesMap = new HashMap<>();
-                mesMap.put("orderId", orderId);
-                mesMap.put("orderType", orderType);
-                int tarePlaceId = rulesService.calculateWeighbridge(mesMap);
-                mesMap.put("tarePlaceId", tarePlaceId);
-                //更新汽车衡
-                i += tmstruckWeightResultService.updateWeightResult(mesMap);
+                //通过物资ID查询订单ID(针对单拼)
+                List<Integer> materialIdList = utilsMapper.getMaterialIdByOrderId(orderId);
+                map.put("materialId", materialIdList.get(0));
                 checkMeasureCommission = tmstruckMeasureCommissionService.addXSMeasureCommission(map); //添加计皮委托
                 break;
             case 5:
@@ -210,31 +179,12 @@ public class TmstruckEnfactoryResultServiceImpl implements ITmstruckEnfactoryRes
             case 9:
             case 17:
             case 18:
-                //计算计毛汽车衡并更新计量实绩 (暂时无法计算汽车衡)  需要写一个单独的方法 先计皮再计毛的
-                HashMap<String, Object> calculateMap56789 = new HashMap<>();
-                calculateMap56789.put("orderId", map.get("orderId"));
-                calculateMap56789.put("orderType", orderType);
-                //计算计量汽车衡
-                int grossPlaceId = rulesService.calculateWeighbridge(calculateMap56789);
-                calculateMap56789.put("grossPlaceId", grossPlaceId);
-                i += tmstruckWeightResultService.updateWeightResult(calculateMap56789);
                 //通过订单ID查询物资Id
-                List<Integer> materialIdList = utilsMapper.getMaterialIdByOrderId(DataChange.dataToBigDecimal(map.get("orderId")));
-                map.put("materialId", materialIdList.get(0));
+                List<Integer> materialIds = utilsMapper.getMaterialIdByOrderId(DataChange.dataToBigDecimal(map.get("orderId")));
+                map.put("materialId", materialIds.get(0));
                 checkMeasureCommission = tmstruckMeasureCommissionService.addMaoMeasureCommission(map); //添加计毛委托 并发送计毛委托
                 break;
             case 10:
-                HashMap<String, Object> calculateMap10 = new HashMap<>();
-                calculateMap10.put("orderId", map.get("orderId"));
-                calculateMap10.put("orderType", orderType);
-                //计算计量汽车衡并更新计量实绩
-                int placeId = rulesService.calculateWeighbridge(calculateMap10);
-                if(placeId == 15){ //第一次计量
-                    calculateMap10.put("tarePlaceId", placeId); //皮重
-                }else {
-                    calculateMap10.put("grossPlaceId", placeId); //毛重
-                }
-                i += tmstruckWeightResultService.updateWeightResult(calculateMap10);
                 checkMeasureCommission = tmstruckMeasureCommissionService.addMaoMeasureCommission(map); //添加计量委托
                 break;
             case 11:
@@ -243,25 +193,11 @@ public class TmstruckEnfactoryResultServiceImpl implements ITmstruckEnfactoryRes
             case 13:
             case 16:
             case 15:
-                //无法确定汽车衡
-                HashMap<String, Object> calculateMap1213 = new HashMap<>();
-                calculateMap1213.put("orderId", map.get("orderId"));
-                calculateMap1213.put("orderType", orderType);
-                //计算计量汽车衡并更新计量实绩
-                int placeId1213 = rulesService.calculateWeighbridge(calculateMap1213);
-                if(orderType.intValue() == 12){
-                    calculateMap1213.put("grossPlaceId", placeId1213);
-                }else {
-                    calculateMap1213.put("tarePlaceId", placeId1213);
-                }
-                i += tmstruckWeightResultService.updateWeightResult(calculateMap1213);
                 //发送计量委托(查询物资顺序第一个装卸货的物资)
                 //拿到需要计量的物资ID
                 Integer materialId = utilsMapper.getLxFirstMaterialId(DataChange.dataToBigDecimal(map.get("orderId")));
                 map.put("materialId", materialId);
                 checkMeasureCommission += tmstruckMeasureCommissionService.addLXMeasureCommission(map);
-            
-
         }
 
         if(checkMeasureCommission == 0){

+ 6 - 8
src/main/java/com/steerinfo/dil/service/impl/TmstruckLeaveFactoryResultServiceImpl.java

@@ -16,10 +16,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * TmstruckLeaveFactoryResult服务实现:
@@ -44,7 +41,7 @@ public class TmstruckLeaveFactoryResultServiceImpl implements ITmstruckLeaveFact
     private TmstruckEnfactoryResultMapper tmstruckEnfactoryResultMapper;
 
     @Autowired
-    private IUtilsService utilsService;
+    private UtilsServiceImpl utilsService;
 
     @Autowired
     private UtilsMapper utilsMapper;
@@ -80,9 +77,10 @@ public class TmstruckLeaveFactoryResultServiceImpl implements ITmstruckLeaveFact
         //添加总实绩ID
         BigDecimal resultTotalId = DataChange.dataToBigDecimal(map.get("resultTotalId"));
         tmstruckLeaveFactoryResult.setResultTotalId(resultTotalId);
-        //通过总实绩ID查询订单类型
-        Map<String, Object> mesMap = utilsMapper.getOrderTypeByTotalId(resultTotalId);
-        int gatepostId = rulesService.calculateDxGatepostId(mesMap);
+        List<Integer> gatepostIdList = utilsMapper.getLineSegmentGateCalcId(map);
+        //随机取门岗值
+        Integer gatepostId = utilsService.randomGetValue(gatepostIdList);
+        //获取门岗ID
         tmstruckLeaveFactoryResult.setGatepostId(new BigDecimal(gatepostId));
         //添加路段顺序号
         tmstruckLeaveFactoryResult.setSegmentSqe(DataChange.dataToBigDecimal(map.get("segmentSqe")));

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

@@ -60,8 +60,21 @@ public class TmstruckLoadResultServiceImpl implements ITmstruckLoadResultService
     @Autowired
     private TmstruckWeightResultServiceImpl tmstruckWeightResultService;
 
-    @Autowired
-    private TmstruckMeasureCommissionServiceImpl tmstruckMeasureCommissionService;
+    /**
+     * 生成销售装车实绩(虚拟装车实绩)
+     * @param map
+     * @return
+     */
+    public int addLoadResult(Map<String, Object> map){
+        TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
+        //添加主键Id
+        tmstruckLoadResult.setResultId(tmstruckLoadResultMapper.selectMaxId());
+        //添加总实绩ID
+        tmstruckLoadResult.setResultTotalId(DataChange.dataToBigDecimal(map.get("resultTotalId")));
+        // 添加路段顺序号
+        tmstruckLoadResult.setSegmentSqe(DataChange.dataToBigDecimal(map.get("segmentSqe")));
+        return tmstruckLoadResultMapper.insertSelective(tmstruckLoadResult);
+    }
 
     /**
      * 查询所有装车实绩
@@ -158,24 +171,6 @@ public class TmstruckLoadResultServiceImpl implements ITmstruckLoadResultService
     }
 
 
-    /**
-     * 生成销售装车实绩(虚拟装车实绩)
-     * @param map
-     * @return
-     */
-    public int addLoadResult(Map<String, Object> map){
-        TmstruckLoadResult tmstruckLoadResult = new TmstruckLoadResult();
-        //添加主键Id
-        tmstruckLoadResult.setResultId(tmstruckLoadResultMapper.selectMaxId());
-        //添加物资Id
-        tmstruckLoadResult.setMaterialId(DataChange.dataToBigDecimal(map.get("materialId")));
-        //添加总实绩ID
-        tmstruckLoadResult.setResultTotalId(DataChange.dataToBigDecimal(map.get("resultTotalId")));
-        // 添加路段顺序号
-        tmstruckLoadResult.setSegmentSqe(DataChange.dataToBigDecimal(map.get("segmentSqe")));
-        return tmstruckLoadResultMapper.insertSelective(tmstruckLoadResult);
-    }
-
     /**
      * 更新装车实绩表
      * @return

+ 2 - 19
src/main/java/com/steerinfo/dil/service/impl/TmstruckUnloadResultServiceImpl.java

@@ -163,33 +163,16 @@ public class TmstruckUnloadResultServiceImpl implements ITmstruckUnloadResultSer
             case 7:
             case 8:
             case 9:
+            case 10:
+            case 15:
             case 17:
             case 18:
-                //计算计皮汽车衡 (当前无法计算汽车衡)
-                int placeId = rulesService.calculateWeighbridge(mesMap);
-                mesMap.put("tarePlaceId", placeId);
-                i += tmstruckWeightResultService.updateWeightResult(mesMap);
-                i += tmstruckReceiptResultService.addReceiptResult(map); //新增完卸车实绩后新增一条收货实绩
-
-                //计算出厂门岗 (暂时定死)
-//                Integer gatepostId = 2;
-                //计皮委托发送后更新出厂门岗
-//                i += tmstruckLeaveFactoryResultService.updateLeaveFactoryGatepostId(resultTotalId.intValue(), gatepostId);
-                break;
-            case 10:
-                //计算计皮汽车衡 (当前无法计算汽车衡)
-                int placeId10 = rulesService.calculateWeighbridge(mesMap);
-                mesMap.put("tarePlaceId", placeId10);
-                i += tmstruckWeightResultService.updateWeightResult(mesMap);
                 i += tmstruckReceiptResultService.addReceiptResult(map); //新增完卸车实绩后新增一条收货实绩
                 break;
             case 11:
                 //判断出厂路段顺序号是否为最后一个
                 i += utilsService.closeOrderNormally(map);
             case 12:
-                int placeId12 = rulesService.calculateWeighbridge(mesMap);
-                mesMap.put("tarePlaceId", placeId12);
-                i += tmstruckWeightResultService.updateWeightResult(mesMap);
                 //判断是否还有物资,如果还有物资就执行发送计量委托
                 materialIdIsNorWeight(map);
                 break;

+ 50 - 36
src/main/java/com/steerinfo/dil/service/impl/TmstruckWeightResultServiceImpl.java

@@ -18,10 +18,7 @@ import java.math.BigDecimal;
 import java.text.DecimalFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * TmstruckWeightResult服务实现:
@@ -48,6 +45,9 @@ public class TmstruckWeightResultServiceImpl implements ITmstruckWeightResultSer
     @Autowired
     private UtilsServiceImpl utilsService;
 
+    @Autowired
+    private UtilsMapper utilsMapper;
+
     @Autowired
     private RulesServiceImpl rulesService;
 
@@ -55,6 +55,52 @@ public class TmstruckWeightResultServiceImpl implements ITmstruckWeightResultSer
     @Autowired
     OmsFeign omsFeign;
 
+    /**
+     * 派单时新增计重实绩
+     * 总实绩ID、计皮点、计毛点
+     * @return
+     */
+    @Override
+    public int addWeightResult(Map<String, Object> map) {
+        TmstruckWeightResult tmstruckWeightResult = new TmstruckWeightResult();
+        //生成最大主键ID
+        tmstruckWeightResult.setWeightTaskResultId(tmstruckWeightResultMapper.selectMaxId());
+        BigDecimal resultTotalId = DataChange.dataToBigDecimal(map.get("resultTotalId"));
+        tmstruckWeightResult.setResultTotalId(resultTotalId);
+        // 添加路段顺序号以及汽车衡
+        List<Integer> calculateList = null;
+        Integer calculateId = 0;
+        Object grossSegmentSqe = map.get("grossSegmentSqe");
+        //获取毛重汽车衡
+        if(grossSegmentSqe != null){
+            tmstruckWeightResult.setGrossSegmentSqe(DataChange.dataToBigDecimal(grossSegmentSqe));
+            map.put("segmentSqe", grossSegmentSqe);
+            calculateList = utilsMapper.getLineSegmentGateCalcId(map);
+            //取汽车衡的Id
+            calculateId = utilsService.randomGetValue(calculateList);
+            tmstruckWeightResult.setResultGrossPlaceId(new BigDecimal(calculateId));
+        }
+        Object tareSegmentSqe = map.get("tareSegmentSqe");
+        if(tareSegmentSqe != null){
+            tmstruckWeightResult.setTareSegmentSqe(DataChange.dataToBigDecimal(tareSegmentSqe));
+            map.put("segmentSqe", tareSegmentSqe);
+            calculateList = utilsMapper.getLineSegmentGateCalcId(map);
+            calculateId = utilsService.randomGetValue(calculateList);
+            tmstruckWeightResult.setResultTarePlaceId(new BigDecimal(calculateId));
+        }
+        if(map.get("isdeduct") == null){
+            //添加是否需要扣水扣杂
+            //通过总实绩ID查询订单类型
+            Integer orderType = tmstruckWeightResultMapper.getOrderTypeByTotalId(resultTotalId);
+            if("67".contains(orderType.toString()) || orderType == 10){
+                tmstruckWeightResult.setIsdeduct(new BigDecimal(1));
+            }
+        }else {
+            tmstruckWeightResult.setIsdeduct(DataChange.dataToBigDecimal(map.get("isdeduct")));
+        }
+        return tmstruckWeightResultMapper.insertSelective(tmstruckWeightResult);
+    }
+
     /**
      * 查询所有计毛实绩
      * @param map
@@ -133,38 +179,6 @@ public class TmstruckWeightResultServiceImpl implements ITmstruckWeightResultSer
         return null;
     }
 
-    /**
-     * 派单时新增计重实绩
-     * 总实绩ID、计皮点、计毛点
-     * @return
-     */
-    @Override
-    public int addWeightResult(Map<String, Object> map) {
-        TmstruckWeightResult tmstruckWeightResult = new TmstruckWeightResult();
-        //生成最大主键ID
-        tmstruckWeightResult.setWeightTaskResultId(tmstruckWeightResultMapper.selectMaxId());
-        BigDecimal resultTotalId = DataChange.dataToBigDecimal(map.get("resultTotalId"));
-        tmstruckWeightResult.setResultTotalId(resultTotalId);
-        //通过总实绩ID查询订单类型
-        if(map.get("isdeduct") == null){
-            //添加是否需要扣水扣杂
-            Integer orderType = tmstruckWeightResultMapper.getOrderTypeByTotalId(resultTotalId);
-            if("67".contains(orderType.toString()) || orderType == 10){
-                tmstruckWeightResult.setIsdeduct(new BigDecimal(1));
-            }
-        }else {
-            tmstruckWeightResult.setIsdeduct(DataChange.dataToBigDecimal(map.get("isdeduct")));
-        }
-        // 添加物资Id (销售、内转到异地库)
-        if(map.get("materialId") != null)
-            tmstruckWeightResult.setMaterialId(DataChange.dataToBigDecimal(map.get("materialId")));
-        // 添加路段顺序号
-        if(map.get("grossSegmentSqe") != null) //毛重路段顺序号
-            tmstruckWeightResult.setGrossSegmentSqe(DataChange.dataToBigDecimal(map.get("grossSegmentSqe")));
-        if(map.get("tareSegmentSqe") != null) //皮重路段顺序号
-            tmstruckWeightResult.setTareSegmentSqe(DataChange.dataToBigDecimal(map.get("tareSegmentSqe")));
-        return tmstruckWeightResultMapper.insertSelective(tmstruckWeightResult);
-    }
 
     /**
      * 更新计量实绩  计皮点  计毛点  皮重

+ 14 - 1
src/main/java/com/steerinfo/dil/service/impl/UtilsServiceImpl.java

@@ -166,5 +166,18 @@ public class UtilsServiceImpl implements IUtilsService {
     }
 
 
-
+    public int randomGetValue(List<Integer> dataList){
+        if(dataList.size() != 0){
+            if(dataList.size() == 1){
+                return dataList.get(0);
+            }else {
+                //如果有多个值则随机取一个
+                Random random = new Random();
+                int i = random.nextInt(dataList.size());
+                return dataList.get(i);
+            }
+        }else {
+            return 0;
+        }
+    }
 }

+ 1 - 1
src/main/java/com/steerinfo/dil/util/DataChange.java

@@ -51,7 +51,7 @@ public class DataChange {
                     try {
                         decimal = new BigDecimal(str);
                     } catch (Exception e) {
-                        e.printStackTrace();
+                        System.out.println(data + ":数据解析失败!返回0");
                         return new BigDecimal(0);
                     }
                 }

+ 1 - 1
src/main/resources/application-dev.yml

@@ -37,7 +37,7 @@ openfeign:
   QmsFeign:
     url: ${QMSFEIGN_URL:172.16.33.162:8017}
   ImFeign:
-    url: ${IMFEIGN_URL:172.16.33.162:8055}
+    url: ${IMFEIGN_URL:172.16.33.166:8055}
 
 server:
   port: 8008

+ 1 - 1
src/main/resources/bootstrap.yml

@@ -1,7 +1,7 @@
 api.version: api/v1/truckTms
 spring:
   profiles:
-    include: ${SPRING_PROFILES:prod}
+    include: ${SPRING_PROFILES:dev}
   jackson:
     date-format: yyyy-MM-dd HH:mm:ss
     time-zone: GMT+8

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

@@ -168,4 +168,14 @@
         from OMSTRUCK_ORDER OO
         where OO.ORDER_ID = #{orderId}
     </select>
+
+    <!--  通过路段顺序号和线路ID查找 线路子表的子表的ID 和门岗ID或汽车衡ID   -->
+    <select id="getLineSegmentGateCalcId" parameterType="map" resultType="java.lang.Integer">
+        select
+            RLGC.GATE_CAL_ID "gateCalId"
+        from RMS_LINE_SEGEMNT RLS
+                 left join RMS_LINE_GATEPOST_CALCULATE RLGC
+                           on RLGC.SEGMENT_ID = RLS.SEGMENT_ID
+        where RLS.LINE_ID = #{lineId} and RLS.SEGMENT_SQE = #{segmentSqe}
+    </select>
 </mapper>