From ca1e1982c1b6cf275b45ceb6d952465f84ed3830 Mon Sep 17 00:00:00 2001 From: k94314517 <8417338+k94314517@user.noreply.gitee.com> Date: 星期二, 10 六月 2025 14:59:25 +0800 Subject: [PATCH] git ch --- server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java | 200 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 198 insertions(+), 2 deletions(-) diff --git a/server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java index 1dd9e0a..3edb558 100644 --- a/server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java +++ b/server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java @@ -1416,8 +1416,6 @@ } } - - /** * 鍔犱繚鏁版嵁澶勭悊 * @param applyChange 鍔犲噺淇濅繚鍗曟暟鎹� @@ -1426,6 +1424,202 @@ * @param loginUserInfo 鎿嶄綔浜� */ public void addChangeDetail(ApplyChange applyChange ,List<ApplyChagneDetail> addDetailList, + List<DuSolution> duSolutionList, + InsuranceApply insuranceApply,Solutions solutions,LoginUserInfo loginUserInfo,BigDecimal detailFee,Integer delSize, + List<Integer> worktypeIdList){ + if(applyChange.getApplyStartTime().getTime()>insuranceApply.getEndTime().getTime()){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鍔犱繚鐢熸晥鏈熶笉鑳藉ぇ浜庝繚鍗曠粨鏉熸棩鏈�"); + } + //鏌ヨ鏈鍔犱繚鎵�鏈変汉鍛樹俊鎭� + List<Member> memberList = memberMapper.selectList(new QueryWrapper<Member>().lambda() + .eq(Member::getIsdeleted,Constants.ZERO) + .in(Member::getIdcardNo,addDetailList.stream().map(i->i.getIdcardNo()).collect(Collectors.toList())) + ); + //鏌ヨ鏈鍔犱繚鎵�鏈変汉鍛樼殑鍘嗗彶淇濆崟璁板綍 + List<ApplyDetail> applyDetailAllList = applyDetailJoinMapper.selectJoinList(ApplyDetail.class, + new MPJLambdaWrapper<ApplyDetail>() + .selectAll(ApplyDetail.class) + .selectAs(InsuranceApply::getCode,ApplyDetail::getApplyCode) + .selectAs(InsuranceApply::getStatus,ApplyDetail::getApplyStatus) + .selectAs(Company::getName,ApplyDetail::getCompanyName) + .selectAs(Solutions::getBaseId,ApplyDetail::getSolutionBaseId) + .leftJoin(InsuranceApply.class,InsuranceApply::getId,ApplyDetail::getApplyId) + .leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId) + .leftJoin(Company.class,Company::getId,InsuranceApply::getCompanyId) + .in(ApplyDetail::getMemberId,memberList.stream().map(i->i.getId()).collect(Collectors.toList())) + .eq(ApplyDetail::getIsdeleted,Constants.ZERO)); + + List<ApplyChagneDetail> applyChangeDetailAllList = applyChagneDetailJoinMapper.selectJoinList(ApplyChagneDetail.class, + new MPJLambdaWrapper<ApplyChagneDetail>() + .selectAll(ApplyChagneDetail.class) + .leftJoin(ApplyChange.class, ApplyChange::getId, ApplyChagneDetail::getApplyChangeId) + .leftJoin(Member.class,Member::getId,ApplyChagneDetail::getMemberId) + .eq(ApplyChange::getApplyId,applyChange.getApplyId()) + .in(Member::getIdcardNo,memberList.stream().map(i->i.getId()).collect(Collectors.toList())) + .in(ApplyChange::getStatus, Constants.ZERO, Constants.ONE)); + + for (int i = 0; i < addDetailList.size(); i++) { + ApplyChagneDetail applyChagneDetail = addDetailList.get(i); + if ( + Constants.equalsInteger(solutions.getHasDispatchUnit(),Constants.ZERO) && Objects.isNull(applyChagneDetail.getDuId()) + || Objects.isNull(applyChagneDetail.getWorktypeId()) + || StringUtils.isBlank(applyChagneDetail.getIdcardNo()) + ) { + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鍔犱繚浜哄憳銆�" + applyChagneDetail.getMemberName() + "銆戝繀濉」缂哄け"); + } + + //鏍规嵁鍛樺伐韬唤璇佽繘琛屽垽鏂勾榫� + long age = Constants.getAgeByIdCard(applyChagneDetail.getIdcardNo()); + if(Objects.isNull(age) + || age > solutions.getMaxAge() + || age < solutions.getMinAge()){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"銆�"+applyChagneDetail.getMemberName()+"銆戝憳宸ュ勾榫勮秴鍑烘柟妗堥厤缃� 鏂规閰嶇疆銆�"+solutions.getMinAge()+" - "+solutions.getMaxAge()+"銆戝瓨鍦ㄥ紓甯告暟鎹紒"); + } + + //鏌ヨ褰撳墠澶勭悊鐨勪汉鍛樹俊鎭� + List<Member> optMembers = memberList.stream().filter(j->j.getIdcardNo().equals(applyChagneDetail.getIdcardNo())).collect(Collectors.toList()); + Member member = new Member(); + if(CollectionUtils.isEmpty(optMembers)){ + member = new Member(); + member.setCreateDate(new Date()); + member.setCreator(loginUserInfo.getId()); + member.setIsdeleted(Constants.ZERO); + member.setName(applyChagneDetail.getMemberName()); + member.setCompanyId(insuranceApply.getCompanyId()); + member.setSex(Constants.getSexByIdCard(applyChagneDetail.getIdcardNo())); + if(!IdcardUtil.isValidCard(applyChagneDetail.getIdcardNo())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鍔犱繚鍛樺伐淇℃伅韬唤璇佷俊鎭敊璇痆"+member.getName()+"]"); + } + member.setIdcardNo(applyChagneDetail.getIdcardNo()); + member.setApplyId(insuranceApply.getId()); + member.setDuId(applyChagneDetail.getDuId()); + member.setWorktypeId(applyChagneDetail.getWorktypeId()); + memberMapper.insert(member); + applyChagneDetail.setMemberId(member.getId()); + }else{ + member = optMembers.get(Constants.ZERO); + member.setApplyId(insuranceApply.getId()); + member.setDuId(applyChagneDetail.getDuId()); + member.setWorktypeId(applyChagneDetail.getWorktypeId()); + member.setStartTime(applyChagneDetail.getStartTime()); + member.setEndTime(applyChagneDetail.getEndTime()); + memberMapper.updateById(member); + applyChagneDetail.setMemberId(member.getId()); + + if(applyChangeDetailAllList.stream().filter( + j->Constants.equalsInteger(j.getMemberId(),applyChagneDetail.getMemberId()) + ).collect(Collectors.toList()).size()>Constants.ZERO){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鍔犱繚浜哄憳銆�" + applyChagneDetail.getMemberName() + "銆戝瓨鍦ㄧ敵璇蜂腑鐨勫姞鍑忎繚/鎹㈠巶鍗曟嵁"); + } + + } + List<ApplyDetail> memberApplyDetailList = new ArrayList<>(); + if(CollectionUtils.isNotEmpty(applyDetailAllList)){ + memberApplyDetailList = applyDetailAllList.stream().filter(j->j.getIdcardNo().equals(applyChagneDetail.getIdcardNo())).collect(Collectors.toList()); + } + if(CollectionUtils.isEmpty(memberApplyDetailList)){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "淇濆崟涓湭瀛樺湪鏄庣粏璁板綍"); + } + + if(memberApplyDetailList.stream().filter(j->j.getIdcardNo().equals(applyChagneDetail.getIdcardNo())&&Constants.equalsInteger(j.getApplyId(),applyChange.getApplyId()) + && j.getStartTime().getTime() <= DateUtil.getMontageDate(applyChange.getApplyStartTime(),1).getTime() + && j.getEndTime().getTime() >= DateUtil.getMontageDate(insuranceApply.getEndTime(),2).getTime() + ).collect(Collectors.toList()).size()>Constants.ZERO){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "褰撳墠淇濆崟涓嬶紝鍔犱繚浜哄憳銆�" + applyChagneDetail.getMemberName() + "銆戝瓨鍦ㄦ棩鏈熷啿绐佺殑鏁版嵁"); + }; + + if(memberApplyDetailList.stream().filter(j->j.getIdcardNo().equals(applyChagneDetail.getIdcardNo()) + &&Constants.equalsInteger(j.getApplyId(),applyChange.getApplyId()) + && j.getStartTime().getTime() <= System.currentTimeMillis() + && j.getEndTime().getTime() >= System.currentTimeMillis() + ).collect(Collectors.toList()).size()>Constants.ZERO){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鍔犱繚浜哄憳銆�" + applyChagneDetail.getMemberName() + "銆戝瓨鍦ㄤ繚闅滀腑鐨勪繚鍗曚俊鎭紝鏃犳硶杩涜鍔犱繚"); + }; + + + List<ApplyDetail> optApplyDetailList = applyDetailAllList.stream() + .filter(j->Constants.equalsInteger(j.getApplyId(),applyChange.getApplyId()) + ).collect(Collectors.toList()); + + if(CollectionUtils.isEmpty(optApplyDetailList)){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "淇濆崟涓湭瀛樺湪鏄庣粏璁板綍"); + } + + ApplyDetail applyDetail = optApplyDetailList.get(Constants.ZERO); + applyChagneDetail.setPrice(applyDetail.getPrice()); + applyChagneDetail.setCreateDate(new Date()); + applyChagneDetail.setCreator(loginUserInfo.getId()); + applyChagneDetail.setIsdeleted(Constants.ZERO); + applyChagneDetail.setApplyChangeId(applyChange.getId()); + applyChagneDetail.setStartTime(DateUtil.getMontageDate(applyChange.getApplyStartTime(),1)); + applyChagneDetail.setEndTime(DateUtil.getMontageDate(insuranceApply.getEndTime(),2)); + applyChagneDetail.setType(Constants.ZERO); + + + List<ApplyDetail> checkStaticMemberSolutionList = memberApplyDetailList.stream() + .filter(j->Constants.equalsInteger(j.getSolutionBaseId(),solutions.getBaseId()) + && !( j.getApplyStatus() == Constants.InsuranceApplyStatus.CLOSE.getKey() || j.getApplyStatus() == Constants.InsuranceApplyStatus.WTB_CLOSED.getKey() ) + && ( + ( applyChange.getApplyStartTime().getTime()<= j.getStartTime().getTime() && j.getStartTime().getTime() < insuranceApply.getEndTime().getTime() ) + || + ( applyChange.getApplyStartTime().getTime()< j.getEndTime().getTime() && j.getEndTime().getTime() < insuranceApply.getEndTime().getTime() ) + || + ( applyChange.getApplyStartTime().getTime()> j.getStartTime().getTime() && insuranceApply.getEndTime().getTime() < j.getEndTime().getTime() ) + ) + ).collect(Collectors.toList()); + + if(checkStaticMemberSolutionList.size() >Constants.ZERO){ + String companyName = checkStaticMemberSolutionList.get(Constants.ZERO).getCompanyName(); + String idCode = checkStaticMemberSolutionList.get(Constants.ZERO).getIdcardNo(); + if(StringUtils.isNotBlank(companyName)){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璇ュ憳宸ャ��"+applyChagneDetail.getMemberName()+" "+idCode+"銆戝凡鍦ㄣ��"+companyName+"銆戝瓨鍦ㄤ繚闄�,璇疯仈绯诲鏈嶇‘璁�"); + }else{ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璇ュ憳宸ャ��"+applyChagneDetail.getMemberName()+" "+idCode+"銆戝湪璇ヤ繚闄╂柟妗堜笅宸插瓨鍦ㄦ姇淇濊褰曪紝鏃犳硶杩涜璇ユ搷浣�"); + } + }; + + //鏌ヨ鍛樺伐鏄湪涓诲崟涓� 鏄惁瀛樺湪鐢熸晥涓殑鏁版嵁 + if(!Objects.isNull(applyChagneDetail.getMemberId())){ + if (applyDetailJoinMapper.selectCount(new QueryWrapper<ApplyDetail>().lambda() + .eq(ApplyDetail::getApplyId, applyChange.getApplyId()) + .eq(ApplyDetail::getMemberId, applyChagneDetail.getMemberId()) + .le(ApplyDetail::getStartTime, "now()") + .ge(ApplyDetail::getEndTime, "now()") + ) > Constants.ZERO) { + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鍔犱繚浜哄憳銆�" + applyChagneDetail.getMemberName() + "銆戝瓨鍦ㄤ繚闅滀腑鐨勪繚鍗曚俊鎭紝鏃犳硶杩涜鍔犱繚"); + } + } + + //楠岃瘉娲鹃仯鍗曚綅淇℃伅 涓庡伐绉嶄俊鎭� 鏄惁瀛樺湪 + if(Constants.equalsInteger(solutions.getHasDispatchUnit(),Constants.ZERO)){ + if (duSolutionList.stream().filter(d -> d.getDispatchUnitId().equals(applyChagneDetail.getDuId())).collect(Collectors.toList()).size() <= Constants.ZERO) { + throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(), "銆�" + applyChagneDetail.getMemberName() + "銆戝憳宸ユ淳閬e崟浣嶆湭鏌ヨ鍒帮紒"); + } + } + if (worktypeIdList.stream().filter(d -> Constants.equalsInteger(d,applyChagneDetail.getWorktypeId())) + .collect(Collectors.toList()).size() <= Constants.ZERO) { + throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(), "銆�" + applyChagneDetail.getMemberName() + "銆戝憳宸ュ伐绉嶄俊鎭湭鏌ヨ鍒帮紒"); + } + applyChagneDetail.setMemberId(member.getId()); + //濡傛灉鏄噺淇濅笟鍔′负浠呮浛鎹� 涓� 鏂规鐨勬墸璐瑰懆鏈熷拰鎬诲懆鏈熺浉绛� 鍒欏鐞嗗噺淇濊垂鐢� + if(Constants.equalsInteger(solutions.getDelOnlyReplace(),Constants.ONE) + && Constants.equalsInteger(solutions.getTimeUnit(),solutions.getInsureCycleUnit()) && delSize> i){ + applyChagneDetail.setFee(BigDecimal.ZERO); + }else{ + applyChagneDetail.setFee(detailFee); + } + applyChagneDetailJoinMapper.insert(applyChagneDetail); + } + } + + /** + * 鍔犱繚鏁版嵁澶勭悊 + * @param applyChange 鍔犲噺淇濅繚鍗曟暟鎹� + * @param addDetailList 鍔犱繚浜哄憳 + * @param duSolutionList 娲鹃仯鍗曚綅鏂规鏁版嵁 + * @param loginUserInfo 鎿嶄綔浜� + */ + public void addChangeDetailOld(ApplyChange applyChange ,List<ApplyChagneDetail> addDetailList, List<DuSolution> duSolutionList, InsuranceApply insuranceApply,Solutions solutions,LoginUserInfo loginUserInfo,BigDecimal detailFee,Integer delSize, List<Integer> worktypeIdList){ @@ -1456,6 +1650,7 @@ ApplyDetail applyDetail = applyDetailJoinMapper.selectOne(new QueryWrapper<ApplyDetail>() .lambda() .eq(ApplyDetail::getApplyId,applyChange.getApplyId()).last("limit 1")); + if(Objects.isNull(applyDetail)){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "淇濆崟涓湭瀛樺湪鏄庣粏璁板綍"); } @@ -1548,6 +1743,7 @@ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鍔犱繚浜哄憳銆�" + applyChagneDetail.getMemberName() + "銆戝瓨鍦ㄤ繚闅滀腑鐨勪繚鍗曚俊鎭紝鏃犳硶杩涜鍔犱繚"); } } + //楠岃瘉娲鹃仯鍗曚綅淇℃伅 涓庡伐绉嶄俊鎭� 鏄惁瀛樺湪 if(Constants.equalsInteger(solutions.getHasDispatchUnit(),Constants.ZERO)){ if (duSolutionList.stream().filter(d -> d.getDispatchUnitId().equals(applyChagneDetail.getDuId())).collect(Collectors.toList()).size() <= Constants.ZERO) { -- Gitblit v1.9.3