From fc03a64522e6c6e0f47eeb82c8900e1910a0a363 Mon Sep 17 00:00:00 2001 From: k94314517 <8417338+k94314517@user.noreply.gitee.com> Date: 星期四, 01 二月 2024 09:11:11 +0800 Subject: [PATCH] 111 --- server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java | 122 ++++++++++++++++++++++++++++++++-------- 1 files changed, 96 insertions(+), 26 deletions(-) diff --git a/server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java index b3c53e3..9da21c5 100644 --- a/server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java +++ b/server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java @@ -15,9 +15,7 @@ import com.doumee.dao.business.dto.CountCyclePriceDTO; import com.doumee.dao.business.dto.InsuranceApplyOptDTO; import com.doumee.dao.business.dto.InsuranceApplyQueryDTO; -import com.doumee.dao.business.join.ApplyDetailJoinMapper; -import com.doumee.dao.business.join.ApplyLogJoinMapper; -import com.doumee.dao.business.join.InsuranceApplyJoinMapper; +import com.doumee.dao.business.join.*; import com.doumee.dao.business.model.*; import com.doumee.dao.business.vo.CountCyclePriceVO; import com.doumee.dao.system.model.SystemUser; @@ -63,6 +61,8 @@ private InsuranceApplyJoinMapper insuranceApplyJoinMapper; @Autowired private CompanyMapper companyMapper; + @Autowired + private MemberInsuranceJoinMapper memberInsuranceJoinMapper; @Autowired private ApplyDetailMapper applyDetailMapper; @@ -86,6 +86,8 @@ private MemberMapper memberMapper; @Autowired private DuSolutionMapper duSolutionMapper; + @Autowired + private DuSolutionJoinMapper duSolutionJoinMapper; @Autowired private DuWorktypeMapper duWorktypeMapper; @@ -179,6 +181,36 @@ } ApplyLog log = new ApplyLog(update,applyLogType.getName(), info,update.getId(),applyLogType.getKey(),JSONObject.toJSONString(model), JSONObject.toJSONString(update)); applyLogMapper.insert(log); + + + //瀛樺偍鍛樺伐淇℃伅鎶曚繚璁板綍 + //鏌ヨ鍗曟嵁鏄庣粏璁板綍 + MPJLambdaWrapper<ApplyDetail> queryWrapper = new MPJLambdaWrapper<>(); + queryWrapper.selectAll(ApplyDetail.class); + queryWrapper.selectAs(DispatchUnit::getName,ApplyDetail::getDuName); + queryWrapper.selectAs(InsuranceApply::getCode,ApplyDetail::getApplyCode); + queryWrapper.selectAs(Solutions::getId,ApplyDetail::getSolutionId); + queryWrapper.selectAs(Solutions::getName,ApplyDetail::getSolutionName); + queryWrapper.selectAs(Worktype::getName,ApplyDetail::getWorkTypeName); + queryWrapper.selectAs(Member::getIdcardNo,ApplyDetail::getIdcardNo); + queryWrapper.selectAs(Member::getName,ApplyDetail::getMemberName); + queryWrapper.leftJoin(DispatchUnit.class,DispatchUnit::getId,ApplyDetail::getDuId); + queryWrapper.leftJoin(Worktype.class,Worktype::getId,ApplyDetail::getWorktypeId); + queryWrapper.leftJoin(Member.class,Member::getId,ApplyDetail::getMemberId); + queryWrapper.leftJoin(InsuranceApply.class,InsuranceApply::getId,ApplyDetail::getApplyId); + queryWrapper.leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId); + queryWrapper.eq(ApplyDetail::getApplyId,insuranceApply.getId()); + List<ApplyDetail> applyDetailList = applyDetailJoinMapper.selectJoinList(ApplyDetail.class,queryWrapper); + + if(CollectionUtils.isNotEmpty(applyDetailList)){ + List<MemberInsurance> memberInsuranceList = new ArrayList<>(); + for (ApplyDetail applyDetail:applyDetailList) { + MemberInsurance memberInsurance = new MemberInsurance(applyDetail,user.getId()); + memberInsuranceList.add(memberInsurance); + } + memberInsuranceJoinMapper.insertBatchSomeColumn(memberInsuranceList); + } + return 1; } @@ -428,10 +460,14 @@ @Override public void dealWaitSignedData(){ List<InsuranceApply> applyList = insuranceApplyMapper.selectList(new QueryWrapper<InsuranceApply>().lambda() - .eq(InsuranceApply::getStatus,Constants.InsuranceApplyStatus.WAIT_SIGNATURE) + .eq(InsuranceApply::getStatus,Constants.InsuranceApplyStatus.WAIT_SIGNATURE.getKey()) .isNotNull(InsuranceApply::getSignApplyNo)); if(applyList !=null && applyList.size()>0 ){ for(InsuranceApply model : applyList){ + String status = signService.linkFileStatus(model.getSignApplyNo()); + if(!StringUtils.equals(status,"3")){ + continue; + } String link = signService.linkFile(model.getSignApplyNo()); String fileUrl = uploadSignFile(link); if(StringUtils.isBlank(fileUrl)){ @@ -443,10 +479,14 @@ } } List<ApplyChange> chagneList = applyChangeMapper.selectList(new QueryWrapper<ApplyChange>().lambda() - .eq(ApplyChange::getStatus,Constants.ApplyChangeStatus.UPLOAD) + .eq(ApplyChange::getStatus,Constants.ApplyChangeStatus.UPLOAD.getKey()) .isNotNull(ApplyChange::getSignApplyNo)); if(chagneList !=null && chagneList.size()>0 ){ for(ApplyChange model : chagneList){ + String status = signService.linkFileStatus(model.getSignApplyNo()); + if(!StringUtils.equals(status,"3")){ + continue; + } String link = signService.linkFile(model.getSignApplyNo()); String fileUrl = uploadSignFile(link); if(StringUtils.isBlank(fileUrl)){ @@ -588,6 +628,7 @@ info = info.replace("${param}", update.getCheckInfo()); ApplyLog log = new ApplyLog(update,applyLogType.getName(),info,update.getId(),applyLogType.getKey(),JSONObject.toJSONString(model), JSONObject.toJSONString(update)); applyLogMapper.insert(log); + return 1; } @@ -622,14 +663,22 @@ insuranceApply.setCompanyId(loginUserInfo.getCompanyId()); insuranceApply.setCheckInfo(insuranceApplyStatus.getName()); insuranceApply.setStartTime(insuranceApply.getApplyStartTime()); - insuranceApply.setEndTime(insuranceApply.getApplyEndTime()); insuranceApply.setCheckDate(new Date()); insuranceApply.setCurrentFee(BigDecimal.ZERO); insuranceApply.setCheckUserId(loginUserInfo.getId()); insuranceApply.setStatus(insuranceApplyStatus.getKey()); + + CountCyclePriceDTO countCyclePriceDTO = new CountCyclePriceDTO(); + countCyclePriceDTO.setSolutionsId(insuranceApply.getSolutionId()); + countCyclePriceDTO.setStartDate(insuranceApply.getStartTime()); + CountCyclePriceVO countCyclePriceVO = this.getCountCyclePriceVO(countCyclePriceDTO); + insuranceApply.setApplyEndTime(countCyclePriceVO.getEndDate()); + insuranceApply.setEndTime(countCyclePriceVO.getEndDate()); insuranceApplyMapper.insert(insuranceApply); + + //澶勭悊涓嬬骇鏁版嵁 - this.dealApplyDetailData(insuranceApply,applyDetailList,loginUserInfo); + this.dealApplyDetailData(insuranceApply,applyDetailList,loginUserInfo,countCyclePriceVO); InsuranceApply updBean = new InsuranceApply(); updBean.setId(insuranceApply.getId()); updBean.setFee(applyDetailList.stream().map(ApplyDetail::getFee).reduce(BigDecimal.ZERO,BigDecimal::add)); @@ -681,14 +730,21 @@ insuranceApply.setCompanyId(loginUserInfo.getCompanyId()); insuranceApply.setCheckInfo(insuranceApplyStatus.getName()); insuranceApply.setStartTime(insuranceApply.getApplyStartTime()); - insuranceApply.setEndTime(insuranceApply.getApplyEndTime()); insuranceApply.setCheckDate(new Date()); insuranceApply.setCurrentFee(BigDecimal.ZERO); insuranceApply.setCheckUserId(loginUserInfo.getId()); insuranceApply.setStatus(insuranceApplyStatus.getKey()); + + CountCyclePriceDTO countCyclePriceDTO = new CountCyclePriceDTO(); + countCyclePriceDTO.setSolutionsId(insuranceApply.getSolutionId()); + countCyclePriceDTO.setStartDate(insuranceApply.getStartTime()); + CountCyclePriceVO countCyclePriceVO = this.getCountCyclePriceVO(countCyclePriceDTO); + insuranceApply.setApplyEndTime(countCyclePriceVO.getEndDate()); + insuranceApply.setEndTime(countCyclePriceVO.getEndDate()); + applyDetailMapper.delete(new QueryWrapper<ApplyDetail>().lambda().eq(ApplyDetail::getApplyId,insuranceApply.getId())); //澶勭悊涓嬬骇鏁版嵁 - this.dealApplyDetailData(insuranceApply,applyDetailList,loginUserInfo); + this.dealApplyDetailData(insuranceApply,applyDetailList,loginUserInfo,countCyclePriceVO); insuranceApply.setFee(applyDetailList.stream().map(ApplyDetail::getFee).reduce(BigDecimal.ZERO,BigDecimal::add)); insuranceApplyMapper.updateById(insuranceApply); //瀛樺偍鏃ュ織鏁版嵁 @@ -698,13 +754,18 @@ - public void dealApplyDetailData(InsuranceApply insuranceApply,List<ApplyDetail> applyDetailList,LoginUserInfo loginUserInfo){ + public void dealApplyDetailData(InsuranceApply insuranceApply,List<ApplyDetail> applyDetailList,LoginUserInfo loginUserInfo,CountCyclePriceVO countCyclePriceVO){ Solutions solutions = solutionsMapper.selectById(insuranceApply.getSolutionId()); if(Objects.isNull(solutions)){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鏈煡璇㈠埌鏂规淇℃伅"); } //鏌ヨ淇濋櫓鏂规涓嬬殑鎵�鏈夋淳閬e崟浣� - List<DuSolution> duSolutionList = duSolutionMapper.selectList(new QueryWrapper<DuSolution>().lambda() + List<DuSolution> duSolutionList = duSolutionJoinMapper.selectJoinList(DuSolution.class,new MPJLambdaWrapper<DuSolution>() + .selectAll(DuSolution.class) + .innerJoin(DispatchUnit.class,DispatchUnit::getId,DuSolution::getDispatchUnitId) + .eq(DispatchUnit::getCompanyId,insuranceApply.getCompanyId()) + .eq(DispatchUnit::getIsdeleted,Constants.ZERO) + .eq(DispatchUnit::getUnitStatus,Constants.ONE) .eq(DuSolution::getIsdeleted,Constants.ZERO) .eq(DuSolution::getStatus,Constants.ONE) .eq(DuSolution::getSolutionId,insuranceApply.getSolutionId())); @@ -780,7 +841,7 @@ applyDetail.setMemberId(member.getId()); applyDetail.setIdcardNo(member.getIdcardNo()); applyDetail.setSex(member.getSex()); - applyDetail.setFee(Constants.countDetailFee(solutions,insuranceApply.getApplyEndTime(),insuranceApply.getApplyStartTime())); + applyDetail.setFee(countCyclePriceVO.getCyclePrice()); //楠岃瘉娲鹃仯鍗曚綅淇℃伅鏄惁瀛樺湪 if(duSolutionList.stream().filter(d->d.getDispatchUnitId().equals(applyDetail.getDuId())).collect(Collectors.toList()).size()<=Constants.ZERO){ throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(),"銆�"+applyDetail.getMemberName()+"銆戝憳宸ユ淳閬e崟浣嶆湭鏌ヨ鍒帮紒"); @@ -911,6 +972,12 @@ //浼佷笟浜哄憳鏌ョ湅鏈紒涓氭暟鎹� if(loginUserInfo.getType().equals(Constants.ONE)){ queryWrapper.eq(InsuranceApply::getCompanyId, loginUserInfo.getCompanyId()); + }else{ + if(loginUserInfo.getCompanyIdList()!=null && loginUserInfo.getCompanyIdList().size()>0){ + queryWrapper.in(InsuranceApply::getCompanyId, loginUserInfo.getCompanyIdList()); + }else{ + queryWrapper.eq(InsuranceApply::getCompanyId, -1); + } } if (pageWrap.getModel().getSolutionId() != null) { queryWrapper.eq(InsuranceApply::getSolutionId, pageWrap.getModel().getSolutionId()); @@ -991,6 +1058,12 @@ //浼佷笟浜哄憳鏌ョ湅鏈紒涓氭暟鎹� if(loginUserInfo.getType().equals(Constants.ONE)){ queryWrapper.eq(InsuranceApply::getCompanyId, loginUserInfo.getCompanyId()); + }else{ + if(loginUserInfo.getCompanyIdList()!=null && loginUserInfo.getCompanyIdList().size()>0){ + queryWrapper.in(InsuranceApply::getCompanyId, loginUserInfo.getCompanyIdList()); + }else{ + queryWrapper.eq(InsuranceApply::getCompanyId, -1); + } } if (model.getSolutionId() != null) { queryWrapper.eq(InsuranceApply::getSolutionId, model.getSolutionId()); @@ -1044,7 +1117,7 @@ MPJLambdaWrapper wrapper= new MPJLambdaWrapper<InsuranceApply>() .selectAll(InsuranceApply.class) .selectAs(Solutions::getName,InsuranceApply::getSolutionsName) - .selectAs(Company::getName,ApplyLog::getCompanyName) + .selectAs(Company::getName,InsuranceApply::getCompanyName) .select(" ( select count(1) from apply_detail ad where ad.apply_id = t.id ) as insureNum") .leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId) .leftJoin(Company.class,Company::getId,InsuranceApply::getCompanyId) @@ -1055,6 +1128,11 @@ if(Objects.isNull(insuranceApply)){ throw new BusinessException(ResponseStatus.DATA_EMPTY); } + + if(insuranceApply.getStartTime().compareTo(new Date())<0 && insuranceApply.getEndTime().compareTo(new Date()) > 0 ){ + insuranceApply.setLoseEfficacyDays(DateUtil.daysBetweenDates(insuranceApply.getEndTime(),new Date())); + } + initApplyStatus(insuranceApply); @@ -1273,6 +1351,8 @@ + + @Override public CountCyclePriceVO getCountCyclePriceVO(CountCyclePriceDTO countCyclePriceDTO){ if(Objects.isNull(countCyclePriceDTO) @@ -1285,21 +1365,11 @@ if(Objects.isNull(solutions)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈡柟妗堜俊鎭�"); } - CountCyclePriceVO countCyclePriceVO = new CountCyclePriceVO(); - if(solutions.getInsureCycleUnit().equals(Constants.ZERO)){ - countCyclePriceVO.setEndDate(DateUtil.afterDateByType(countCyclePriceDTO.getStartDate(),0,solutions.getInsureCycle())); - }else if(solutions.getInsureCycleUnit().equals(Constants.TWO)){ - Integer monthDays = DateUtil.monthDays(countCyclePriceDTO.getStartDate()); - Date afterDate = DateUtil.afterDateByType(countCyclePriceDTO.getStartDate(),0,monthDays); - countCyclePriceVO.setEndDate(DateUtil.afterDateByType(afterDate,0,-1)); - }else if(solutions.getInsureCycleUnit().equals(Constants.THREE)){ - Date afterDate = DateUtil.afterDateByType(countCyclePriceDTO.getStartDate(),2,solutions.getInsureCycle()); - countCyclePriceVO.setEndDate(DateUtil.afterDateByType(afterDate,0,-1)); - } - countCyclePriceVO.setCyclePrice(Constants.countDetailFee(solutions,countCyclePriceVO.getEndDate(),countCyclePriceDTO.getStartDate())); - return countCyclePriceVO; + return Constants.countPriceVO(countCyclePriceDTO.getStartDate(),solutions); } + + } -- Gitblit v1.9.3