Commit e7f5d876 by zhangxingmin

push

parent 4181eecb
...@@ -82,18 +82,29 @@ public class ApiPremiumReconciliationServiceImpl implements ApiPremiumReconcilia ...@@ -82,18 +82,29 @@ public class ApiPremiumReconciliationServiceImpl implements ApiPremiumReconcilia
//保费对账信息 //保费对账信息
ApiPremiumReconciliationDto apiPremiumReconciliationDto = request.getApiPremiumReconciliationDto(); ApiPremiumReconciliationDto apiPremiumReconciliationDto = request.getApiPremiumReconciliationDto();
//校验-保单所有期数的保费对账是否对账完成(全部对账完成就不能新增录入对账信息了) //校验-保单所有期数的保费对账是否对账完成(全部对账完成就不能新增录入对账信息了)
Result<Boolean> result = checkReconciliationComplete(apiPremiumReconciliationDto.getPolicyNo()); // Result<Boolean> result = checkReconciliationComplete(apiPremiumReconciliationDto.getPolicyNo());
if (!result.getData()) { // if (!result.getData()) {
throw new BusinessException(result.getMsg()); // throw new BusinessException(result.getMsg());
} // }
//校验保单信息是否存在 //校验保单信息是否存在
Policy policy = policyService.queryOne(apiPremiumReconciliationDto.getPolicyNo()); Policy policy = policyService.queryOne(apiPremiumReconciliationDto.getPolicyNo());
if (Objects.isNull(policy)) { if (Objects.isNull(policy)) {
throw new BusinessException("保单信息不存在"); throw new BusinessException("保单信息不存在");
} }
PremiumReconciliation premiumReconciliation = new PremiumReconciliation();
//计算当前期数 //计算当前期数
String currentIssueNumber = calculateCurrentIssueNumber(policy.getPolicyNo(),Integer.parseInt(policy.getPaymentTerm().toString())); String currentIssueNumber = calculateCurrentIssueNumber(policy.getPolicyNo(),Integer.parseInt(policy.getPaymentTerm().toString()));
PremiumReconciliation premiumReconciliation = new PremiumReconciliation(); //根据计算的当前期数和保单号查询最新的记录,如果无记录那么新增的对账记录的待付金额为保单保费的金额,否则为最新记录的待付金额。
PremiumReconciliation newDto = iPremiumReconciliationService.queryLatestOneByPolicyNo(policy.getPolicyNo(),currentIssueNumber);
if (Objects.isNull(newDto)) {
//无记录那么新增的对账记录的待付金额为保单保费的金额
premiumReconciliation.setRemainingUnpaidCurrency(policy.getCurrency());
premiumReconciliation.setRemainingUnpaidAmount(policy.getPaymentPremium());
}else {
//否则为最新记录的待付金额。
premiumReconciliation.setRemainingUnpaidCurrency(newDto.getRemainingUnpaidCurrency());
premiumReconciliation.setRemainingUnpaidAmount(newDto.getRemainingUnpaidAmount());
}
//申请人 //申请人
premiumReconciliation.setApplicant(apiPremiumReconciliationDto.getApplicant()); premiumReconciliation.setApplicant(apiPremiumReconciliationDto.getApplicant());
//当前期数 //当前期数
...@@ -127,10 +138,14 @@ public class ApiPremiumReconciliationServiceImpl implements ApiPremiumReconcilia ...@@ -127,10 +138,14 @@ public class ApiPremiumReconciliationServiceImpl implements ApiPremiumReconcilia
//保单号查询对账记录无数据,说明第一期。有数据:1、最新的记录的待付金额大于0,当前期数为最新的记录期数。2、最新的记录的待付金额小于等于0,当前期数 = 最新的记录期数 + 1 <= 保单的供款年期 //保单号查询对账记录无数据,说明第一期。有数据:1、最新的记录的待付金额大于0,当前期数为最新的记录期数。2、最新的记录的待付金额小于等于0,当前期数 = 最新的记录期数 + 1 <= 保单的供款年期
//保单号查询对账记录无数据,说明第一期 //保单号查询对账记录无数据,说明第一期
//根据保单号查询最新对账记录 //根据保单号查询最新对账记录
PremiumReconciliation premiumReconciliation = iPremiumReconciliationService.queryLatestOneByPolicyNo(policyNo); PremiumReconciliation premiumReconciliation = iPremiumReconciliationService.queryLatestOneByPolicyNo(policyNo,"");
if (Objects.isNull(premiumReconciliation)) { if (Objects.isNull(premiumReconciliation)) {
return "1"; return "1";
} }
if (ReconciliationStatusEnum.BS_DZZ.getItemValue().equals(premiumReconciliation.getReconciliationStatus())) {
//当前保单号的记录的对账状态为对账中,请先对账完成再发起新的对账
throw new BusinessException("当前保单号的最新的对账记录的对账状态为对账中,请先设置认定结果,再发起新的对账");
}
//有数据,最新的记录的待付金额大于0,当前期数为最新的记录期数 //有数据,最新的记录的待付金额大于0,当前期数为最新的记录期数
if (premiumReconciliation.getRemainingUnpaidAmount().compareTo(BigDecimal.ZERO) > 0) { if (premiumReconciliation.getRemainingUnpaidAmount().compareTo(BigDecimal.ZERO) > 0) {
return premiumReconciliation.getCurrentIssueNumber(); return premiumReconciliation.getCurrentIssueNumber();
...@@ -414,11 +429,15 @@ public class ApiPremiumReconciliationServiceImpl implements ApiPremiumReconcilia ...@@ -414,11 +429,15 @@ public class ApiPremiumReconciliationServiceImpl implements ApiPremiumReconcilia
//获取保单供款年期 //获取保单供款年期
String paymentTerm = String.valueOf(policy.getPaymentTerm()); String paymentTerm = String.valueOf(policy.getPaymentTerm());
//根据保单号查询最新对账记录 //根据保单号查询最新对账记录
PremiumReconciliation premiumReconciliation = iPremiumReconciliationService.queryLatestOneByPolicyNo(policyNo); PremiumReconciliation premiumReconciliation = iPremiumReconciliationService.queryLatestOneByPolicyNo(policyNo,"");
if (Objects.isNull(premiumReconciliation)) { if (Objects.isNull(premiumReconciliation)) {
//无数据,说明还没有对账记录,可以对账。 //无数据,说明还没有对账记录,可以对账。
return Result.success(true); return Result.success(true);
} }
if (ReconciliationStatusEnum.BS_DZZ.getItemValue().equals(premiumReconciliation.getReconciliationStatus())) {
//当前保单号的记录的对账状态为对账中,请先对账完成再发起新的对账
return Result.success(false,"当前保单号的最新的对账记录的对账状态为对账中,请先设置认定结果,再发起新的对账");
}
//有数据 //有数据
//校验最新对账记录的待付金额是否小于等于0并且当前期数等于保单的供款年期,如果是说明对账所有期数已经全部完成不能对账了。 //校验最新对账记录的待付金额是否小于等于0并且当前期数等于保单的供款年期,如果是说明对账所有期数已经全部完成不能对账了。
if (premiumReconciliation.getRemainingUnpaidAmount().compareTo(BigDecimal.ZERO) <= 0 if (premiumReconciliation.getRemainingUnpaidAmount().compareTo(BigDecimal.ZERO) <= 0
......
...@@ -27,5 +27,5 @@ public interface IPremiumReconciliationService extends IService<PremiumReconcili ...@@ -27,5 +27,5 @@ public interface IPremiumReconciliationService extends IService<PremiumReconcili
List<PremiumReconciliation> queryList(PremiumReconciliationDto dto); List<PremiumReconciliation> queryList(PremiumReconciliationDto dto);
PremiumReconciliation queryLatestOneByPolicyNo(String policyNo); PremiumReconciliation queryLatestOneByPolicyNo(String policyNo,String currentIssueNumber);
} }
...@@ -50,14 +50,15 @@ public class PremiumReconciliationServiceImpl extends ServiceImpl<PremiumReconci ...@@ -50,14 +50,15 @@ public class PremiumReconciliationServiceImpl extends ServiceImpl<PremiumReconci
} }
/** /**
* 根据保单号查询最新创建时间的对账记录 * 根据保单号或者当前期数查询最新创建时间的对账记录
* @param policyNo * @param policyNo
* @return * @return
*/ */
@Override @Override
public PremiumReconciliation queryLatestOneByPolicyNo(String policyNo) { public PremiumReconciliation queryLatestOneByPolicyNo(String policyNo,String currentIssueNumber) {
return this.getOne(new LambdaQueryWrapper<PremiumReconciliation>() return this.getOne(new LambdaQueryWrapper<PremiumReconciliation>()
.eq(PremiumReconciliation::getPolicyNo,policyNo) .eq(StringUtils.isNotBlank(policyNo),PremiumReconciliation::getPolicyNo,policyNo)
.eq(StringUtils.isNotBlank(currentIssueNumber),PremiumReconciliation::getCurrentIssueNumber,currentIssueNumber)
.orderByDesc(PremiumReconciliation::getCreateTime) .orderByDesc(PremiumReconciliation::getCreateTime)
.last(" limit 1 ") .last(" limit 1 ")
); );
......
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