From deb3baf0fb04c3a9f5b0d4b5bd9fb3237908d576 Mon Sep 17 00:00:00 2001 From: k94314517 <8417338+k94314517@user.noreply.gitee.com> Date: 星期一, 19 二月 2024 18:38:12 +0800 Subject: [PATCH] 111 --- server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java | 143 ++++++++++++++++++++++++++++++++--------------- 1 files changed, 96 insertions(+), 47 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 939eb33..00a2029 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 @@ -290,63 +290,90 @@ if(detailList ==null || detailList.size()==0){ return; } + //瀹為檯鎵瑰崟鐢熸晥鏃ユ湡 + Date applyStartTime = DateUtil.getMontageDate(update.getApplyStartTime(),1); for(ApplyChagneDetail detail : detailList){ //鏌ヨ鍛樺伐鏄湪涓诲崟涓� 鏄惁瀛樺湪鐢熸晥涓殑鏁版嵁 ApplyDetail oldModel = applyDetailJoinMapper.selectOne(new QueryWrapper<ApplyDetail>().lambda() .eq(ApplyDetail::getApplyId, update.getApplyId()) .eq(ApplyDetail::getMemberId, detail.getMemberId()) + .le(ApplyDetail::getStartTime,applyStartTime) + .ge(ApplyDetail::getEndTime,applyStartTime) .orderByDesc(ApplyDetail::getCreateDate) .last("limit 1")); if(oldModel == null ){ - throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鐢ㄦ埛銆�"+detail.getMemberName()+"銆戝師淇濆崟淇℃伅鏈夎锛屽綋鍓嶇敵璇蜂笉鏀寔鍑忎繚澶勭悊锛�"); + throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鐢ㄦ埛銆�"+detail.getMemberName()+"銆戝師淇濆崟淇℃伅鏈夎锛屾壒鍗曟棩鏈熸湭鍦ㄤ繚鍗曟棩鏈熷唴锛�"); } Date endDate = oldModel.getEndTime(); - //褰撳墠鏃ユ湡澶т簬鎵瑰崟鏃ユ湡 闇�瑕佸洖婊氭暟鎹疄闄呮暟鎹� - Boolean flag = DateUtil.getMontageDate(new Date(),2).compareTo(DateUtil.getMontageDate(update.getStartTime(),2))>0; - //鎹㈠巶鍚庡巻鍙茶褰曠殑璐圭敤 fee - Integer days = DateUtil.daysBetweenDates(DateUtil.getMontageDate(update.getStartTime(),2),DateUtil.getMontageDate(oldModel.getStartTime(),1)) + 1; - BigDecimal oldFee = this.getApplyPrice(update.getApplyId(),days); - BigDecimal fee = oldModel.getFee(); - BigDecimal oldCurrentFee = oldModel.getCurrentFee(); - applyDetailJoinMapper.update(null, new UpdateWrapper<ApplyDetail>().lambda() - .set(ApplyDetail::getEditor,update.getEditor()) - .set(ApplyDetail::getEditDate,update.getEditDate()) - .set(ApplyDetail::getEndTime,DateUtil.getMontageDate(update.getStartTime(),2)) - .set(ApplyDetail::getFee,oldFee) - .set(flag,ApplyDetail::getCurrentFee,oldFee) - .eq(ApplyDetail::getId,oldModel.getApplyId()) - ); - //淇敼 鍛樺伐鎶曚繚鏄庣粏璁板綍 鍘嗗彶鏁版嵁 - memberInsuranceJoinMapper.update(null,new UpdateWrapper<MemberInsurance>().lambda() - .set(MemberInsurance::getEndTime,update.getApplyStartTime()) - .set(MemberInsurance::getFee,oldFee) - .eq(MemberInsurance::getRelationId,oldModel.getId()) - ); + //濡傛灉瀹為檯鎵瑰崟鏃ユ湡 鍜� 鍘熻褰曟棩鏈熺浉绛� 鍒欑洿鎺ヤ慨鏀硅褰曟淳閬e崟浣嶄笌宸ョ淇℃伅 + if(applyStartTime.compareTo(oldModel.getStartTime())!=Constants.ZERO){ + //褰撳墠鏃ユ湡澶т簬鎵瑰崟鏃ユ湡 闇�瑕佸洖婊氭暟鎹疄闄呮暟鎹� + Boolean flag = DateUtil.getMontageDate(new Date(),2).compareTo(DateUtil.getMontageDate(update.getApplyStartTime(),2))>0; + //鎹㈠巶鍚庡巻鍙茶褰曠殑璐圭敤 fee + Integer days = DateUtil.daysBetweenDates(DateUtil.getMontageDate(update.getApplyStartTime(),3),DateUtil.getMontageDate(oldModel.getStartTime(),1))+1; + BigDecimal oldFee = this.getApplyPrice(update.getApplyId(),days); + BigDecimal fee = oldModel.getFee(); + BigDecimal oldCurrentFee = oldModel.getCurrentFee(); - ApplyDetail applyDetail = new ApplyDetail(); - applyDetail.setApplyId(oldModel.getApplyId()); - applyDetail.setCreateDate(new Date()); - applyDetail.setCreator(update.getEditor()); - applyDetail.setMemberId(oldModel.getMemberId()); - applyDetail.setStartTime(DateUtil.getMontageDate(update.getApplyStartTime(),1)); - applyDetail.setEndTime(endDate); - applyDetail.setDuId(detail.getDuId()); - applyDetail.setWorktypeId(detail.getWorktypeId()); - applyDetail.setIdcardNo(oldModel.getIdcardNo()); - applyDetail.setFee(fee.subtract(oldFee)); - if(flag){ - applyDetail.setCurrentFee(oldCurrentFee.multiply(oldFee)); + applyDetailJoinMapper.update(null, new UpdateWrapper<ApplyDetail>().lambda() + .set(ApplyDetail::getEditor,update.getEditor()) + .set(ApplyDetail::getEditDate,update.getEditDate()) + .set(ApplyDetail::getEndTime,DateUtil.getMontageDate(update.getApplyStartTime(),3)) + .set(ApplyDetail::getFee,oldFee) + .set(flag,ApplyDetail::getCurrentFee,oldFee) + .eq(ApplyDetail::getId,oldModel.getId()) + ); + + //淇敼 鍛樺伐鎶曚繚鏄庣粏璁板綍 鍘嗗彶鏁版嵁 + memberInsuranceJoinMapper.update(null,new UpdateWrapper<MemberInsurance>().lambda() + .set(MemberInsurance::getEndTime,update.getApplyStartTime()) + .set(MemberInsurance::getFee,oldFee) + .eq(MemberInsurance::getRelationId,oldModel.getId()) + ); + + ApplyDetail applyDetail = new ApplyDetail(); + applyDetail.setApplyId(oldModel.getApplyId()); + applyDetail.setCreateDate(new Date()); + applyDetail.setCreator(update.getEditor()); + applyDetail.setMemberId(oldModel.getMemberId()); + applyDetail.setStartTime(DateUtil.getMontageDate(update.getApplyStartTime(),1)); + applyDetail.setEndTime(endDate); + applyDetail.setDuId(detail.getDuId()); + applyDetail.setWorktypeId(detail.getWorktypeId()); + applyDetail.setIdcardNo(oldModel.getIdcardNo()); + applyDetail.setFee(fee.subtract(oldFee)); + if(flag){ + applyDetail.setCurrentFee(oldCurrentFee.multiply(oldFee)); + }else{ + applyDetail.setCurrentFee(BigDecimal.ZERO); + } + applyDetail.setSex(oldModel.getSex()); + applyDetail.setMemberName(oldModel.getMemberName()); + applyDetail.setFromId(detail.getId()); + applyDetailJoinMapper.insert(applyDetail); + + MemberInsurance memberInsurance = new MemberInsurance(applyDetail,update.getId()); + memberInsuranceJoinMapper.insert(memberInsurance); }else{ - applyDetail.setCurrentFee(BigDecimal.ZERO); - } - applyDetail.setSex(oldModel.getSex()); - applyDetail.setMemberName(oldModel.getMemberName()); - applyDetail.setFromId(detail.getId()); - applyDetailJoinMapper.insert(applyDetail); - MemberInsurance memberInsurance = new MemberInsurance(applyDetail,update.getId()); - memberInsuranceJoinMapper.insert(memberInsurance); + applyDetailJoinMapper.update(null, new UpdateWrapper<ApplyDetail>().lambda() + .set(ApplyDetail::getEditor,update.getEditor()) + .set(ApplyDetail::getEditDate,update.getEditDate()) + .set(ApplyDetail::getDuId,detail.getDuId()) + .set(ApplyDetail::getWorktypeId,detail.getWorktypeId()) + .eq(ApplyDetail::getId,oldModel.getId()) + ); + + //鍛樺伐鎶曚繚鏄庣粏璁板綍 鍘嗗彶鏁版嵁 + memberInsuranceJoinMapper.update(null,new UpdateWrapper<MemberInsurance>().lambda() + .set(MemberInsurance::getDuId,detail.getDuId()) + .set(MemberInsurance::getDuName,detail.getDuName()) + .set(MemberInsurance::getWorktypeId,detail.getWorktypeId()) + .set(MemberInsurance::getWorktypeName,detail.getWorkTypeName()) + .eq(MemberInsurance::getRelationId,oldModel.getId()) + ); + } Member member = memberMapper.selectById(detail.getMemberId()); if(Objects.isNull(member)){ @@ -423,7 +450,8 @@ add.setEndTime(DateUtil.getMontageDate(detail.getEndTime(), 2)); add.setFee(countCyclePriceVO_add.getCyclePrice()); - if (DateUtil.daysBetweenDates(DateUtil.getMontageDate(detail.getStartTime(), 2), new Date()) >= 0) { + + if(new Date().compareTo(DateUtil.getMontageDate(detail.getStartTime(), 2))>=0){ Integer days = DateUtil.daysBetweenDates(DateUtil.getMontageDate(new Date(), 2), detail.getStartTime()) + 1; //濡傛灉宸蹭骇鐢熻垂鐢紝璁$畻宸蹭骇鐢熻垂鐢� add.setCurrentFee(this.getApplyPrice(update.getApplyId(), days)); @@ -619,7 +647,7 @@ } CompanySolution companySolution = companySolutionMapper.selectOne(new QueryWrapper<CompanySolution>().lambda() .eq(CompanySolution::getCompanyId,loginUserInfo.getCompanyId()) - .eq(CompanySolution::getSolutionBaseId,solutions.getId()) + .eq(CompanySolution::getSolutionId,solutions.getId()) .eq(CompanySolution::getIsdeleted,Constants.ZERO) .last(" limit 1 ") ); @@ -631,6 +659,16 @@ && DateUtil.compareDate( applyChange.getValidTime(),insuranceApply.getEndTime()) >= Constants.ZERO)) { throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "鐢宠鏃ユ湡鏈浜庝繚鍗曟棩鏈熷唴锛屾棤娉曡繘琛岃鎿嶄綔"); } + //鏌ヨ淇濆崟涓嬫槸鍚﹀瓨鍦ㄨ繘琛屼腑鐨勫姞鍑忎繚/鎹㈠巶鍗曟嵁 + if(applyChangeMapper.selectCount(new QueryWrapper<ApplyChange>().lambda() + .eq(ApplyChange::getApplyId,insuranceApply.getId()) + .notIn(ApplyChange::getStatus,Constants.ApplyChangeStatus.APPROVE.getKey(),Constants.ApplyChangeStatus.CLOSE.getKey()) + + )>Constants.ZERO){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀛樺湪杩涜涓殑鍔犲噺淇�/鎹㈠巶鐢宠"); + }; + + applyChange.setCreateDate(new Date()); applyChange.setCreator(loginUserInfo.getId()); applyChange.setEditor(loginUserInfo.getId()); @@ -721,7 +759,14 @@ && DateUtil.compareDate( applyChange.getValidTime(),insuranceApply.getEndTime()) >= Constants.ZERO)) { throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "鐢宠鏃ユ湡鏈浜庝繚鍗曟棩鏈熷唴锛屾棤娉曡繘琛岃鎿嶄綔"); } - + //鏌ヨ淇濆崟涓嬫槸鍚﹀瓨鍦ㄨ繘琛屼腑鐨勫姞鍑忎繚/鎹㈠巶鍗曟嵁 + if(applyChangeMapper.selectCount(new QueryWrapper<ApplyChange>().lambda() + .eq(ApplyChange::getApplyId,insuranceApply.getId()) + .ne(ApplyChange::getId,applyChange.getId()) + .notIn(ApplyChange::getStatus,Constants.ApplyChangeStatus.APPROVE.getKey(),Constants.ApplyChangeStatus.CLOSE.getKey()) + )>Constants.ZERO){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀛樺湪杩涜涓殑鍔犲噺淇�/鎹㈠巶鐢宠"); + }; applyChange.setEditDate(new Date()); applyChange.setEditor(loginUserInfo.getId()); applyChange.setApplyStartTime(applyChange.getValidTime()); @@ -732,7 +777,6 @@ BigDecimal fee = this.dealApplyChangeData(applyChange,insuranceApply,companySolution,solutions,loginUserInfo,BigDecimal.ZERO); applyChange.setFee(fee); applyChangeMapper.updateById(applyChange); - Constants.ApplyLogType applyLogType = Constants.ApplyLogType.CA_UPLOAD_AGAIN; String info =applyLogType.getInfo(); @@ -1034,6 +1078,7 @@ new MPJLambdaWrapper<ApplyChagneDetail>() .leftJoin(ApplyChange.class, ApplyChange::getId, ApplyChagneDetail::getApplyChangeId) .eq(ApplyChagneDetail::getMemberId, applyChagneDetail.getMemberId()) + .eq(ApplyChange::getApplyId, applyChange.getApplyId()) .in(ApplyChange::getStatus, Constants.ZERO, Constants.ONE) ) > Constants.ZERO) { throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鎹㈠巶浜哄憳銆�" + applyChagneDetail.getMemberName() + "銆戝瓨鍦ㄧ敵璇蜂腑鐨勫姞鍑忎繚/鎹㈠巶鍗曟嵁"); @@ -1060,6 +1105,10 @@ .collect(Collectors.toList()).size() <= Constants.ZERO) { throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(), "鎹㈠巶浜哄憳銆�" + applyChagneDetail.getMemberName() + "銆戝憳宸ュ伐绉嶄俊鎭湭鏌ヨ鍒帮紒"); } + if(applyChagneDetail.getOldDuId().equals(applyChagneDetail.getDuId()) + && applyChagneDetail.getOldWorktypeId().equals(applyChagneDetail.getWorktypeId())){ + throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(), "鎹㈠巶浜哄憳銆�" + applyChagneDetail.getMemberName() + "銆戞崲鍘傛暟鎹浉鍚岋紒"); + } applyChagneDetail.setCreateDate(new Date()); applyChagneDetail.setCreator(loginUserInfo.getId()); applyChagneDetail.setIsdeleted(Constants.ZERO); -- Gitblit v1.9.3