Procházet zdrojové kódy

655离场过磅优化

donglang před 1 týdnem
rodič
revize
0ecb3a369a

+ 29 - 10
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/handler/EmptyLoadLeaveHandler.java

@@ -5,14 +5,14 @@ import com.alibaba.fastjson.JSON;
 import com.sckw.core.common.enums.enums.ErrorCodeEnum;
 import com.sckw.core.exception.BusinessPlatfromException;
 import com.sckw.core.model.enums.*;
-import com.sckw.transport.model.KwtForkliftWaybillOrder;
-import com.sckw.transport.model.KwtGatekeeperWaybillOrder;
-import com.sckw.transport.model.KwtWaybillOrder;
-import com.sckw.transport.model.KwtWaybillOrderSubtask;
+import com.sckw.core.utils.CollectionUtils;
+import com.sckw.transport.model.*;
+import com.sckw.transport.model.enuma.WeighbridgeTypeEnum;
 import com.sckw.transport.model.param.WaybillOrderEmptyLoadLeaveParam;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
 import java.util.Objects;
 
 /**
@@ -41,22 +41,41 @@ public class EmptyLoadLeaveHandler extends AbstractWaybillOrderHandler<WaybillOr
     @Override
     protected void doBusiness(WaybillOrderEmptyLoadLeaveParam param, KwtWaybillOrder waybillOrder) {
         log.info("推进门卫数据为待放行:{}", JSON.toJSONString(waybillOrder));
-
-        // 修改门卫数据状态:待放行
-        updateGatekeeperOrderStatus(waybillOrder);
-
+        //校验最后一次过磅是否是山上
+        if (checkLastWeighbridges(waybillOrder)) {
+            // 修改门卫订单状态为:待放行
+            updateGatekeeperOrderStatus(waybillOrder, GatekeeperStatusEnum.PENDING_RELEASE);
+        } else {
+            // 修改门卫订单状态为:已离场
+            updateGatekeeperOrderStatus(waybillOrder, GatekeeperStatusEnum.EXITED);
+        }
         // 校验铲车订单是否是待接单
         updateForkliftOrderStatus(waybillOrder);
 
     }
 
+    /**
+     * 校验最后一次过磅是否是山上
+     * @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
      * @return
      */
-    public void updateGatekeeperOrderStatus(KwtWaybillOrder waybillOrder) {
+    public void updateGatekeeperOrderStatus(KwtWaybillOrder waybillOrder, GatekeeperStatusEnum statusEnum) {
         KwtGatekeeperWaybillOrder gatekeeper = gatekeeperWaybillOrderRepository
                 .queryGatekeeperWaybillOrderByWOrderId(waybillOrder.getId(), GatekeeperTypeEnum.LOADING.getCode());
         if (gatekeeper == null) {
@@ -66,7 +85,7 @@ public class EmptyLoadLeaveHandler extends AbstractWaybillOrderHandler<WaybillOr
             throw new BusinessPlatfromException(ErrorCodeEnum.GATEKEEPER_ORDER_STATUS_ERROR, "当前门卫订单状态异常,不能推进为待放行状态!");
         }
         //修改门卫:待放行
-        gatekeeper.setStatus(GatekeeperStatusEnum.PENDING_RELEASE.getCode());
+        gatekeeper.setStatus(statusEnum.getCode());
         gatekeeper.setRemark("空载待放行");
         gatekeeperWaybillOrderRepository.updateById(gatekeeper);
     }