|
|
@@ -2259,6 +2259,7 @@ public class KwoTradeOrderService {
|
|
|
log.info("贸易订单下单应用收费策略,orderNo:{}, feeFreezeParam:{}", order.getTOrderNo(), JSON.toJSONString(feeFreezeParam));
|
|
|
ParkingWalletFeeFreezeResult feeFreezeResult = resolveParkingWalletFeeFeignResult(
|
|
|
parkingWalletFeeFeignService.applyChargeStrategyFreeze(feeFreezeParam), "服务费冻结");
|
|
|
+ log.info("服务费冻结结果,orderNo:{}, feeFreezeResult:{}", order.getTOrderNo(), com.alibaba.fastjson2.JSON.toJSONString(feeFreezeResult));
|
|
|
fillChargeStrategyInfo(order, feeFreezeResult);
|
|
|
log.info("贸易订单收费策略处理完成,orderNo:{}, feeFreezeResult:{}", order.getTOrderNo(), JSON.toJSONString(feeFreezeResult));
|
|
|
|
|
|
@@ -2475,6 +2476,7 @@ public class KwoTradeOrderService {
|
|
|
}
|
|
|
order.setApplyChargeStrategy(feeFreezeResult.getApplyChargeStrategy() == null ? Global.NO : feeFreezeResult.getApplyChargeStrategy());
|
|
|
order.setChargeStrategyId(feeFreezeResult.getChargeStrategyId());
|
|
|
+ order.setChargeStrategyType(feeFreezeResult.getChargeStrategyType());
|
|
|
order.setChargeStrategyDesc(feeFreezeResult.getChargeStrategyDesc());
|
|
|
order.setChargeStrategyAmount(feeFreezeResult.getChargeStrategyAmount());
|
|
|
}
|
|
|
@@ -2648,17 +2650,21 @@ public class KwoTradeOrderService {
|
|
|
|
|
|
if (Objects.equals(tradeOrderAuditParam.getStatus(), 2)) {
|
|
|
BigDecimal serviceFeeBalance = null;
|
|
|
- // 审核拒绝:若应用了收费策略,解冻并返还采购方服务费余额
|
|
|
- if (Objects.equals(kwoTradeOrder.getApplyChargeStrategy(), Global.YES)) {
|
|
|
+ // 审核拒绝:若应用了按吨收费策略,解冻并返还采购方服务费余额
|
|
|
+ if (isChargeByTonStrategyApplied(kwoTradeOrder)) {
|
|
|
ParkingWalletFeeFreezeParam serviceFeeUnfreezeParam = new ParkingWalletFeeFreezeParam();
|
|
|
serviceFeeUnfreezeParam.setOrderNo(kwoTradeOrder.getTOrderNo());
|
|
|
serviceFeeUnfreezeParam.setProEntId(unitMap.get(String.valueOf(1)).getEntId());
|
|
|
serviceFeeUnfreezeParam.setSupEntId(551429255406292993L);
|
|
|
serviceFeeUnfreezeParam.setOperatorId(LoginUserHolder.getUserId());
|
|
|
- log.info("贸易订单审核拒绝解冻服务费,orderNo:{}, param:{}",
|
|
|
- kwoTradeOrder.getTOrderNo(), JSON.toJSONString(serviceFeeUnfreezeParam));
|
|
|
+ log.info("贸易订单审核拒绝解冻服务费,orderNo:{}, chargeStrategyType:{}, param:{}",
|
|
|
+ kwoTradeOrder.getTOrderNo(), kwoTradeOrder.getChargeStrategyType(),
|
|
|
+ com.alibaba.fastjson2.JSON.toJSONString(serviceFeeUnfreezeParam));
|
|
|
ParkingWalletFeeFreezeResult unfreezeResult = resolveParkingWalletFeeFeignResult(
|
|
|
parkingWalletFeeFeignService.unfreezeChargeStrategy(serviceFeeUnfreezeParam), "服务费解冻");
|
|
|
+ log.info("贸易订单审核拒绝,解冻服务费成功,orderNo:{}, chargeStrategyType:{}, result:{}",
|
|
|
+ kwoTradeOrder.getTOrderNo(), kwoTradeOrder.getChargeStrategyType(),
|
|
|
+ com.alibaba.fastjson2.JSON.toJSONString(unfreezeResult));
|
|
|
serviceFeeBalance = unfreezeResult.getServiceFeeBalance();
|
|
|
}
|
|
|
|
|
|
@@ -3149,6 +3155,18 @@ public class KwoTradeOrderService {
|
|
|
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());
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 判断贸易订单下是否存在运单且所有运单均已完成。
|
|
|
*
|
|
|
@@ -3165,7 +3183,7 @@ public class KwoTradeOrderService {
|
|
|
/**
|
|
|
* 贸易订单完结时,处理收费策略关联的服务费结算
|
|
|
* <p>
|
|
|
- * 触发条件:所有运单完成且订单 applyChargeStrategy=1(下单时已冻结服务费)。
|
|
|
+ * 触发条件:所有运单完成且订单 applyChargeStrategy=1、chargeStrategyType=按吨计费(下单时已冻结服务费)。
|
|
|
* 运输净重量:汇总已完成运单子任务的装/卸货净重(与看板运单完成量统计口径一致)。
|
|
|
* 扣减逻辑:运输净重量 × 订单下单时快照的收费策略单价(无快照时回退当前策略)
|
|
|
*
|
|
|
@@ -3178,8 +3196,14 @@ public class KwoTradeOrderService {
|
|
|
order.getId(), order.getTOrderNo(), order.getApplyChargeStrategy());
|
|
|
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());
|
|
|
if (CollUtil.isEmpty(orderUnits)) {
|