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