فهرست منبع

655项目开发

donglang 1 هفته پیش
والد
کامیت
7a402a89a5

+ 0 - 44
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/handler/ComeIntoHandler.java

@@ -370,50 +370,6 @@ public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCme
             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);
-
     }
 
     /**

+ 5 - 16
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/handler/TakingOrderHandler.java

@@ -220,22 +220,11 @@ public class TakingOrderHandler extends AbstractWaybillOrderHandler<OrderCircula
      */
     private Long getEntId(KwtLogisticsOrder logOrder) {
         log.info("[创建装货门卫]开始查询企业id,入参参数:{}", JSON.toJSONString(logOrder));
-        Long entId;
-        KwtLogisticsOrderUnit kwtLogisticsOrderUnit = logisticsOrderUnitRepository.queryByLOrderIdAndUnitType(logOrder.getId(), 1);
-        if (kwtLogisticsOrderUnit == null) {
-            throw new BusinessPlatfromException(ErrorCodeEnum.LOGISTICS_ORDER_NOT_FOUND, "[接单]物流企业信息数据不存在");
-        }
-        // 原矿运输山上、上下门卫企业id
-        List<Long> mockEntIds = Arrays.asList(538039617157337089L, 538040297439891457L);
-        if (Objects.equals(1, logOrder.getOrderType()) && mockEntIds.contains(kwtLogisticsOrderUnit.getEntId())) {
-            entId = mockEntIds.get(0);
-        } else {
-            List<OrderUnitInfoDetailVO> unitInfoDetailVOS = tradeOrderInfoService.queryOrderUnitByTradeOrderId(logOrder.getTOrderId());
-            OrderUnitInfoDetailVO unitInfoDetailVO = unitInfoDetailVOS.stream()
-                    .filter(unit -> Objects.equals(unit.getUnitType(), "2"))
-                    .findFirst().orElse(new OrderUnitInfoDetailVO());
-            entId = unitInfoDetailVO.getEntId();
-        }
+        List<OrderUnitInfoDetailVO> unitInfoDetailVOS = tradeOrderInfoService.queryOrderUnitByTradeOrderId(logOrder.getTOrderId());
+        OrderUnitInfoDetailVO unitInfoDetailVO = unitInfoDetailVOS.stream()
+                .filter(unit -> Objects.equals(unit.getUnitType(), "2"))
+                .findFirst().orElse(new OrderUnitInfoDetailVO());
+        Long entId = unitInfoDetailVO.getEntId();
         log.info("[创建装货门卫]查询企业id完成,入参参数:{}", JSON.toJSONString(entId));
         return entId;
     }

+ 8 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/param/forklift/request/GatekeeperOrderIsPassParam.java

@@ -2,6 +2,7 @@ package com.sckw.transport.model.param.forklift.request;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 
 import java.io.Serial;
@@ -26,4 +27,11 @@ public class GatekeeperOrderIsPassParam implements Serializable {
     @NotBlank(message = "车牌号不能为空")
     private String truckNo;
 
+    /**
+     * 过磅id
+     */
+    @Schema(description = "过磅id")
+    @NotNull(message = "过磅id不能为空")
+    private Long weighbridgeId;
+
 }

+ 43 - 28
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/app/GatekeeperOrderService.java

