Commit 557e35d4 by jianan

Merge branch 'refs/heads/test' into dev

# Conflicts:
#	yd-csf-service/src/main/java/com/yd/csf/service/service/impl/CommissionServiceImpl.java
parents bcd2540e b81c107f
......@@ -398,13 +398,13 @@ public class ApiFortuneController {
}
/**
* 更新保单发佣(检核操作)
* 更新
*
* @param fortuneUpdateRequest
* @return
*/
@PostMapping("/update")
@Operation(summary = "更新保单发佣信息(检核操作)")
@Operation(summary = "更新")
public Result<Boolean> updateFortune(@RequestBody FortuneUpdateRequest fortuneUpdateRequest) {
if (fortuneUpdateRequest == null || fortuneUpdateRequest.getFortuneBizId() == null) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), "fortuneBizId不能为空");
......
......@@ -668,7 +668,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
//原币种
updateObj.setOriginalCurrency(policyCurrency);
//原币种金额
BigDecimal ruleAmount = expectedFortune.getRuleAmount();
BigDecimal ruleAmount = expectedFortune.getRuleAmount().setScale(4, RoundingMode.HALF_UP);
updateObj.setOriginalAmount(ruleAmount);
//原币种 -> 港币汇率
updateObj.setOriginalToHkdRate(originalToHkdRate);
......@@ -676,22 +676,22 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
updateObj.setRuleCurrency(policyCurrency);
//默认保单币种 -> 港币汇率
updateObj.setDefaultExchangeRate(originalToHkdRate);
//应发港币金额(估)(标准发佣金额 * 默认保单币种 -> 港币汇率)
//应发港币金额(估)(标准发佣金额 * 默认保单币种 -> 港币汇率);出的钱保留整数
BigDecimal hkdAmount = ruleAmount.multiply(originalToHkdRate);
updateObj.setHkdAmount(hkdAmount);
updateObj.setHkdAmount(hkdAmount.setScale(0, RoundingMode.HALF_UP));
//发放币种
updateObj.setPayoutCurrency(currency);
//发放币种金额
updateObj.setPayoutAmount(hkdAmount.multiply(hkdToPayoutRate));
//发放币种金额;出的钱保留整数
updateObj.setPayoutAmount(hkdAmount.multiply(hkdToPayoutRate).setScale(0, RoundingMode.HALF_UP));
//港币 -> 发放币种汇率
updateObj.setHkdToPayoutRate(hkdToPayoutRate);
//默认值
updateObj.setPaidRuleAmount(BigDecimal.ZERO);
updateObj.setUnpaidRuleAmount(ruleAmount);
updateObj.setUnpaidRuleAmountHkd(hkdAmount);
updateObj.setUnpaidRuleAmountHkd(hkdAmount.setScale(0, RoundingMode.HALF_UP));
updateObj.setPaidAmount(BigDecimal.ZERO);
updateObj.setPaidRatio(BigDecimal.ZERO);
updateObj.setUnpaidAmount(expectedFortune.getHkdAmount());
updateObj.setUnpaidAmount(hkdAmount.setScale(0, RoundingMode.HALF_UP));
updateObj.setUnpaidRatio(BigDecimal.valueOf(100));
}
......
......@@ -44,7 +44,7 @@ public class XxlJobConfig {
@Value("${xxl.job.executor.logretentiondays:30}")
private int logRetentionDays;
@Bean(initMethod = "start", destroyMethod = "destroy")
@Bean
public XxlJobSpringExecutor xxlJobExecutor() {
log.info(">>>>>>>>>>> xxl-job config init. adminAddresses={}, appname={}, ip={}, port={}",
adminAddresses, appname, StringUtils.defaultIfBlank(ip, "auto"), port);
......
......@@ -482,7 +482,8 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
// 查询入账币种到港币的汇率
BigDecimal exchangeRate = queryExchangeRateByFeign(currency, "HKD");
return requestAmount.multiply(exchangeRate);
// 来的钱(入账/来佣)保留2位小数
return requestAmount.multiply(exchangeRate).setScale(2, RoundingMode.HALF_UP);
}
private CommissionExpected getCommissionExpectedBizId(Commission commission) {
......@@ -811,19 +812,21 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
// 入账检核汇率 — 仅审计追溯,始终写入
fortune.setExchangeRate(exchangeRate);
// 判断 入账币种-fortune.currency 是否等于 HKD
// 判断来佣入账币种-Commission.currency 是否为 HKD
Commission matchedCommission = commissionByPolicyPeriod.get(key);
boolean isAllHkd = matchedCommission != null
&& "HKD".equalsIgnoreCase(matchedCommission.getCurrency());
if (isAllHkd) {
// 原币种 = HKD 时,exchangeRate = 保单币种 → 港币,可安全使用
// 入账币种 = HKD 时,exchangeRate = 保单币种 → 港币
fortune.setOriginalToHkdRate(exchangeRate);
BigDecimal hkdAmount = fortune.getRuleAmount().multiply(exchangeRate);
BigDecimal hkdAmount = fortune.getRuleAmount()
.multiply(exchangeRate).setScale(0, RoundingMode.HALF_UP);
fortune.setHkdAmount(hkdAmount);
fortune.setCurrentPaymentAmount(fortune.getRuleAmount());
fortune.setCurrentPaymentHkdAmount(hkdAmount);
BigDecimal payoutAmount = hkdAmount.multiply(expectedFortune.getHkdToPayoutRate());
BigDecimal payoutAmount = hkdAmount
.multiply(expectedFortune.getHkdToPayoutRate()).setScale(0, RoundingMode.HALF_UP);
fortune.setPayoutAmount(payoutAmount);
ExpectedFortune update = new ExpectedFortune();
......
......@@ -500,14 +500,16 @@ public class FortuneAccountServiceImpl extends ServiceImpl<FortuneAccountMapper,
BigDecimal paidRule = paidRuleMap.getOrDefault(ef.getExpectedFortuneBizId(), BigDecimal.ZERO);
BigDecimal unpaidRule = ef.getRuleAmount().subtract(paidRule);
// 剩余发放折合港币金额
BigDecimal unpaidRuleAmountHkd = unpaidRule.multiply(ef.getDefaultExchangeRate());
// 剩余发放折合港币金额;出的钱保留整数
BigDecimal unpaidRuleAmountHkd = unpaidRule.multiply(ef.getDefaultExchangeRate())
.setScale(0, RoundingMode.HALF_UP);
// 应发港币金额(估)
BigDecimal hkdAmount = hkdAmountMap.getOrDefault(ef.getExpectedFortuneBizId(), BigDecimal.ZERO);
BigDecimal expectedHKD = hkdAmount.add(unpaidRuleAmountHkd);
// 发放币种金额 = 港币 × 港币兑发放币种汇率
BigDecimal expectedPayout = expectedHKD.multiply(ef.getHkdToPayoutRate());
// 发放币种金额 = 港币 × 港币兑发放币种汇率;出的钱保留整数
BigDecimal expectedPayout = expectedHKD.multiply(ef.getHkdToPayoutRate())
.setScale(0, RoundingMode.HALF_UP);
// 累计出账港币金额
BigDecimal paid = paidMap.getOrDefault(ef.getExpectedFortuneBizId(), BigDecimal.ZERO);
......
......@@ -84,8 +84,20 @@
<if test="request.policyStatus != null and request.policyStatus != ''">
AND p.status = #{request.policyStatus}
</if>
<!-- 对账类型:表里 reconciliation_type 没数据,用 current_issue_number 判断 -->
<!-- SQ_BF_DZ=首期,current_issue_number=1;XQ_BF_DZ=续期,current_issue_number>1 -->
<if test="request.reconciliationType != null and request.reconciliationType != ''">
AND pr.reconciliation_type = #{request.reconciliationType}
<choose>
<when test="request.reconciliationType == 'SQ_BF_DZ'">
AND CAST(pr.current_issue_number AS UNSIGNED) = 1
</when>
<when test="request.reconciliationType == 'XQ_BF_DZ'">
AND CAST(pr.current_issue_number AS UNSIGNED) &gt; 1
</when>
<otherwise>
AND pr.reconciliation_type = #{request.reconciliationType}
</otherwise>
</choose>
</if>
<!-- 投保人查询:支持中文繁/简体和英文大小写 -->
<if test="request.policyHolderNameSc != null and request.policyHolderNameSc != ''
......@@ -121,4 +133,4 @@
</if>
ORDER BY pr.create_time DESC
</select>
</mapper>
\ No newline at end of file
</mapper>
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