Commit e59b9174 by jianan

新单跟进134

parent f9119668
...@@ -239,20 +239,25 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -239,20 +239,25 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
queryWrapperCommission.eq("commission_period", commission.getCommissionPeriod()); queryWrapperCommission.eq("commission_period", commission.getCommissionPeriod());
queryWrapperCommission.eq("currency", commission.getCurrency()); queryWrapperCommission.eq("currency", commission.getCurrency());
List<Commission> commissionList = this.list(queryWrapperCommission); List<Commission> commissionList = this.list(queryWrapperCommission);
// 统计已入账金额 // 统计已入账金额、已入账比例
BigDecimal amount = commissionList.stream() BigDecimal paidRatio = BigDecimal.ZERO;
.filter(commission1 -> commission1.getStatus().equals(CommissionStatusEnum.COMPARE_SUCCESS.getItemValue())) BigDecimal paidAmount = BigDecimal.ZERO;
.map(Commission::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add); for (Commission commission1 : commissionList) {
one.setPaidAmount(amount); if (commission1.getStatus().equals(CommissionStatusEnum.COMPARE_SUCCESS.getItemValue())) {
paidRatio = paidRatio.add(commission1.getCurrentCommissionRatio());
// 计算预计来佣金额 paidAmount = paidAmount.add(commission1.getAmount());
one.setPaidAmount(paidAmount);
one.setPaidRatio(paidRatio);
}
}
// 计算预计来佣金额 (统一试算币种:HKD)
if (one.getExpectedAmount() == null) { if (one.getExpectedAmount() == null) {
BigDecimal expectedAmount = new BigDecimal(commission.getPremium()) BigDecimal expectedAmount = new BigDecimal(commission.getPremium())
.multiply(one.getCommissionRatio()) .multiply(one.getCommissionRatio());
.multiply(one.getDefaultExchangeRate()) if ("USD".equals(one.getCurrency())) {
.divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP); expectedAmount = expectedAmount.multiply(one.getDefaultExchangeRate());
}
one.setExpectedAmount(expectedAmount); one.setExpectedAmount(expectedAmount.divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP));
} }
return one; return one;
} }
...@@ -524,7 +529,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -524,7 +529,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
// 当前来佣比例=当前入账金额/结算汇率/保费 * 100 // 当前来佣比例=当前入账金额/结算汇率/保费 * 100
BigDecimal currentCommissionRatio = commission.getAmount() BigDecimal currentCommissionRatio = commission.getAmount()
.divide(new BigDecimal(premium), 2, RoundingMode.HALF_UP) .divide(new BigDecimal(premium), 2, RoundingMode.HALF_UP)
.divide(new BigDecimal(commission.getExchangeRate()), 2, RoundingMode.HALF_UP) .divide(new BigDecimal(commission.getExchangeRate()), 4, RoundingMode.HALF_UP)
.multiply(new BigDecimal(100)) .multiply(new BigDecimal(100))
; ;
// 预计来佣比例 // 预计来佣比例
...@@ -532,7 +537,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -532,7 +537,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
// 预计总金额 // 预计总金额
BigDecimal expectedAmount = expected.getExpectedAmount(); BigDecimal expectedAmount = expected.getExpectedAmount();
// 已入账金额 // 已入账金额
BigDecimal paidAmount = commission.getAmount().add(ObjectUtils.defaultIfNull(expected.getPaidAmount(), BigDecimal.ZERO)); BigDecimal paidAmount = expected.getPaidAmount();
if (currentCommissionRatio.compareTo(expectedCommissionRatio) == 0) { if (currentCommissionRatio.compareTo(expectedCommissionRatio) == 0) {
// 一致,来佣状态设置为 比对成功 // 一致,来佣状态设置为 比对成功
...@@ -546,22 +551,17 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -546,22 +551,17 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
} }
// 设置来佣相关字段 // 设置来佣相关字段
commission.setCommissionExpectedBizId(expected.getCommissionExpectedBizId()); commission.setCommissionExpectedBizId(expected.getCommissionExpectedBizId());
commission.setExpectedAmount(expectedAmount.setScale(2, RoundingMode.HALF_UP)); // commission.setExpectedAmount(expectedAmount.setScale(2, RoundingMode.HALF_UP));
commission.setPaidAmount(paidAmount.setScale(2, RoundingMode.HALF_UP)); // commission.setPaidAmount(paidAmount.setScale(2, RoundingMode.HALF_UP));
// 待入账金额 = 预计来佣总金额 - 已入账金额 // // 待入账金额 = 预计来佣总金额 - 已入账金额
commission.setPendingAmount(expectedAmount.subtract(paidAmount).setScale(2, RoundingMode.HALF_UP)); // commission.setPendingAmount(expectedAmount.subtract(paidAmount).setScale(2, RoundingMode.HALF_UP));
// 当前来佣比例 // 当前来佣比例
commission.setCurrentCommissionRatio(currentCommissionRatio.setScale(2, RoundingMode.HALF_UP)); commission.setCurrentCommissionRatio(currentCommissionRatio);
// 当期已入账来佣比例 = 当前来佣比例 + 已入账来佣比例 // 当期已入账来佣比例 = 当前来佣比例 + 已入账来佣比例
commission.setPeriodPaidRatio(currentCommissionRatio.add(ObjectUtils.defaultIfNull(expected.getPaidRatio(), BigDecimal.ZERO)).setScale(2, RoundingMode.HALF_UP)); commission.setPeriodPaidRatio(currentCommissionRatio.add(ObjectUtils.defaultIfNull(expected.getPaidRatio(), BigDecimal.ZERO)).setScale(2, RoundingMode.HALF_UP));
// 当期剩余来佣比例 = 预计来佣来佣比例 - 当期已入账来佣比例 // 当期剩余来佣比例 = 预计来佣来佣比例 - 当期已入账来佣比例
commission.setPeriodPendingRatio(expectedCommissionRatio.subtract(commission.getPeriodPaidRatio()).setScale(2, RoundingMode.HALF_UP)); commission.setPeriodPendingRatio(expectedCommissionRatio.subtract(commission.getPeriodPaidRatio()).setScale(2, RoundingMode.HALF_UP));
// 预计来佣的已入账金额更新为 已入账金额
expected.setPaidAmount(paidAmount.setScale(2, RoundingMode.HALF_UP));
// 已入账来佣比例 = 当前来佣比例 + 已入账来佣比例
expected.setPaidRatio(currentCommissionRatio.add(ObjectUtils.defaultIfNull(expected.getPaidRatio(), BigDecimal.ZERO)).setScale(2, RoundingMode.HALF_UP));
// 达到预计比例时,待入账金额设置为 0 // 达到预计比例时,待入账金额设置为 0
if (commission.getPeriodPendingRatio().compareTo(BigDecimal.ZERO) == 0) { if (commission.getPeriodPendingRatio().compareTo(BigDecimal.ZERO) == 0) {
commission.setPendingAmount(BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP)); commission.setPendingAmount(BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment