From 3a45da15c947c2d478a44a51bd0f926647b1b841 Mon Sep 17 00:00:00 2001 From: MrShi <1878285526@qq.com> Date: 星期五, 11 四月 2025 16:33:17 +0800 Subject: [PATCH] 提交 --- server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java | 150 ++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 120 insertions(+), 30 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 58c7774..57636f3 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 @@ -227,6 +227,10 @@ if(model.getApplyEndTime()== null || model.getStartTime().getTime()>model.getApplyEndTime().getTime() ){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ョ敵璇风敓鏁堝懆鏈熸椂闂翠笉绗﹀悎瑕佹眰锛岃纭鍚庝慨鏀归噸璇晘"); } + Solutions solutions = solutionsMapper.selectById(model.getSolutionId()); + if(Objects.isNull(solutions)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈡柟妗堜俊鎭�"); + } //璁$畻瀹為檯鎴鏃堕棿 Date actEndTime = new Date(model.getApplyEndTime().getTime() + (insuranceApply.getStartTime().getTime() - model.getApplyStartTime().getTime())); LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); @@ -308,6 +312,11 @@ if(CollectionUtils.isNotEmpty(applyDetailList)){ List<MemberInsurance> memberInsuranceList = new ArrayList<>(); for (ApplyDetail applyDetail:applyDetailList) { + + //鏌ヨ浜哄憳淇℃伅鏄惁瀛樺湪鐩稿悓鐨勬柟妗堜笅鏄惁瀛樺湪 鍐茬獊鏁版嵁 + this.checkMemberSolution(solutions.getBaseId(),applyDetail.getIdcardNo(),applyDetail.getMemberName(),update.getStartTime() + ,update.getEndTime(),insuranceApply.getId()); + MemberInsurance memberInsurance = new MemberInsurance(applyDetail,user.getId()); memberInsurance.setRelationType(Constants.ZERO); memberInsuranceList.add(memberInsurance); @@ -1749,14 +1758,17 @@ insuranceApply.setEndTime(countCyclePriceVO.getEndDate()); insuranceApply.setFinalEndTime(countCyclePriceVO.getEndDate()); insuranceApplyMapper.insert(insuranceApply); - - //澶勭悊涓嬬骇鏁版嵁 this.dealApplyDetailData(insuranceApply,solutions,applyDetailList,loginUserInfo,countCyclePriceVO,true); InsuranceApply updBean = new InsuranceApply(); updBean.setId(insuranceApply.getId()); updBean.setFee(applyDetailList.stream().map(ApplyDetail::getFee).reduce(BigDecimal.ZERO,BigDecimal::add)); insuranceApplyMapper.updateById(updBean); + +// if(1==1){ +// throw new BusinessException(ResponseStatus.NOT_ALLOWED); +// } + //瀛樺偍鏃ュ織鏁版嵁 Constants.ApplyLogType applyLogType = Constants.ApplyLogType.UPLOAD; String info =applyLogType.getInfo(); @@ -1895,7 +1907,7 @@ .apply(" t1.BASE_ID in ( select du.id from dispatch_unit du where du.STATUS = 0 and du.ISDELETED = 0 ) ") ); if(!CollectionUtils.isNotEmpty(duSolutionList)){ - throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鏁版嵁寮傚父锛氫繚闄╂柟妗堜笅鏈煡璇㈠埌娲鹃仯鍗曚綅"); + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝淇濋櫓鏂规涓嬫湭鏌ヨ鍒版淳閬e崟浣嶄俊鎭紝璇风‘淇濇淳閬e崟浣嶅拰宸ヤ綔閰嶇疆骞跺鏍搁�氳繃锛�"); } //鏌ヨ鎵�鏈夋淳閬e崟浣嶄笅鐨勫伐绉� List<Integer> duSolutionIdList = duSolutionList.stream().map(i->i.getId()).collect(Collectors.toList()); @@ -1907,7 +1919,7 @@ .eq(checkNewData,Worktype::getDataType,Constants.TWO) .in(DuWorktype::getDuSolutionId,duSolutionIdList)); if(!CollectionUtils.isNotEmpty(duWorktypeList)){ - throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鏁版嵁寮傚父锛氫繚闄╂柟妗堜笅鏈煡璇㈠埌宸ョ淇℃伅"); + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝淇濋櫓鏂规涓嬫湭鏌ヨ鍒板伐绉嶄俊鎭紝璇风‘淇濇淳閬e崟浣嶅拰宸ヤ綔閰嶇疆骞跺鏍搁�氳繃锛�"); } if(CollectionUtils.isNotEmpty(applyDetailList)){ @@ -1934,16 +1946,18 @@ member.setCompanyId(insuranceApply.getCompanyId()); member.setSex(Constants.getSexByIdCard(applyDetail.getIdcardNo())); if(!IdcardUtil.isValidCard(applyDetail.getIdcardNo())){ - throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鎶曚繚鍛樺伐淇℃伅韬唤璇佷俊鎭敊璇痆"+member.getName()+"]"); + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝鎶曚繚鍛樺伐銆�"+member.getName()+"銆戣韩浠借瘉淇℃伅銆�"+applyDetail.getIdcardNo()+"銆戦敊璇�"); } member.setIdcardNo(applyDetail.getIdcardNo()); member.setApplyId(insuranceApply.getId()); - member.setStartTime(applyDetail.getStartTime()); - member.setEndTime(applyDetail.getEndTime()); +// member.setStartTime(applyDetail.getStartTime()); +// member.setEndTime(applyDetail.getEndTime()); member.setDuId(applyDetail.getDuId()); member.setWorktypeId(applyDetail.getWorktypeId()); addMemberList.add(member); } + //鏌ヨ浜哄憳淇℃伅鏄惁瀛樺湪鐩稿悓鐨勬柟妗堜笅鏄惁瀛樺湪 鍐茬獊鏁版嵁 + this.checkMemberSolution(solutions.getBaseId(),member.getIdcardNo(),member.getName(),insuranceApply.getStartTime(),insuranceApply.getEndTime(),insuranceApply.getId()); } if(CollectionUtils.isNotEmpty(addMemberList)){ memberJoinMapper.insertBatchSomeColumn(addMemberList); @@ -1957,8 +1971,9 @@ ||Objects.isNull(applyDetail.getDuId()) ||Objects.isNull(applyDetail.getWorktypeId()) ){ - throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鎶曚繚鍛樺伐淇℃伅鏁版嵁缂哄け"); + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝鎶曚繚鍛樺伐淇℃伅鏁版嵁缂哄け锛岃鎸夌収瑕佹眰濉啓鍛樺伐鐨勬湁鏁堜俊鎭紒"); } + applyDetail.setChangeStatus(Constants.ZERO); applyDetail.setCreateDate(new Date()); applyDetail.setCreator(loginUserInfo.getId()); applyDetail.setIsdeleted(Constants.ZERO); @@ -1966,6 +1981,15 @@ applyDetail.setEndTime(insuranceApply.getApplyEndTime()); applyDetail.setSortnum(i); applyDetail.setApplyId(insuranceApply.getId()); + + //鏍规嵁鍛樺伐韬唤璇佽繘琛屽垽鏂勾榫� + long age = Constants.getAgeByIdCard(applyDetail.getIdcardNo()); + if(Objects.isNull(age) + || age > solutions.getMaxAge() + || age < solutions.getMinAge()){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"銆�"+applyDetail.getMemberName()+"銆戝憳宸ュ勾榫勮秴鍑烘柟妗堥厤缃�,鏂规閰嶇疆銆�"+solutions.getMinAge()+" - "+solutions.getMaxAge()+"銆戯紒"); + } + Member member = null; if(Objects.isNull(applyDetail.getMemberId())){ if(CollectionUtils.isNotEmpty(memberList)){ @@ -1979,8 +2003,8 @@ member.setApplyId(insuranceApply.getId()); member.setDuId(applyDetail.getDuId()); member.setWorktypeId(applyDetail.getWorktypeId()); - member.setStartTime(applyDetail.getStartTime()); - member.setEndTime(applyDetail.getEndTime()); +// member.setStartTime(applyDetail.getStartTime()); +// member.setEndTime(applyDetail.getEndTime()); memberMapper.updateById(member); } }else{ @@ -1991,18 +2015,12 @@ member.setApplyId(insuranceApply.getId()); member.setDuId(applyDetail.getDuId()); member.setWorktypeId(applyDetail.getWorktypeId()); - member.setStartTime(applyDetail.getStartTime()); - member.setEndTime(applyDetail.getEndTime()); +// 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()); applyDetail.setSex(member.getSex()); @@ -2011,24 +2029,94 @@ //鑾峰彇璁$畻鎬诲ぉ鏁� Integer maxDays = DateUtil.calculateBetween(applyDetail.getStartTime(),applyDetail.getEndTime(),0); if(Constants.equalsInteger(maxDays,0)||Objects.isNull(applyDetail.getFee())){ - throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鎶曚繚淇℃伅寮傚父锛氭�诲ぉ鏁颁笌鎬婚噾棰濋敊璇�"); + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鎶曚繚淇℃伅寮傚父锛氭姇淇濇�诲ぉ鏁颁笌鎬婚噾棰濋敊璇�"); } applyDetail.setPrice( applyDetail.getFee().divide(new BigDecimal(maxDays),7,RoundingMode.HALF_UP) ); //楠岃瘉娲鹃仯鍗曚綅淇℃伅鏄惁瀛樺湪 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崟浣嶆湭鏌ヨ鍒帮紒"); + throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(),"銆�"+applyDetail.getMemberName()+applyDetail.getIdcardNo()+"銆戝憳宸ユ淳閬e崟浣嶆湭鏌ヨ鍒帮紒"); } if(duWorktypeList.stream().filter(d->d.getWorkTypeId().equals(applyDetail.getWorktypeId())) .collect(Collectors.toList()).size()<=Constants.ZERO){ - throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(),"銆�"+applyDetail.getMemberName()+"銆戝憳宸ュ伐绉嶄俊鎭湭鏌ヨ鍒帮紒"); + throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(),"銆�"+applyDetail.getMemberName()+applyDetail.getIdcardNo()+"銆戝憳宸ュ伐绉嶄俊鎭湭鏌ヨ鍒帮紒"); } } applyDetailJoinMapper.insertBatchSomeColumn(applyDetailList); } } + + /** + * 鏌ヨ 浼氬憳淇℃伅鍦ㄦ柟妗堜笅鏄惁瀛樺湪鍐茬獊鏁版嵁 + * @param solutionId + * @param startTime + * @param endTime + */ + @Override + public void checkMemberSolution(Integer solutionId,String idCode,String memberName,Date startTime,Date endTime,Integer applyId){ + List<ApplyDetail> applyDetailList = new ArrayList<ApplyDetail>(); + try { + applyDetailList = applyDetailJoinMapper.selectJoinList(ApplyDetail.class, + new MPJLambdaWrapper<ApplyDetail>() + .selectAll(ApplyDetail.class) + .selectAs(InsuranceApply::getCode,ApplyDetail::getApplyCode) + .leftJoin(InsuranceApply.class,InsuranceApply::getId,ApplyDetail::getApplyId) + .leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId) + .eq(ApplyDetail::getIdcardNo,idCode) + .eq(ApplyDetail::getIsdeleted,Constants.ZERO) + .eq(Solutions::getBaseId,solutionId) + .ne(Objects.nonNull(applyId),InsuranceApply::getId,applyId) + .notIn(InsuranceApply::getStatus + ,Constants.InsuranceApplyStatus.CLOSE.getKey() + ,Constants.InsuranceApplyStatus.WTB_CLOSED.getKey() ) + .apply(" ( " + + " '"+DateUtil.getPlusTime(startTime)+"' <= t.start_time AND t.start_time < '"+DateUtil.getPlusTime(endTime)+"' " + + " or " + + " ( '"+DateUtil.getPlusTime(startTime)+"' < t.end_time AND t.end_time < '"+DateUtil.getPlusTime(endTime)+"' ) " + + " or " + + " ( '"+DateUtil.getPlusTime(startTime)+"' > t.start_time AND '"+DateUtil.getPlusTime(endTime)+"' < t.end_time )" + + " ) " )); + }catch (Exception e){ + } + if(applyDetailList.size() >Constants.ZERO){ + ApplyDetail applyDetail = applyDetailList.get(Constants.ZERO); + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璇ュ憳宸ャ��"+memberName+" "+idCode+"銆戝湪璇ヤ繚闄╂柟妗堜笅宸插瓨鍦ㄦ姇淇濊褰曪紝鏃犳硶杩涜璇ユ搷浣�"); + }; + } + + public static void checkStaticMemberSolution(Integer solutionId,String idCode,String memberName,Date startTime, + Date endTime,ApplyDetailJoinMapper applyDetailJoinMapper){ + List<ApplyDetail> applyDetailList = new ArrayList<ApplyDetail>(); + try { + applyDetailList = applyDetailJoinMapper.selectJoinList(ApplyDetail.class, + new MPJLambdaWrapper<ApplyDetail>() + .selectAll(ApplyDetail.class) + .selectAs(InsuranceApply::getCode,ApplyDetail::getApplyCode) + .leftJoin(InsuranceApply.class,InsuranceApply::getId,ApplyDetail::getApplyId) + .leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId) + .eq(ApplyDetail::getIdcardNo,idCode) + .eq(Solutions::getBaseId,solutionId) + .eq(ApplyDetail::getIsdeleted,Constants.ZERO) + .notIn(InsuranceApply::getStatus + ,Constants.InsuranceApplyStatus.CLOSE.getKey() + ,Constants.InsuranceApplyStatus.WTB_CLOSED.getKey() ) + .apply(" ( " + + " '"+DateUtil.getPlusTime(startTime)+"' <= t.start_time AND t.start_time < '"+DateUtil.getPlusTime(endTime)+"' " + + " or " + + " ( '"+DateUtil.getPlusTime(startTime)+"' < t.end_time AND t.end_time < '"+DateUtil.getPlusTime(endTime)+"' ) " + + " or " + + " ( '"+DateUtil.getPlusTime(startTime)+"' > t.start_time AND '"+DateUtil.getPlusTime(endTime)+"' < t.end_time )" + + " ) " )); + }catch (Exception e){ + + } + if(applyDetailList.size() >Constants.ZERO){ + ApplyDetail applyDetail = applyDetailList.get(Constants.ZERO); + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璇ュ憳宸ャ��"+memberName+" "+idCode+"銆戝湪璇ヤ繚闄╂柟妗堜笅宸插瓨鍦ㄦ姇淇濊褰曪紝鏃犳硶杩涜璇ユ搷浣�"); + }; + } @Override public void deleteById(Integer id) { @@ -2124,7 +2212,7 @@ queryWrapper.selectAs(Solutions::getTimeUnit,InsuranceApply::getTimeUnit); queryWrapper.select(" DATEDIFF( t.END_TIME ,now() ) AS loseEfficacyDays "); queryWrapper.select(" ( select count(DISTINCT(ad.MEMBER_ID)) from apply_detail ad where ad.apply_id = t.id ) as insureNum"); - queryWrapper.select(" ( select count(DISTINCT(ad.MEMBER_ID)) from apply_detail ad where ad.apply_id = t.id and ad.END_TIME > now() ) as guaranteeNum"); + queryWrapper.select(" ( select count(DISTINCT(ad.MEMBER_ID)) from apply_detail ad inner join insurance_apply a on ad.apply_id = a.id and a.status in ( 5 , 27 ) where ad.apply_id = t.id and ad.END_TIME > now() ) as guaranteeNum"); if(!Objects.isNull(pageWrap.getModel())&&!Objects.isNull(pageWrap.getModel().getType())){ 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 = 1 and td.INSURANCE_APPLY_ID = t.id order by td.CREATE_DATE desc limit 1 ) as taxesLast "); @@ -2251,6 +2339,7 @@ queryWrapper.selectAs(Solutions::getName,InsuranceApply::getSolutionsName); queryWrapper.selectAs(Solutions::getType,InsuranceApply::getSolutionType); queryWrapper.select(" ( select count(DISTINCT(ad.MEMBER_ID)) from apply_detail ad where ad.apply_id = t.id ) as insureNum"); + queryWrapper.select(" ( select count(DISTINCT(ad.MEMBER_ID)) from apply_detail ad inner join insurance_apply a on ad.apply_id = a.id and a.status in ( 5 , 27 ) where ad.apply_id = t.id and ad.END_TIME > now() ) as guaranteeNum"); queryWrapper.select(" ( select max(ac.APPLY_START_TIME) from apply_change ac where ac.apply_id = t.id and ac.status = 2 ) as lastChangeDate"); 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(" ( 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 "); @@ -2396,7 +2485,7 @@ .selectAs(Company::getName,InsuranceApply::getCompanyName) .select(" ( select max(ac.APPLY_START_TIME) from apply_change ac where ac.apply_id = t.id and ac.status = 2 ) as lastChangeDate") .select(" ( select count(DISTINCT(ad.MEMBER_ID)) from apply_detail ad where ad.apply_id = t.id ) as insureNum") - .select(" ( select count(DISTINCT(ad.MEMBER_ID)) from apply_detail ad where ad.apply_id = t.id and ad.END_TIME > now() ) as guaranteeNum") + .select(" ( select count(DISTINCT(ad.MEMBER_ID)) from apply_detail ad inner join insurance_apply a on ad.apply_id = a.id and a.status in ( 5 , 27 ) where ad.apply_id = t.id and ad.END_TIME > now() ) as guaranteeNum") .select(" t3.name as shopName") .leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId) .leftJoin(Company.class,Company::getId,InsuranceApply::getCompanyId) @@ -2520,7 +2609,8 @@ .selectAs(Solutions::getName,InsuranceApply::getSolutionsName) .selectAs(Solutions::getType,InsuranceApply::getSolutionType) .selectAs(Company::getName,InsuranceApply::getCompanyName) - .select(" ( select count(DISTINCT(ad.MEMBER_ID)) from apply_detail ad where ad.apply_id = t.id and ad.END_TIME > now() ) as guaranteeNum") + .select(" ( select count(DISTINCT(ad.MEMBER_ID)) from apply_detail ad where ad.apply_id = t.id ) as insureNum") + .select(" ifnull(( select count(DISTINCT(ad.MEMBER_ID)) from apply_detail ad inner join insurance_apply a on ad.apply_id = a.id and a.status in ( 5 , 27 ) where ad.apply_id = t.id and ad.END_TIME > now() ),0) as guaranteeNum") .leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId) .leftJoin(Company.class,Company::getId,InsuranceApply::getCompanyId) .eq(InsuranceApply::getId,model.getId()) @@ -2542,7 +2632,7 @@ //鏌ヨ鏄庣粏 List<ApplyDetail> detailList =applyDetailJoinMapper.selectJoinList(ApplyDetail.class,wrapper1); if(detailList!=null){ - insuranceApply.setInsureNum(detailList.size()); +// insuranceApply.setInsureNum(detailList.size()); insuranceApply.setApplyDetailList(detailList); } insuranceApply.setRemark(model.getRemark()); @@ -2713,6 +2803,7 @@ BigDecimal sumAmount = BigDecimal.ZERO; List<ApplyDetail> applyDetailList = applyDetailMapper .selectList(new QueryWrapper<ApplyDetail>().lambda() + .ne(ApplyDetail::getChangeStatus,Constants.TWO) .eq(ApplyDetail::getApplyId,insuranceApply.getId())); if(CollectionUtils.isNotEmpty(applyDetailList)){ for (ApplyDetail applyDetail: applyDetailList) { @@ -2728,16 +2819,15 @@ applyDetail.setCurrentFee(applyDetail.getFee()); applyDetailMapper.updateById(applyDetail); } - sumAmount = sumAmount.add(applyDetail.getCurrentFee()); + if(Constants.equalsInteger(applyDetail.getChangeStatus(),Constants.ZERO) || applyDetail.getEndTime().getTime()>System.currentTimeMillis()){ + sumAmount = sumAmount.add(applyDetail.getCurrentFee()); + } } } insuranceApply.setCurrentFee(sumAmount); insuranceApplyMapper.updateById(insuranceApply); } } -// if(1==1){ -// throw new BusinessException(ResponseStatus.NOT_ALLOWED); -// } } -- Gitblit v1.9.3