Commit e59b9174 by jianan

新单跟进134

parent f9119668
......@@ -239,20 +239,25 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
queryWrapperCommission.eq("commission_period", commission.getCommissionPeriod());
queryWrapperCommission.eq("currency", commission.getCurrency());
List<Commission> commissionList = this.list(queryWrapperCommission);
// 统计已入账金额
BigDecimal amount = commissionList.stream()
.filter(commission1 -> commission1.getStatus().equals(CommissionStatusEnum.COMPARE_SUCCESS.getItemValue()))
.map(Commission::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
one.setPaidAmount(amount);
// 计算预计来佣金额
// 统计已入账金额、已入账比例
BigDecimal paidRatio = BigDecimal.ZERO;
BigDecimal paidAmount = BigDecimal.ZERO;
for (Commission commission1 : commissionList) {
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) {
BigDecimal expectedAmount = new BigDecimal(commission.getPremium())
.multiply(one.getCommissionRatio())
.multiply(one.getDefaultExchangeRate())
.divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP);
one.setExpectedAmount(expectedAmount);
.multiply(one.getCommissionRatio());
if ("USD".equals(one.getCurrency())) {
expectedAmount = expectedAmount.multiply(one.getDefaultExchangeRate());
}
one.setExpectedAmount(expectedAmount.divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP));
}
return one;
}
......@@ -524,7 +529,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
// 当前来佣比例=当前入账金额/结算汇率/保费 * 100
BigDecimal currentCommissionRatio = commission.getAmount()
.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))
;
// 预计来佣比例
......@@ -532,7 +537,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
// 预计总金额
BigDecimal expectedAmount = expected.getExpectedAmount();
// 已入账金额
BigDecimal paidAmount = commission.getAmount().add(ObjectUtils.defaultIfNull(expected.getPaidAmount(), BigDecimal.ZERO));
BigDecimal paidAmount = expected.getPaidAmount();
if (currentCommissionRatio.compareTo(expectedCommissionRatio) == 0) {
// 一致,来佣状态设置为 比对成功
......@@ -546,22 +551,17 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
}
// 设置来佣相关字段
commission.setCommissionExpectedBizId(expected.getCommissionExpectedBizId());
commission.setExpectedAmount(expectedAmount.setScale(2, RoundingMode.HALF_UP));
commission.setPaidAmount(paidAmount.setScale(2, RoundingMode.HALF_UP));
// 待入账金额 = 预计来佣总金额 - 已入账金额
commission.setPendingAmount(expectedAmount.subtract(paidAmount).setScale(2, RoundingMode.HALF_UP));
// commission.setExpectedAmount(expectedAmount.setScale(2, RoundingMode.HALF_UP));
// commission.setPaidAmount(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.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
if (commission.getPeriodPendingRatio().compareTo(BigDecimal.ZERO) == 0) {
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