Przeglądaj źródła

新增卸货日志

donglang 1 miesiąc temu
rodzic
commit
938cafdfea

+ 41 - 6
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/handler/UnloadingWeighHandler.java

@@ -15,6 +15,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.Date;
 import java.util.List;
 import java.util.Objects;
@@ -77,7 +78,7 @@ public class UnloadingWeighHandler extends AbstractWaybillOrderHandler<WaybillOr
      * @param param
      */
     private void firstWeighbridge(WaybillOrderUnloadingWeighParam param, KwtWaybillOrder waybillOrder, KwtWaybillOrderTicket takeTicket) {
-        if (param.getGrossAmount() == null) {
+        if (param.getWeighAmount() == null) {
             throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "毛重不能为空!");
         }
         // 校验运单
@@ -101,7 +102,7 @@ public class UnloadingWeighHandler extends AbstractWaybillOrderHandler<WaybillOr
      */
     private void updateWaybillTicketGrossAmount(WaybillOrderUnloadingWeighParam param, KwtWaybillOrderTicket takeTicket) {
         //填充卸货单毛重
-        takeTicket.setGrossAmount(param.getGrossAmount());
+        takeTicket.setGrossAmount(param.getWeighAmount());
         waybillOrderTicketRepository.updateById(takeTicket);
     }
 
@@ -160,7 +161,7 @@ public class UnloadingWeighHandler extends AbstractWaybillOrderHandler<WaybillOr
      * @param param
      */
     private void laterWeighbridge(WaybillOrderUnloadingWeighParam param, KwtWaybillOrder waybillOrder, KwtWaybillOrderTicket takeTicket) {
-        if (StringUtils.isBlank(param.getTareAmount())) {
+        if (StringUtils.isBlank(param.getWeighAmount())) {
             throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "皮重不能为空!");
         }
 
@@ -181,7 +182,7 @@ public class UnloadingWeighHandler extends AbstractWaybillOrderHandler<WaybillOr
      */
     private BigDecimal updateTareAmount(WaybillOrderUnloadingWeighParam param, KwtWaybillOrderTicket takeTicket) {
         //皮重
-        BigDecimal tareAmount = param.getTareAmount();
+        BigDecimal tareAmount = param.getWeighAmount();
         //毛重
         BigDecimal grossAmount = takeTicket.getGrossAmount();
         //卸货净重
@@ -205,7 +206,7 @@ public class UnloadingWeighHandler extends AbstractWaybillOrderHandler<WaybillOr
         subtask.setUnloadAmount(unloadAmount);
         subtask.setUnloadTime(new Date());
         waybillOrderSubtaskRepository.updateById(subtask);
-        log.info("物流运单离场过磅成功!运单ID: {}, 皮重: {}, 卸货货净重: {}", param.getWaybillOrderId(), param.getTareAmount(), unloadAmount);
+        log.info("物流运单离场过磅成功!运单ID: {}, 皮重: {}, 卸货净重: {}", param.getWaybillOrderId(), param.getWeighAmount(), unloadAmount);
     }
 
 
@@ -239,6 +240,40 @@ public class UnloadingWeighHandler extends AbstractWaybillOrderHandler<WaybillOr
 
     @Override
     protected String getRemark(WaybillOrderUnloadingWeighParam param, KwtWaybillOrder waybillOrder) {
-        return "车辆[" + waybillOrder.getTruckNo() + "]已到达卸货点["  + param.getWeighbridgeName() + "]称重[" + param.getGrossAmount() + "吨]";
+        return "";
+    }
+
+    /**
+     * 重写 createNodeTrace,生成两条轨迹记录
+     */
+    @Override
+    protected void createNodeTrace(WaybillOrderUnloadingWeighParam param, KwtWaybillOrder waybillOrder) {
+        List<KwtWaybillOrderWeighbridge> weighbridges = waybillOrderWeighbridgeRepository
+                .queryWaybillOrderWeighbridgeByWOrderId(waybillOrder.getId(), WeighbridgeTypeEnum.UNLOADING.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 grossAmount = Objects.isNull(param.getWeighAmount()) ? "0.00" : param.getWeighAmount().setScale(2, RoundingMode.HALF_UP).toPlainString();
+            node2.setRemark("[" + param.getWeighbridgeName() + "]称重[" + grossAmount + "吨]");
+            node2.setCreateTime(fiveSecondsLater);
+            waybillOrderNodeRepository.save(node2);
+            log.info("记录【卸货首次过磅称重】节点轨迹成功,节点ID:{}", node2.getId());
+        } else {
+            // 第一条:称重完成
+            KwtWaybillOrderNode node1 = getWaybillOrderNode(param, waybillOrder);
+            //过磅次数
+            String tareAmount = Objects.isNull(param.getWeighAmount()) ? "0.00" : param.getWeighAmount().setScale(2, RoundingMode.HALF_UP).toPlainString();
+            node1.setRemark("[" + param.getWeighbridgeName() + "]称重[" + tareAmount + "吨]");
+            waybillOrderNodeRepository.save(node1);
+            log.info("记录【卸货过磅称重】节点轨迹成功,节点ID:{}", node1.getId());
+        }
     }
 }

+ 3 - 9
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/param/WaybillOrderUnloadingWeighParam.java

@@ -28,16 +28,10 @@ public class WaybillOrderUnloadingWeighParam extends WaybillOrderProcessParam im
     private String truckNo;
 
     /**
-     * 毛重
+     * 毛重/皮重
      */
-    @Schema(description = "毛重")
-    private BigDecimal grossAmount;
-
-    /**
-     * 皮重
-     */
-    @Schema(description = "皮重")
-    private BigDecimal tareAmount;
+    @Schema(description = "毛重/皮重")
+    private BigDecimal weighAmount;
 
 
 

+ 34 - 3
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/app/GatekeeperOrderService.java

@@ -21,6 +21,7 @@ import com.sckw.order.api.model.OrderUnitInfoDetailVO;
 import com.sckw.product.api.dubbo.GoodsInfoService;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.transport.model.*;
+import com.sckw.transport.model.enuma.WeighbridgeTypeEnum;
 import com.sckw.transport.model.param.forklift.reponse.GatekeeperOrderResp;
 import com.sckw.transport.model.param.forklift.request.GatekeeperOrderPassParam;
 import com.sckw.transport.model.param.forklift.request.GatekeeperOrderQueryParam;
@@ -58,6 +59,7 @@ public class GatekeeperOrderService {
     private final KwtLogisticsOrderRepository logisticsOrderRepository;
     private final KwtLogisticsOrderGoodsRepository logisticsOrderGoodsRepository;
     private final KwtWaybillOrderNodeRepository waybillOrderNodeRepository;
+    private final KwtWaybillOrderWeighbridgeRepository waybillOrderWeighbridgeRepository;
 
     @DubboReference(version = "1.0.0", group = "design", check = false)
     private RemoteContractService remoteContractService;
@@ -669,18 +671,47 @@ public class GatekeeperOrderService {
         if (subtask == null) {
             throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_SUB_NOT_FOUND, "未找到关联的子运单!");
         }
+        //校验是否有卸货过磅记录
+        List<KwtWaybillOrderWeighbridge> weighbridges = waybillOrderWeighbridgeRepository
+                .queryWaybillOrderWeighbridgeByWOrderId(gatekeeper.getWOrderId(), WeighbridgeTypeEnum.UNLOADING.getCode());
+        if (CollectionUtils.isEmpty(weighbridges)) {
+            // 创建门卫放行记录
+            String remark = "门卫[" + param.getGatekeeperName() + "]已放行";
+            creatPassLogo(subtask, waybillOrder, remark);
+        } else {
+            // 1.创建门卫放行记录
+            String remark1 = "门卫[" + param.getGatekeeperName() + "]已放行";
+            creatPassLogo(subtask, waybillOrder, remark1);
+
+            // 2.创建车辆离场放行记录
+            String remark2 = "车辆[" + waybillOrder.getTruckNo() + "]已离场";
+            creatPassLogo(subtask, waybillOrder, remark2);
+
+            // 3.创建运单完成放行记录
+            String remark3 = "运单[" + waybillOrder.getWOrderNo() + "]已完成";
+            creatPassLogo(subtask, waybillOrder, remark3);
+
+        }
+
+    }
+
+    /**
+     * 记录门卫放行记录
+     * @param subtask
+     * @param waybillOrder
+     */
+    private void creatPassLogo(KwtWaybillOrderSubtask subtask, KwtWaybillOrder waybillOrder,String remark) {
         KwtWaybillOrderNode node = new KwtWaybillOrderNode();
-        node.setWOrderId(gatekeeper.getWOrderId());
+        node.setWOrderId(waybillOrder.getId());
         node.setWSubtaskId(subtask.getId());
         node.setOrderStatus(subtask.getStatus());
         node.setTruckId(waybillOrder.getTruckId());
         node.setDriverId(waybillOrder.getDriverId());
         node.setDriverName(waybillOrder.getDriverName());
-        node.setRemark("门卫[" + param.getGatekeeperName() + "]已放行");
+        node.setRemark(remark);
         waybillOrderNodeRepository.save(node);
         log.info("[门卫放行]记录节点轨迹成功,节点ID:{}", node.getId());
     }
 
 
-
 }