@@ -892,7 +892,7 @@ public class GatekeeperOrderService {
         updateWaybillOrderStatus2(gatekeeper, param, waybillOrder, isEmptyLoadLeave);
 
         //4. 创建门卫卸货订单
-        creatGatekeeperUnLoadingOrder(gatekeeper, waybillOrder);
+//        creatGatekeeperUnLoadingOrder(gatekeeper, waybillOrder);
     }
 
     /**
@@ -1162,36 +1162,51 @@ public class GatekeeperOrderService {
      */
     public Boolean checkIsPass(GatekeeperOrderIsPassParam gatekeeper) {
         log.info("校验是否可放行:{}", JSON.toJSONString(gatekeeper));
-        if (StringUtils.isBlank(gatekeeper.getTruckNo())) {
-            throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "车牌号不能为空!");
-        }
-
-        List<KwtWaybillOrder> wbOrderByTruckNo = waybillOrderRepository.findWbOrderByTruckNo(gatekeeper.getTruckNo());
-        if (CollectionUtils.isEmpty(wbOrderByTruckNo)) {
-            return Boolean.FALSE;
-        }
-        // 获取最新的一条数据
-        KwtWaybillOrder waybillOrder = wbOrderByTruckNo.get(0);
-
-        List<KwtGatekeeperWaybillOrder> gatekeeperWaybillOrders = gatekeeperWaybillOrderRepository
-                .queryGatekeeperWaybillOrderByWOrderIds(Lists.newArrayList(waybillOrder.getId()));
-        if (CollectionUtils.isEmpty(gatekeeperWaybillOrders)) {
-            return Boolean.FALSE;
+        if (!(gatekeeper.getWeighbridgeId() == 10001L || gatekeeper.getWeighbridgeId() == 10002L)) {
+            throw new BusinessPlatfromException(ErrorCodeEnum.INTERFACE_CALL_FAIL, "所传地磅编号不是山上地磅!");
+        } else {
+            List<KwtWaybillOrder> wbOrderByTruckNo = waybillOrderRepository.findWbOrderByTruckNo(gatekeeper.getTruckNo());
+            if (CollectionUtils.isEmpty(wbOrderByTruckNo)) {
+                return Boolean.FALSE;
+            }
+            // 获取最新的一条数据
+            KwtWaybillOrder waybillOrder = wbOrderByTruckNo.get(0);
+            // 山上:需要区分是进场抬杆还是出场抬杆
+            if (checkIsFirst(waybillOrder)) {
+                // 第一次过磅
+                return Objects.equals(waybillOrder.getStatus(), CarWaybillV1Enum.PENDING_VEHICLE.getCode()) ? Boolean.TRUE : Boolean.FALSE;
+            } else {
+                // 第二次过磅
+                List<KwtGatekeeperWaybillOrder> gatekeeperWaybillOrders = gatekeeperWaybillOrderRepository
+                        .queryGatekeeperWaybillOrderByWOrderIds(Lists.newArrayList(waybillOrder.getId()));
+                if (CollectionUtils.isEmpty(gatekeeperWaybillOrders)) {
+                    return Boolean.FALSE;
+                }
+                KwtGatekeeperWaybillOrder gatekeeperWaybillOrder = gatekeeperWaybillOrders.get(0);
+
+                // 定义运单可以可放行的状态集合
+                List<Integer> PASS_STATUSES = Arrays.asList(
+                        GatekeeperStatusEnum.IN_YARD.getCode(),
+                        GatekeeperStatusEnum.EXITED.getCode(),
+                        GatekeeperStatusEnum.EMPTY_EXITED.getCode()
+                );
+                Boolean result = PASS_STATUSES.contains(gatekeeperWaybillOrder.getStatus()) ? Boolean.TRUE : Boolean.FALSE;
+                log.info("校验出场是否可放行完成,result:{}", JSON.toJSONString(result));
+                return result;
+            }
         }
-        KwtGatekeeperWaybillOrder gatekeeperWaybillOrder = gatekeeperWaybillOrders.get(0);
-
+    }
 
-        // 定义运单可以可放行的状态集合
-        List<Integer> PASS_STATUSES = Arrays.asList(
-                GatekeeperStatusEnum.PENDING_ENTRY.getCode(),
-                GatekeeperStatusEnum.READY_RELEASE.getCode(),
-                GatekeeperStatusEnum.EXITED.getCode(),
-                GatekeeperStatusEnum.EMPTY_EXITED.getCode()
-        );
 
-        Boolean result = PASS_STATUSES.contains(gatekeeperWaybillOrder.getStatus()) ? Boolean.TRUE : Boolean.FALSE;
-        log.info("校验是否可放行完成,result:{}", JSON.toJSONString(result));
-        return result;
+    /**
+     * 校验是否第一次过磅
+     * @param waybillOrder
+     * @return
+     */
+    private Boolean checkIsFirst(KwtWaybillOrder waybillOrder) {
+        List<KwtWaybillOrderWeighbridge> weighbridges = waybillOrderWeighbridgeRepository
+                .queryWaybillOrderWeighbridgeByWOrderId(waybillOrder.getId(), WeighbridgeTypeEnum.LOADING.getCode());
+        return CollectionUtils.isEmpty(weighbridges);
     }
 
 

+ 34 - 54
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/app/WaybillOrderService.java

@@ -1667,15 +1667,15 @@ public class WaybillOrderService {
     @Transactional(rollbackFor = Exception.class)
     public void comeInto(WaybillOrderCmeIntoWeighParam param) {
         log.info("[过磅]开始过磅,入参参数:{}", JSON.toJSONString(param));
-        if (param.getEntId() == null){
-            throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "地磅企业id不能为空!");
-        }
         if (StringUtils.isBlank(param.getTruckNo())){
             throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "车牌号不能为空!");
         }
         if (param.getWeighAmount() == null) {
             throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "称重重量不能为空!");
         }
