|
@@ -976,24 +976,11 @@ public class WaybillOrderService {
|
|
|
continue;
|
|
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。
|
|
// 注意:具体业务逻辑中,通常“进行中”的运单会占用余量。这里根据原代码逻辑,剔除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. 计算子运单委托量合计(仅统计未取消/未完成的有效子运单)
|
|
// 4. 计算子运单委托量合计(仅统计未取消/未完成的有效子运单)
|
|
|
BigDecimal entrustAmount = waybillOrderSubtasks.stream()
|
|
BigDecimal entrustAmount = waybillOrderSubtasks.stream()
|
|
@@ -1015,13 +1002,13 @@ public class WaybillOrderService {
|
|
|
// 展开每个运单ID对应的磅单列表
|
|
// 展开每个运单ID对应的磅单列表
|
|
|
.flatMap(wOrderId -> waybillOrderIdAndTicketList.getOrDefault(wOrderId, Collections.emptyList()).stream())
|
|
.flatMap(wOrderId -> waybillOrderIdAndTicketList.getOrDefault(wOrderId, Collections.emptyList()).stream())
|
|
|
.filter(Objects::nonNull)
|
|
.filter(Objects::nonNull)
|
|
|
- // 只保留符合计费模式的磅单类型(装货或卸货)
|
|
|
|
|
- .filter(ticket -> Objects.equals(ticket.getType(), ticketType))
|
|
|
|
|
|
|
+ // 只保留符合计费模式的磅单类型
|
|
|
|
|
+ .filter(ticket -> Objects.equals(ticket.getType(), AddressTypeEnum.SHIPMENT.getCode()))
|
|
|
.map(KwtWaybillOrderTicket::getAmount)
|
|
.map(KwtWaybillOrderTicket::getAmount)
|
|
|
.filter(Objects::nonNull)
|
|
.filter(Objects::nonNull)
|
|
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
|
|
|
|
- log.debug("物流订单[{}]磅单量合计(type:{}): {}", logOrderId, ticketType, ticketAmount);
|
|
|
|
|
|
|
+ log.debug("物流订单[{}]进行中状态的实际装货量合计: {}", logOrderId, ticketAmount);
|
|
|
|
|
|
|
|
// 累加到总占用量
|
|
// 累加到总占用量
|
|
|
usedAmount = usedAmount.add(entrustAmount).add(ticketAmount);
|
|
usedAmount = usedAmount.add(entrustAmount).add(ticketAmount);
|