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