+        if (param.getWeighbridgeId() == null) {
+            throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "地磅id不能为空!");
+        }
         // 定义运单可以过磅的状态集合
         List<Integer> FORBIDDEN_STATUSES = Arrays.asList(
                 CarWaybillV1Enum.PENDING_VEHICLE.getCode(),
@@ -1685,67 +1685,47 @@ public class WaybillOrderService {
                 CarWaybillV1Enum.WAIT_LEAVE.getCode(),
                 CarWaybillV1Enum.UNLOADING.getCode(),
                 CarWaybillV1Enum.REPLENISHING.getCode(),
-                CarWaybillV1Enum.REPLENISH_FINISH.getCode(),
-                CarWaybillV1Enum.WAIT_LOADING.getCode(),
-                CarWaybillV1Enum.UNLOADING_POINT.getCode()
+                CarWaybillV1Enum.REPLENISH_FINISH.getCode()
         );
         List<KwtWaybillOrder> waybillOrders = waybillOrderRepository.findWbOrderByTruckNoAndStatus(param.getTruckNo(), FORBIDDEN_STATUSES);
-        if (CollectionUtils.isEmpty(waybillOrders)) {
-            throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_NOT_FOUND, "[称重过磅]当前车辆没有称重过磅状态的运单!");
-        }
-        if (waybillOrders.size() > 1) {
-            throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_NOT_FOUND, "[称重过磅]当前车辆过磅称重运单数据存在多条!");
-        }
-        KwtWaybillOrder waybillOrder = waybillOrders.get(0);
-
-        //查询物流订单
-        KwtLogisticsOrder logisticsOrder = logisticsOrderRepository.queryByLogisticsOrderId(waybillOrder.getLOrderId());
-        if (logisticsOrder == null) {
-            throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_NOT_FOUND, "[称重过磅]当前物流运单不存在!");
-        }
-        // 山上/山下企业
-        List<Long> mockEntIds = Arrays.asList(538039617157337089L, 538040297439891457L);
-        // 原矿运输
-        if (Objects.equals(1, logisticsOrder.getOrderType())) {
-            log.info("[过磅]该过磅订单为原矿运输,订单信息:{}", JSON.toJSONString(logisticsOrder));
-            //查询原矿运输企业的供应商
-            KwtLogisticsOrderUnit logisticsOrderUnit = logisticsOrderUnitRepository.queryByLOrderIdAndUnitType(logisticsOrder.getId(), 1);
-            if (logisticsOrderUnit == null) {
-                throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_NOT_FOUND, "[称重过磅]当前物流订单关联企业信息不存在!");
-            }
-            if (mockEntIds.contains(logisticsOrderUnit.getEntId())) {
-                //校验走山上还是山下
-                if (Objects.equals(param.getEntId(), mockEntIds.get(0))) {
-                    // 1. 山上装货过磅
-                    comeIntoHandler(param, waybillOrder);
-                } else if (Objects.equals(param.getEntId(), mockEntIds.get(1))) {
-                    // 2. 山下卸货过磅
-                    unloadingWeighHnadler(param, waybillOrder);
-                } else {
-                    log.info("[称重过磅]过磅称重匹配失败,地磅企业:{},供应企业:{}",
-                            JSON.toJSONString(param.getEntId()), JSON.toJSONString(logisticsOrderUnit.getEntId()));
-                    throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_NOT_FOUND, "[称重过磅]过磅称重匹配失败!");
-                }
+        // 山下称重过磅
+        if (param.getWeighbridgeId() == 10003L) {
+            log.info("[山下称重过磅]山下开始称重过磅,入参参数:{}", JSON.toJSONString(param));
+            //若无运单,直接返回
+            if (CollectionUtils.isEmpty(waybillOrders)) {
+               return;
             } else {
-                throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_NOT_FOUND, "[称重过磅]原矿运输的供应商不属于山上山下企业!");
+                commonComeInto(param, waybillOrders, FORBIDDEN_STATUSES);
             }
+            log.info("[山下称重过磅]山下称重过磅结束!");
         } else {
-            log.info("[过磅]该过磅订单为产品销售,订单信息:{}", JSON.toJSONString(logisticsOrder));
-            // 查询贸易订单企业id
-            List<OrderUnitInfoDetailVO> unitInfoDetailVOS = tradeOrderInfoService.queryOrderUnitByTradeOrderId(logisticsOrder.getTOrderId());
-            OrderUnitInfoDetailVO unitInfoDetailVO = unitInfoDetailVOS.stream()
-                    .filter(unit -> Objects.equals(unit.getUnitType(), "2"))
-                    .findFirst().orElse(new OrderUnitInfoDetailVO());
-
-            //产品销售流程只能过自己接单的企业所属地磅
-            if (Objects.equals(param.getEntId(), unitInfoDetailVO.getEntId())) {
-                // 装货过磅
-                comeIntoHandler(param, waybillOrder);
+            // 山上称重过磅
+            log.info("[山上称重过磅]山上开始称重过磅,入参参数:{}", JSON.toJSONString(param));
+            if (CollectionUtils.isEmpty(waybillOrders)) {
+                throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_NOT_FOUND, "[山上称重过磅]当前车辆没有称重过磅状态的运单!");
             }
+            commonComeInto(param, waybillOrders, FORBIDDEN_STATUSES);
+            log.info("[山上称重过磅]山上称重过磅结束!");
         }
+
         log.info("[过磅]过磅结束!");
     }
 
+    /**
+     * 655称重过磅
+     * @param param
+     * @param waybillOrders
+     * @param FORBIDDEN_STATUSES
+     */
+    private void commonComeInto(WaybillOrderCmeIntoWeighParam param, List<KwtWaybillOrder> waybillOrders, List<Integer> FORBIDDEN_STATUSES) {
+        if (waybillOrders.size() > 1) {
+            throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_NOT_FOUND, "[称重过磅]当前车辆过磅称重运单数据存在多条!");
+        }
+        KwtWaybillOrder waybillOrder = waybillOrders.get(0);
+        param.setWaybillOrderId(waybillOrder.getId());
+        comeIntoHandler.handler(param);
+    }
+
     /**
      * 获取企业id
      * @param logOrder