Jelajahi Sumber

地磅数据上报

chenxiaofei 4 jam lalu
induk
melakukan
9a31eb7d79

+ 17 - 28
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/handler/ComeIntoHandler.java

@@ -60,9 +60,7 @@ public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCme
         if (orderTicket == null) {
             throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_TICKET_NOT_FOUND, "当前物流运单装卸货信息不存在,无法记录皮重!");
         }
-        // 校验是否是第一次过磅
-        checkIsFirst(waybillOrder);
-        if (waybillOrder.getIsExistWeighbridges()) {
+        if (checkIsFirst(waybillOrder)) {
             //第一次过磅
             firstWeighbridge(param, waybillOrder, orderTicket);
         } else {
@@ -77,14 +75,10 @@ public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCme
      * @param waybillOrder
      * @return
      */
-    private void checkIsFirst(KwtWaybillOrder waybillOrder) {
+    private Boolean checkIsFirst(KwtWaybillOrder waybillOrder) {
         List<KwtWaybillOrderWeighbridge> weighbridges = waybillOrderWeighbridgeRepository
                 .queryWaybillOrderWeighbridgeByWOrderId(waybillOrder.getId(), WeighbridgeTypeEnum.LOADING.getCode());
-        if (CollectionUtils.isEmpty(weighbridges)) {
-            waybillOrder.setIsExistWeighbridges(Boolean.TRUE);
-        } else {
-            waybillOrder.setIsExistWeighbridges(Boolean.FALSE);
-        }
+        return CollectionUtils.isEmpty(weighbridges);
     }
 
     /**
@@ -177,7 +171,7 @@ public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCme
             forkliftWaybillOrderRepository.save(forklift);
             log.debug("铲车司机数据保存成功");
         } catch (Exception e) {
-            log.info("[创建装货铲车]保存铲车司机数据异常!", e);
+            log.error("[创建装货铲车]保存铲车司机数据异常!", e);
             throw new BusinessPlatfromException(ErrorCodeEnum.DATA_SAVE_FAIL, "保存铲车司机数据失败!");
         }
     }
@@ -195,17 +189,12 @@ public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCme
         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());
+        entId = unitInfoDetailVO.getEntId();
         log.info("[创建装货铲车]查询企业id完成,入参参数:{}", JSON.toJSONString(entId));
         return entId;
     }
@@ -255,7 +244,7 @@ public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCme
             waybillOrderWeighbridgeRepository.save(weighbridge);
             log.debug("异步保存过磅数据保存成功");
         } catch (Exception e) {
-            log.info("保存过磅数据异常!", e);
+            log.error("保存过磅数据异常!", e);
             throw new BusinessPlatfromException(ErrorCodeEnum.DATA_SAVE_FAIL, "保存过磅数据失败!");
         }
     }
@@ -427,7 +416,7 @@ public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCme
     protected void getStatus(KwtWaybillOrder waybillOrder) {
         Integer status;
         // 校验是否第一次过磅
-        if (waybillOrder.getIsExistWeighbridges()) {
+        if (checkIsFirst(waybillOrder)) {
             status = CarWaybillV1Enum.REFUSE_TRAFFIC.getCode();
             updateOrderStatus(waybillOrder, status);
             return;
@@ -477,12 +466,12 @@ public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCme
      */
     @Override
     protected void createNodeTrace(WaybillOrderCmeIntoWeighParam param, KwtWaybillOrder waybillOrder) {
-        if (waybillOrder.getIsExistWeighbridges()) {
+        List<KwtWaybillOrderWeighbridge> weighbridges = waybillOrderWeighbridgeRepository
+                .queryWaybillOrderWeighbridgeByWOrderId(waybillOrder.getId(), WeighbridgeTypeEnum.LOADING.getCode());
+        if (CollectionUtils.isEmpty(weighbridges)) {
             // 首次过磅
             createArrivedAndFirstWeighNodes(param, waybillOrder);
         } else {
-            List<KwtWaybillOrderWeighbridge> weighbridges = waybillOrderWeighbridgeRepository
-                    .queryWaybillOrderWeighbridgeByWOrderId(waybillOrder.getId(), WeighbridgeTypeEnum.LOADING.getCode());
             // 后续过磅
             createMultipleWeighNode(param, waybillOrder, weighbridges);
         }
@@ -520,7 +509,7 @@ public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCme
     private void createMultipleWeighNode(WaybillOrderCmeIntoWeighParam param, KwtWaybillOrder waybillOrder, List<KwtWaybillOrderWeighbridge> weighbridges) {
         KwtWaybillOrderNode node = getWaybillOrderNode(param, waybillOrder);
         //过磅次数
-        int size = weighbridges.size();
+        int size = weighbridges.size() + 1;
         String grossAmount = getWeighAmount(param);
         node.setRemark("第" + size + "次称重,[" + param.getWeighbridgeName() +  "]称重["  + grossAmount + "吨]");
         waybillOrderNodeRepository.save(node);
@@ -546,7 +535,7 @@ public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCme
     @Override
     @Transactional(rollbackFor = Exception.class)
     protected void calculateAutoDispatchScore(WaybillOrderCmeIntoWeighParam param, KwtWaybillOrder waybillOrder) {
-        if (waybillOrder.getIsExistWeighbridges()) {
+        if (checkIsFirst(waybillOrder)) {
             //校验连续按时到场次数
             checkContinuousArriveTimes(waybillOrder);
         }

+ 60 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/handler/LiftRodReleaseHandler.java

@@ -6,6 +6,8 @@ import com.sckw.core.common.enums.enums.ErrorCodeEnum;
 import com.sckw.core.exception.BusinessPlatfromException;
 import com.sckw.core.model.enums.CarWaybillV1Enum;
 import com.sckw.core.model.enums.GatekeeperStatusEnum;
+import com.sckw.fleet.api.model.vo.RTruckVo;
+import com.sckw.transport.model.*;
 import com.sckw.core.model.enums.GatekeeperTypeEnum;
 import com.sckw.transport.model.KwtGatekeeperWaybillOrder;
 import com.sckw.transport.model.KwtWaybillOrder;
@@ -16,7 +18,9 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.util.Date;
 import java.util.Objects;
+import java.util.concurrent.CompletableFuture;
 
 /**
  * Author: donglang
@@ -50,6 +54,9 @@ public class LiftRodReleaseHandler extends AbstractWaybillOrderHandler<WaybillOr
 
         //2. 修改门卫订单状态为:空载离场/离场
         updateGatekeeperOrderStatus(waybillOrder, isEmptyLoadLeave);
+
+        //3. 创建门卫卸货订单
+        creatGatekeeperUnLoadingOrder(waybillOrder);
     }
 
     /**
@@ -92,6 +99,59 @@ public class LiftRodReleaseHandler extends AbstractWaybillOrderHandler<WaybillOr
     }
 
 
+    /**
+     * 创建卸货门卫订单
+     *
+     * @param waybillOrder
+     */
+    private void creatGatekeeperUnLoadingOrder(KwtWaybillOrder waybillOrder) {
+        // 只有原矿运输的才会新增卸货门卫订单
+        KwtLogisticsOrder logisticsOrder = getLogisticsOrder(waybillOrder.getLOrderId());
+        if (!Objects.equals(1, logisticsOrder.getOrderType())) {
+            return;
+        }
+
+        RTruckVo truck = remoteFleetService.findTruckByTruckNo(waybillOrder.getTruckNo());
+        if (truck == null || !Objects.equals(truck.getStatus(), 0)) {
+            throw new BusinessPlatfromException(ErrorCodeEnum.TRUCK_STATUS_ERROR, "当前车辆非正常状态,不能接单!");
+        }
+        //查询子运单
+        KwtWaybillOrderSubtask waybillSubtask = getWaybillSubtask(waybillOrder.getId());
+
+        CompletableFuture.runAsync(() -> {
+            try {
+                KwtGatekeeperWaybillOrder gatekeeper = new KwtGatekeeperWaybillOrder();
+                gatekeeper.setEntId(waybillOrder.getEntId());
+                gatekeeper.setWOrderId(waybillOrder.getId());
+                gatekeeper.setWOrderNo(waybillOrder.getWOrderNo());
+                gatekeeper.setLOrderId(waybillOrder.getLOrderId());
+                // 查询商品信息
+                KwtLogisticsOrderGoods orderGoods = logisticsOrderGoodsRepository.queryByLogOrderId(waybillOrder.getLOrderId());
+                if (orderGoods != null) {
+                    gatekeeper.setGoodsId(orderGoods.getGoodsId());
+                    gatekeeper.setGoodsName(orderGoods.getGoodsName());
+                }
+                gatekeeper.setWaybillAcceptTime(waybillOrder.getCreateTime());
+                gatekeeper.setType(GatekeeperTypeEnum.UNLOADING.getCode());
+                gatekeeper.setStatus(GatekeeperStatusEnum.PENDING_ENTRY.getCode());
+                gatekeeper.setWaybillAcceptTime(waybillOrder.getCreateTime());
+                gatekeeper.setTruckType(truck.getTruckType());
+                gatekeeper.setEntrustAmount(waybillSubtask.getEntrustAmount());
+                gatekeeper.setCarAxis(truck.getCarAxis());
+                gatekeeper.setLegalLoad(truck.getLegalLoad());
+                gatekeeper.setCreateTime(new Date());
+                gatekeeper.setCreateUser(waybillOrder.getDriverId());
+                gatekeeper.setUpdateUser(waybillOrder.getDriverId());
+
+                log.debug("开始异步保存卸货门卫订单数据,运单ID:{}", waybillOrder.getId());
+                gatekeeperWaybillOrderRepository.save(gatekeeper);
+                log.debug("卸货门卫订单数据保存成功");
+            } catch (Exception e) {
+                log.error("异步保存卸货门卫订单数据失败!");
+            }
+        });
+    }
+
 
     @Override
     protected void calculateAutoDispatchScore(WaybillOrderLiftRodReleaseParam param, KwtWaybillOrder waybillOrder) {

+ 1 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/handler/ReplenishHandler.java

@@ -100,7 +100,7 @@ public class ReplenishHandler extends AbstractWaybillOrderHandler<WaybillOrderRe
             forkliftWaybillOrderRepository.save(forklift);
             log.debug("铲车司机数据保存成功");
         } catch (Exception e) {
-            log.info("[创建补货铲车]保存铲车司机数据异常!", e);
+            log.error("[创建补货铲车]保存铲车司机数据异常!", e);
             throw new BusinessPlatfromException(ErrorCodeEnum.DATA_SAVE_FAIL, "保存铲车司机数据失败!");
         }
     }

+ 42 - 36
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/handler/TakingOrderHandler.java

@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSON;
 import com.google.common.collect.Lists;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.common.enums.enums.ErrorCodeEnum;
+import com.sckw.core.exception.BusinessException;
 import com.sckw.core.exception.BusinessPlatfromException;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.model.enums.*;
@@ -165,43 +166,48 @@ public class TakingOrderHandler extends AbstractWaybillOrderHandler<OrderCircula
     private void createGatekeeperWaybillOrder(KwtLogisticsOrder logOrder, KwtWaybillOrder waybillOrder,
                                               RTruckVo truck, BigDecimal truckLoadVolume) {
         log.info("开始创建门卫订单,入参参数:{}", JSON.toJSONString(waybillOrder));
-        // 获取企业id
-        Long entId = getEntId(logOrder);
-
-        KwtGatekeeperWaybillOrder gatekeeper = new KwtGatekeeperWaybillOrder();
-        gatekeeper.setEntId(entId);
-        gatekeeper.setWOrderId(waybillOrder.getId());
-        gatekeeper.setWOrderNo(waybillOrder.getWOrderNo());
-        gatekeeper.setLOrderId(waybillOrder.getLOrderId());
-
-        //查询字典
-        Map<String, Map<String, String>> dictValueAndDictResDtoMap = remoteSystemService.queryDictByType(
-                Arrays.asList(DictTypeEnum.PRODUCT_NAME_TYPE.getType(), DictTypeEnum.GOODS_SPEC.getType()));
-        Map<String, String> goodsTypeMap= dictValueAndDictResDtoMap.getOrDefault(DictTypeEnum.PRODUCT_NAME_TYPE.getType(), new HashMap<>());
-        Map<String, String> goodsSpecMap= dictValueAndDictResDtoMap.getOrDefault(DictTypeEnum.GOODS_SPEC.getType(), new HashMap<>());
-
-        // 查询商品信息
-        KwtLogisticsOrderGoods orderGoods = logisticsOrderGoodsRepository.queryByLogOrderId(waybillOrder.getLOrderId());
-        KwpGoods goods = goodsInfoService.getGoodsById(orderGoods.getGoodsId());
-        if (goods != null) {
-            gatekeeper.setGoodsId(goods.getId());
-            gatekeeper.setGoodsName(goods.getName()+"/"+goodsTypeMap.getOrDefault(goods.getGoodsType(),"")+"/"+goodsSpecMap.getOrDefault(goods.getSpec(), ""));
+        try {
+            // 获取企业id
+            Long entId = getEntId(logOrder);
+
+            KwtGatekeeperWaybillOrder gatekeeper = new KwtGatekeeperWaybillOrder();
+            gatekeeper.setEntId(entId);
+            gatekeeper.setWOrderId(waybillOrder.getId());
+            gatekeeper.setWOrderNo(waybillOrder.getWOrderNo());
+            gatekeeper.setLOrderId(waybillOrder.getLOrderId());
+
+            //查询字典
+            Map<String, Map<String, String>> dictValueAndDictResDtoMap = remoteSystemService.queryDictByType(
+                    Arrays.asList(DictTypeEnum.PRODUCT_NAME_TYPE.getType(), DictTypeEnum.GOODS_SPEC.getType()));
+            Map<String, String> goodsTypeMap= dictValueAndDictResDtoMap.getOrDefault(DictTypeEnum.PRODUCT_NAME_TYPE.getType(), new HashMap<>());
+            Map<String, String> goodsSpecMap= dictValueAndDictResDtoMap.getOrDefault(DictTypeEnum.GOODS_SPEC.getType(), new HashMap<>());
+
+            // 查询商品信息
+            KwtLogisticsOrderGoods orderGoods = logisticsOrderGoodsRepository.queryByLogOrderId(waybillOrder.getLOrderId());
+            KwpGoods goods = goodsInfoService.getGoodsById(orderGoods.getGoodsId());
+            if (goods != null) {
+                gatekeeper.setGoodsId(goods.getId());
+                gatekeeper.setGoodsName(goods.getName()+"/"+goodsTypeMap.getOrDefault(goods.getGoodsType(),"")+"/"+goodsSpecMap.getOrDefault(goods.getSpec(), ""));
+            }
+
+            gatekeeper.setWaybillAcceptTime(waybillOrder.getCreateTime());
+            gatekeeper.setType(GatekeeperTypeEnum.LOADING.getCode());
+            gatekeeper.setStatus(GatekeeperStatusEnum.PENDING_ENTRY.getCode());
+            gatekeeper.setTruckType(truck.getTruckType());
+            gatekeeper.setEntrustAmount(truckLoadVolume);
+            gatekeeper.setCarAxis(truck.getCarAxis());
+            gatekeeper.setLegalLoad(truck.getLegalLoad());
+            gatekeeper.setCreateTime(new Date());
+            gatekeeper.setCreateUser(waybillOrder.getDriverId());
+            gatekeeper.setUpdateUser(waybillOrder.getDriverId());
+
+            log.debug("开始保存门卫订单数据,运单ID:{}", waybillOrder.getId());
+            gatekeeperWaybillOrderRepository.save(gatekeeper);
+            log.debug("门卫订单数据保存成功");
+        } catch (Exception e) {
+            log.error("保存门卫订单数据失败!",e);
+            throw new BusinessException("保存门卫订单数据失败!");
         }
-
-        gatekeeper.setWaybillAcceptTime(waybillOrder.getCreateTime());
-        gatekeeper.setType(GatekeeperTypeEnum.LOADING.getCode());
-        gatekeeper.setStatus(GatekeeperStatusEnum.PENDING_ENTRY.getCode());
-        gatekeeper.setTruckType(truck.getTruckType());
-        gatekeeper.setEntrustAmount(truckLoadVolume);
-        gatekeeper.setCarAxis(truck.getCarAxis());
-        gatekeeper.setLegalLoad(truck.getLegalLoad());
-        gatekeeper.setCreateTime(new Date());
-        gatekeeper.setCreateUser(waybillOrder.getDriverId());
-        gatekeeper.setUpdateUser(waybillOrder.getDriverId());
-
-        log.debug("开始保存门卫订单数据,运单ID:{}", waybillOrder.getId());
-        gatekeeperWaybillOrderRepository.save(gatekeeper);
-        log.debug("门卫订单数据保存成功");
     }
 
     /**

+ 6 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/param/WaybillOrderCmeIntoWeighParam.java

@@ -19,6 +19,12 @@ public class WaybillOrderCmeIntoWeighParam extends WaybillOrderProcessParam impl
     @Serial
     private static final long serialVersionUID = 1038619782660342061L;
 
+    /**
+     * 地磅企业id
+     */
+    @Schema(description = "地磅企业id")
+    private Long entId;
+
     /**
      * 车辆号
      */

+ 24 - 71
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/app/GatekeeperOrderService.java

@@ -742,86 +742,39 @@ 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)) {
-            log.info("未找到运单数据,校验抬杆结果:{}, 运单:{}", Boolean.FALSE, JSON.toJSONString(wbOrderByTruckNo));
+            log.info("未找到关联的运单!");
             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;
-            }
 
-            Boolean result = Objects.equals(waybillOrder.getStatus(), CarWaybillV1Enum.REFUSE_TRAFFIC.getCode()) ? Boolean.TRUE : Boolean.FALSE;
-            log.info("[进场下榜/出场上榜]抬杆,校验出场结果:{}, 运单:{}", result, JSON.toJSONString(waybillOrder));
-            return result;
-        } else {
-            KwtForkliftWaybillOrder forklift = forkliftWaybillOrderRepository.queryForkliftWaybillOrderByWOrderId(waybillOrder.getId());
-            if (Objects.equals(forklift.getStatus(), ForkliftStatusEnum.COMPLETED.getCode())) {
-                if (Objects.equals(waybillOrder.getStatus(), CarWaybillV1Enum.EXIT_COMPLETED.getCode())) {
-                    log.info("[出场上榜]运输司机回退,铲车司机完成装载,抬杆结果:{}, 运单:{}", Boolean.TRUE, JSON.toJSONString(waybillOrder));
-                    return Boolean.TRUE;
-                }
-            }
+        List<KwtGatekeeperWaybillOrder> gatekeeperWaybillOrders = gatekeeperWaybillOrderRepository
+                .queryGatekeeperWaybillOrderByWOrderIds(Lists.newArrayList(waybillOrder.getId()));
+        if (CollectionUtils.isEmpty(gatekeeperWaybillOrders)) {
+            log.info("未找到关联的门卫订单!");
+            return Boolean.FALSE;
+        }
+        KwtGatekeeperWaybillOrder gatekeeperWaybillOrder = gatekeeperWaybillOrders.get(0);
 
-            if (Objects.equals(waybillOrder.getStatus(), CarWaybillV1Enum.WAIT_LOADING.getCode())) {
-                log.info("[出场下榜]抬杆,校验出场结果:{}, 运单:{}", Boolean.TRUE, JSON.toJSONString(waybillOrder));
-                // 填充抬杆完成标签
-                updateWaybillOrderOpened(waybillOrder);
-                return Boolean.TRUE;
-            }
 
-            if (Objects.equals(waybillOrder.getStatus(), CarWaybillV1Enum.COMPLETED.getCode())) {
-                if (Objects.equals(forklift.getStatus(), ForkliftStatusEnum.COMPLETED.getCode())) {
-                    log.info("[出场下榜]铲车司机完成装载,空载离场过磅,校验出场结果:{}, 运单:{}", Boolean.TRUE, JSON.toJSONString(waybillOrder));
-                    // 填充抬杆完成标签
-                    updateWaybillOrderOpened(waybillOrder);
-                    return Boolean.TRUE;
-                } else {
-                    log.info("[出场下榜]铲车司机未接单,空载离场过磅,校验出场结果:{}, 运单:{}", Boolean.TRUE, JSON.toJSONString(waybillOrder));
-                    // 填充抬杆完成标签
-                    updateWaybillOrderOpened(waybillOrder);
-                    return Boolean.TRUE;
-                }
-            }
-            if (Objects.equals(waybillOrder.getStatus(), CarWaybillV1Enum.REFUSE_TRAFFIC.getCode())) {
-                log.info("[出场下榜]铲车未接单,有重量过磅,校验出场结果:{}, 运单:{}", Boolean.FALSE, JSON.toJSONString(waybillOrder));
-                return Boolean.FALSE;
-            }
-        }
-        log.info("抬杆未知情况,校验出场结果:{}, 运单:{}", Boolean.FALSE, JSON.toJSONString(waybillOrder));
-        return Boolean.FALSE;
-    }
+        // 定义运单可以可放行的状态集合
+        List<Integer> PASS_STATUSES = Arrays.asList(
+                GatekeeperStatusEnum.PENDING_ENTRY.getCode(),
+                GatekeeperStatusEnum.READY_RELEASE.getCode(),
+                GatekeeperStatusEnum.EXITED.getCode(),
+                GatekeeperStatusEnum.EMPTY_EXITED.getCode()
+        );
 
-    /**
-     * 校验是否第一次过磅
-     * @param waybillOrder
-     * @return
-     */
-    private List<KwtWaybillOrderWeighbridge> checkIsFirst(KwtWaybillOrder waybillOrder) {
-        return waybillOrderWeighbridgeRepository
-                .queryWaybillOrderWeighbridgeByWOrderId(waybillOrder.getId(), WeighbridgeTypeEnum.LOADING.getCode());
-    }
-    /**
-     * 填充抬杆完成标签
-     * @param waybillOrder
-     */
-    private void updateWaybillOrderOpened(KwtWaybillOrder waybillOrder) {
-        waybillOrder.setOpened(1);
-        waybillOrderRepository.updateById(waybillOrder);
-        log.info("已完成全部过磅流程,运单:{}", JSON.toJSONString(waybillOrder));
+        Boolean result = PASS_STATUSES.contains(gatekeeperWaybillOrder.getStatus()) ? Boolean.TRUE : Boolean.FALSE;
+        log.info("校验是否可放行完成,result:{}", JSON.toJSONString(result));
+        return result;
     }
+
+
 }

+ 74 - 14
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/app/WaybillOrderService.java

@@ -1290,6 +1290,9 @@ 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, "车牌号不能为空!");
         }
@@ -1308,35 +1311,92 @@ public class WaybillOrderService {
                 CarWaybillV1Enum.WAIT_LEAVE.getCode(),
                 CarWaybillV1Enum.UNLOADING.getCode(),
                 CarWaybillV1Enum.REPLENISHING.getCode(),
-                CarWaybillV1Enum.REPLENISH_FINISH.getCode()
+                CarWaybillV1Enum.REPLENISH_FINISH.getCode(),
+                CarWaybillV1Enum.WAIT_LOADING.getCode()
         );
         List<KwtWaybillOrder> waybillOrders = waybillOrderRepository.findWbOrderByTruckNoAndStatus(param.getTruckNo(), FORBIDDEN_STATUSES);
         // 称重过磅
         if (CollectionUtils.isEmpty(waybillOrders)) {
-            throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_NOT_FOUND, "[山上称重过磅]当前车辆没有称重过磅状态的运单!");
+            throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_NOT_FOUND, "[称重过磅]当前车辆没有称重过磅状态的运单!");
         }
