Commit e7f5d876 by zhangxingmin

push

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