txf пре 3 година
родитељ
комит
9e7e6930f7

+ 6 - 0
src/main/java/com/steerinfo/dil/mapper/RulesMapper.java

@@ -35,4 +35,10 @@ public interface RulesMapper {
 
     //通过月台Id 查询月台当前排队车辆数
     BigDecimal queueCountByPlatformId(BigDecimal platformId);
+
+    //通过订单ID查询路线类型
+    Integer getLineIsSteel(BigDecimal orderId);
+
+    //查询还没有净重的计量实绩数量
+    Integer getNoNetWeightResult(BigDecimal orderId);
 }

+ 5 - 1
src/main/java/com/steerinfo/dil/mapper/TmstruckWeightResultMapper.java

@@ -83,6 +83,10 @@ public interface TmstruckWeightResultMapper extends IBaseMapper<TmstruckWeightRe
 //    根据运输订单Id获取计毛实绩
     List<Map<String, Object>> getSporadicSuppliesJiMiaoResult(Map<String, Object> map);
 
-    BigDecimal getXqCgWeightIdByLineAndOrderId(Map<String, Object> map);
+//    BigDecimal getXqCgWeightIdByLineAndOrderId(Map<String, Object> map);
+
+    //通过总实绩ID查询订单类型
+    Integer getOrderTypeByTotalId(BigDecimal resultTotalId);
+
 
 }

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

@@ -68,4 +68,5 @@ public interface UtilsMapper {
 
     //查询订单ID查询第一个计量的物资Id(物资子表)
     Integer getLxFirstMaterialId(BigDecimal orderId);
+
 }

+ 51 - 1
src/main/java/com/steerinfo/dil/service/impl/RulesServiceImpl.java

