no message
This commit is contained in:
parent
3ff590511d
commit
6f4cd2d217
|
|
@ -660,39 +660,25 @@ public class OrderDetailServiceImpl implements OrderDetailService {
|
||||||
// 没有罚金 自己承担手续费
|
// 没有罚金 自己承担手续费
|
||||||
divMembers.add(new DivMember(memberId, MoneyUtil.toS(odMoney), false));
|
divMembers.add(new DivMember(memberId, MoneyUtil.toS(odMoney), false));
|
||||||
// 平台金额部分抽出来部分承担手续费
|
// 平台金额部分抽出来部分承担手续费
|
||||||
// 1. 使用字符串构造精确的BigDecimal(避免double精度问题)
|
|
||||||
BigDecimal payCommissionRate = new BigDecimal("0.01");
|
BigDecimal payCommissionRate = new BigDecimal("0.01");
|
||||||
|
|
||||||
// 2. 计算佣金时强制指定精度和舍入模式(双重保障)
|
|
||||||
BigDecimal commissionAmount = odMoney.multiply(payCommissionRate)
|
BigDecimal commissionAmount = odMoney.multiply(payCommissionRate)
|
||||||
.setScale(6, RoundingMode.HALF_UP) // 第一次精度控制
|
.setScale(2, RoundingMode.UP); // 第一次精度控制
|
||||||
.setScale(6, RoundingMode.DOWN); // 第二次强制截断(关键修复点)
|
|
||||||
|
|
||||||
// 3. 对齐payMoney的精度(确保减法一致性)
|
|
||||||
payMoney = payMoney.setScale(6, RoundingMode.DOWN); // 统一截断模式
|
|
||||||
|
|
||||||
// 4. 执行减法操作Z
|
|
||||||
payMoney = payMoney.subtract(commissionAmount);
|
payMoney = payMoney.subtract(commissionAmount);
|
||||||
|
|
||||||
// 5. 更新数据(保持精度一致)
|
|
||||||
fdUpdate.setPayMoney(payMoney);
|
fdUpdate.setPayMoney(payMoney);
|
||||||
divMembers.add(new DivMember(
|
divMembers.add(new DivMember("0", MoneyUtil.toS(commissionAmount), true));
|
||||||
"0",
|
|
||||||
// 显式传递舍入模式给工具类
|
|
||||||
commissionAmount.toString(),
|
|
||||||
true
|
|
||||||
));
|
|
||||||
|
|
||||||
financialDetailService.updateFinancialDetail(fdUpdate);
|
financialDetailService.updateFinancialDetail(fdUpdate);
|
||||||
odMoney = odMoney.add(payCommissionRate);
|
odMoney = odMoney.add(payCommissionRate);
|
||||||
// 增加手续费财务子单
|
// 增加手续费财务子单
|
||||||
FinancialDetail financialDetail1 = new FinancialDetail();
|
FinancialDetail financialDetail1 = new FinancialDetail();
|
||||||
financialDetail1.setOrderDetailId(orderDetailId);
|
financialDetail1.setOrderDetailId(orderDetailId);
|
||||||
financialDetail1.setFinancialDetailType(6);
|
financialDetail1.setFinancialDetailType(2);
|
||||||
financialDetail1.setPayMoney(payCommissionRate);
|
financialDetail1.setPayMoney(commissionAmount);
|
||||||
financialDetail1.setPayTime(new Date());
|
financialDetail1.setPayTime(new Date());
|
||||||
financialDetailService.insertFinancialDetail(financialDetail1);
|
financialDetailService.insertFinancialDetail(financialDetail1);
|
||||||
logger.info("平台的抽成减去承担手续费后的金额{},平台手续费{},增加的财务子单{}", payMoney, payCommissionRate, financialDetail1);
|
logger.info("平台的抽成减去承担手续费后的金额{},平台手续费{},增加的财务子单{}", payMoney, commissionAmount, financialDetail1);
|
||||||
|
|
||||||
}
|
}
|
||||||
logger.info("子单的罚金处理后的总额{}", dtx);
|
logger.info("子单的罚金处理后的总额{}", dtx);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue