Quellcode durchsuchen

原矿运输逻辑

donglang vor 1 Monat
Ursprung
Commit
e9ab13f8e2

+ 15 - 6
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/handler/TakingOrderHandler.java

@@ -106,7 +106,7 @@ public class TakingOrderHandler extends AbstractWaybillOrderHandler<OrderCircula
         RTruckVo truck = BusinessContext.get("truck");
 
         // 计算任务量(含接单校验)
-        BigDecimal truckLoadVolume = queryCurTruckLoadVolume(truck, tradeOrder);
+        BigDecimal truckLoadVolume = queryCurTruckLoadVolume(truck, tradeOrder, logOrder);
 
         //1、生成物流运单
         KwtWaybillOrder waybillOrder = createWaybillOrder(param, driver, truck, logOrder);
@@ -215,6 +215,10 @@ public class TakingOrderHandler extends AbstractWaybillOrderHandler<OrderCircula
      * @return
      */
     private OrderDetailVo checkTradeOrder(OrderCirculateTakingQueryParam param, KwtLogisticsOrder logOrder) {
+        // 原矿运输没有贸易订单
+        if (Objects.equals(1, logOrder.getOrderType())) {
+            return new OrderDetailVo();
+        }
         OrderDetailVo orderDetail = tradeOrderInfoService.queryByTradeOrderId(logOrder.getTOrderId());
         if (orderDetail == null || orderDetail.getStatus() == Global.NUMERICAL_ONE) {
             throw new BusinessPlatfromException(ErrorCodeEnum.TRADE_ORDER_STATUS_ERROR, "当前物流订单的交易订单已锁定");
@@ -295,7 +299,7 @@ public class TakingOrderHandler extends AbstractWaybillOrderHandler<OrderCircula
      *
      * @param truckNo
      */
-    private BigDecimal queryCurTruckLoadVolume(RTruckVo truckNo, OrderDetailVo tradeOrder) {
+    private BigDecimal queryCurTruckLoadVolume(RTruckVo truckNo, OrderDetailVo tradeOrder, KwtLogisticsOrder logOrder) {
         log.info("开始计算当前车辆任务量!");
         //核定载重
         BigDecimal actualWeight = truckNo.getLegalLoad();
@@ -315,7 +319,7 @@ public class TakingOrderHandler extends AbstractWaybillOrderHandler<OrderCircula
         }
 
         //订单余量
-        BigDecimal remainingAmount = getRemainingAmount(tradeOrder);
+        BigDecimal remainingAmount = getRemainingAmount(tradeOrder,logOrder);
 
         // 最终接取的任务量
         BigDecimal taskAmount;
@@ -337,9 +341,14 @@ public class TakingOrderHandler extends AbstractWaybillOrderHandler<OrderCircula
     }
 
     @NotNull
-    private BigDecimal getRemainingAmount(OrderDetailVo tradeOrder) {
-        //订单分配总量
-        BigDecimal entrustAmount = tradeOrder.getAmount();
+    private BigDecimal getRemainingAmount(OrderDetailVo tradeOrder, KwtLogisticsOrder logOrder) {
+        //订单分配总量(原矿运输的总量放在物流订单的)
+        BigDecimal entrustAmount;
+        if (Objects.equals(1, logOrder.getOrderType())) {
+            entrustAmount = logOrder.getAmount();
+        } else {
+            entrustAmount = tradeOrder.getAmount();
+        }
         if (entrustAmount == null ||  entrustAmount.compareTo(BigDecimal.ZERO) <= 0) {
             throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "订单分配总量必须大于0!");
         }

+ 4 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/handler/UnloadingHandler.java

@@ -247,6 +247,10 @@ public class UnloadingHandler extends AbstractWaybillOrderHandler<WaybillOrderUn
      * 更新贸易订单装货量
      */
     private void updateTradeOrder(KwtLogisticsOrder logisticsOrder, BigDecimal loadAmount) {
+        // 原矿运输没有贸易订单
+        if (Objects.equals(1, logisticsOrder.getOrderType())) {
+            return;
+        }
         //贸易订单装货量累加
         TradeOrderSettlePara tradeOrderSettlePara = new TradeOrderSettlePara();
         tradeOrderSettlePara.setTOrderId(logisticsOrder.getTOrderId());

+ 1 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/param/LogisticsOrderResp.java

@@ -203,6 +203,6 @@ public class LogisticsOrderResp implements Serializable {
      * 订单类型
      */
     @Schema(description = "订单类型(1-原矿转运)")
-    private String orderType;
+    private Integer orderType;
 
 }

+ 7 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/param/WaybillOrderStatusResp.java

@@ -216,4 +216,11 @@ public class WaybillOrderStatusResp implements Serializable {
      */
     @Schema(description = "备注(是否空载离场)")
     private String remark;
+
+    /**
+     * 订单类型
+     */
+    @Schema(description = "订单类型(1-原矿转运)")
+    private Integer orderType;
+
 }

+ 6 - 5
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/app/WaybillOrderService.java

@@ -231,18 +231,18 @@ public class WaybillOrderService {
 
         // 获取order_type=1的订单集合
         List<KwtLogisticsOrder> typeOneList = partitionedMap.get(true);
-        log.info("正常流程的订单数量: {},信息:{}", JSON.toJSONString(typeOneList), typeOneList.size());
+        log.info("原矿运输的订单信息: {},数量:{}", JSON.toJSONString(typeOneList), typeOneList.size());
 
         // 获取order_type=null的订单集合
         List<KwtLogisticsOrder> typeNullList = partitionedMap.get(false);
-        log.info("原矿运输的订单数量: {},信息:{}",  JSON.toJSONString(typeNullList), typeNullList.size());
+        log.info("正常流程的订单信息: {},数量:{}",  JSON.toJSONString(typeNullList), typeNullList.size());
 
         List<LogisticsOrderResp> orderList = new ArrayList<>();
         // 正常流程
-        List<LogisticsOrderResp> normalOrderList = getLogisticsOrderResps(param, typeOneList, logOrderIdList, logOrderIdAndCirculateMap, rTruckVo);
+        List<LogisticsOrderResp> normalOrderList = getLogisticsOrderResps(param, typeNullList, logOrderIdList, logOrderIdAndCirculateMap, rTruckVo);
         orderList.addAll(normalOrderList);
         // 原矿运输
-        List<LogisticsOrderResp> rawOreOrdderList = getRawOreLogisticsOrderResps(param, typeNullList, logOrderIdList, logOrderIdAndCirculateMap, rTruckVo);
+        List<LogisticsOrderResp> rawOreOrdderList = getRawOreLogisticsOrderResps(param, typeOneList, logOrderIdList, logOrderIdAndCirculateMap, rTruckVo);
         orderList.addAll(rawOreOrdderList);
 
         //内存分页
@@ -595,7 +595,7 @@ public class WaybillOrderService {
                                                      Map<Long, List<KwtWaybillOrderSubtask>> logisticsOrderIdAndSubtaskList,
                                                      Map<String, Map<String, String>> dictValueAndDictResDtoMap) {
         LogisticsOrderResp orderResp = new LogisticsOrderResp();
-        orderResp.setOrderType("原矿转运");
+        orderResp.setOrderType(order.getOrderType());
         orderResp.setLogisticsOrderId(Optional.ofNullable(order.getId()).map(String::valueOf).orElse(null));
         orderResp.setLogisticsOrderNo(order.getLOrderNo());
         //商品
@@ -1038,6 +1038,7 @@ public class WaybillOrderService {
         wbOrderResp.setLogisticsOrderNo(logOrder.getLOrderNo());
         wbOrderResp.setChargeType(logOrder.getBillingMode());
         wbOrderResp.setChargeTypeDesc(DictEnum.getLabel(DictTypeEnum.CHARGING_TYPE.getType(), logOrder.getBillingMode()));
+        wbOrderResp.setOrderType(logOrder.getOrderType());
         //设置余量
         KwtLogisticsOrder order = logOrderMap.getOrDefault(wbOrder.getLOrderId(), new KwtLogisticsOrder());
         BigDecimal supAmount = getSupAmount(order.getTOrderId(), tradeIdAndOrderDetailVoMap, tradeIdAndLogOrderList,