donglang пре 1 месец
родитељ
комит
8151ff6416

+ 7 - 20
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/app/WaybillOrderService.java

@@ -976,24 +976,11 @@ public class WaybillOrderService {
                     continue;
                 }
 
-                // 3. 确定计费模式对应的磅单类型
-                // CHARGING_TYPE_1: 按装货量计费 -> 取装货磅单 (SHIPMENT)
-                // CHARGING_TYPE_2: 按卸货量计费 -> 取卸货磅单 (TAKE)
-                Integer ticketType;
-                String billingMode = kwtLogisticsOrder.getBillingMode();
-                if (StringUtils.equals(billingMode, DictEnum.CHARGING_TYPE_1.getValue())) {
-                    ticketType = AddressTypeEnum.SHIPMENT.getCode();
-                } else if (StringUtils.equals(billingMode, DictEnum.CHARGING_TYPE_2.getValue())) {
-                    ticketType = AddressTypeEnum.TAKE.getCode();
-                } else {
-                    log.warn("余量计算跳过未知计费模式,tradeOrderId:{}, logOrderId:{}, billingMode:{}",
-                            tradeOrderId, logOrderId, billingMode);
-                    continue;
-                }
-
-                // 定义需要剔除的状态:已取消、已完成(这些状态下的运单不再占用当前可接单的余量,或者其量已结算)
+                // 定义需要剔除的状态:已取消、已完成、空载(这些状态下的运单不再占用当前可接单的余量,或者其量已结算)
                 // 注意:具体业务逻辑中,通常“进行中”的运单会占用余量。这里根据原代码逻辑,剔除CANCELLED和COMPLETED。
-                List<Integer> excludeStatusList = Arrays.asList(CarWaybillV1Enum.CANCELLED.getCode(), CarWaybillV1Enum.COMPLETED.getCode());
+                //      空载待离场,实际装货量接近0,所以也要剔除
+                List<Integer> excludeStatusList = Arrays.asList(CarWaybillV1Enum.CANCELLED.getCode(), CarWaybillV1Enum.COMPLETED.getCode()
+                        , CarWaybillV1Enum.EMPTY_WAIT_LEAVE.getCode());
 
                 // 4. 计算子运单委托量合计(仅统计未取消/未完成的有效子运单)
                 BigDecimal entrustAmount = waybillOrderSubtasks.stream()
@@ -1015,13 +1002,13 @@ public class WaybillOrderService {
                         // 展开每个运单ID对应的磅单列表
                         .flatMap(wOrderId -> waybillOrderIdAndTicketList.getOrDefault(wOrderId, Collections.emptyList()).stream())
                         .filter(Objects::nonNull)
-                        // 只保留符合计费模式的磅单类型(装货或卸货)
-                        .filter(ticket -> Objects.equals(ticket.getType(), ticketType))
+                        // 只保留符合计费模式的磅单类型
+                        .filter(ticket -> Objects.equals(ticket.getType(),  AddressTypeEnum.SHIPMENT.getCode()))
                         .map(KwtWaybillOrderTicket::getAmount)
                         .filter(Objects::nonNull)
                         .reduce(BigDecimal.ZERO, BigDecimal::add);
 
-                log.debug("物流订单[{}]磅单量合计(type:{}): {}", logOrderId, ticketType, ticketAmount);
+                log.debug("物流订单[{}]进行中状态的实际装货量合计: {}", logOrderId, ticketAmount);
 
                 // 累加到总占用量
                 usedAmount = usedAmount.add(entrustAmount).add(ticketAmount);