@@ -29,6 +29,8 @@ public class RulesServiceImpl implements IRulesService {
     @Autowired
     private TmstruckLeaveFactoryResultMapper tmstruckLeaveFactoryResultMapper;
 
+    @Autowired
+
     /**
      * 通过运输订单号查询物资并根据门岗规则计算出厂门岗
      * @param map
@@ -89,7 +91,55 @@ public class RulesServiceImpl implements IRulesService {
     public int calculateWeighbridge(Map<String, Object> map){
         //物资类型:无法计算汽车衡 返回所有1
         if(map != null){
-            return 18;
+            BigDecimal orderId = DataChange.dataToBigDecimal(map.get("orderId"));
+            //生成随机数
+            Random random = new Random();
+            int randomNum = random.nextInt(10);
+            //针对新厂区
+            int orderType = DataChange.dataToBigDecimal(map.get("orderType")).intValue();
+
+            if(orderType == 1){//销售
+                //通过订单ID获取线路类型为哪种类型 钢材 焦炭 危化品
+                Integer isSteel = rulesMapper.getLineIsSteel(orderId);
+                if(isSteel == 3){
+                    return 16; //化工厂
+                }
+                if(isSteel == 4){
+                    if(randomNum < 5){
+                        return 19;
+                    }else {
+                        return 20;
+                    }
+                }
+            }
+            if(orderType == 7 || orderType == 13){//采购燃料  零星进厂
+                if(randomNum < 5){
+                    return 17;
+                }else{
+                    return 18;
+                }
+            }
+            if(orderType == 14){ // 零星出厂
+                if(randomNum < 5){
+                    return 19;
+                }else {
+                    return 20;
+                }
+            }
+            if(orderType == 10){
+                //查询还没有净重的实绩
+                Integer resultCount = rulesMapper.getNoNetWeightResult(orderId);
+                if(resultCount == 2){
+                    return 15; //151 为判断计算进厂计量汽车衡
+                }else {
+                    if(randomNum < 5){
+                        return 17;
+                    }else{
+                        return 18;
+                    }
+                }
+            }
+            return 6;
         }
         List<Integer> calculateList = queryTruckCalculate(map);
         //暂时不考虑优先级 随机进行取值

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

@@ -156,6 +156,7 @@ public class TmstruckEnfactoryResultServiceImpl implements ITmstruckEnfactoryRes
         map.putAll(selectMap);
         BigDecimal orderType = DataChange.dataToBigDecimal(map.get("orderTypee"));
         BigDecimal lineSqe = DataChange.dataToBigDecimal(map.get("segmentSqe"));
+        BigDecimal orderId = DataChange.dataToBigDecimal(map.get("orderId"));
         i += updateEnFactoryResultByPDA(map); //添加进厂实绩
         //修改路段顺序号
         i += utilsService.updateOrderLineSequence(map);
@@ -172,7 +173,7 @@ public class TmstruckEnfactoryResultServiceImpl implements ITmstruckEnfactoryRes
                     mesMap.put("materialId",mapList.get(0).get("materialId"));
                     map.put("materialId", mapList.get(0).get("materialId"));
                     mesMap.put("nature", 1);
-                    mesMap.put("orderId", map.get("orderId"));
+                    mesMap.put("orderId", orderId);
                     //计算计皮汽车衡
                     int tarePlaceId = rulesService.calculateWeighbridge(mesMap);
                     mesMap.put("tarePlaceId", tarePlaceId);
@@ -207,31 +208,48 @@ public class TmstruckEnfactoryResultServiceImpl implements ITmstruckEnfactoryRes
             case 8:
             case 9:
                 //计算计毛汽车衡并更新计量实绩 (暂时无法计算汽车衡)  需要写一个单独的方法 先计皮再计毛的
-                map.put("grossPlaceId", 18);
-                i += tmstruckWeightResultService.updateWeightResult(map);
+                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));
                 checkMeasureCommission = tmstruckMeasureCommissionService.addMaoMeasureCommission(map); //添加计毛委托 并发送计毛委托
                 break;
-            case 10: // 采购内转(老区-厂内) 没有进厂
-                if(lineSqe.intValue() == 1){
-                   //计算计皮汽车衡并更新计量实绩
-                    map.put("tarePlaceId",15);
-                    i += tmstruckWeightResultService.updateWeightResult(map);
-                    checkMeasureCommission = tmstruckMeasureCommissionService.addMaoMeasureCommission(map); //添加计量委托
-                }else{
-                    map.put("grossPlaceId",18);
-                    i += tmstruckWeightResultService.updateWeightResult(map);
-                    checkMeasureCommission = tmstruckMeasureCommissionService.addMaoMeasureCommission(map); //添加计量委托
-
+            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:
                 break;
             case 12:
             case 13:
                 //无法确定汽车衡
+                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);
                 //发送计量委托
                 Integer materialId = utilsMapper.getLxFirstMaterialId(DataChange.dataToBigDecimal(map.get("orderId")));
                 map.put("materialId", materialId);

+ 7 - 0
src/main/java/com/steerinfo/dil/service/impl/TmstruckLoadResultServiceImpl.java

@@ -61,6 +61,7 @@ public class TmstruckLoadResultServiceImpl implements ITmstruckLoadResultService
 
     @Autowired
     private TmstruckMeasureCommissionServiceImpl tmstruckMeasureCommissionService;
+
     /**
      * 查询所有装车实绩
      * @param map
@@ -276,6 +277,12 @@ public class TmstruckLoadResultServiceImpl implements ITmstruckLoadResultService
         int i = tmstruckLoadResultMapper.updateByPrimaryKeySelective(tmstruckLoadResult);
         //装车成功后计算计毛汽车衡(出厂:2)
         BigDecimal orderType = DataChange.dataToBigDecimal(orderMap.get("orderType"));
+        BigDecimal orderId = DataChange.dataToBigDecimal(map.get("orderId"));
+        Map<String, Object> mesMap = new HashMap<>();
+        mesMap.put("orderType", orderType);
+        mesMap.put("orderId", orderId);
+        int placeId = rulesService.calculateWeighbridge(mesMap);
+
         if(orderType.intValue() == 10){
             //如果订单是采购内转类型订单
             map.put("grossPlaceId", 15);

+ 12 - 3
src/main/java/com/steerinfo/dil/service/impl/TmstruckWeightResultServiceImpl.java

@@ -152,9 +152,18 @@ public class TmstruckWeightResultServiceImpl implements ITmstruckWeightResultSer
         TmstruckWeightResult tmstruckWeightResult = new TmstruckWeightResult();
         //生成最大主键ID
         tmstruckWeightResult.setWeightTaskResultId(tmstruckWeightResultMapper.selectMaxId());
-        tmstruckWeightResult.setResultTotalId(DataChange.dataToBigDecimal(map.get("resultTotalId")));
-        //添加是否需要扣水扣杂
-        tmstruckWeightResult.setIsdeduct(DataChange.dataToBigDecimal(map.get("isdeduct")));
+        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")));

+ 18 - 0
src/main/resources/com/steerinfo/dil/mapper/RulesMapper.xml

@@ -115,5 +115,23 @@
           and DELETED = 0
     </select>
 
+    <!--  通过订单ID查询路线类型  -->
+    <select id="getLineIsSteel" parameterType="java.math.BigDecimal" resultType="java.lang.Integer">
+        select RL.IS_STEEL
+        from OMSTRUCK_ORDER OO
+                 left join RMS_LINE RL
+                           on RL.LINE_ID = OO.LINE_ID
+        where OO.ORDER_ID = #{orderId}
+    </select>
 
+<!--  查询还没有净重的计量实绩数量  -->
+    <select id="getNoNetWeightResult" parameterType="java.math.BigDecimal" resultType="java.lang.Integer">
+        select COUNT(TWR.WEIGHT_TASK_RESULT_ID)
+        from OMSTRUCK_ORDER OO
+        left join TMSTRUCK_TOTAL_RESULT TTR
+            on TTR.ORDER_ID = OO.ORDER_ID
+        left join TMSTRUCK_WEIGHT_RESULT TWR
+            on TWR.RESULT_TOTAL_ID = TTR.RESULT_TOTAL_ID
+        where TWR.RESULT_NET_WEIGHT is null
+    </select>
 </mapper>

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

@@ -2542,4 +2542,14 @@
             order by "resultTareWeightTime" desc
         </if>
     </select>
+
+<!--  通过总实绩ID查询订单类型  -->
+    <select id="getOrderTypeByTotalId" parameterType="java.math.BigDecimal" resultType="java.lang.Integer">
+        select OO.ORDER_TYPE
+        from OMSTRUCK_ORDER OO
+        where OO.ORDER_ID =
+              (select TTR.ORDER_ID from TMSTRUCK_TOTAL_RESULT TTR where TTR.RESULT_TOTAL_ID = #{resultTotalId})
+    </select>
+
+
 </mapper>