Przeglądaj źródła

过磅日志优化

donglang 1 miesiąc temu
rodzic
commit
10fe9def39

+ 51 - 50
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/handler/ComeIntoHandler.java

@@ -293,7 +293,7 @@ public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCme
 
         KwtForkliftWaybillOrder forklift = forkliftWaybillOrderRepository.queryForkliftWaybillOrderByWOrderId(waybillOrder.getId());
         if (Objects.equals(forklift.getStatus(), ForkliftStatusEnum.ORDER_TAKING.getCode())) {
-            //如果铲车司机接单,则二次过磅的时候,直接返回,不走其它流程
+            //如果铲车司机接单,则二次过磅的时候,直接返回,不走其它流程
             return;
         }
 
@@ -378,67 +378,68 @@ public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCme
     }
 
     /**
-     * 重写 createNodeTrace,生成两条轨迹记录
+     * 重写 createNodeTrace,生成轨迹记录
      */
     @Override
     protected void createNodeTrace(WaybillOrderCmeIntoWeighParam param, KwtWaybillOrder waybillOrder) {
         List<KwtWaybillOrderWeighbridge> weighbridges = waybillOrderWeighbridgeRepository
                 .queryWaybillOrderWeighbridgeByWOrderId(waybillOrder.getId(), WeighbridgeTypeEnum.LOADING.getCode());
         if (CollectionUtils.isEmpty(weighbridges)) {
-            // 第一条:称重完成
-            KwtWaybillOrderNode node1 = getWaybillOrderNode(param, waybillOrder);
-            node1.setRemark("车辆[" + waybillOrder.getTruckNo() + "]已到达装货点");
-            waybillOrderNodeRepository.save(node1);
-            log.info("记录【已装货】节点轨迹成功,节点ID:{}", node1.getId());
-            // 间隔5秒钟,防止时间相同
-            Date fiveSecondsLater = new Date(System.currentTimeMillis() + 5000);
-
-            // 第二条:称重信息
-            KwtWaybillOrderNode node2 = getWaybillOrderNode(param, waybillOrder);
-            String tareAmount = Objects.isNull(param.getWeighAmount()) ? "0.00" : param.getWeighAmount().setScale(2, RoundingMode.HALF_UP).toPlainString();
-            node2.setRemark("[" + param.getWeighbridgeName() + "]首次称重[" + tareAmount + "吨]");
-            node2.setCreateTime(fiveSecondsLater);
-            waybillOrderNodeRepository.save(node2);
-            log.info("记录【过磅称重】节点轨迹成功,节点ID:{}", node2.getId());
+            // 首次过磅
+            createArrivedAndFirstWeighNodes(param, waybillOrder);
         } else {
-            // 第一条:称重完成
-            KwtWaybillOrderNode node1 = getWaybillOrderNode(param, waybillOrder);
-            //过磅次数
-            int size = weighbridges.size() + 1;
-            String grossAmount = Objects.isNull(param.getWeighAmount()) ? "0.00" : param.getWeighAmount().setScale(2, RoundingMode.HALF_UP).toPlainString();
-            node1.setRemark("第" + size + "次称重,[" + param.getWeighbridgeName() +  "]称重["  + grossAmount + "吨]");
-            waybillOrderNodeRepository.save(node1);
-            log.info("记录【过磅称重】节点轨迹成功,节点ID:{}", node1.getId());
-
-            // 间隔5秒钟,防止时间相同
-//            Date fiveSecondsLater = new Date(System.currentTimeMillis() + 5000);
-//            if (this.targetStatus == null) {
-//                throw new BusinessPlatfromException(ErrorCodeEnum.SYSTEM_ERROR, "[离场过磅]是否空载离场数据为空!");
-//            }
-//            String remark = buildRemark(waybillOrder, param, this.targetStatus);
-//            KwtWaybillOrderNode node2 = getWaybillOrderNode(param, waybillOrder);
-//            node2.setRemark(remark);
-//            node2.setCreateTime(fiveSecondsLater);
-//            waybillOrderNodeRepository.save(node2);
-//            log.info("记录【多次过磅】节点轨迹成功,节点ID:{}", node2.getId());
+            // 后续过磅
+            createMultipleWeighNode(param, waybillOrder, weighbridges);
         }
     }
 
     /**
-     * 构建节点备注信息
+     * 首次过磅
+     * @param param
+     * @param waybillOrder
      */
-    private String buildRemark(KwtWaybillOrder waybillOrder, WaybillOrderCmeIntoWeighParam param, Integer targetStatus) {
-        switch (targetStatus) {
-            case 1: // 空载离场
-                return "司机[" + waybillOrder.getDriverName() + "]空载待离场";
-            case 2: // 正常离场
-                String grossAmount = Objects.isNull(param.getWeighAmount()) ? "0.00" : param.getWeighAmount().setScale(2, RoundingMode.HALF_UP).toPlainString();
-                return "[" + param.getWeighbridgeName() + "]称重[" + grossAmount + "吨]";
-            case 3: // 超载离场
-                return "司机[" + waybillOrder.getDriverName() + "]已超载,卸货中";
-            default:
-                return "";
-        }
+    private void createArrivedAndFirstWeighNodes(WaybillOrderCmeIntoWeighParam param, KwtWaybillOrder waybillOrder) {
+        // 第一条:称重完成
+        KwtWaybillOrderNode node1 = getWaybillOrderNode(param, waybillOrder);
+        node1.setRemark("车辆[" + waybillOrder.getTruckNo() + "]已到达装货点");
+        waybillOrderNodeRepository.save(node1);
+        log.info("记录【已装货】节点轨迹成功,节点ID:{}", node1.getId());
+        // 间隔5秒钟,防止时间相同
+        Date fiveSecondsLater = new Date(System.currentTimeMillis() + 5000);
+
+        // 第二条:称重信息
+        KwtWaybillOrderNode node2 = getWaybillOrderNode(param, waybillOrder);
+        String tareAmount = getWeighAmount(param);
+        node2.setRemark("[" + param.getWeighbridgeName() + "]首次称重[" + tareAmount + "吨]");
+        node2.setCreateTime(fiveSecondsLater);
+        waybillOrderNodeRepository.save(node2);
+        log.info("记录【过磅称重】节点轨迹成功,节点ID:{}", node2.getId());
+    }
+
+    /**
+     * 后续过磅
+     * @param param
+     * @param waybillOrder
+     * @param weighbridges
+     */
+    private void createMultipleWeighNode(WaybillOrderCmeIntoWeighParam param, KwtWaybillOrder waybillOrder, List<KwtWaybillOrderWeighbridge> weighbridges) {
+        KwtWaybillOrderNode node = getWaybillOrderNode(param, waybillOrder);
+        //过磅次数
+        int size = weighbridges.size() + 1;
+        String grossAmount = getWeighAmount(param);
+        node.setRemark("第" + size + "次称重,[" + param.getWeighbridgeName() +  "]称重["  + grossAmount + "吨]");
+        waybillOrderNodeRepository.save(node);
+        log.info("记录【过磅称重】节点轨迹成功,节点ID:{}", node.getId());
+    }
+
+
+    /**
+     * 获取称重重量
+     * @param param
+     * @return
+     */
+    private static String getWeighAmount(WaybillOrderCmeIntoWeighParam param) {
+        return Objects.isNull(param.getWeighAmount()) ? "0.00" : param.getWeighAmount().setScale(2, RoundingMode.HALF_UP).toPlainString();
     }
 
     /**