| | |
| | | BigDecimal fee = BigDecimal.ZERO; |
| | | for (ApplyChagneDetail applyChagneDetail:applyChangeList) { |
| | | Integer maxDays = DateUtil.calculateBetween(unionChange.getApplyStartTime(),applyChagneDetail.getEndTime(),0); |
| | | if(applyChagneDetail.getType().equals(Constants.ONE)){ |
| | | maxDays = DateUtil.daysBetweenDates(applyChagneDetail.getEndTime(),DateUtil.getMontageDate(unionChange.getApplyStartTime(),3)); |
| | | } |
| | | if(applyChagneDetail.getType().equals(Constants.ZERO)){ |
| | | fee = fee.add(new BigDecimal(maxDays).multiply(applyChagneDetail.getPrice())); |
| | | }else{ |
| | | fee = fee.subtract(new BigDecimal(maxDays).multiply(applyChagneDetail.getPrice())); |
| | | fee = fee.subtract(new BigDecimal(maxDays).multiply(applyChagneDetail.getPrice())).add(applyChagneDetail.getFee()); |
| | | } |
| | | } |
| | | unionChange.setFee(fee); |
| | |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | |
| | | // UnionApply unionApply = unionApplyMapper.selectById(saveUnionChangeDTO.getUnionApplyId()); |
| | | // if(Objects.isNull(unionApply)){ |
| | | // throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"未查询到合并保单数据"); |
| | | // } |
| | | |
| | | UnionApply unionApply = unionApplyMapper.selectById(saveUnionChangeDTO.getUnionApplyId()); |
| | | if(Objects.isNull(unionApply)){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"未查询到合并保单数据"); |
| | | } |
| | | //判断批单日期 合并单的批单生效期在为 保单起期的次日 到保单止期 |
| | | //获取开始日期次日 |
| | | if(saveUnionChangeDTO.getApplyDate().getTime()<=DateUtil.afterDateByType(unionApply.getStartTime(),0,1).getTime() |
| | | || saveUnionChangeDTO.getApplyDate().getTime()> unionApply.getEndTime().getTime()){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"合并单的批单生效期错误"); |
| | | } |
| | | |
| | | List<ApplyChange> applyChangeList = applyChangeJoinMapper.selectJoinList(ApplyChange.class, |
| | | new MPJLambdaWrapper<ApplyChange>() |
| | |
| | | if(!unionChange.getStatus().equals(Constants.UnionChangeStatus.UPLOAD_INSURANCE_POLICY.getKey())){ |
| | | throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(),"对不起,合并单状态已流转"); |
| | | } |
| | | UnionApply unionApply = unionApplyMapper.selectById(unionChange.getUnionApplyId()); |
| | | if(Objects.isNull(unionApply)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到合并保单信息"); |
| | | } |
| | | //判断批单日期 合并单的批单生效期在为 保单起期的次日 到保单止期 |
| | | //获取开始日期次日 |
| | | if(unionChangeBXDDTO.getApplyDate().getTime()<=DateUtil.afterDateByType(unionApply.getStartTime(),0,1).getTime() |
| | | || unionChangeBXDDTO.getApplyDate().getTime()> unionApply.getEndTime().getTime()){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"合并单的批单生效期错误"); |
| | | } |
| | | |
| | | List<ApplyChange> applyChangeList = applyChangeJoinMapper.selectJoinList(ApplyChange.class, |
| | | new MPJLambdaWrapper<ApplyChange>() |
| | |
| | | applyChange.setEditDate(new Date()); |
| | | applyChange.setEditor(user.getId()); |
| | | applyChange.setStatus(Constants.ApplyChangeStatus.APPROVE.getKey()); |
| | | applyChange.setCode(unionChangeBXDDTO.getCode()); |
| | | applyChange.setValidCode(unionChangeBXDDTO.getCode()); |
| | | applyChange.setCheckUserId(user.getId()); |
| | | List<ApplyChagneDetail> allList = applyChagneDetailJoinMapper.selectJoinList(ApplyChagneDetail.class, |
| | | new MPJLambdaWrapper<ApplyChagneDetail>().selectAll(ApplyChagneDetail.class) |
| | | .selectAs(Member::getName,ApplyChagneDetail::getMemberName ) |
| | | .selectAs(Member::getIdcardNo,ApplyChagneDetail::getIdcardNo ) |
| | | .leftJoin(Member.class,Member::getId,ApplyChagneDetail::getMemberId) |
| | | new MPJLambdaWrapper<ApplyChagneDetail>() |
| | | .selectAll(ApplyChagneDetail.class) |
| | | .selectAs(Member::getIdcardNo,ApplyChagneDetail::getIdcardNo) |
| | | .selectAs(Solutions::getTimeUnit, ApplyChagneDetail::getSolutionTimeUnit) |
| | | .selectAs(Solutions::getPrice, ApplyChagneDetail::getSolutionPrice) |
| | | .selectAs(Worktype::getName, ApplyChagneDetail::getWorkTypeName) |
| | | .selectAs(DispatchUnit::getName, ApplyChagneDetail::getDuName) |
| | | .selectAs(Member::getName, ApplyChagneDetail::getMemberName) |
| | | .selectAs(Solutions::getName,ApplyChagneDetail::getSolutionsName) |
| | | .selectAs(InsuranceApply::getCode,ApplyChagneDetail::getApplyCode) |
| | | .leftJoin(ApplyChange.class, ApplyChange::getId, ApplyChagneDetail::getApplyChangeId) |
| | | .leftJoin(Member.class, Member::getId, ApplyChagneDetail::getMemberId) |
| | | .leftJoin(InsuranceApply.class, InsuranceApply::getId, ApplyChange::getApplyId) |
| | | .leftJoin(Solutions.class, Solutions::getId, InsuranceApply::getSolutionId) |
| | | .leftJoin(Worktype.class, Worktype::getId, ApplyChagneDetail::getWorktypeId) |
| | | .leftJoin(DispatchUnit.class, DispatchUnit::getId, ApplyChagneDetail::getDuId) |
| | | .eq(ApplyChagneDetail::getApplyChangeId,applyChange.getId())); |
| | | this.dealApplyChangeDetail(applyChange,allList); |
| | | applyChange.setCode(unionChangeBXDDTO.getCode()); |
| | | applyChange.setCheckUserId(user.getId()); |
| | | applyChangeJoinMapper.updateById(applyChange); |
| | | } |
| | | } |
| | |
| | | ,unionChange.getId(),applyLogType.getKey(),null, JSONObject.toJSONString(unionChange)); |
| | | applyLogMapper.insert(log); |
| | | |
| | | // if(true){ |
| | | // throw new BusinessException(ResponseStatus.NOT_ALLOWED); |
| | | // } |
| | | } |
| | | |
| | | |
| | |
| | | .set(InsuranceApply::getEditDate, applyChange.getEditDate()) |
| | | .eq(InsuranceApply::getId, applyChange.getApplyId()) |
| | | ); |
| | | // applyChangeJoinMapper.update(null, new UpdateWrapper<ApplyChange>().lambda() |
| | | // .set(ApplyChange::getFee,bigDecimalVO.getTotalFee()) |
| | | // .set(ApplyChange::getEditor, applyChange.getEditor()) |
| | | // .set(ApplyChange::getEditDate, applyChange.getEditDate()) |
| | | // .eq(ApplyChange::getId, applyChange.getApplyId()) |
| | | // ); |
| | | applyChange.setFee(bigDecimalVO.getTotalFee()); |
| | | } |
| | | |
| | |
| | | }else{ |
| | | add.setCurrentFee(BigDecimal.ZERO); |
| | | } |
| | | |
| | | add.setPrice(detail.getPrice()); |
| | | add.setApplyId(applyChange.getApplyId()); |
| | | add.setValidCode(applyChange.getValidCode()); |
| | | add.setFee(detail.getFee()); |
| | |
| | | memberInsurance.setStartTime(add.getStartTime()); |
| | | memberInsurance.setEndTime(add.getEndTime()); |
| | | memberInsurance.setRelationType(Constants.ONE); |
| | | memberInsurance.setPdCode(applyChange.getValidCode()); |
| | | memberInsuranceJoinMapper.insert(memberInsurance); |
| | | |
| | | memberMapper.update(null,new UpdateWrapper<Member>() |
| | | .lambda() |
| | | .set(Member::getStartTime,memberInsurance.getStartTime()) |
| | | .set(Member::getEndTime,memberInsurance.getEndTime()) |
| | | .set(Member::getDuId,memberInsurance.getDuId()) |
| | | .set(Member::getWorktypeId,memberInsurance.getWorktypeId()) |
| | | .eq(Member::getId, memberInsurance.getMemberId()) |
| | | ); |
| | | |
| | | } |
| | | |
| | | /** |
| | |
| | | BigDecimal pullFee = BigDecimal.ZERO; |
| | | //减保减少的金额 |
| | | BigDecimal reduceFee = BigDecimal.ZERO; |
| | | if (DateUtil.calculateBetween(applyChange.getApplyStartTime(),DateUtil.getMontageDate(new Date(), 2),0) > 0) { |
| | | Date reduceDate = DateUtil.getMontageDate(applyChange.getApplyStartTime(),3); |
| | | if (reduceDate.getTime() < DateUtil.getMontageDate(new Date(), 2).getTime()) { |
| | | //计算多扣金额 |
| | | |
| | | Integer days = DateUtil.calculateBetween(applyChange.getApplyStartTime(),DateUtil.getMontageDate(new Date(), 2),0); |
| | | Integer days = DateUtil.calculateBetween(reduceDate,DateUtil.getMontageDate(new Date(), 2),0); |
| | | pullFee = new BigDecimal(days).multiply(detail.getPrice()).multiply(new BigDecimal(-1)); |
| | | } |
| | | //计算投保明细应减少的天数 |
| | | Integer reduceDays = DateUtil.calculateBetween(applyChange.getApplyStartTime(),DateUtil.getMontageDate(oldModel.getEndTime(), 2),0); |
| | | Integer reduceDays = DateUtil.daysBetweenDates(oldModel.getEndTime(),reduceDate); |
| | | if(reduceDays>0){ |
| | | reduceFee = new BigDecimal(reduceDays).multiply(detail.getPrice()).multiply(new BigDecimal(-1)); |
| | | } |
| | | applyDetailJoinMapper.update(null, new UpdateWrapper<ApplyDetail>().lambda() |
| | | .setSql(" fee = ifnull(fee,0)+" + reduceFee) |
| | | .setSql(" current_fee = ifnull(current_fee,0)+" + pullFee) |
| | | .set(oldModel.getStartTime().compareTo(applyChange.getApplyStartTime())!=0,ApplyDetail::getEndTime, DateUtil.getMontageDate(applyChange.getApplyStartTime(), 3)) |
| | | .set(oldModel.getStartTime().compareTo(applyChange.getApplyStartTime())==0,ApplyDetail::getEndTime, DateUtil.getMontageDate(applyChange.getApplyStartTime(), 2)) |
| | | .set(oldModel.getStartTime().compareTo(reduceDate)!=0,ApplyDetail::getEndTime, reduceDate) |
| | | .set(oldModel.getStartTime().compareTo(reduceDate)==0,ApplyDetail::getEndTime, DateUtil.getMontageDate(applyChange.getApplyStartTime(), 2)) |
| | | .set(ApplyDetail::getEditor, applyChange.getEditor()) |
| | | .set(ApplyDetail::getEditDate, applyChange.getEditDate()) |
| | | .eq(ApplyDetail::getId, oldModel.getId()) |
| | |
| | | //修改 员工投保明细记录 历史数据 |
| | | memberInsuranceJoinMapper.update(null, new UpdateWrapper<MemberInsurance>().lambda() |
| | | .setSql(" fee = ifnull(fee,0)+" + reduceFee) |
| | | .set(oldModel.getStartTime().compareTo(applyChange.getApplyStartTime())!=0,MemberInsurance::getEndTime,DateUtil.getMontageDate(applyChange.getApplyStartTime(), 3)) |
| | | .set(oldModel.getStartTime().compareTo(applyChange.getApplyStartTime())==0,MemberInsurance::getEndTime,DateUtil.getMontageDate(applyChange.getApplyStartTime(), 2)) |
| | | .set(oldModel.getStartTime().compareTo(reduceDate)!=0,MemberInsurance::getEndTime,reduceDate) |
| | | .set(oldModel.getStartTime().compareTo(reduceDate)==0,MemberInsurance::getEndTime,DateUtil.getMontageDate(applyChange.getApplyStartTime(), 2)) |
| | | .eq(MemberInsurance::getRelationId, oldModel.getId()) |
| | | ); |
| | | |
| | | |
| | | memberMapper.update(null,new UpdateWrapper<Member>() |
| | | .lambda() |
| | | .set(Member::getStartTime,oldModel.getStartTime()) |
| | | .set(oldModel.getStartTime().compareTo(reduceDate)!=0,Member::getEndTime,reduceDate) |
| | | .set(oldModel.getStartTime().compareTo(reduceDate)==0,Member::getEndTime,DateUtil.getMontageDate(applyChange.getApplyStartTime(), 2)) |
| | | .set(Member::getDuId,oldModel.getDuId()) |
| | | .set(Member::getWorktypeId,oldModel.getWorktypeId()) |
| | | .eq(Member::getId, oldModel.getMemberId()) |
| | | ); |
| | | |
| | | //修改业务明细行数据实际批单日期 |
| | | applyChagneDetailJoinMapper.update(null,new UpdateWrapper<ApplyChagneDetail>().lambda() |
| | | .setSql(" fee = ifnull(fee,0)+" + reduceFee) |
| | | .set(ApplyChagneDetail::getEndTime,DateUtil.getMontageDate(applyChange.getApplyStartTime(), 3)) |
| | | // .setSql(" fee = ifnull(fee,0)+" + reduceFee) |
| | | .set(ApplyChagneDetail::getFee,reduceFee) |
| | | .set(ApplyChagneDetail::getEndTime,reduceDate) |
| | | .eq(ApplyChagneDetail::getId,detail.getId()) |
| | | ); |
| | | } |
| | | |
| | | public void otherChangeDetailData(ApplyChange applyChange,ApplyChagneDetail detail){ |
| | | |
| | | //实际批单生效日期 |
| | | Date applyStartTime = DateUtil.getMontageDate(applyChange.getApplyStartTime(),1); |
| | | |
| | | //查询减保人员是否存在 冲突的 保单明细数据 |
| | | if(applyDetailJoinMapper.selectCount(new QueryWrapper<ApplyDetail>() |
| | | .lambda() |
| | |
| | | |
| | | } |
| | | |
| | | Member member = memberMapper.selectById(detail.getMemberId()); |
| | | if(Objects.isNull(member)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到员工数据"); |
| | | } |
| | | member.setApplyId(applyChange.getApplyId()); |
| | | member.setDuId(detail.getDuId()); |
| | | member.setWorktypeId(detail.getWorktypeId()); |
| | | member.setStartTime(detail.getStartTime()); |
| | | member.setEndTime(detail.getEndTime()); |
| | | memberMapper.updateById(member); |
| | | |
| | | |
| | | |
| | | |