Przeglądaj źródła

空载完成逻辑

donglang 1 miesiąc temu
rodzic
commit
8cabd1e5ac

+ 5 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/param/WaybillOrderStatusResp.java

@@ -216,4 +216,9 @@ public class WaybillOrderStatusResp implements Serializable {
      */
     @Schema(description = "备注(是否空载离场)")
     private String remark;
+
+    /**
+     * 标签
+     */
+    private Integer label;
 }

+ 6 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillOrderDetailResp.java

@@ -235,6 +235,12 @@ public class WaybillOrderDetailResp implements Serializable {
      */
     @Schema(description = "单据信息")
     private BillInfo billInfo;
+
+    /**
+     * 标签
+     */
+    private Integer label;
+
     /**
      * 运单id列表
      */

+ 3 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderV1Service.java

@@ -4589,6 +4589,7 @@ public class KwtWaybillOrderV1Service {
         resp.setPriceType(String.valueOf(logOrder.getBillingMode()));
         resp.setPriceTypeDesc(DictEnum.getLabel(DictTypeEnum.CHARGING_TYPE.getType(), logOrder.getBillingMode()));
         resp.setRemark(billOrder.getRemark());
+        resp.setLabel(billOrder.getLabel());
         // 票据信息
         String shipmentTicketKey = subtask.getWOrderId() + "-" + AddressTypeEnum.SHIPMENT.getCode();
         KwtWaybillOrderTicket tareAmountTicket = ticketMap.getOrDefault(shipmentTicketKey, new KwtWaybillOrderTicket());
@@ -4666,7 +4667,8 @@ public class KwtWaybillOrderV1Service {
 
         // 状态信息
         resp.setStatus(subtask.getStatus());
-        resp.setStatusDesc(CarWaybillV1Enum.geDesc(subtask.getStatus()));
+        resp.setStatusDesc(Objects.equals(subtask.getStatus(), CarWaybillV1Enum.COMPLETED.getCode())
+                && Objects.equals(subtask.getRemark(), "空载离场") ? "空载完成" : CarWaybillV1Enum.geDesc(subtask.getStatus()));
         resp.setLegalLoad(Objects.isNull( truck)  ? null:truck.getLegalLoad());
 
         // 计算装货完成率

+ 44 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/app/ForkliftOrderService.java

@@ -10,6 +10,7 @@ import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.common.enums.enums.ErrorCodeEnum;
 import com.sckw.core.exception.BusinessPlatfromException;
 import com.sckw.core.model.constant.Global;
+import com.sckw.core.model.enums.CarWaybillV1Enum;
 import com.sckw.core.model.enums.ForkliftStatusEnum;
 import com.sckw.core.model.enums.LoadingTypeEnum;
 import com.sckw.core.utils.CollectionUtils;
@@ -663,11 +664,54 @@ public class ForkliftOrderService {
         forkliftWaybillOrder.setForkliftAcceptTime(new Date());
         forkliftWaybillOrderRepository.updateById(forkliftWaybillOrder);
 
+        //修改司机状态
+        updateWaybillOrder(forkliftWaybillOrder);
+
         // 创建司机日志记录
         creatWaybillOrderNode(param, forkliftWaybillOrder);
         log.info("铲车接单成功,订单ID:{}", forkliftWaybillOrder.getWOrderId());
     }
 
+    /**
+     * 修改司机状态
+     * @param forkliftWaybillOrder
+     */
+    private void updateWaybillOrder(KwtForkliftWaybillOrder forkliftWaybillOrder) {
+        // 修改运单状态
+        updateWaybillStatus(forkliftWaybillOrder);
+
+        // 修改子运单状态
+        updateWaybillSubtaskStatus(forkliftWaybillOrder);
+    }
+
+
+    /**
+     * 修改运单状态
+     * @param forkliftWaybillOrder
+     */
+    private void updateWaybillStatus(KwtForkliftWaybillOrder forkliftWaybillOrder) {
+        KwtWaybillOrder waybillOrder = waybillOrderRepository.getById(forkliftWaybillOrder.getWOrderId());
+        if (waybillOrder == null) {
+            throw new BusinessPlatfromException(ErrorCodeEnum.FORKLIFT_ORDER_NOT_FOUND, "当前运单数据不存在!");
+        }
+
+        waybillOrder.setStatus(CarWaybillV1Enum.REFUSE_TRAFFIC.getCode());
+        waybillOrderRepository.updateById(waybillOrder);
+    }
+
+    /**
+     * 修改子运单状态
+     * @param forkliftWaybillOrder
+     */
+    private void updateWaybillSubtaskStatus(KwtForkliftWaybillOrder forkliftWaybillOrder) {
+        KwtWaybillOrderSubtask waybillSubtask = waybillOrderSubtaskRepository.queryByWOrderId(forkliftWaybillOrder.getWOrderId());
+        if (waybillSubtask == null) {
+            throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_SUB_NOT_FOUND, "未找到关联的子运单!");
+        }
+        waybillSubtask.setStatus(CarWaybillV1Enum.REFUSE_TRAFFIC.getCode());
+        waybillOrderSubtaskRepository.updateById(waybillSubtask);
+    }
+
     /**
      * 创建日子轨迹记录
      * @param param

+ 6 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/app/WaybillOrderService.java

@@ -841,6 +841,7 @@ public class WaybillOrderService {
         wbOrderResp.setLogisticsOrderId(Optional.ofNullable(wbOrder.getLOrderId()).map(String::valueOf).orElse(null));
         wbOrderResp.setWaybillNo(wbOrder.getWOrderNo());
         wbOrderResp.setRemark(wbOrder.getRemark());
+        wbOrderResp.setLabel(wbOrder.getLabel());
         //装货、卸货净重、任务量
         KwtWaybillOrderSubtask subtask = subtaskMap.getOrDefault(wbOrder.getId(), new KwtWaybillOrderSubtask());
         wbOrderResp.setLoadingNetWeight(subtask.getLoadAmount());
@@ -917,7 +918,11 @@ public class WaybillOrderService {
         } else if (Objects.equals(wbOrder.getStatus(), CarWaybillV1Enum.COMPLETION_LOADING.getCode())) {
             wbOrderResp.setStatusDesc("待审核");
         } else if (Objects.equals(wbOrder.getStatus(), CarWaybillV1Enum.COMPLETED.getCode())) {
-            wbOrderResp.setStatusDesc("已完成");
+            if (Objects.equals(subtask.getRemark(), "空载离场")) {
+                wbOrderResp.setStatusDesc("空载完成");
+            } else {
+                wbOrderResp.setStatusDesc("已完成");
+            }
         } else if (Objects.equals(wbOrder.getStatus(), CarWaybillV1Enum.REVIEW_REJECTION.getCode())) {
             wbOrderResp.setStatusDesc("待修改");
         } else if (Objects.equals(wbOrder.getStatus(), CarWaybillV1Enum.CANCELLED.getCode())) {