|
@@ -2872,6 +2872,7 @@ public class KwoTradeOrderService {
|
|
|
}
|
|
}
|
|
|
order.setApplyChargeStrategy(feeFreezeResult.getApplyChargeStrategy() == null ? Global.NO : feeFreezeResult.getApplyChargeStrategy());
|
|
order.setApplyChargeStrategy(feeFreezeResult.getApplyChargeStrategy() == null ? Global.NO : feeFreezeResult.getApplyChargeStrategy());
|
|
|
order.setChargeStrategyId(feeFreezeResult.getChargeStrategyId());
|
|
order.setChargeStrategyId(feeFreezeResult.getChargeStrategyId());
|
|
|
|
|
+ order.setChargeStrategyType(feeFreezeResult.getChargeStrategyType());
|
|
|
order.setChargeStrategyDesc(feeFreezeResult.getChargeStrategyDesc());
|
|
order.setChargeStrategyDesc(feeFreezeResult.getChargeStrategyDesc());
|
|
|
order.setChargeStrategyAmount(feeFreezeResult.getChargeStrategyAmount());
|
|
order.setChargeStrategyAmount(feeFreezeResult.getChargeStrategyAmount());
|
|
|
}
|
|
}
|
|
@@ -3582,7 +3583,7 @@ public class KwoTradeOrderService {
|
|
|
* 物流订单完结后统一处理服务费结算。
|
|
* 物流订单完结后统一处理服务费结算。
|
|
|
* <p>
|
|
* <p>
|
|
|
* 所有调用 TransportRemoteService.logisticOrderFinish 的场景,均应调用此方法。
|
|
* 所有调用 TransportRemoteService.logisticOrderFinish 的场景,均应调用此方法。
|
|
|
- * 方法内部重新查询订单和运单状态,确保仅在所有运单完成且订单应用收费策略时,
|
|
|
|
|
|
|
+ * 方法内部重新查询订单和运单状态,确保仅在所有运单完成且订单应用按吨收费策略时,
|
|
|
* 执行服务费解冻、扣减并记录钱包变动明细。
|
|
* 执行服务费解冻、扣减并记录钱包变动明细。
|
|
|
*
|
|
*
|
|
|
* @param tradeOrderId 贸易订单ID
|
|
* @param tradeOrderId 贸易订单ID
|
|
@@ -3617,6 +3618,18 @@ public class KwoTradeOrderService {
|
|
|
settleChargeStrategyIfApplied(order, logisticOrderList);
|
|
settleChargeStrategyIfApplied(order, logisticOrderList);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 判断订单是否应用按吨收费策略。
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param order 贸易订单
|
|
|
|
|
+ * @return true-已应用按吨收费策略
|
|
|
|
|
+ */
|
|
|
|
|
+ static boolean isChargeByTonStrategyApplied(KwoTradeOrder order) {
|
|
|
|
|
+ return order != null
|
|
|
|
|
+ && Objects.equals(order.getApplyChargeStrategy(), Global.YES)
|
|
|
|
|
+ && Objects.equals(order.getChargeStrategyType(), ParkingChangeStrategyEnum.BY_TON.getCode());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 判断贸易订单下是否存在运单且所有运单均已完成。
|
|
* 判断贸易订单下是否存在运单且所有运单均已完成。
|
|
|
*
|
|
*
|
|
@@ -3633,7 +3646,7 @@ public class KwoTradeOrderService {
|
|
|
/**
|
|
/**
|
|
|
* 贸易订单完结时,处理收费策略关联的服务费结算
|
|
* 贸易订单完结时,处理收费策略关联的服务费结算
|
|
|
* <p>
|
|
* <p>
|
|
|
- * 触发条件:所有运单完成且订单 applyChargeStrategy=1(下单时已冻结服务费)。
|
|
|
|
|
|
|
+ * 触发条件:所有运单完成且订单 applyChargeStrategy=1、chargeStrategyType=按吨计费(下单时已冻结服务费)。
|
|
|
* 运输净重量:汇总已完成运单子任务的装/卸货净重(与看板运单完成量统计口径一致)。
|
|
* 运输净重量:汇总已完成运单子任务的装/卸货净重(与看板运单完成量统计口径一致)。
|
|
|
* 扣减逻辑:运输净重量 × 订单下单时快照的收费策略单价(无快照时回退当前策略)
|
|
* 扣减逻辑:运输净重量 × 订单下单时快照的收费策略单价(无快照时回退当前策略)
|
|
|
*
|
|
*
|
|
@@ -3646,8 +3659,13 @@ public class KwoTradeOrderService {
|
|
|
order.getId(), order.getTOrderNo(), order.getApplyChargeStrategy());
|
|
order.getId(), order.getTOrderNo(), order.getApplyChargeStrategy());
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
- log.info("贸易订单已应用收费策略,开始准备服务费结算,订单ID:{}, 订单号:{}, 收费策略ID:{}, 计费方式:{}",
|
|
|
|
|
- order.getId(), order.getTOrderNo(), order.getChargeStrategyId(), order.getChargeType());
|
|
|
|
|
|
|
+ if (!isChargeByTonStrategyApplied(order)) {
|
|
|
|
|
+ log.info("贸易订单未应用按吨收费策略,跳过服务费解冻及扣减,订单ID:{}, 订单号:{}, 收费策略类型:{}",
|
|
|
|
|
+ order.getId(), order.getTOrderNo(), order.getChargeStrategyType());
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ log.info("贸易订单已应用按吨收费策略,开始准备服务费结算,订单ID:{}, 订单号:{}, 收费策略ID:{}, 收费策略类型:{}, 计费方式:{}",
|
|
|
|
|
+ order.getId(), order.getTOrderNo(), order.getChargeStrategyId(), order.getChargeStrategyType(), order.getChargeType());
|
|
|
|
|
|
|
|
List<KwoTradeOrderUnit> orderUnits = kwoTradeOrderUnitService.getByOrderId(order.getId());
|
|
List<KwoTradeOrderUnit> orderUnits = kwoTradeOrderUnitService.getByOrderId(order.getId());
|
|
|
if (CollUtil.isEmpty(orderUnits)) {
|
|
if (CollUtil.isEmpty(orderUnits)) {
|