-        try {
-            commonComeInto(param, waybillOrders, FORBIDDEN_STATUSES);
-        } catch (Exception e) {
-            log.error("[过磅]过磅异常", e);
-            throw new BusinessException("[过磅]过磅异常," + e.getMessage());
+        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, "[称重过磅]当前物流运单不存在!");
+        }
+
+        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())) {
+            try {
+                // 装货过磅
+                comeIntoHandler(param, waybillOrder);
+            } catch (Exception e) {
+                log.error("[称重过磅]过磅失败", e);
+                throw new BusinessException("[称重过磅]过磅失败,失败原因=>" + e.getMessage());
+            }
+        } else {
+            throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_NOT_FOUND, "[称重过磅]产品销售的供应商不属当前过磅企业!");
         }
+
         log.info("[过磅]过磅结束!");
     }
 
     /**
-     * 655称重过磅
+     * 获取企业id
+     * @param logOrder
+     * @return
+     */
+    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, "[接单]物流企业信息数据不存在");
+        }
+        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();
+        log.info("[创建装货门卫]查询企业id完成,入参参数:{}", JSON.toJSONString(entId));
+        return entId;
+    }
+
+    /**
+     * 装货过磅
      * @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, "[称重过磅]当前车辆过磅称重运单数据存在多条!");
+    private void comeIntoHandler(WaybillOrderCmeIntoWeighParam param, KwtWaybillOrder waybillOrder) {
+        log.info("[装货过磅]开始装货过磅,参数:{}", JSON.toJSONString(param));
+        // 定义运单可以过磅的状态集合
+        List<Integer> FORBIDDEN_STATUSES = Arrays.asList(
+                CarWaybillV1Enum.PENDING_VEHICLE.getCode(),
+                CarWaybillV1Enum.REFUSE_TRAFFIC.getCode(),
+                CarWaybillV1Enum.EXIT_COMPLETED.getCode(),
+                CarWaybillV1Enum.EMPTY_WAIT_LEAVE.getCode(),
+                CarWaybillV1Enum.WAIT_LEAVE.getCode(),
+                CarWaybillV1Enum.UNLOADING.getCode(),
+                CarWaybillV1Enum.REPLENISHING.getCode(),
+                CarWaybillV1Enum.REPLENISH_FINISH.getCode()
+        );
+        if (!FORBIDDEN_STATUSES.contains(waybillOrder.getStatus())) {
+            throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_STATUS_ERROR, "[装货过磅]当前车辆没有称重过磅状态的运单");
         }
-        KwtWaybillOrder waybillOrder = waybillOrders.get(0);
         param.setWaybillOrderId(waybillOrder.getId());
         comeIntoHandler.handler(param);
+        log.info("[装货过磅]装货过磅结束!");
     }
 
     /**