txf 3 лет назад
Родитель
Сommit
3de5f56e7b

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

@@ -36,4 +36,7 @@ public interface TmstruckWeightResultMapper extends IBaseMapper<TmstruckWeightRe
 
     //通过运输订单号查询计量实绩Id 条件 路段顺序号 和 净重
     Map<String, Object> selectWeightIdByOrderId(Map<String, Object> map);
+
+    //通过订单Id查询还没有净重的计量实绩
+    Integer selectNoNetWeightResult(String orderNumber);
 }

+ 65 - 20
src/main/java/com/steerinfo/dil/service/impl/TmstruckWeightResultServiceImpl.java

@@ -121,7 +121,6 @@ public class TmstruckWeightResultServiceImpl implements ITmstruckWeightResultSer
      */
     public TmstruckWeightResult generateWeightResult(Map<String, Object> map) throws Exception {
         TmstruckWeightResult tmstruckWeightResult = new TmstruckWeightResult();
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         tmstruckWeightResult.setId(DataChange.dataToBigDecimal(map.get("weightTaskResultId")));
         BigDecimal orderType = DataChange.dataToBigDecimal(map.get("orderTypee"));
         //磅单号
@@ -132,23 +131,10 @@ public class TmstruckWeightResultServiceImpl implements ITmstruckWeightResultSer
         if("56789".contains(orderType.toString())
                 || orderType.intValue() == 12
                 || orderType.intValue() == 14
-                || orderType.intValue() == 10){
+        ){
             //如果毛重数据为空 则是第一次计量为毛重  此时第一次计量时间放皮重时间里面
             if(resultCrossWeightTime == null || resultCrossWeightTime.length() == 0){
-                //设置毛重时间
-                String firstTime = (String) map.get("resultTareWeightTime");
-                tmstruckWeightResult.setResultGrossWeightTime(sdf.parse(firstTime));
-                //添加毛重汽车衡
-                Integer tareId = tmstruckWeightResultMapper.selectTruckCalculateId((String) map.get("resultTareCalculateNumber"));
-                if(tareId == null){
-                    throw new Exception("没有此计量衡:" + map.get("resultTareCalculateNumber"));
-                }
-                tmstruckWeightResult.setResultGrossPlaceId(new BigDecimal(tareId));
-                //设置毛重
-                BigDecimal resultTareWeight = DataChange.dataToBigDecimal(map.get("resultTareWeight"));
-                tmstruckWeightResult.setResultGrossWeight(resultTareWeight);
-                tmstruckWeightResult.setInsertTime(new Date());
-                tmstruckWeightResult.setInsertUsername("admin");
+                addMaoWeightResult(tmstruckWeightResult, map);
                 //更新订单中路段顺序号
                 map.put("segmentSqe", map.get("grossSegmentSqe")); //毛重路段顺序
                 utilsService.updateOrderLineSequence(map);
@@ -165,7 +151,43 @@ public class TmstruckWeightResultServiceImpl implements ITmstruckWeightResultSer
                     autoReceipt(orderNumber);
                 }
             }
-        }else{
+        }
+        else if(orderType.intValue() == 10){
+            //查询还有几条没有净重的实绩
+            Integer resultNum = tmstruckWeightResultMapper.selectNoNetWeightResult((String) map.get("orderNumber"));
+            if(resultNum == 2){
+                //如果有两条则是走先计皮后计毛顺序
+                addWeightResult(tmstruckWeightResult, map); //添加计量实绩数据 (正常添加对应皮毛重方法)
+                if(resultCrossWeightTime == null || resultCrossWeightTime.length() == 0){
+                    map.put("segmentSqe", map.get("tareSegmentSqe")); //皮重路段顺序
+                }else{
+                    map.put("segmentSqe", map.get("grossSegmentSqe")); //毛重路段顺序
+                }
+                utilsService.updateOrderLineSequence(map);
+            }else{
+                //只剩一条数据时则是计毛后计皮顺序
+                //如果毛重数据为空 则是第一次计量为毛重  此时第一次计量时间放皮重时间里面
+                if(resultCrossWeightTime == null || resultCrossWeightTime.length() == 0){
+                    addMaoWeightResult(tmstruckWeightResult, map);
+                    //更新订单中路段顺序号
+                    map.put("segmentSqe", map.get("grossSegmentSqe")); //毛重路段顺序
+                    utilsService.updateOrderLineSequence(map);
+                }else {
+                    addWeightResult(tmstruckWeightResult, map); //添加计量实绩数据
+                    //更新订单中路段顺序号
+                    map.put("segmentSqe", map.get("tareSegmentSqe")); //皮重路段顺序
+                    utilsService.updateOrderLineSequence(map);
+                    String orderNumber = (String) map.get("orderNumber");
+                    //如果是采购订单 计皮后自动完成签收
+                    //查询是此订单是否已签收过
+                    Integer check = utilsMapper.checkoutReceipt(orderNumber);
+                    if(check == null){
+                        autoReceipt(orderNumber);
+                    }
+                }
+            }
+        }
+        else{
             addWeightResult(tmstruckWeightResult, map); //添加计量实绩数据
             // 更新订单中路段顺序号,如果毛重时间为空则为计皮:也就是销售第一次计皮,反之有毛重时间则为计毛
             if(resultCrossWeightTime == null || resultCrossWeightTime.length() == 0){
@@ -178,6 +200,29 @@ public class TmstruckWeightResultServiceImpl implements ITmstruckWeightResultSer
         return tmstruckWeightResult;
     }
 
+    /**
+     * 添加第一次为毛重数据的计量实绩
+     * @param tmstruckWeightResult
+     * @param map
+     */
+    public void addMaoWeightResult(TmstruckWeightResult tmstruckWeightResult, Map<String, Object> map) throws Exception{
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        //设置毛重时间
+        String firstTime = (String) map.get("resultTareWeightTime");
+        tmstruckWeightResult.setResultGrossWeightTime(sdf.parse(firstTime));
+        //添加毛重汽车衡
+        Integer tareId = tmstruckWeightResultMapper.selectTruckCalculateId((String) map.get("resultTareCalculateNumber"));
+        if(tareId == null){
+            throw new Exception("没有此计量衡:" + map.get("resultTareCalculateNumber"));
+        }
+        tmstruckWeightResult.setResultGrossPlaceId(new BigDecimal(tareId));
+        //设置毛重
+        BigDecimal resultTareWeight = DataChange.dataToBigDecimal(map.get("resultTareWeight"));
+        tmstruckWeightResult.setResultGrossWeight(resultTareWeight);
+        tmstruckWeightResult.setInsertTime(new Date());
+        tmstruckWeightResult.setInsertUsername("admin");
+    }
+
     /**
      * 添加计量实绩添加数据
      * @param tmstruckWeightResult
@@ -302,7 +347,7 @@ public class TmstruckWeightResultServiceImpl implements ITmstruckWeightResultSer
             //设置毛重时间
             String firstTime = (String) map.get("resultTareWeightTime");
             tmstrainWeightResult.setResultGrossWeightTime(sdf.parse(firstTime));
-            //添加毛重汽车
+            //添加毛重轨道
             Integer tareId = tmstruckWeightResultMapper.selectTruckCalculateId((String) map.get("resultTareCalculateNumber"));
             if(tareId == null){
                 throw new Exception("没有此计量衡:" + map.get("resultTareCalculateNumber"));
@@ -314,13 +359,13 @@ public class TmstruckWeightResultServiceImpl implements ITmstruckWeightResultSer
             tmstrainWeightResult.setInsertTime(new Date());
             tmstrainWeightResult.setInsertUsername("admin");
         }else {
-            //设置皮重汽车
+            //设置皮重轨道
             Integer tareId = tmstruckWeightResultMapper.selectTruckCalculateId((String) map.get("resultTareCalculateNumber"));
             if(tareId == null){
                 throw new Exception("没有此计量衡:" + map.get("resultTareCalculateNumber"));
             }
             tmstrainWeightResult.setResultTarePlaceId(new BigDecimal(tareId));
-            //设置毛重汽车
+            //设置毛重轨道
             Integer crossId = tmstruckWeightResultMapper.selectTruckCalculateId((String) map.get("resultCrossCalculateNumber"));
             if(crossId == null){
                 throw new Exception("没有此计量衡:" + map.get("resultCrossCalculateNumber"));

+ 13 - 1
src/main/resources/com/steerinfo/dil/mapper/TmstruckWeightResultMapper.xml

@@ -731,9 +731,21 @@
                           left join RMS_CAPACITY RC
                                     on RC.CAPACITY_ID = OO.CAPACITY_ID
                  where OO.ORDER_NUMBER = #{orderNumber}
-                   and (TWR.RESULT_NET_WEIGHT is null or TWR.RESULT_NET_WEIGHT = 0)
+                   and TWR.RESULT_NET_WEIGHT is null
                  order by "tareSegmentSqe"
              )
             where rownum = 1
     </select>
+
+<!--  通过订单Id查询还没有净重的计量实绩  -->
+    <select id="selectNoNetWeightResult" parameterType="string" resultType="int">
+        select COUNT(TWR.WEIGHT_TASK_RESULT_ID)
+        from TMSTRUCK_WEIGHT_RESULT TWR
+                 left join TMSTRUCK_TOTAL_RESULT TTR
+                           on TTR.RESULT_TOTAL_ID = TWR.RESULT_TOTAL_ID
+                 left join OMSTRUCK_ORDER OO
+                           on OO.ORDER_ID = TTR.ORDER_ID
+        where OO.ORDER_NUMBER = #{orderNumber}
+          and TWR.RESULT_NET_WEIGHT is null
+    </select>
 </mapper>