Commit 74b63aac by zhangxingmin

Merge remote-tracking branch 'origin/dev' into prod

parents be6939b6 ae0022b3
...@@ -682,7 +682,7 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte ...@@ -682,7 +682,7 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
commissionExpected.setCommissionRatio(item.getCommissionRate()); commissionExpected.setCommissionRatio(item.getCommissionRate());
commissionExpected.setAmount(null); commissionExpected.setAmount(null);
commissionExpected.setCurrency(item.getCurrency()); commissionExpected.setCurrency(item.getCurrency());
commissionExpected.setCommissionDate(calculateCommissionDate(i, coolingOffEndDate)); commissionExpected.setCommissionDate(calculateCommissionDate(i, effectiveDate));
commissionExpected.setStatus(CommissionExpectedStatusEnum.PENDING.getItemValue()); commissionExpected.setStatus(CommissionExpectedStatusEnum.PENDING.getItemValue());
commissionExpected.setStatusDesc(null); commissionExpected.setStatusDesc(null);
commissionExpected.setDefaultExchangeRate(queryExchangeRateByFeign(policy.getCurrency(), item.getCurrency())); commissionExpected.setDefaultExchangeRate(queryExchangeRateByFeign(policy.getCurrency(), item.getCurrency()));
......
...@@ -284,6 +284,16 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -284,6 +284,16 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
commission.setReconciliationCompany(policy.getReconciliationCompany()); commission.setReconciliationCompany(policy.getReconciliationCompany());
commission.setReconciliationCompanyCode(policy.getReconciliationCompanyCode()); commission.setReconciliationCompanyCode(policy.getReconciliationCompanyCode());
commission.setReconciliationCompanyBizId(policy.getReconciliationCompanyBizId()); commission.setReconciliationCompanyBizId(policy.getReconciliationCompanyBizId());
// 本次入账比例
commission.setCurrentCommissionRatio(
calculateCurrentCommissionRatio(
commission.getPremium(),
commission.getAmount(),
commission.getCurrency(),
commission.getExchangeRate(),
commission.getPolicyCurrency()
)
);
} }
// 匹配预计来佣记录 // 匹配预计来佣记录
CommissionExpected expected = findExpectedFromList(commission, commissionExpectedList); CommissionExpected expected = findExpectedFromList(commission, commissionExpectedList);
...@@ -291,9 +301,6 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -291,9 +301,6 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
commission.setCommissionExpectedBizId(expected.getCommissionExpectedBizId()); commission.setCommissionExpectedBizId(expected.getCommissionExpectedBizId());
commission.setReceivableNo(expected.getReceivableNo()); commission.setReceivableNo(expected.getReceivableNo());
commission.setTotalPeriod(expected.getTotalPeriod()); commission.setTotalPeriod(expected.getTotalPeriod());
// 本次入账比例
commission.setCurrentCommissionRatio(calculateCurrentCommissionRatio(
commission.getPremium(), commission.getAmount(), commission.getCurrency(), commission.getExchangeRate(), expected));
} else { } else {
commission.setRemark("未查询到预计来佣记录"); commission.setRemark("未查询到预计来佣记录");
commission.setStatus(CommissionStatusEnum.MATCH_FAILED.getItemValue()); commission.setStatus(CommissionStatusEnum.MATCH_FAILED.getItemValue());
...@@ -403,7 +410,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -403,7 +410,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
requestAmount, requestAmount,
commissionUpdateRequest.getCurrency(), commissionUpdateRequest.getCurrency(),
commissionUpdateRequest.getExchangeRate(), commissionUpdateRequest.getExchangeRate(),
commissionExpected); commission.getPolicyCurrency());
commission.setCurrentCommissionRatio(currentCommissionRatio); commission.setCurrentCommissionRatio(currentCommissionRatio);
} }
} }
...@@ -754,7 +761,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -754,7 +761,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
return this.getOne(new QueryWrapper<Commission>().eq("commission_biz_id", commissionBizId)); return this.getOne(new QueryWrapper<Commission>().eq("commission_biz_id", commissionBizId));
} }
public BigDecimal calculateCurrentCommissionRatio(String premium, BigDecimal amount, String currentCurrency, BigDecimal exchangeRate, CommissionExpected commissionExpected) { public BigDecimal calculateCurrentCommissionRatio(String premium, BigDecimal amount, String currentCurrency, BigDecimal exchangeRate, String policyCurrency) {
if (ObjectUtils.isEmpty(premium)) { if (ObjectUtils.isEmpty(premium)) {
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "保单保费不能为空"); throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "保单保费不能为空");
} }
...@@ -764,11 +771,9 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -764,11 +771,9 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
if (ObjectUtils.isEmpty(exchangeRate)) { if (ObjectUtils.isEmpty(exchangeRate)) {
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "当前结算汇率不能为空"); throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "当前结算汇率不能为空");
} }
// 获取保单币种
String currency = commissionExpected.getPolicyCurrency();
// 如果当前入账币种等于保单币种,直接计算来佣比例 // 如果当前入账币种等于保单币种,直接计算来佣比例
if (StringUtils.equalsIgnoreCase(currentCurrency, currency)) { if (StringUtils.equalsIgnoreCase(currentCurrency, policyCurrency)) {
return amount.divide(new BigDecimal(premium), 4, RoundingMode.HALF_UP) return amount.divide(new BigDecimal(premium), 4, RoundingMode.HALF_UP)
.multiply(new BigDecimal(100)); .multiply(new BigDecimal(100));
} else { } else {
...@@ -858,6 +863,14 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -858,6 +863,14 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
commission.setInsuranceCompanyBizId(policy.getInsuranceCompanyBizId()); commission.setInsuranceCompanyBizId(policy.getInsuranceCompanyBizId());
commission.setPremium(Convert.toStr(policy.getPaymentPremium())); commission.setPremium(Convert.toStr(policy.getPaymentPremium()));
commission.setPolicyCurrency(policy.getCurrency()); commission.setPolicyCurrency(policy.getCurrency());
// 本次入账比例
commission.setCurrentCommissionRatio(calculateCurrentCommissionRatio(
commission.getPremium(),
commission.getAmount(),
commission.getCurrency(),
commission.getExchangeRate(),
commission.getPolicyCurrency())
);
} else { } else {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "保单不存在, policyNo: " + request.getPolicyNo()); throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "保单不存在, policyNo: " + request.getPolicyNo());
} }
...@@ -867,10 +880,10 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -867,10 +880,10 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
} }
// 关联预计来佣信息 // 关联预计来佣信息
CommissionExpected expected = getCommissionExpectedBizIdBatch(request, policyNoSet, commission); CommissionExpected expected = getCommissionExpectedBizIdBatch(request, policyNoSet, commission);
if (expected != null && "R".equals(expected.getCommissionBizType())) { if (expected != null) {
// 本次入账比例 commission.setCommissionExpectedBizId(expected.getCommissionExpectedBizId());
commission.setCurrentCommissionRatio(calculateCurrentCommissionRatio( commission.setReceivableNo(expected.getReceivableNo());
commission.getPremium(), commission.getAmount(), commission.getCurrency(), commission.getExchangeRate(), expected)); commission.setTotalPeriod(expected.getTotalPeriod());
} }
commissionList.add(commission); commissionList.add(commission);
...@@ -991,7 +1004,6 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -991,7 +1004,6 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
BeanUtils.copyProperties(commission, expected, "id", "remark"); BeanUtils.copyProperties(commission, expected, "id", "remark");
expected.setCommissionExpectedBizId(RandomStringGenerator.generateBizId16("commission_expected")); expected.setCommissionExpectedBizId(RandomStringGenerator.generateBizId16("commission_expected"));
expected.setPremium(new BigDecimal(commission.getPremium())); expected.setPremium(new BigDecimal(commission.getPremium()));
expected.setCommissionRatio(commission.getCurrentCommissionRatio());
// 生成应收单编号 // 生成应收单编号
expected.setReceivableNo(receivableService.generateReceivableNo( expected.setReceivableNo(receivableService.generateReceivableNo(
...@@ -999,6 +1011,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -999,6 +1011,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
commission.getReconciliationCompanyCode(), commission.getReconciliationCompanyCode(),
commission.getReconciliationCompany())); commission.getReconciliationCompany()));
// 设置预计入账金额、已来佣金额、待入账金额 // 设置预计入账金额、已来佣金额、待入账金额
expected.setCommissionRatio(commission.getCurrentCommissionRatio());
expected.setExpectedAmount(commission.getHkdAmount()); expected.setExpectedAmount(commission.getHkdAmount());
expected.setPaidAmount(commission.getHkdAmount()); expected.setPaidAmount(commission.getHkdAmount());
expected.setPaidRatio(commission.getCurrentCommissionRatio()); expected.setPaidRatio(commission.getCurrentCommissionRatio());
......
...@@ -222,10 +222,10 @@ public class FortuneVO implements Serializable { ...@@ -222,10 +222,10 @@ public class FortuneVO implements Serializable {
private String status; private String status;
/** /**
* 出账日(估) * 出账日(估) / 预计发佣月
*/ */
@Schema(description = "出账日(估)") @Schema(description = "出账日(估) / 预计发佣月")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8")
private LocalDate payoutDate; private LocalDate payoutDate;
/** /**
...@@ -330,13 +330,15 @@ public class FortuneVO implements Serializable { ...@@ -330,13 +330,15 @@ public class FortuneVO implements Serializable {
FortuneVO fortuneVO = new FortuneVO(); FortuneVO fortuneVO = new FortuneVO();
BeanUtils.copyProperties(fortune, fortuneVO); BeanUtils.copyProperties(fortune, fortuneVO);
// 计算已出账金额和待出账金额 // 计算已出账金额和待出账金额
fortuneVO.setFortunePaidAmount(fortune.getCurrentPaymentHkdAmount()); BigDecimal currentPaymentHkdAmount = "2".equals(fortune.getStatus()) ? fortune.getCurrentPaymentHkdAmount() : BigDecimal.ZERO;
fortuneVO.setFortuneUnpaidAmount(NumberUtil.sub(fortune.getHkdAmount(), fortune.getCurrentPaymentHkdAmount())); fortuneVO.setFortunePaidAmount(currentPaymentHkdAmount);
// 计算待出账比例 fortuneVO.setFortuneUnpaidAmount(NumberUtil.sub(fortune.getHkdAmount(), currentPaymentHkdAmount));
// 计算已出账比例
BigDecimal currentPaymentRatio = NumberUtil BigDecimal currentPaymentRatio = NumberUtil
.div(fortune.getCurrentPaymentHkdAmount(), fortune.getHkdAmount(), 4) .div(currentPaymentHkdAmount, fortune.getHkdAmount(), 4)
.multiply(BigDecimal.valueOf(100)); .multiply(BigDecimal.valueOf(100));
fortuneVO.setCurrentPaymentRatio(currentPaymentRatio); fortuneVO.setCurrentPaymentRatio(currentPaymentRatio);
// 计算剩余出账比例
fortuneVO.setFortuneUnpaidRatio(BigDecimal.valueOf(100).subtract(currentPaymentRatio)); fortuneVO.setFortuneUnpaidRatio(BigDecimal.valueOf(100).subtract(currentPaymentRatio));
fortuneVO.setCurrency(CurrencyEnum.toLabel(fortune.getCurrency())); fortuneVO.setCurrency(CurrencyEnum.toLabel(fortune.getCurrency()));
......
...@@ -51,10 +51,10 @@ public class PayableReportVO { ...@@ -51,10 +51,10 @@ public class PayableReportVO {
private Integer fortuneTotalPeriod; private Integer fortuneTotalPeriod;
/** /**
* 出账日 * 出账日 / 预计发佣月
*/ */
@Schema(description = "出账日 (保单日+2个月)") @Schema(description = "出账日 (保单生效日+2个月) / 预计发佣月")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8")
private LocalDate payoutDate; private LocalDate payoutDate;
/** /**
......
...@@ -55,10 +55,10 @@ public class ReceivableReportVO { ...@@ -55,10 +55,10 @@ public class ReceivableReportVO {
private Integer totalPeriod; private Integer totalPeriod;
/** /**
* 入账日(估) * 入账日(估)/ 预计来佣月
*/ */
@Schema(description = "入账日(估)(保单生效日+2个月+(期数-1)年)") @Schema(description = "入账日(估)(保单生效日+1个月)")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8")
private LocalDate commissionDate; private LocalDate commissionDate;
/** /**
......
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