donglang 1 месяц назад
Родитель
Сommit
f3eb3cdb95

+ 77 - 32
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/handler/ComeIntoHandler.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 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.*;
 import com.sckw.core.utils.CollectionUtils;
 import com.sckw.core.utils.DateUtils;
@@ -290,53 +291,97 @@ public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCme
         if (waybillSubtask.getEntrustAmount() == null) {
             throw new BusinessPlatfromException(ErrorCodeEnum.SYSTEM_ERROR, "[称重过磅]子运单任务量信息缺失!");
         }
+        //任务量
+        BigDecimal entrustAmount = waybillSubtask.getEntrustAmount();
+        //法定载重
+        BigDecimal truckStandardLoad = getTruckStandardLoad(param.getTruckNo());
 
+        // 校验铲车司机
         KwtForkliftWaybillOrder forklift = forkliftWaybillOrderRepository.queryForkliftWaybillOrderByWOrderId(waybillOrder.getId());
+
+        //1. 铲车司机已接单,运单什么都不展示
         if (Objects.equals(forklift.getStatus(), ForkliftStatusEnum.ORDER_TAKING.getCode())) {
             //如果铲车司机已接单,则二次过磅的时候,直接返回,不走其它流程
             return;
         }
 
-        BigDecimal entrustAmount = waybillSubtask.getEntrustAmount();
-        //场景一:净重<-0.5
-        if (loadAmount.compareTo(BigDecimal.valueOf(-0.5)) < 0) {
-            return;
-        }
-        //场景二:空载离场,-0.5<=净重<=0.5
-        if (loadAmount.compareTo(BigDecimal.valueOf(0.5)) <= 0) {
-            waybillOrder.setTargetStatus(1);
-            return;
+        //2. 铲车司机待接单,只分为“空载离场”和“其它情况”(什么不展示)
+        if (Objects.equals(forklift.getStatus(), ForkliftStatusEnum.PENDING_ORDERS.getCode())) {
+            //场景一. 空载离场,-0.5<=净重<=0.5
+            if (loadAmount.compareTo(BigDecimal.valueOf(-0.5)) >= 0 && loadAmount.compareTo(BigDecimal.valueOf(0.5)) <= 0) {
+                waybillOrder.setTargetStatus(1);
+                return;
+            } else {
+                //场景二.非空载离场,什么都不展示
+                return;
+            }
         }
 
-        if (Objects.equals(forklift.getStatus(), ForkliftStatusEnum.PENDING_ORDERS.getCode())) {
-            //如果铲车司机未接单,则二次过磅的时候,非空载情况,必须校验是否完成装载
-            if (!Objects.equals(CarWaybillV1Enum.EXIT_COMPLETED.getCode(), waybillOrder.getStatus())
-                    && !Objects.equals(CarWaybillV1Enum.REPLENISH_FINISH.getCode(), waybillOrder.getStatus())
-                    && !Objects.equals(CarWaybillV1Enum.WAIT_LEAVE.getCode(), waybillOrder.getStatus())
-                    && !Objects.equals(CarWaybillV1Enum.UNLOADING.getCode(), waybillOrder.getStatus())) {
+        //3.铲车司机完成装载,是什么流程就是什么流程,按照最新一次过磅为准
+        if (Objects.equals(forklift.getStatus(), ForkliftStatusEnum.COMPLETED.getCode())) {
+            //场景一:净重<-0.5,什么不展示
+            if (loadAmount.compareTo(BigDecimal.valueOf(-0.5)) < 0) {
                 return;
             }
-        } else {
-            //如果铲车司机完成装载,则二次过磅的时候,已最新的一次称重为准
-            if (!Objects.equals(CarWaybillV1Enum.EXIT_COMPLETED.getCode(), waybillOrder.getStatus())
-                    && !Objects.equals(CarWaybillV1Enum.EMPTY_WAIT_LEAVE.getCode(), waybillOrder.getStatus())
-                    && !Objects.equals(CarWaybillV1Enum.REPLENISH_FINISH.getCode(), waybillOrder.getStatus())
-                    && !Objects.equals(CarWaybillV1Enum.WAIT_LEAVE.getCode(), waybillOrder.getStatus())
-                    && !Objects.equals(CarWaybillV1Enum.UNLOADING.getCode(), waybillOrder.getStatus())) {
+
+            //场景二:空载离场,-0.5<=净重<=0.5
+            if (loadAmount.compareTo(BigDecimal.valueOf(0.5)) <= 0) {
+                waybillOrder.setTargetStatus(1);
                 return;
             }
-        }
 
-        //法定载重
-        BigDecimal truckStandardLoad = getTruckStandardLoad(param.getTruckNo());
-        // 场景三:超载流程, 净重>任务量或者毛重>法定载重
-        if (loadAmount.compareTo(entrustAmount) > 0 || param.getWeighAmount().compareTo(truckStandardLoad) > 0) {
-            waybillOrder.setTargetStatus(3);
-            return;
+            // 场景三:超载流程, 净重>任务量或者毛重>法定载重
+            if (loadAmount.compareTo(entrustAmount) > 0 || param.getWeighAmount().compareTo(truckStandardLoad) > 0) {
+                waybillOrder.setTargetStatus(3);
+                return;
+            }
+            // 场景四:正常流程,0.5<净重<=任务量
+            waybillOrder.setTargetStatus(2);
         }
 
-        // 场景四:正常流程,0.5<净重<=任务量
-        waybillOrder.setTargetStatus(2);
+
+//        //场景一:净重<-0.5
+//        if (loadAmount.compareTo(BigDecimal.valueOf(-0.5)) < 0) {
+//            return;
+//        }
+//        //场景二:空载离场,-0.5<=净重<=0.5
+//        if (loadAmount.compareTo(BigDecimal.valueOf(0.5)) <= 0) {
+//            waybillOrder.setTargetStatus(1);
+//            return;
+//        }
+//
+//        if (Objects.equals(forklift.getStatus(), ForkliftStatusEnum.PENDING_ORDERS.getCode())) {
+//            //如果铲车司机未接单,则二次过磅的时候,非空载情况,必须校验是否完成装载
+//            //场景:铲车未接单,司机第一次空载离场,第二次空载离场,还是展示空载,其它什么不展示。(就是没有完成装货就什么都不展示)
+//            if (!Objects.equals(CarWaybillV1Enum.EXIT_COMPLETED.getCode(), waybillOrder.getStatus())
+//                    && !Objects.equals(CarWaybillV1Enum.REPLENISH_FINISH.getCode(), waybillOrder.getStatus())
+//                    && !Objects.equals(CarWaybillV1Enum.WAIT_LEAVE.getCode(), waybillOrder.getStatus())
+//                    && !Objects.equals(CarWaybillV1Enum.UNLOADING.getCode(), waybillOrder.getStatus())) {
+//                //什么不展示
+//                return;
+//            }
+//        } else {
+//            //如果铲车司机完成装载,则二次过磅的时候,已最新的一次称重为准
+//            //场景:铲车未接单,司机第一次空载离场,然后铲车装货完成。 二次过磅,是什么流程就是什么流程
+//            if (!Objects.equals(CarWaybillV1Enum.EXIT_COMPLETED.getCode(), waybillOrder.getStatus())
+//                    && !Objects.equals(CarWaybillV1Enum.EMPTY_WAIT_LEAVE.getCode(), waybillOrder.getStatus())
+//                    && !Objects.equals(CarWaybillV1Enum.REPLENISH_FINISH.getCode(), waybillOrder.getStatus())
+//                    && !Objects.equals(CarWaybillV1Enum.WAIT_LEAVE.getCode(), waybillOrder.getStatus())
+//                    && !Objects.equals(CarWaybillV1Enum.UNLOADING.getCode(), waybillOrder.getStatus())) {
+//                return;
+//            }
+//        }
+//
+//        //法定载重
+//        BigDecimal truckStandardLoad = getTruckStandardLoad(param.getTruckNo());
+//        // 场景三:超载流程, 净重>任务量或者毛重>法定载重
+//        if (loadAmount.compareTo(entrustAmount) > 0 || param.getWeighAmount().compareTo(truckStandardLoad) > 0) {
+//            waybillOrder.setTargetStatus(3);
+//            return;
+//        }
+//
+//        // 场景四:正常流程,0.5<净重<=任务量
+//        waybillOrder.setTargetStatus(2);
 
     }
 
@@ -366,7 +411,7 @@ public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCme
             status = CarWaybillV1Enum.REFUSE_TRAFFIC.getCode();
         } else {
             if (waybillOrder.getTargetStatus() == null) {
-                return;
+                waybillOrder.setLabel(Global.NUMERICAL_ONE);
             }
             status = switch (waybillOrder.getTargetStatus()) {
                 case 1 -> CarWaybillV1Enum.EMPTY_WAIT_LEAVE.getCode();

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

@@ -177,6 +177,11 @@ public class KwtWaybillOrder implements Serializable {
      */
     private Integer dispatchWay;
 
+    /**
+     * 标签
+     */
+    private Integer label;
+
     //用于存储动态状态
     @TableField(exist = false)
     private Integer targetStatus;