| | |
| | | .set(ApplyDetail::getEditor, update.getEditor()) |
| | | .set(ApplyDetail::getEditDate, update.getEditDate()) |
| | | .eq(ApplyDetail::getId, oldModel.getId()); |
| | | BigDecimal reduceMoney = BigDecimal.ZERO; |
| | | |
| | | if(Constants.equalsInteger(solutions.getDelOnlyReplace(),Constants.ONE) |
| | | && Constants.equalsInteger(solutions.getTimeUnit(),solutions.getInsureCycleUnit())){ |
| | |
| | | updateWrapper.lambda().set(ApplyDetail::getFee,updateFee) |
| | | .set(ApplyDetail::getChangeStatus,Constants.TWO); |
| | | }else{ |
| | | reduceMoney = solutions.getPrice().multiply(new BigDecimal(-1)); |
| | | //标记数据已被替换 |
| | | updateWrapper.lambda().set(ApplyDetail::getReduceMoney,solutions.getPrice().multiply(new BigDecimal(-1))) |
| | | updateWrapper.lambda().set(ApplyDetail::getReduceMoney,reduceMoney) |
| | | .set(ApplyDetail::getChangeStatus,Constants.ONE); |
| | | } |
| | | detail.setApplyDetailId(oldModel.getId()); |
| | |
| | | |
| | | |
| | | applyDetailJoinMapper.update(null, updateWrapper); |
| | | totalFee = totalFee.add(updateFee).subtract(oldModel.getFee()); |
| | | totalFee = totalFee.add(updateFee).subtract(oldModel.getFee()).add(reduceMoney); |
| | | currentFee = currentFee.add(updateCurrentFee); |
| | | |
| | | //修改 员工投保明细记录 历史数据 |
| | |
| | | add.setEndTime(DateUtil.getMontageDate(detail.getEndTime(), 2)); |
| | | add.setFee(Constants.addFee(solutions,solutions.getPrice(),insuranceApply.getStartTime(),insuranceApply.getFinalEndTime(),update.getApplyStartTime(),insuranceApply.getEndTime())); |
| | | add.setChangeStatus(Constants.ZERO); |
| | | |
| | | if(Constants.equalsInteger(solutions.getDelOnlyReplace(),Constants.ONE) |
| | | && Constants.equalsInteger(solutions.getTimeUnit(),solutions.getInsureCycleUnit()) && i < reduceList.size()){ |
| | | add.setReduceId(reduceList.get(i).getId()); |
| | |
| | | add.setCurrentFee(BigDecimal.ZERO); |
| | | } |
| | | applyDetailJoinMapper.insert(add); |
| | | //如果不是替换业务的加保数据 则添加实际产生费用 |
| | | detail.setFee(Objects.isNull(add.getReduceId())?add.getFee():BigDecimal.ZERO); |
| | | totalFee = totalFee.add(add.getFee()); |
| | | currentFee = currentFee.add(add.getCurrentFee()); |
| | | |
| | | if(Objects.isNull(add.getReduceId())){ |
| | | currentFee = currentFee.add(add.getCurrentFee()); |
| | | } |
| | | MemberInsurance memberInsurance = new MemberInsurance(detail, update, update.getEditor(), add.getId(),solutions.getId()); |
| | | memberInsurance.setStartTime(add.getStartTime()); |
| | | memberInsurance.setEndTime(add.getEndTime()); |
| | |
| | | member.setEndTime(detail.getEndTime()); |
| | | memberMapper.updateById(member); |
| | | } |
| | | |
| | | |
| | | |
| | | /*for (ApplyChagneDetail detail : detailList) { |
| | | Member member = memberMapper.selectById(detail.getMemberId()); |
| | | if(Objects.isNull(member)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到员工数据"); |
| | | } |
| | | if (Constants.equalsInteger(detail.getType(), Constants.ZERO)) { |
| | | //查询加保人员是否存在 冲突的 保单明细数据 |
| | | if(applyDetailJoinMapper.selectCount(new QueryWrapper<ApplyDetail>() |
| | | .lambda() |
| | | .eq(ApplyDetail::getApplyId,update.getApplyId()) |
| | | .eq(ApplyDetail::getIdcardNo,detail.getIdcardNo()) |
| | | .le(ApplyDetail::getStartTime,DateUtil.getMontageDate(update.getApplyStartTime(),1)) |
| | | .ge(ApplyDetail::getEndTime,DateUtil.getMontageDate(detail.getEndTime(),2)) |
| | | )>Constants.ZERO){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "当前保单下,加保人员【" + detail.getMemberName() + "】存在日期冲突的数据"); |
| | | } |
| | | //加保 |
| | | ApplyDetail add = new ApplyDetail(); |
| | | add.setApplyId(update.getApplyId()); |
| | | add.setValidCode(update.getValidCode()); |
| | | add.setFee(detail.getFee()); |
| | | add.setIsdeleted(Constants.ZERO); |
| | | add.setCreator(update.getEditor()); |
| | | add.setCreateDate(update.getEditDate()); |
| | | add.setMemberId(detail.getMemberId()); |
| | | add.setMemberName(detail.getMemberName()); |
| | | add.setWorktypeId(detail.getWorktypeId()); |
| | | add.setIsdeleted(Constants.ZERO); |
| | | add.setIdcardNo(detail.getIdcardNo()); |
| | | add.setSex(Constants.getSexByIdCard(detail.getIdcardNo())); |
| | | add.setMemberName(detail.getMemberName()); |
| | | add.setRemark(detail.getRemark()); |
| | | add.setDuId(detail.getDuId()); |
| | | add.setStartTime(DateUtil.getMontageDate(update.getApplyStartTime(), 1)); |
| | | add.setEndTime(DateUtil.getMontageDate(detail.getEndTime(), 2)); |
| | | add.setFee(Constants.addFee(solutions,solutions.getPrice(),insuranceApply.getStartTime(),insuranceApply.getFinalEndTime(),update.getApplyStartTime(),insuranceApply.getEndTime())); |
| | | |
| | | if(new Date().compareTo(DateUtil.getMontageDate(detail.getStartTime(), 2))>=0){ |
| | | //2024年5月8日17:37:23 修改 计算产生费用 |
| | | add.setCurrentFee( |
| | | Constants.produceFee(solutions,add.getFee(),add.getStartTime(),add.getEndTime(),add.getStartTime()) |
| | | ); |
| | | }else{ |
| | | add.setCurrentFee(BigDecimal.ZERO); |
| | | } |
| | | applyDetailJoinMapper.insert(add); |
| | | totalFee = totalFee.add(add.getFee()); |
| | | currentFee = currentFee.add(add.getCurrentFee()); |
| | | |
| | | MemberInsurance memberInsurance = new MemberInsurance(detail, update, update.getEditor(), add.getId(),solutions.getId()); |
| | | memberInsurance.setStartTime(add.getStartTime()); |
| | | memberInsurance.setEndTime(add.getEndTime()); |
| | | memberInsurance.setRelationType(Constants.ONE); |
| | | memberInsuranceList.add(memberInsurance); |
| | | |
| | | applyChangeDetailJoinMapper.update(null,new UpdateWrapper<ApplyChagneDetail>().lambda() |
| | | .set(ApplyChagneDetail::getFee,add.getFee()) |
| | | .set(ApplyChagneDetail::getStartTime,DateUtil.getMontageDate(update.getApplyStartTime(), 1)) |
| | | .eq(ApplyChagneDetail::getId,detail.getId()) |
| | | ); |
| | | |
| | | |
| | | } else { |
| | | //减保操作 |
| | | //查询员工是在主单下 是否存在生效中的数据 |
| | | ApplyDetail oldModel = applyDetailJoinMapper.selectOne(new QueryWrapper<ApplyDetail>().lambda() |
| | | .eq(ApplyDetail::getApplyId, update.getApplyId()) |
| | | .eq(ApplyDetail::getMemberId, detail.getMemberId()) |
| | | .orderByDesc(ApplyDetail::getCreateDate) |
| | | .last("limit 1")); |
| | | if (oldModel == null || oldModel.getStartTime() == null || oldModel.getStartTime().getTime() > update.getApplyStartTime().getTime()) { |
| | | throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,用户【" + detail.getMemberName() + "】原保单信息有误,当前申请不支持减保处理!"); |
| | | } |
| | | if(!(oldModel.getStartTime().getTime()<update.getDelValidTime().getTime()&& oldModel.getEndTime().getTime()>=update.getDelValidTime().getTime())){ |
| | | throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,用户【" + detail.getMemberName() + "】减保日期未在保单记录日期中!"); |
| | | } |
| | | |
| | | Date delValidTime = oldModel.getStartTime().compareTo(update.getDelValidTime())!=0? |
| | | DateUtil.getMontageDate(update.getDelValidTime(), 3): |
| | | DateUtil.getMontageDate(update.getDelValidTime(), 2); |
| | | |
| | | BigDecimal sumFee = Objects.isNull(insuranceApply.getServerCost())? |
| | | solutions.getPrice(): |
| | | solutions.getPrice().add(insuranceApply.getServerCost()); |
| | | // 减保后 总费用 |
| | | BigDecimal updateFee = Constants.reduceFee( |
| | | solutions, |
| | | sumFee |
| | | ,insuranceApply.getStartTime(),insuranceApply.getFinalEndTime(),oldModel.getStartTime(),delValidTime |
| | | ) ; |
| | | //当审批时间 大于 申请的时间时 计算实际减少金额 因为已扣金额会大于 应扣金额 |
| | | BigDecimal updateCurrentFee = BigDecimal.ZERO; |
| | | if (DateUtil.daysBetweenDates(DateUtil.getMontageDate(new Date(), 2),oldModel.getStartTime()) > 0) { |
| | | //// 2024年5月8日17:37:23 修改 计算产生费用 |
| | | updateCurrentFee = Constants.produceFee(solutions,sumFee,insuranceApply.getStartTime(),insuranceApply.getEndTime(), |
| | | oldModel.getStartTime() |
| | | ); |
| | | } |
| | | |
| | | UpdateWrapper<ApplyDetail> updateWrapper = new UpdateWrapper<ApplyDetail>(); |
| | | updateWrapper.lambda() |
| | | .setSql(" fee = " + updateFee) |
| | | .setSql(" current_fee = " + updateCurrentFee) |
| | | .set(ApplyDetail::getEndTime, delValidTime) |
| | | .set(ApplyDetail::getEditor, update.getEditor()) |
| | | .set(ApplyDetail::getEditDate, update.getEditDate()) |
| | | .eq(ApplyDetail::getId, oldModel.getId()); |
| | | |
| | | if(Constants.equalsInteger(solutions.getDelOnlyReplace(),Constants.ONE) |
| | | && Constants.equalsInteger(solutions.getTimeUnit(),solutions.getInsureCycleUnit())){ |
| | | if(delValidTime.getTime()<=oldModel.getStartTime().getTime()){ |
| | | updateFee = BigDecimal.ZERO; |
| | | updateWrapper.lambda().set(ApplyDetail::getFee,updateFee) |
| | | .set(ApplyDetail::getChangeStatus,Constants.TWO); |
| | | }else{ |
| | | //标记数据已被替换 |
| | | updateWrapper.lambda().set(ApplyDetail::getReduceMoney,solutions.getPrice().multiply(new BigDecimal(-1))) |
| | | .set(ApplyDetail::getChangeStatus,Constants.ONE); |
| | | } |
| | | } |
| | | |
| | | |
| | | applyDetailJoinMapper.update(null, updateWrapper); |
| | | totalFee = totalFee.add(updateFee).subtract(oldModel.getFee()); |
| | | currentFee = currentFee.add(updateCurrentFee); |
| | | |
| | | //修改 员工投保明细记录 历史数据 |
| | | memberInsuranceJoinMapper.update(null, new UpdateWrapper<MemberInsurance>().lambda() |
| | | .setSql(" fee = " + updateFee) |
| | | .set(MemberInsurance::getEndTime, delValidTime) |
| | | .eq(MemberInsurance::getRelationId, oldModel.getId()) |
| | | ); |
| | | |
| | | //修改业务明细行数据实际批单日期 |
| | | applyChangeDetailJoinMapper.update(null,new UpdateWrapper<ApplyChagneDetail>().lambda() |
| | | .set(ApplyChagneDetail::getFee,updateFee.subtract(oldModel.getFee())) |
| | | .set( ApplyChagneDetail::getEndTime, delValidTime) |
| | | .eq(ApplyChagneDetail::getId,detail.getId()) |
| | | ); |
| | | } |
| | | |
| | | member.setApplyId(update.getApplyId()); |
| | | member.setDuId(detail.getDuId()); |
| | | member.setWorktypeId(detail.getWorktypeId()); |
| | | member.setStartTime(detail.getStartTime()); |
| | | member.setEndTime(detail.getEndTime()); |
| | | memberMapper.updateById(member); |
| | | |
| | | }*/ |
| | | |
| | | if (memberInsuranceList != null && memberInsuranceList.size() > 0) { |
| | | memberInsuranceJoinMapper.insertBatchSomeColumn(memberInsuranceList); |
| | |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "减保人员【" + applyChagneDetail.getMemberName() + "】必填项缺失"); |
| | | } |
| | | |
| | | |
| | | //查询减保人员是否存在 冲突的 保单明细数据 |
| | | if(applyDetailJoinMapper.selectCount(new QueryWrapper<ApplyDetail>() |
| | | .lambda() |
| | | .eq(ApplyDetail::getApplyId,applyChange.getApplyId()) |
| | | .eq(ApplyDetail::getIdcardNo,applyChagneDetail.getIdcardNo()) |
| | | // .le(ApplyDetail::getStartTime,DateUtil.getMontageDate(applyChange.getDelValidTime(),1)) |
| | | .le(ApplyDetail::getStartTime,DateUtil.getMontageDate(applyChange.getDelValidTime(),1)) |
| | | .ge(ApplyDetail::getEndTime,DateUtil.getMontageDate(applyChange.getDelValidTime(),3)) |
| | | )<=Constants.ZERO){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "当前保单下,减保人员【" + applyChagneDetail.getMemberName() + "】未查询到符合批单日期的数据"); |
| | |
| | | } |
| | | //查询人员信息是否存在相同的方案下是否存在 冲突数据 |
| | | InsuranceApplyServiceImpl.checkStaticMemberSolution(solutions.getBaseId(), |
| | | applyChagneDetail.getMemberIdcardNo(),applyChagneDetail.getMemberName(),insuranceApply.getStartTime(),insuranceApply.getEndTime(), |
| | | applyChagneDetail.getIdcardNo(),applyChagneDetail.getMemberName(),applyChange.getApplyStartTime(),insuranceApply.getEndTime(), |
| | | applyDetailJoinMapper); |
| | | |
| | | //查询加保人员是否存在 冲突的 保单明细数据 |
| | |
| | | member.setName(applyChagneDetail.getMemberName()); |
| | | member.setCompanyId(insuranceApply.getCompanyId()); |
| | | member.setSex(Constants.getSexByIdCard(applyChagneDetail.getIdcardNo())); |
| | | if(!IdcardUtil.isValidCard(applyDetail.getIdcardNo())){ |
| | | if(!IdcardUtil.isValidCard(applyChagneDetail.getIdcardNo())){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"加保员工信息身份证信息错误["+member.getName()+"]"); |
| | | } |
| | | member.setIdcardNo(applyChagneDetail.getIdcardNo()); |