Commit e888a128 authored by fangxinjiang's avatar fangxinjiang

见费出单逻辑-fxj

parent d0a94b0e
...@@ -439,6 +439,12 @@ public class TInsuranceDetail extends BaseEntity { ...@@ -439,6 +439,12 @@ public class TInsuranceDetail extends BaseEntity {
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd")
private LocalDate preHandleTime; private LocalDate preHandleTime;
/**
* 差额settleId
*/
@TableField(exist = false)
@Schema(description = "差额settleId")
private String balanceId;
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
} }
\ No newline at end of file
...@@ -196,4 +196,10 @@ public class EkpInteractiveParam implements Serializable { ...@@ -196,4 +196,10 @@ public class EkpInteractiveParam implements Serializable {
*/ */
@Schema(description = "是否见费出单") @Schema(description = "是否见费出单")
private String isJfcd; private String isJfcd;
/**
* 差额settleId
*/
@Schema(description = "差额settleId")
private String balanceId;
} }
...@@ -2038,59 +2038,89 @@ public class TInsuranceDetailServiceImpl extends ServiceImpl<TInsuranceDetailMap ...@@ -2038,59 +2038,89 @@ public class TInsuranceDetailServiceImpl extends ServiceImpl<TInsuranceDetailMap
} }
//根据结算类型判断是否需要计算预估保费 //根据结算类型判断是否需要计算预估保费
//预估 (是否见费出单为的不用生成预估,因为之前已经生成了) //预估 (是否见费出单为的不用生成预估,因为之前已经生成了)
if (detail.getSettleType() == CommonConstants.ZERO_INT && CommonConstants.ONE_STRING.equals(detail.getIsJfcd())){ if (detail.getSettleType() == CommonConstants.ZERO_INT ){
if (CommonConstants.ONE_INT == detail.getBillingType()){ if (CommonConstants.ONE_STRING.equals(detail.getIsJfcd())){
// 按月查费率 if (CommonConstants.ONE_INT == detail.getBillingType()){
// 预估保费 = 费率 * 购买标准 + 5元 // 按月查费率
BigDecimal estimatePremium = new BigDecimal(detail.getBuyStandard()) // 预估保费 = 费率 * 购买标准 + 5元
.multiply(detail.getRate()) BigDecimal estimatePremium = new BigDecimal(detail.getBuyStandard())
.add(BigDecimal.valueOf(5.00)) .multiply(detail.getRate())
.setScale(2,BigDecimal.ROUND_HALF_UP); .add(BigDecimal.valueOf(5.00))
detail.setEstimatePremium(estimatePremium); .setScale(2,BigDecimal.ROUND_HALF_UP);
if (detail.getBuyType() == CommonConstants.THREE_INT){ detail.setEstimatePremium(estimatePremium);
detail.setPolicyEffect(LocalDate.now().plusDays(CommonConstants.ONE_INT)); if (detail.getBuyType() == CommonConstants.THREE_INT){
} detail.setPolicyEffect(LocalDate.now().plusDays(CommonConstants.ONE_INT));
//记录状态均置为「已投保」 }
detail.setBuyHandleStatus(CommonConstants.THREE_INT); //记录状态均置为「已投保」
detail.setSignFlag(CommonConstants.ONE_INT); detail.setBuyHandleStatus(CommonConstants.THREE_INT);
//记录的有效状态,置为「有效」 detail.setSignFlag(CommonConstants.ONE_INT);
detail.setIsEffect(CommonConstants.ZERO_INT); //记录的有效状态,置为「有效」
detail.setIsOverdue(CommonConstants.ZERO_INT); detail.setIsEffect(CommonConstants.ZERO_INT);
detail.setIsUse(CommonConstants.ZERO_INT); detail.setIsOverdue(CommonConstants.ZERO_INT);
detail.setUpdateTime(LocalDateTime.now()); detail.setIsUse(CommonConstants.ZERO_INT);
detail.setUpdateBy(user.getId()); detail.setUpdateTime(LocalDateTime.now());
//保费存储 detail.setUpdateBy(user.getId());
TInsuranceSettle settle = new TInsuranceSettle(); //保费存储
settle.setInsDetailId(detail.getId()); TInsuranceSettle settle = new TInsuranceSettle();
settle.setSettleType(detail.getSettleType()); settle.setInsDetailId(detail.getId());
settle.setSettleHandleStatus(CommonConstants.ONE_STRING); settle.setSettleType(detail.getSettleType());
settle.setCreateTime(LocalDateTime.now()); settle.setSettleHandleStatus(CommonConstants.ONE_STRING);
settle.setEstimatePushTime(LocalDateTime.now()); settle.setCreateTime(LocalDateTime.now());
settle.setEstimatePremium(estimatePremium); settle.setEstimatePushTime(LocalDateTime.now());
//调完ekp接口才会是1 settle.setEstimatePremium(estimatePremium);
settle.setIsEstimatePush(CommonConstants.ZERO_INT); //调完ekp接口才会是1
settle.setId(RandomStringUtils.randomNumeric(19)); settle.setIsEstimatePush(CommonConstants.ZERO_INT);
settleList.add(settle); settle.setId(RandomStringUtils.randomNumeric(19));
detail.setDefaultSettleId(settle.getId()); settleList.add(settle);
successTwo.add(detail); detail.setDefaultSettleId(settle.getId());
updateEmployeeInsurancePreById(detail, Stream.of("4").collect(Collectors.toList()),CommonConstants.SIX_STRING); successTwo.add(detail);
updateEmployeeInsurancePreRenewById(detail, Stream.of("4").collect(Collectors.toList()),CommonConstants.SIX_STRING, false); updateEmployeeInsurancePreById(detail, Stream.of("4").collect(Collectors.toList()),CommonConstants.SIX_STRING);
//生成收入数据 updateEmployeeInsurancePreRenewById(detail, Stream.of("4").collect(Collectors.toList()),CommonConstants.SIX_STRING, false);
createInsuranceInfo(detail,settleDomain); //生成收入数据
}else { createInsuranceInfo(detail,settleDomain);
//按天 }else {
//计算起止时间的天数 //按天
long day = LocalDateUtil.betweenDay(detail.getPolicyStart().toString(), detail.getPolicyEnd().toString()); //计算起止时间的天数
if (detail.getBuyType() == CommonConstants.THREE_INT){ long day = LocalDateUtil.betweenDay(detail.getPolicyStart().toString(), detail.getPolicyEnd().toString());
detail.setPolicyEffect(LocalDate.now().plusDays(CommonConstants.ONE_INT)); if (detail.getBuyType() == CommonConstants.THREE_INT){
day = LocalDateUtil.betweenDay(detail.getPolicyEffect().toString(), detail.getPolicyEnd().toString()); detail.setPolicyEffect(LocalDate.now().plusDays(CommonConstants.ONE_INT));
day = LocalDateUtil.betweenDay(detail.getPolicyEffect().toString(), detail.getPolicyEnd().toString());
}
//预估保费 = (购买标准 / 365) * 天数 + 5元
BigDecimal estimatePremium = new BigDecimal(detail.getBuyStandard())
.multiply(new BigDecimal(day))
.divide(new BigDecimal("365"),CommonConstants.TWO_INT,BigDecimal.ROUND_HALF_UP)
.add(BigDecimal.valueOf(5.00));
detail.setEstimatePremium(estimatePremium);
//记录状态均置为「已投保」
detail.setBuyHandleStatus(CommonConstants.THREE_INT);
detail.setSignFlag(CommonConstants.ONE_INT);
//记录的有效状态,置为「有效」
detail.setIsEffect(CommonConstants.ZERO_INT);
detail.setIsOverdue(CommonConstants.ZERO_INT);
detail.setIsUse(CommonConstants.ZERO_INT);
detail.setUpdateTime(LocalDateTime.now());
detail.setUpdateBy(user.getId());
//保费存储
TInsuranceSettle settle = new TInsuranceSettle();
settle.setInsDetailId(detail.getId());
settle.setSettleType(detail.getSettleType());
settle.setSettleHandleStatus(CommonConstants.ONE_STRING);
settle.setEstimatePremium(estimatePremium);
//调完ekp接口才会是1
settle.setIsEstimatePush(CommonConstants.ONE_INT);
settle.setEstimatePushTime(LocalDateTime.now());
settle.setCreateTime(LocalDateTime.now());
settle.setId(RandomStringUtils.randomNumeric(19));
settleList.add(settle);
detail.setDefaultSettleId(settle.getId());
successTwo.add(detail);
updateEmployeeInsurancePreById(detail, Stream.of("4").collect(Collectors.toList()),CommonConstants.SIX_STRING);
updateEmployeeInsurancePreRenewById(detail, Stream.of("4").collect(Collectors.toList()),CommonConstants.SIX_STRING, false);
//生成收入数据
createInsuranceInfo(detail,settleDomain);
} }
//预估保费 = (购买标准 / 365) * 天数 + 5元 }else if (CommonConstants.ZERO_STRING.equals(detail.getIsJfcd())){
BigDecimal estimatePremium = new BigDecimal(detail.getBuyStandard())
.multiply(new BigDecimal(day))
.divide(new BigDecimal("365"),CommonConstants.TWO_INT,BigDecimal.ROUND_HALF_UP)
.add(BigDecimal.valueOf(5.00));
detail.setEstimatePremium(estimatePremium);
//记录状态均置为「已投保」 //记录状态均置为「已投保」
detail.setBuyHandleStatus(CommonConstants.THREE_INT); detail.setBuyHandleStatus(CommonConstants.THREE_INT);
detail.setSignFlag(CommonConstants.ONE_INT); detail.setSignFlag(CommonConstants.ONE_INT);
...@@ -2100,24 +2130,7 @@ public class TInsuranceDetailServiceImpl extends ServiceImpl<TInsuranceDetailMap ...@@ -2100,24 +2130,7 @@ public class TInsuranceDetailServiceImpl extends ServiceImpl<TInsuranceDetailMap
detail.setIsUse(CommonConstants.ZERO_INT); detail.setIsUse(CommonConstants.ZERO_INT);
detail.setUpdateTime(LocalDateTime.now()); detail.setUpdateTime(LocalDateTime.now());
detail.setUpdateBy(user.getId()); detail.setUpdateBy(user.getId());
//保费存储
TInsuranceSettle settle = new TInsuranceSettle();
settle.setInsDetailId(detail.getId());
settle.setSettleType(detail.getSettleType());
settle.setSettleHandleStatus(CommonConstants.ONE_STRING);
settle.setEstimatePremium(estimatePremium);
//调完ekp接口才会是1
settle.setIsEstimatePush(CommonConstants.ONE_INT);
settle.setEstimatePushTime(LocalDateTime.now());
settle.setCreateTime(LocalDateTime.now());
settle.setId(RandomStringUtils.randomNumeric(19));
settleList.add(settle);
detail.setDefaultSettleId(settle.getId());
successTwo.add(detail); successTwo.add(detail);
updateEmployeeInsurancePreById(detail, Stream.of("4").collect(Collectors.toList()),CommonConstants.SIX_STRING);
updateEmployeeInsurancePreRenewById(detail, Stream.of("4").collect(Collectors.toList()),CommonConstants.SIX_STRING, false);
//生成收入数据
createInsuranceInfo(detail,settleDomain);
} }
} }
//实缴 //实缴
...@@ -2433,7 +2446,7 @@ public class TInsuranceDetailServiceImpl extends ServiceImpl<TInsuranceDetailMap ...@@ -2433,7 +2446,7 @@ public class TInsuranceDetailServiceImpl extends ServiceImpl<TInsuranceDetailMap
if(StringUtils.isNotBlank(detail.getDefaultSettleId()) && detail.getSettleType() == CommonConstants.ZERO_INT){ if(StringUtils.isNotBlank(detail.getDefaultSettleId()) && detail.getSettleType() == CommonConstants.ZERO_INT){
settle = tInsuranceSettleService.getById(detail.getDefaultSettleId()); settle = tInsuranceSettleService.getById(detail.getDefaultSettleId());
//如果未推送则推送预估新增 //如果未推送则推送预估新增
if(CommonConstants.ZERO_INT == settle.getIsEstimatePush()){ if(null != settle && CommonConstants.ZERO_INT == settle.getIsEstimatePush()){
doJointInsuranceTask.asynchronousEkpInfo(detail,settle,CommonConstants.ONE_INT); doJointInsuranceTask.asynchronousEkpInfo(detail,settle,CommonConstants.ONE_INT);
} }
} }
...@@ -2538,10 +2551,11 @@ public class TInsuranceDetailServiceImpl extends ServiceImpl<TInsuranceDetailMap ...@@ -2538,10 +2551,11 @@ public class TInsuranceDetailServiceImpl extends ServiceImpl<TInsuranceDetailMap
settleNew.setEstimatePremium(detail.getEstimatePremium()); settleNew.setEstimatePremium(detail.getEstimatePremium());
//调完ekp接口才会是1 //调完ekp接口才会是1
settleNew.setCreateTime(LocalDateTime.now()); settleNew.setCreateTime(LocalDateTime.now());
tInsuranceSettleService.save(settleNew); if (bigDecimalAct.compareTo(detail.getEstimatePremium()) != 0){
//调EKP新增实际保费 tInsuranceSettleService.save(settleNew);
detail.setActualPremium(bigDecimalAct); detail.setBalanceId(settleNew.getId());
doJointInsuranceTask.asynchronousEkpInfo(detail,settleNew,CommonConstants.SEVEN_INT); doJointInsuranceTask.asynchronousEkpInfo(detail,settleNew,CommonConstants.SEVEN_INT);
}
} }
} }
......
...@@ -639,7 +639,7 @@ public class DoJointInsuranceTask { ...@@ -639,7 +639,7 @@ public class DoJointInsuranceTask {
ys = 0L; ys = 0L;
} }
}else { }else {
if (!"".equals(param.getIsJfcd())){ if (!"0".equals(param.getIsJfcd())){
//1、针对非提前缴费也非预估模式也未启用BPO结算模式的项目下,商险只存在实缴费用,实缴费用中应收等于应支——此类费用“实缴费用”需已收才能支出 //1、针对非提前缴费也非预估模式也未启用BPO结算模式的项目下,商险只存在实缴费用,实缴费用中应收等于应支——此类费用“实缴费用”需已收才能支出
if (InsurancesConstants.ACTUAL_SETTLE_BILL.equals(param.getSettleType()) if (InsurancesConstants.ACTUAL_SETTLE_BILL.equals(param.getSettleType())
&& "无".equals(pushParam.getFd_3af9d1441ef7b6())){ && "无".equals(pushParam.getFd_3af9d1441ef7b6())){
...@@ -659,7 +659,7 @@ public class DoJointInsuranceTask { ...@@ -659,7 +659,7 @@ public class DoJointInsuranceTask {
ys = BigDecimalUtils.safeSubtract(param.getActualPremium(),param.getEstimatePremium()).doubleValue(); ys = BigDecimalUtils.safeSubtract(param.getActualPremium(),param.getEstimatePremium()).doubleValue();
} }
} }
} else if ("".equals(param.getIsJfcd())){ } else if ("0".equals(param.getIsJfcd())){
//3、针对提前缴费的项目,无论是否为预估模式,商险存在预估费用,预估费用中应收有值为按照规则计算得出的,应支为0;存在实缴费用,实缴费用应收为0,应支等于导入的实缴金额; //3、针对提前缴费的项目,无论是否为预估模式,商险存在预估费用,预估费用中应收有值为按照规则计算得出的,应支为0;存在实缴费用,实缴费用应收为0,应支等于导入的实缴金额;
// 存在差额费用,差额费用应收有值,等于“实缴的应支金额-预估的应收金额——此类实缴支出会判断是否存在提前缴费的标识,若存在,则支出可以选择的到, // 存在差额费用,差额费用应收有值,等于“实缴的应支金额-预估的应收金额——此类实缴支出会判断是否存在提前缴费的标识,若存在,则支出可以选择的到,
// 选择后即可支出(差额明细逻辑:导入后根据预估明细和实缴明细,生成“单据类型”为“差额”的商险明细数据(只有应收金额没有应支,应收金额=实缴的应支-预估的应收,若>0, // 选择后即可支出(差额明细逻辑:导入后根据预估明细和实缴明细,生成“单据类型”为“差额”的商险明细数据(只有应收金额没有应支,应收金额=实缴的应支-预估的应收,若>0,
...@@ -681,6 +681,9 @@ public class DoJointInsuranceTask { ...@@ -681,6 +681,9 @@ public class DoJointInsuranceTask {
pushParam.setFd_3adfe6e3911ffe(0.00); pushParam.setFd_3adfe6e3911ffe(0.00);
//是否全部结算 //是否全部结算
pushParam.setFd_3b13b2ecc164aa("是"); pushParam.setFd_3b13b2ecc164aa("是");
//实际保费设置为0.0
pushParam.setFd_3adfe6610c0d2c(0.00);
} }
} }
...@@ -952,7 +955,11 @@ public class DoJointInsuranceTask { ...@@ -952,7 +955,11 @@ public class DoJointInsuranceTask {
if (null != param.getDetailId() && null != param.getDefaultSettleId()) { if (null != param.getDetailId() && null != param.getDefaultSettleId()) {
pushParam.setFd_3b0a5743acab7e(param.getDetailId() + CommonConstants.DOWN_LINE_STRING + param.getDefaultSettleId()); pushParam.setFd_3b0a5743acab7e(param.getDetailId() + CommonConstants.DOWN_LINE_STRING + param.getDefaultSettleId());
} else { } else {
pushParam.setFd_3b0a5743acab7e(CommonConstants.EMPTY_STRING); if (InsurancesConstants.BALANCE_SETTLE_BILL.equals(param.getSettleType())){
pushParam.setFd_3b0a5743acab7e(param.getDetailId() + CommonConstants.DOWN_LINE_STRING + (null==param.getBalanceId()?"":param.getBalanceId()));
}else {
pushParam.setFd_3b0a5743acab7e(CommonConstants.EMPTY_STRING);
}
} }
//单据类型 //单据类型
pushParam.setFd_3adfe6af71a1cc(null != param.getSettleType() ? param.getSettleType() : CommonConstants.EMPTY_STRING); pushParam.setFd_3adfe6af71a1cc(null != param.getSettleType() ? param.getSettleType() : CommonConstants.EMPTY_STRING);
......
...@@ -107,11 +107,11 @@ ...@@ -107,11 +107,11 @@
</delete> </delete>
<delete id="deleteEkpInsuranceDetailAsso"> <delete id="deleteEkpInsuranceDetailAsso">
delete from ekp_insurances_info where fd_3b0a5743acab7e like concat(#{id},'%') and fd_jfcd='是' and (fd_3adfe6af71a1cc = '差额' or fd_3adfe6af71a1cc = '实缴') delete from ekp_insurances_info where fd_3b0a5743acab7e like CONCAT(#{id},'%') and fd_jfcd='是' and (fd_3adfe6af71a1cc = '差额' or fd_3adfe6af71a1cc = '实缴')
</delete> </delete>
<delete id="callBackBalance"> <delete id="callBackBalance">
delete from ekp_insurances_info where fd_3b0a5743acab7e like concat(#{id},'%') and fd_jfcd='是' and fd_3adfe6af71a1cc = '差额' delete from ekp_insurances_info where fd_3b0a5743acab7e like CONCAT(#{id},'%') and fd_jfcd='是' and fd_3adfe6af71a1cc = '差额'
</delete> </delete>
<select id="getDeptSettle" resultMap="BaseDeptResultMap"> <select id="getDeptSettle" resultMap="BaseDeptResultMap">
select select
......
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