donglang 1 неделя назад
Родитель
Сommit
800a38dd8b

+ 45 - 8
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/handler/LeaveHandler.java

@@ -7,13 +7,17 @@ import com.sckw.core.exception.BusinessPlatfromException;
 import com.sckw.core.model.enums.CarWaybillV1Enum;
 import com.sckw.core.model.enums.CarWaybillV1Enum;
 import com.sckw.core.model.enums.GatekeeperStatusEnum;
 import com.sckw.core.model.enums.GatekeeperStatusEnum;
 import com.sckw.core.model.enums.GatekeeperTypeEnum;
 import com.sckw.core.model.enums.GatekeeperTypeEnum;
+import com.sckw.core.utils.CollectionUtils;
 import com.sckw.transport.model.KwtGatekeeperWaybillOrder;
 import com.sckw.transport.model.KwtGatekeeperWaybillOrder;
 import com.sckw.transport.model.KwtWaybillOrder;
 import com.sckw.transport.model.KwtWaybillOrder;
 import com.sckw.transport.model.KwtWaybillOrderSubtask;
 import com.sckw.transport.model.KwtWaybillOrderSubtask;
+import com.sckw.transport.model.KwtWaybillOrderWeighbridge;
+import com.sckw.transport.model.enuma.WeighbridgeTypeEnum;
 import com.sckw.transport.model.param.WaybillOrderLeaveParam;
 import com.sckw.transport.model.param.WaybillOrderLeaveParam;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
+import java.util.List;
 import java.util.Objects;
 import java.util.Objects;
 
 
 /**
 /**
@@ -41,19 +45,38 @@ public class LeaveHandler extends AbstractWaybillOrderHandler<WaybillOrderLeaveP
 
 
     @Override
     @Override
     protected void doBusiness(WaybillOrderLeaveParam param, KwtWaybillOrder waybillOrder) {
     protected void doBusiness(WaybillOrderLeaveParam param, KwtWaybillOrder waybillOrder) {
-        log.info("推进门卫数据为待放行:{}", JSON.toJSONString(waybillOrder));
-
-        // 修改门卫订单状态为:待放行
-        updateGatekeeperOrderStatus(waybillOrder);
+        log.info("推进门卫数据状态修改:{}", JSON.toJSONString(waybillOrder));
+        //校验最后一次过磅是否是山上
+        if (checkLastWeighbridges(waybillOrder)) {
+            // 修改门卫订单状态为:待放行
+            updateGatekeeperOrderStatus(waybillOrder, GatekeeperStatusEnum.PENDING_RELEASE);
+        } else {
+            // 修改门卫订单状态为:已离场
+            updateGatekeeperOrderStatus(waybillOrder, GatekeeperStatusEnum.EXITED);
+        }
     }
     }
 
 
+    /**
+     * 校验最后一次过磅是否是山上
+     * @param waybillOrder
+     * @return
+     */
+    private Boolean checkLastWeighbridges(KwtWaybillOrder waybillOrder) {
+        List<KwtWaybillOrderWeighbridge> weighbridges = waybillOrderWeighbridgeRepository
+                .queryWaybillOrderWeighbridgeByWOrderId(waybillOrder.getId(), WeighbridgeTypeEnum.LOADING.getCode());
+        if (CollectionUtils.isEmpty(weighbridges)) {
+            throw new BusinessPlatfromException(ErrorCodeEnum.DATA_NOT_EXIST, "[离场]当前运单没有过磅信息!");
+        }
+        KwtWaybillOrderWeighbridge weighbridge = weighbridges.get(0);
+        return weighbridge.getWeighbridgeId() != 10003L;
+    }
 
 
     /**
     /**
      * 修改门卫订单状态
      * 修改门卫订单状态
      * @param waybillOrder
      * @param waybillOrder
      * @return
      * @return
      */
      */
-    public void updateGatekeeperOrderStatus(KwtWaybillOrder waybillOrder) {
+    public void updateGatekeeperOrderStatus(KwtWaybillOrder waybillOrder, GatekeeperStatusEnum statusEnum) {
         KwtGatekeeperWaybillOrder gatekeeper = gatekeeperWaybillOrderRepository
         KwtGatekeeperWaybillOrder gatekeeper = gatekeeperWaybillOrderRepository
                 .queryGatekeeperWaybillOrderByWOrderId(waybillOrder.getId(), GatekeeperTypeEnum.LOADING.getCode());
                 .queryGatekeeperWaybillOrderByWOrderId(waybillOrder.getId(), GatekeeperTypeEnum.LOADING.getCode());
         if (gatekeeper == null) {
         if (gatekeeper == null) {
@@ -63,8 +86,9 @@ public class LeaveHandler extends AbstractWaybillOrderHandler<WaybillOrderLeaveP
             throw new BusinessPlatfromException(ErrorCodeEnum.GATEKEEPER_ORDER_STATUS_ERROR, "当前门卫订单状态异常,不能推进为待放行状态!");
             throw new BusinessPlatfromException(ErrorCodeEnum.GATEKEEPER_ORDER_STATUS_ERROR, "当前门卫订单状态异常,不能推进为待放行状态!");
         }
         }
         //修改门卫:待放行
         //修改门卫:待放行
-        gatekeeper.setStatus(GatekeeperStatusEnum.PENDING_RELEASE.getCode());
+        gatekeeper.setStatus(statusEnum.getCode());
         gatekeeperWaybillOrderRepository.updateById(gatekeeper);
         gatekeeperWaybillOrderRepository.updateById(gatekeeper);
+        log.info("[离场]修改门卫状态为:{}", statusEnum.getDescription());
     }
     }
 
 
     @Override
     @Override
@@ -79,13 +103,26 @@ public class LeaveHandler extends AbstractWaybillOrderHandler<WaybillOrderLeaveP
 
 
     @Override
     @Override
     protected void getStatus(KwtWaybillOrder waybillOrder) {
     protected void getStatus(KwtWaybillOrder waybillOrder) {
+        if (checkLastWeighbridges(waybillOrder)) {
+            updateStatus(waybillOrder, CarWaybillV1Enum.WAIT_RELEASE);
+        } else {
+            updateStatus(waybillOrder, CarWaybillV1Enum.WAIT_LOADING);
+        }
+    }
+
+    /**
+     * 修改运单状态
+     * @param waybillOrder
+     * @param statusEnum
+     */
+    public void updateStatus(KwtWaybillOrder waybillOrder, CarWaybillV1Enum statusEnum) {
         // 1. 修改运单状态
         // 1. 修改运单状态
-        waybillOrder.setStatus(CarWaybillV1Enum.WAIT_RELEASE.getCode());
+        waybillOrder.setStatus(statusEnum.getCode());
         waybillOrderRepository.updateById(waybillOrder);
         waybillOrderRepository.updateById(waybillOrder);
 
 
         // 2. 修改子运单状态
         // 2. 修改子运单状态
         KwtWaybillOrderSubtask waybillSubtask = getWaybillSubtask(waybillOrder.getId());
         KwtWaybillOrderSubtask waybillSubtask = getWaybillSubtask(waybillOrder.getId());
-        waybillSubtask.setStatus(CarWaybillV1Enum.WAIT_RELEASE.getCode());
+        waybillSubtask.setStatus(statusEnum.getCode());
         waybillOrderSubtaskRepository.updateById(waybillSubtask);
         waybillOrderSubtaskRepository.updateById(waybillSubtask);
     }
     }