| | |
| | | LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | Constants.ApplyLogType applyLogType = null; |
| | | String info = ""; |
| | | //如果是驳回,只能可驳回已签章状态下的退回申请状态进行操作 |
| | | //如果是驳回,只能可驳回已签章状态下的退回申请状态进行操作 |
| | | if(!Constants.equalsInteger(model.getStatus(),Constants.InsuranceApplyStatus.WAIT_SIGNATURE.getKey())){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,该申请状态已流转,当前不支持该操作~"); |
| | | } |
| | |
| | | } |
| | | //删除其他待办 |
| | | noticesMapper.delete(new QueryWrapper<Notices>().lambda().eq(Notices::getObjType,noticeObjectType.getKey()).eq(Notices::getObjId,model.getId())); |
| | | Notices notices = new Notices(noticeObjectType,Constants.ONE,model.getId(),model.getSolutionsName(), |
| | | Notices notices = new Notices(noticeObjectType,Constants.ZERO,model.getId(),model.getSolutionsName(), |
| | | model.getCompanyId(), Constants.NoticeType.TWO); |
| | | notices.setParam1(model.getApplyId().toString()); |
| | | noticesMapper.insert(notices); |
| | | |
| | | Multifile f = new Multifile(); |
| | |
| | | .selectAs(Solutions::getName,InsuranceApply::getSolutionsName) |
| | | .selectAs(Solutions::getEmail,InsuranceApply::getSolutionEmail) |
| | | .selectAs(Company::getName,InsuranceApply::getCompanyName) |
| | | .selectAs(InsuranceApply::getCompanyId,ApplyChange::getCompanyId) |
| | | .leftJoin(InsuranceApply.class,InsuranceApply::getId,ApplyChange::getApplyId) |
| | | .leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId) |
| | | .leftJoin(Company.class,Company::getId,InsuranceApply::getCompanyId) |
| | |
| | | .selectAs(Solutions::getName,InsuranceApply::getSolutionsName) |
| | | .selectAs(Solutions::getEmail,InsuranceApply::getSolutionEmail) |
| | | .selectAs(Company::getName,InsuranceApply::getCompanyName) |
| | | .selectAs(InsuranceApply::getCompanyId,ApplyChange::getCompanyId) |
| | | .leftJoin(InsuranceApply.class,InsuranceApply::getId,ApplyChange::getApplyId) |
| | | .leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId) |
| | | .leftJoin(Company.class,Company::getId,InsuranceApply::getCompanyId) |
| | |
| | | if(Objects.isNull(solutions)){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"未查询到方案信息"); |
| | | } |
| | | if(!(solutions.getIsdeleted().equals(Constants.ZERO)||solutions.getStatus().equals(Constants.ZERO))){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"方案信息已被禁用"); |
| | | } |
| | | List<ApplyDetail> applyDetailList = insuranceApply.getApplyDetailList(); |
| | | //判断是否存在重复信息 |
| | | List<String> idCardList = applyDetailList.stream().map(i->i.getIdcardNo()).collect(Collectors.toList()); |
| | |
| | | updBean.setFee(applyDetailList.stream().map(ApplyDetail::getFee).reduce(BigDecimal.ZERO,BigDecimal::add)); |
| | | insuranceApplyMapper.updateById(updBean); |
| | | //存储日志数据 |
| | | this.saveApplyLog(insuranceApply,insuranceApplyStatus,null); |
| | | Constants.ApplyLogType applyLogType = Constants.ApplyLogType.UPLOAD; |
| | | String info =applyLogType.getInfo(); |
| | | // info = info.replace("${param}", update.getCheckInfo()); |
| | | ApplyLog log = new ApplyLog(insuranceApply,applyLogType.getName(),info,insuranceApply.getId(),applyLogType.getKey(),null, null); |
| | | applyLogMapper.insert(log); |
| | | |
| | | |
| | | |
| | | //发送待办业务 |
| | | |
| | | //存储待办信息 |
| | |
| | | insuranceApply.setFee(applyDetailList.stream().map(ApplyDetail::getFee).reduce(BigDecimal.ZERO,BigDecimal::add)); |
| | | insuranceApplyMapper.updateById(insuranceApply); |
| | | //存储日志数据 |
| | | this.saveApplyLog(insuranceApply,insuranceApplyStatus,null); |
| | | |
| | | Constants.ApplyLogType applyLogType = Constants.ApplyLogType.UPLOAD_AGAIN; |
| | | String info =applyLogType.getInfo(); |
| | | // info = info.replace("${param}", update.getCheckInfo()); |
| | | ApplyLog log = new ApplyLog(insuranceApply,applyLogType.getName(),info,insuranceApply.getId(),applyLogType.getKey(),null, null); |
| | | applyLogMapper.insert(log); |
| | | |
| | | |
| | | //存储待办信息 |
| | |
| | | member.setSex(Constants.getSexByIdCard(applyDetail.getIdcardNo())); |
| | | member.setIdcardNo(applyDetail.getIdcardNo()); |
| | | member.setApplyId(insuranceApply.getId()); |
| | | member.setStartTime(applyDetail.getStartTime()); |
| | | member.setEndTime(applyDetail.getEndTime()); |
| | | member.setDuId(applyDetail.getDuId()); |
| | | member.setWorktypeId(applyDetail.getWorktypeId()); |
| | | memberMapper.insert(member); |
| | |
| | | member.setApplyId(insuranceApply.getId()); |
| | | member.setDuId(applyDetail.getDuId()); |
| | | member.setWorktypeId(applyDetail.getWorktypeId()); |
| | | member.setStartTime(applyDetail.getStartTime()); |
| | | member.setEndTime(applyDetail.getEndTime()); |
| | | memberMapper.updateById(member); |
| | | } |
| | | }else{ |
| | |
| | | member.setApplyId(insuranceApply.getId()); |
| | | member.setDuId(applyDetail.getDuId()); |
| | | member.setWorktypeId(applyDetail.getWorktypeId()); |
| | | member.setStartTime(applyDetail.getStartTime()); |
| | | member.setEndTime(applyDetail.getEndTime()); |
| | | memberMapper.updateById(member); |
| | | } |
| | | |
| | | //根据员工身份证进行判断年龄 |
| | | long age = Constants.getAgeByIdCard(member.getIdcardNo()); |
| | | if(Objects.isNull(age) |
| | | || age > solutions.getMaxAge() |
| | | || age < solutions.getMinAge()){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"【"+applyDetail.getMemberName()+"】员工年龄超出方案配置,方案配置【"+solutions.getMinAge()+" - "+solutions.getMaxAge()+"】!"); |
| | | } |
| | | applyDetail.setMemberId(member.getId()); |
| | | applyDetail.setIdcardNo(member.getIdcardNo()); |
| | |
| | | applyDetailJoinMapper.insertBatchSomeColumn(applyDetailList); |
| | | } |
| | | } |
| | | |
| | | |
| | | public void saveApplyLog(InsuranceApply insuranceApply,Constants.InsuranceApplyStatus insuranceApplyStatus,String content){ |
| | | LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | ApplyLog applyLog = new ApplyLog(); |
| | | applyLog.setCreateDate(new Date()); |
| | | applyLog.setCreator(loginUserInfo.getId()); |
| | | applyLog.setIsdeleted(Constants.ZERO); |
| | | applyLog.setApplyId(insuranceApply.getId()); |
| | | applyLog.setTitle(insuranceApplyStatus.getName()); |
| | | applyLog.setContent(content); |
| | | applyLog.setObjType(insuranceApplyStatus.getKey()); |
| | | applyLog.setObjId( insuranceApply.getId()); |
| | | applyLog.setStatus(insuranceApply.getStatus()); |
| | | applyLogMapper.insert(applyLog); |
| | | } |
| | | |
| | | |
| | | |
| | | // public BigDecimal countDetailFee(Solutions solutions ,Date startDate,Date endDate){ |
| | | // //查询保险实际周期 |
| | | // Integer cycle = DateUtil.calculateBetween(endDate,startDate,solutions.getDataType()); |
| | | // if(cycle==-1){ |
| | | // throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"日期信息错误!"); |
| | | // } |
| | | // return solutions.getPrice().multiply(new BigDecimal(cycle)); |
| | | // } |
| | | |
| | | // public static void main(String[] args) { |
| | | // Date date1 = DateUtil.StringToDate("2023-03-01 00:00:00"); |
| | | // Date date2 = DateUtil.StringToDate("2023-04-01 00:00:00"); |
| | | // System.out.println(DateUtil.calculateBetween(date1,date2,0)); |
| | | // System.out.println(DateUtil.calculateBetween(date1,date2,1)); |
| | | // System.out.println(DateUtil.calculateBetween(date1,date2,2)); |
| | | // System.out.println(DateUtil.calculateBetween(date1,date2,3)); |
| | | // |
| | | // } |
| | | |
| | | |
| | | @Override |
| | |
| | | |
| | | @Override |
| | | public PageData<InsuranceApply> findPage(PageWrap<InsuranceApplyQueryDTO> pageWrap) { |
| | | LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | IPage<InsuranceApply> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); |
| | | MPJLambdaWrapper<InsuranceApply> queryWrapper = new MPJLambdaWrapper<>(); |
| | | Utils.MP.blankToNull(pageWrap.getModel()); |
| | |
| | | queryWrapper.selectAll(InsuranceApply.class); |
| | | queryWrapper.selectAs(Company::getName,InsuranceApply::getCompanyName); |
| | | queryWrapper.selectAs(Solutions::getName,InsuranceApply::getSolutionsName); |
| | | queryWrapper.select(" DATEDIFF( t.END_TIME ,now() ) AS loseEfficacyDays "); |
| | | queryWrapper.select(" DATEDIFF( t.END_TIME ,now() ) AS loseEfficacyDays "); |
| | | queryWrapper.select(" ( select count(1) from apply_detail ad where ad.apply_id = t.id ) as insureNum"); |
| | | if(!Objects.isNull(pageWrap.getModel())&&!Objects.isNull(pageWrap.getModel().getType())){ |
| | | queryWrapper.select(" ( select sum(td.fee) from taxes ts inner join tax_detial td on td.TAX_ID = ts.id where ts.status != 2 and td.INSURANCE_APPLY_ID = t.id ) as taxesMoney"); |
| | | queryWrapper.select(" ifnull(( select sum(td.fee) from taxes ts inner join tax_detial td on td.TAX_ID = ts.id where ts.status != 2 and td.INSURANCE_APPLY_ID = t.id ),0) as taxesMoney"); |
| | | queryWrapper.select(" ( select td.CREATE_DATE from taxes ts inner join tax_detial td on td.TAX_ID = ts.id where ts.status != 2 and td.INSURANCE_APPLY_ID = t.id order by td.CREATE_DATE desc limit 1 ) as taxesLast "); |
| | | } |
| | | queryWrapper.leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId); |
| | |
| | | queryWrapper.eq(InsuranceApply::getStatus,Constants.InsuranceApplyStatus.UPLOAD_INSURANCE.getKey()); |
| | | queryWrapper.lt(InsuranceApply::getEndTime, Utils.Date.getStart(new Date())); |
| | | } |
| | | LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | |
| | | //企业人员查看本企业数据 |
| | | if(loginUserInfo.getType().equals(Constants.ONE)){ |
| | | queryWrapper.eq(InsuranceApply::getCompanyId, loginUserInfo.getCompanyId()); |
| | |
| | | }else{ |
| | | queryWrapper.eq(InsuranceApply::getCompanyId, -1); |
| | | } |
| | | queryWrapper.eq(pageWrap.getModel().getCompanyId()!=null,InsuranceApply::getCompanyId, pageWrap.getModel().getCompanyId()); |
| | | } |
| | | if (pageWrap.getModel().getSolutionId() != null) { |
| | | queryWrapper.eq(InsuranceApply::getSolutionId, pageWrap.getModel().getSolutionId()); |
| | |
| | | if(insuranceApply.getStartTime().compareTo(new Date())<0 && insuranceApply.getEndTime().compareTo(new Date()) > 0 ){ |
| | | insuranceApply.setLoseEfficacyDays(DateUtil.daysBetweenDates(insuranceApply.getEndTime(),new Date())); |
| | | } |
| | | |
| | | |
| | | initApplyStatus(insuranceApply); |
| | | |
| | | //查询附件数据 |
| | | initImgData(insuranceApply); |
| | | |
| | | //查询操作记录 |
| | | List<ApplyLog> applyLogList = applyLogJoinMapper.selectJoinList(ApplyLog.class, |
| | | new MPJLambdaWrapper<ApplyLog>() |
| | |
| | | .selectAs(Company::getName,ApplyLog::getCompanyName) |
| | | .leftJoin(SystemUser.class,SystemUser::getId,ApplyLog::getCreator) |
| | | .leftJoin(Company.class,Company::getId,SystemUser::getCompanyId) |
| | | .in(ApplyLog::getObjType,Constants.ApplyLogType.getTypeList(Constants.ZERO)) |
| | | .eq(ApplyLog::getApplyId,insuranceApply.getId()) |
| | | .orderByAsc(ApplyLog::getCreateDate) |
| | | ); |
| | |
| | | if(insuranceApply.getStatus().equals(Constants.InsuranceApplyStatus.UPLOAD_INSURANCE.getKey())){ |
| | | //如果当前时间大于结束日期 则使用结束日期对比开始日期 |
| | | if(DateUtil.compareDate(new Date(),insuranceApply.getEndTime())>=Constants.ZERO){ |
| | | insuranceApply.setServiceDays(DateUtil.daysBetweenDates(insuranceApply.getEndTime(),insuranceApply.getStartTime())); |
| | | insuranceApply.setServiceDays( |
| | | DateUtil.daysBetweenDates(insuranceApply.getEndTime(),insuranceApply.getStartTime())+1 |
| | | ); |
| | | }else if(DateUtil.compareDate(insuranceApply.getStartTime(),new Date())>=Constants.ZERO){ |
| | | //未开始 |
| | | insuranceApply.setServiceDays(Constants.ZERO); |
| | | }else{ |
| | | insuranceApply.setServiceDays(DateUtil.daysBetweenDates(new Date(),insuranceApply.getStartTime())); |
| | | insuranceApply.setServiceDays(DateUtil.daysBetweenDates(new Date(),insuranceApply.getStartTime())+1); |
| | | } |
| | | } |
| | | } |
| | |
| | | model.setBaoxiandanFile(f); |
| | | } |
| | | |
| | | if(model.getStatus().equals(Constants.InsuranceApplyStatus.UPLOAD_INSURANCE.getKey())){ |
| | | //如果当前时间大于结束日期 则使用结束日期对比开始日期 |
| | | if(DateUtil.compareDate(new Date(),model.getEndTime())>=Constants.ZERO){ |
| | | model.setServiceDays(DateUtil.daysBetweenDates(model.getEndTime(),model.getStartTime())); |
| | | }else if(DateUtil.compareDate(model.getStartTime(),new Date())>=Constants.ZERO){ |
| | | //未开始 |
| | | model.setServiceDays(Constants.ZERO); |
| | | }else{ |
| | | model.setServiceDays(DateUtil.daysBetweenDates(new Date(),model.getStartTime())); |
| | | } |
| | | } |
| | | // if(model.getStatus().equals(Constants.InsuranceApplyStatus.UPLOAD_INSURANCE.getKey())){ |
| | | // //如果当前时间大于结束日期 则使用结束日期对比开始日期 |
| | | // if(DateUtil.compareDate(new Date(),model.getEndTime())>=Constants.ZERO){ |
| | | // model.setServiceDays(DateUtil.daysBetweenDates(model.getEndTime(),model.getStartTime())); |
| | | // }else if(DateUtil.compareDate(model.getStartTime(),new Date())>=Constants.ZERO){ |
| | | // //未开始 |
| | | // model.setServiceDays(Constants.ZERO); |
| | | // }else{ |
| | | // model.setServiceDays(DateUtil.daysBetweenDates(new Date(),model.getStartTime())); |
| | | // } |
| | | // } |
| | | } |
| | | } |
| | | } |
| | |
| | | info = info.replace("${param}", insuranceApplyOptDTO.getOptIllustration()); |
| | | ApplyLog log = new ApplyLog(insuranceApply,applyLogType.getName(),info,insuranceApply.getId(),applyLogType.getKey(),JSONObject.toJSONString(insuranceApply), JSONObject.toJSONString(insuranceApply)); |
| | | applyLogMapper.insert(log); |
| | | // this.saveApplyLog(insuranceApply,insuranceApplyStatus,null); |
| | | } |
| | | |
| | | |
| | |
| | | if(CollectionUtils.isNotEmpty(applyDetailList)){ |
| | | for (ApplyDetail applyDetail: applyDetailList) { |
| | | //2024-1-30 10:04:24 修改 根据实际天数进行计算 当前费用 总金额/总天数*实际天数 |
| | | Integer maxDays = DateUtil.calculateBetween(applyDetail.getStartTime(),applyDetail.getEndTime(),0) + 1 ; |
| | | Integer maxDays = DateUtil.calculateBetween(applyDetail.getStartTime(),applyDetail.getEndTime(),0); |
| | | BigDecimal fee = applyDetail.getFee(); |
| | | if(applyDetail.getStartTime().compareTo(new Date()) <= 0 && applyDetail.getEndTime().compareTo(new Date()) >= 0 ){ |
| | | Integer days = DateUtil.calculateBetween(applyDetail.getStartTime(),new Date(),0) + 1 ; |
| | | Integer days = DateUtil.calculateBetween(applyDetail.getStartTime(),new Date(),0); |
| | | applyDetail.setCurrentFee(fee.divide(BigDecimal.valueOf(maxDays),2, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(days))); |
| | | applyDetailMapper.updateById(applyDetail); |
| | | } |
| | | // DateUtil.daysBetweenDates(applyDetail.getEndTime(),applyDetail.getStartTime()); |
| | | // applyDetail.setCurrentFee(Constants.countDetailFee(solutions,new Date(),applyDetail.getStartTime())); |
| | | // applyDetailMapper.updateById(applyDetail); |
| | | sumAmount = sumAmount.add(applyDetail.getCurrentFee()); |
| | | } |
| | | } |