Commit 6e3a580a by jianan

根据入账检核汇率更新应付1

parent 06dc7e2e
...@@ -779,19 +779,24 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -779,19 +779,24 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
String key = buildPolicyPeriodKey(expectedFortune.getPolicyNo(), expectedFortune.getFortunePeriod()); String key = buildPolicyPeriodKey(expectedFortune.getPolicyNo(), expectedFortune.getFortunePeriod());
BigDecimal exchangeRate = exchangeRateMap.get(key); BigDecimal exchangeRate = exchangeRateMap.get(key);
if (exchangeRate != null) { if (exchangeRate != null) {
// 入账检核汇率 — 仅审计追溯,始终写入
fortune.setExchangeRate(exchangeRate); fortune.setExchangeRate(exchangeRate);
// 判断 commission.currency 是否为 HKD
Commission matchedCommission = commissionByPolicyPeriod.get(key);
boolean isCommissionHkd = matchedCommission != null
&& "HKD".equalsIgnoreCase(matchedCommission.getCurrency());
if (isCommissionHkd) {
// 入账币种=HKD 时,exchangeRate = 保单币种 → 港币,可安全使用
fortune.setOriginalToHkdRate(exchangeRate); fortune.setOriginalToHkdRate(exchangeRate);
// 重新计算港币金额
BigDecimal hkdAmount = fortune.getRuleAmount().multiply(exchangeRate); BigDecimal hkdAmount = fortune.getRuleAmount().multiply(exchangeRate);
fortune.setHkdAmount(hkdAmount); fortune.setHkdAmount(hkdAmount);
fortune.setCurrentPaymentAmount(fortune.getRuleAmount()); fortune.setCurrentPaymentAmount(fortune.getRuleAmount());
fortune.setCurrentPaymentHkdAmount(hkdAmount); fortune.setCurrentPaymentHkdAmount(hkdAmount);
// 重新计算发放币种金额
BigDecimal payoutAmount = hkdAmount.multiply(expectedFortune.getHkdToPayoutRate()); BigDecimal payoutAmount = hkdAmount.multiply(expectedFortune.getHkdToPayoutRate());
fortune.setPayoutAmount(payoutAmount); fortune.setPayoutAmount(payoutAmount);
// 更新预计发佣记录的港币金额
ExpectedFortune update = new ExpectedFortune(); ExpectedFortune update = new ExpectedFortune();
update.setId(expectedFortune.getId()); update.setId(expectedFortune.getId());
update.setDefaultExchangeRate(exchangeRate); update.setDefaultExchangeRate(exchangeRate);
...@@ -802,6 +807,12 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -802,6 +807,12 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
update.setPayoutAmount(payoutAmount); update.setPayoutAmount(payoutAmount);
updatedExpectedFortuneList.add(update); updatedExpectedFortuneList.add(update);
} else { } else {
// 入账币种 ≠ HKD,无法推导保单币种 → 港币,用 ExpectedFortune 已有默认值
fortune.setExchangeRate(expectedFortune.getDefaultExchangeRate());
fortune.setCurrentPaymentAmount(expectedFortune.getOriginalAmount());
fortune.setCurrentPaymentHkdAmount(expectedFortune.getHkdAmount());
}
} else {
fortune.setExchangeRate(expectedFortune.getDefaultExchangeRate()); fortune.setExchangeRate(expectedFortune.getDefaultExchangeRate());
fortune.setCurrentPaymentAmount(expectedFortune.getOriginalAmount()); fortune.setCurrentPaymentAmount(expectedFortune.getOriginalAmount());
fortune.setCurrentPaymentHkdAmount(expectedFortune.getHkdAmount()); fortune.setCurrentPaymentHkdAmount(expectedFortune.getHkdAmount());
......
...@@ -505,6 +505,8 @@ public class FortuneAccountServiceImpl extends ServiceImpl<FortuneAccountMapper, ...@@ -505,6 +505,8 @@ public class FortuneAccountServiceImpl extends ServiceImpl<FortuneAccountMapper,
// 应发港币金额(估) // 应发港币金额(估)
BigDecimal hkdAmount = hkdAmountMap.getOrDefault(ef.getExpectedFortuneBizId(), BigDecimal.ZERO); BigDecimal hkdAmount = hkdAmountMap.getOrDefault(ef.getExpectedFortuneBizId(), BigDecimal.ZERO);
BigDecimal expectedHKD = hkdAmount.add(unpaidRuleAmountHkd); BigDecimal expectedHKD = hkdAmount.add(unpaidRuleAmountHkd);
// 发放币种金额 = 港币 × 港币兑发放币种汇率
BigDecimal expectedPayout = expectedHKD.multiply(ef.getHkdToPayoutRate());
// 累计出账港币金额 // 累计出账港币金额
BigDecimal paid = paidMap.getOrDefault(ef.getExpectedFortuneBizId(), BigDecimal.ZERO); BigDecimal paid = paidMap.getOrDefault(ef.getExpectedFortuneBizId(), BigDecimal.ZERO);
...@@ -527,7 +529,7 @@ public class FortuneAccountServiceImpl extends ServiceImpl<FortuneAccountMapper, ...@@ -527,7 +529,7 @@ public class FortuneAccountServiceImpl extends ServiceImpl<FortuneAccountMapper,
.set(ExpectedFortune::getUnpaidRuleAmount, unpaidRule) .set(ExpectedFortune::getUnpaidRuleAmount, unpaidRule)
.set(ExpectedFortune::getUnpaidRuleAmountHkd, unpaidRuleAmountHkd) .set(ExpectedFortune::getUnpaidRuleAmountHkd, unpaidRuleAmountHkd)
.set(ExpectedFortune::getHkdAmount, expectedHKD) .set(ExpectedFortune::getHkdAmount, expectedHKD)
.set(ExpectedFortune::getPayoutAmount, expectedHKD) .set(ExpectedFortune::getPayoutAmount, expectedPayout)
.set(ExpectedFortune::getPaidAmount, paid) .set(ExpectedFortune::getPaidAmount, paid)
.set(ExpectedFortune::getUnpaidAmount, unpaidRuleAmountHkd) .set(ExpectedFortune::getUnpaidAmount, unpaidRuleAmountHkd)
.set(ExpectedFortune::getPaidRatio, totalPaidRatio) .set(ExpectedFortune::getPaidRatio, totalPaidRatio)
......
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