donglang 5 өдөр өмнө
parent
commit
7b41f31765

+ 64 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/app/GatekeeperOrderService.java

@@ -1239,13 +1239,76 @@ public class GatekeeperOrderService {
         log.info("校验是否可放行:{}", JSON.toJSONString(gatekeeper));
         List<KwtWaybillOrder> wbOrderByTruckNo = waybillOrderRepository.findWbOrderByTruckNo(gatekeeper.getTruckNo());
         if (CollectionUtils.isEmpty(wbOrderByTruckNo)) {
+            log.info("未找到运单数据,校验抬杆结果:{}, 运单:{}", Boolean.FALSE, JSON.toJSONString(wbOrderByTruckNo));
             return Boolean.FALSE;
         }
         // 获取最新的一条数据
         KwtWaybillOrder waybillOrder = wbOrderByTruckNo.get(0);
         List<KwtWaybillOrderWeighbridge> weighbridges = checkIsFirst(waybillOrder);
         if (CollectionUtils.isEmpty(weighbridges)) {
-            // 第一次过磅
+            // 进场第一次抬杆
+            Boolean result = Objects.equals(waybillOrder.getStatus(), CarWaybillV1Enum.PENDING_VEHICLE.getCode()) ? Boolean.TRUE : Boolean.FALSE;
+            log.info("第一次过磅校校验抬杆结果:{}, 运单:{}", JSON.toJSONString(result), JSON.toJSONString(waybillOrder));
+            return result;
+        } else if (weighbridges.size() == 1) {
+            //第二次抬杆
+
+            //第三次抬杆:铲车司机已接单未完成装载情况
+            KwtForkliftWaybillOrder forklift = forkliftWaybillOrderRepository.queryForkliftWaybillOrderByWOrderId(waybillOrder.getId());
+            if (Objects.equals(forklift.getStatus(), ForkliftStatusEnum.ORDER_TAKING.getCode())) {
+                log.info("[出场上榜]铲车司机已接单未完成,抬杆结果:{}, 运单:{}", Boolean.FALSE, JSON.toJSONString(waybillOrder));
+                return Boolean.FALSE;
+            }
+            if (Objects.equals(forklift.getStatus(), ForkliftStatusEnum.COMPLETED.getCode())) {
+                Boolean result = Objects.equals(waybillOrder.getStatus(), CarWaybillV1Enum.EXIT_COMPLETED.getCode()) ? Boolean.TRUE : Boolean.FALSE;
+                log.info("[出场上榜]铲车司机完成装载,抬杆结果:{}, 运单:{}", Boolean.FALSE, JSON.toJSONString(waybillOrder));
+                return result;
+            }
+
+            Boolean result = Objects.equals(waybillOrder.getStatus(), CarWaybillV1Enum.REFUSE_TRAFFIC.getCode()) ? Boolean.TRUE : Boolean.FALSE;
+            log.info("[进场下榜/出场上榜]抬杆,校验出场结果:{}, 运单:{}", JSON.toJSONString(result), JSON.toJSONString(waybillOrder));
+            return result;
+        } else {
+            // 定义运单可以可放行的状态集合
+            if (Objects.equals(waybillOrder.getStatus(), CarWaybillV1Enum.WAIT_LOADING.getCode())) {
+                log.info("[出场下榜]抬杆,校验出场结果:{}, 运单:{}", Boolean.TRUE, JSON.toJSONString(waybillOrder));
+                return Boolean.TRUE;
+            }
+            // 定义运单可以可放行的状态集合
+            if (Objects.equals(waybillOrder.getStatus(), CarWaybillV1Enum.COMPLETED.getCode())) {
+                KwtForkliftWaybillOrder forklift = forkliftWaybillOrderRepository.queryForkliftWaybillOrderByWOrderId(waybillOrder.getId());
+                if (Objects.equals(forklift.getStatus(), ForkliftStatusEnum.COMPLETED.getCode())) {
+                    log.info("[出场下榜]铲车司机完成装载,空载离场过磅,校验出场结果:{}, 运单:{}", Boolean.TRUE, JSON.toJSONString(waybillOrder));
+                    return Boolean.TRUE;
+                } else {
+                    log.info("[出场下榜]铲车司机未接单,空载离场过磅,校验出场结果:{}, 运单:{}", Boolean.TRUE, JSON.toJSONString(waybillOrder));
+                    return Boolean.TRUE;
+                }
+            }
+            if (Objects.equals(waybillOrder.getStatus(), CarWaybillV1Enum.REFUSE_TRAFFIC.getCode())) {
+                log.info("[出场下榜]铲车未接单,有重量过磅,校验出场结果:{}, 运单:{}", Boolean.TRUE, JSON.toJSONString(waybillOrder));
+                return Boolean.FALSE;
+            }
+        }
+        log.info("抬杆未知情况,校验出场结果:{}, 运单:{}", Boolean.FALSE, JSON.toJSONString(waybillOrder));
+        return Boolean.FALSE;
+    }
+
+    /**
+     * 校验是否可放行
+     * @param gatekeeper
+     */
+    public Boolean checkIsPassV2(GatekeeperOrderIsPassParam gatekeeper) {
+        log.info("校验是否可放行:{}", JSON.toJSONString(gatekeeper));
+        List<KwtWaybillOrder> wbOrderByTruckNo = waybillOrderRepository.findWbOrderByTruckNo(gatekeeper.getTruckNo());
+        if (CollectionUtils.isEmpty(wbOrderByTruckNo)) {
+            return Boolean.FALSE;
+        }
+        // 获取最新的一条数据
+        KwtWaybillOrder waybillOrder = wbOrderByTruckNo.get(0);
+        List<KwtWaybillOrderWeighbridge> weighbridges = checkIsFirst(waybillOrder);
+        if (CollectionUtils.isEmpty(weighbridges)) {
+            // 第一次抬杆
             Boolean result = Objects.equals(waybillOrder.getStatus(), CarWaybillV1Enum.PENDING_VEHICLE.getCode()) ? Boolean.TRUE : Boolean.FALSE;
             log.info("第一次过磅校验出场是否可放行完成,抬杆结果:{}, 运单:{}", JSON.toJSONString(result), JSON.toJSONString(waybillOrder));
             return result;