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/UnionChangeServiceImpl.java | 191 +++++++++++++++++++++++++++++++---------------- 1 files changed, 126 insertions(+), 65 deletions(-) diff --git a/server/service/src/main/java/com/doumee/service/business/impl/UnionChangeServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/UnionChangeServiceImpl.java index ef47549..db28ae9 100644 --- a/server/service/src/main/java/com/doumee/service/business/impl/UnionChangeServiceImpl.java +++ b/server/service/src/main/java/com/doumee/service/business/impl/UnionChangeServiceImpl.java @@ -156,7 +156,8 @@ .selectAs(UnionApply::getCode,UnionChange::getApplyCode) .selectAs(Solutions::getName,UnionChange::getSolutionsName) .selectAs(UnionApply::getStartTime,UnionChange::getStartTime) - .selectAs(UnionApply::getEndTime,UnionChange::getEndTime) + .selectAs(UnionApply::getEndTime,UnionChange::getEndTime) + .selectAs(Solutions::getDelOnlyReplace,UnionChange::getDelOnlyReplace) .selectAs(Company::getName,UnionChange::getShopName) .select("( select count(1) from apply_chagne_detail ad where t.id = ad.UNION_CHANGE_ID and ad.TYPE = 0 )",UnionChange::getAddNum) .select("( select count(1) from apply_chagne_detail ad where t.id = ad.UNION_CHANGE_ID and ad.TYPE = 1 )",UnionChange::getDelNum) @@ -176,6 +177,7 @@ .ne(ApplyChagneDetail::getType,Constants.TWO) .eq(ApplyChagneDetail::getUnionChangeId,unionChange.getId())); BigDecimal fee = applyChangeList.stream().map(m->m.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add); +// fee = fee.add(applyChangeList.stream().map(m->Objects.nonNull(m.getReduceMoney())?m.getReduceMoney():BigDecimal.ZERO).reduce(BigDecimal.ZERO,BigDecimal::add)); // for (ApplyChagneDetail applyChagneDetail:applyChangeList) { // Integer maxDays = DateUtil.calculateBetween(unionChange.getApplyStartTime(),applyChagneDetail.getEndTime(),0); // if(applyChagneDetail.getType().equals(Constants.ONE)){ @@ -397,10 +399,17 @@ || saveUnionChangeDTO.getAddValidDate().getTime()> unionApply.getEndTime().getTime()){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鍚堝苟鍗曠殑鎵瑰崟鍔犱繚鐢熸晥鏈熼敊璇�"); } - if(saveUnionChangeDTO.getDelValidDate().getTime()<unionApply.getStartTime().getTime() - || saveUnionChangeDTO.getDelValidDate().getTime()> unionApply.getEndTime().getTime()){ - throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鍚堝苟鍗曠殑鎵瑰崟鍔犱繚鐢熸晥鏈熼敊璇�"); - } + + //鍔犲叆 鏌ヨ鏄惁瀛樺湪鍑忎繚鐨勬暟鎹� 濡傛灉瀛樺湪鍑忎繚鏁版嵁 杩涜璇ユ棩鏈熺殑鍒ゆ柇 2024骞�7鏈�30鏃�16:38:18 + if(applyChagneDetailJoinMapper.selectCount(new QueryWrapper<ApplyChagneDetail>().lambda() + .eq(ApplyChagneDetail::getType,Constants.ONE) + .in(ApplyChagneDetail::getApplyChangeId,saveUnionChangeDTO.getApplyIds()))>Constants.ZERO){ + if(saveUnionChangeDTO.getDelValidDate().getTime()<unionApply.getStartTime().getTime() + || saveUnionChangeDTO.getDelValidDate().getTime()> unionApply.getEndTime().getTime()){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鍚堝苟鍗曠殑鎵瑰崟鍑忎繚鐢熸晥鏈熼敊璇�"); + } + }; + }else{ if(saveUnionChangeDTO.getApplyDate().getTime()<DateUtil.afterDateByType(unionApply.getStartTime(),0,1).getTime() || saveUnionChangeDTO.getApplyDate().getTime()> unionApply.getEndTime().getTime()){ @@ -408,7 +417,6 @@ } saveUnionChangeDTO.setAddValidDate(saveUnionChangeDTO.getApplyDate()); } - List<ApplyChange> applyChangeList = applyChangeJoinMapper.selectJoinList(ApplyChange.class, new MPJLambdaWrapper<ApplyChange>() @@ -419,12 +427,14 @@ .eq(ApplyChange::getStatus,Constants.ApplyChangeStatus.CHECHED_PASSED.getKey()) .eq(InsuranceApply::getStatus,Constants.InsuranceApplyStatus.WTB_DONE.getKey()) .eq(ApplyChange::getType,saveUnionChangeDTO.getBusinessType()) +// .le(InsuranceApply::getStartTime,DateUtil.getCurrDateTime()) .in(ApplyChange::getId,saveUnionChangeDTO.getApplyIds()) .isNull(ApplyChange::getUnionChangeId) ); + //鏌ヨ鏁版嵁鏄惁瀛樺湪鏈浜庡鎵归�氳繃鐨勬暟鎹� if(applyChangeList.size()!=saveUnionChangeDTO.getApplyIds().size()){ - throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀛樺湪鏁版嵁宸插鐞嗭紝璇峰埛鏂伴噸璇�"); + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璇锋鏌ユ墍鏈夌敵璇峰崟鐨勭姸鎬佸強鏈熸湜鐢熸晥鏃堕棿鏄惁婊¤冻褰撳墠娴佽浆鎿嶄綔锛岃杩斿洖鍒锋柊閲嶈瘯锛�"); } UnionChange unionChange = new UnionChange(); @@ -452,6 +462,8 @@ applyChagneDetailJoinMapper.update(null,new UpdateWrapper<ApplyChagneDetail>().lambda() .set(ApplyChagneDetail::getUnionChangeId,unionChange.getId()) .in(ApplyChagneDetail::getApplyChangeId,saveUnionChangeDTO.getApplyIds())); + + Constants.ApplyLogType applyLogType = Constants.ApplyLogType.CA_HBD_UPLOAD; ApplyLog log = new ApplyLog(unionChange,applyLogType.getName(), null @@ -785,6 +797,7 @@ .selectAs(DispatchUnit::getName, ApplyChagneDetail::getDuName) .selectAs(Member::getName, ApplyChagneDetail::getMemberName) .selectAs(Solutions::getName,ApplyChagneDetail::getSolutionsName) + .selectAs(Solutions::getId,ApplyChagneDetail::getSolutionId) .selectAs(InsuranceApply::getCode,ApplyChagneDetail::getApplyCode) .selectAs(InsuranceApply::getServerCost,ApplyChagneDetail::getServerCost) .leftJoin(ApplyChange.class, ApplyChange::getId, ApplyChagneDetail::getApplyChangeId) @@ -796,7 +809,6 @@ .eq(ApplyChagneDetail::getApplyChangeId,applyChange.getId())); this.dealApplyChangeDetail(applyChange,allList,solutions); applyChangeJoinMapper.updateById(applyChange); - //瀛樺偍鎵瑰崟瀹屾垚淇℃伅 Constants.ApplyLogType applyLogType = Constants.ApplyLogType.CA_PLATFORM_APPROVE; String info = ""; @@ -827,9 +839,6 @@ ,unionChange.getId(),applyLogType.getKey(),null, JSONObject.toJSONString(unionChange)); applyLogMapper.insert(log); -// if(true){ -// throw new BusinessException(ResponseStatus.NOT_ALLOWED); -// } } @@ -841,19 +850,36 @@ bigDecimalVO.setTotalFee(BigDecimal.ZERO); bigDecimalVO.setCurrentFee(BigDecimal.ZERO); InsuranceApply insuranceApply = insuranceApplyMapper.selectById(applyChange.getApplyId()); - for (ApplyChagneDetail detail:applyChagneDetailList) { + List<ApplyChagneDetail> addList = applyChagneDetailList.stream().filter(f->Constants.equalsInteger(f.getType(),Constants.ZERO)).collect(Collectors.toList()); + List<ApplyChagneDetail> reduceList = applyChagneDetailList.stream().filter(f->Constants.equalsInteger(f.getType(),Constants.ONE)).collect(Collectors.toList()); + List<ApplyChagneDetail> changeList = applyChagneDetailList.stream().filter(f->Constants.equalsInteger(f.getType(),Constants.TWO)).collect(Collectors.toList()); + for (ApplyChagneDetail detail:reduceList) { + solutions = solutionsMapper.selectById(detail.getSolutionId()); Member member = memberMapper.selectById(detail.getMemberId()); if(Objects.isNull(member)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鍛樺伐鏁版嵁"); } - if (Constants.equalsInteger(detail.getType(), Constants.ZERO)) { - this.addChangeDetailData(applyChange,detail,insuranceApply,solutions,bigDecimalVO); - }else if(Constants.equalsInteger(detail.getType(),Constants.ONE)){ - this.reduceChangeDetailData(applyChange,detail,insuranceApply,solutions,bigDecimalVO); - }else{ - this.otherChangeDetailData(applyChange,detail,insuranceApply); - } + this.reduceChangeDetailData(applyChange,detail,insuranceApply,solutions,bigDecimalVO); } + + for (int i = 0; i < addList.size(); i++) { + ApplyChagneDetail detail = addList.get(i); + Member member = memberMapper.selectById(detail.getMemberId()); + if(Objects.isNull(member)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鍛樺伐鏁版嵁"); + } + solutions = solutionsMapper.selectById(detail.getSolutionId()); + this.addChangeDetailData(applyChange,detail,insuranceApply,solutions,bigDecimalVO,reduceList,i); + } + + for (ApplyChagneDetail detail:changeList) { + Member member = memberMapper.selectById(detail.getMemberId()); + if(Objects.isNull(member)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鍛樺伐鏁版嵁"); + } + this.otherChangeDetailData(applyChange,detail,insuranceApply); + } + //濡傛灉淇濆崟閲戦鍙戠敓缂栫爜锛屾洿鏂版�讳繚鍗曢噾棰� insuranceApplyMapper.update(null, new UpdateWrapper<InsuranceApply>().lambda() .setSql(bigDecimalVO.getTotalFee().compareTo(new BigDecimal(0)) != 0," fee = ifnull(fee,0)+" + bigDecimalVO.getTotalFee()) @@ -872,17 +898,12 @@ * @param detail */ public void addChangeDetailData(ApplyChange applyChange, ApplyChagneDetail detail,InsuranceApply insuranceApply,Solutions solutions - , BigDecimalVO bigDecimalVO){ - //鏌ヨ鍔犱繚浜哄憳鏄惁瀛樺湪 鍐茬獊鐨� 淇濆崟鏄庣粏鏁版嵁 - if(applyDetailJoinMapper.selectCount(new QueryWrapper<ApplyDetail>() - .lambda() - .eq(ApplyDetail::getApplyId,applyChange.getApplyId()) - .eq(ApplyDetail::getIdcardNo,detail.getIdcardNo()) - .le(ApplyDetail::getStartTime,DateUtil.getMontageDate(applyChange.getApplyStartTime(),1)) - .ge(ApplyDetail::getEndTime,DateUtil.getMontageDate(detail.getEndTime(),2)) - )>Constants.ZERO){ - throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "褰撳墠淇濆崟涓嬶紝鍔犱繚浜哄憳銆�" + detail.getMemberName() + "銆戝瓨鍦ㄦ棩鏈熷啿绐佺殑鏁版嵁"); - } + , BigDecimalVO bigDecimalVO,List<ApplyChagneDetail> reduceList,Integer i){ + //鏌ヨ浜哄憳淇℃伅鏄惁瀛樺湪鐩稿悓鐨勬柟妗堜笅鏄惁瀛樺湪 鍐茬獊鏁版嵁 + InsuranceApplyServiceImpl.checkStaticMemberSolution(solutions.getBaseId(), + detail.getIdcardNo(),detail.getMemberName(),DateUtil.getMontageDate(applyChange.getApplyStartTime(),1),DateUtil.getMontageDate(detail.getEndTime(),2), + applyDetailJoinMapper); + //鍔犱繚 ApplyDetail add = new ApplyDetail(); BigDecimal fee = Objects.isNull(insuranceApply.getServerCost())? @@ -916,17 +937,23 @@ add.setEndTime(DateUtil.getMontageDate(detail.getEndTime(), 2)); add.setRemark(detail.getRemark()); add.setUnionApplyId(insuranceApply.getUnionApplyId()); + add.setChangeStatus(Constants.ZERO); + if(Constants.equalsInteger(solutions.getDelOnlyReplace(),Constants.ONE) + && Constants.equalsInteger(solutions.getTimeUnit(),solutions.getInsureCycleUnit()) && i < reduceList.size() ){ + add.setReduceId(reduceList.get(i).getApplyDetailId()); + } applyDetailJoinMapper.insert(add); - - detail.setFee(add.getFee()); + detail.setFee(Objects.isNull(add.getReduceId())?add.getFee():BigDecimal.ZERO); + bigDecimalVO.setTotalFee(bigDecimalVO.getTotalFee().add(add.getFee())); + //濡傛灉涓嶆槸鏇挎崲涓氬姟鐨勫姞淇濇暟鎹� 鍒欐坊鍔犲疄闄呬骇鐢熻垂鐢� + if(Objects.isNull(add.getReduceId())){ + bigDecimalVO.setCurrentFee(bigDecimalVO.getCurrentFee().add(add.getCurrentFee())); + } applyChagneDetailJoinMapper.update(null,new UpdateWrapper<ApplyChagneDetail>().lambda() - .set(ApplyChagneDetail::getFee,add.getFee()) + .set(ApplyChagneDetail::getFee,detail.getFee()) .set(ApplyChagneDetail::getStartTime,DateUtil.getMontageDate(applyChange.getApplyStartTime(), 1)) .eq(ApplyChagneDetail::getId,detail.getId()) ); - bigDecimalVO.setTotalFee(bigDecimalVO.getTotalFee().add(add.getFee())); - bigDecimalVO.setCurrentFee(bigDecimalVO.getCurrentFee().add(add.getCurrentFee())); - MemberInsurance memberInsurance = new MemberInsurance(detail, applyChange, applyChange.getEditor(), add.getId(),applyChange.getSolutionsId()); memberInsurance.setStartTime(add.getStartTime()); memberInsurance.setEndTime(add.getEndTime()); @@ -939,13 +966,14 @@ .set(Member::getStartTime,memberInsurance.getStartTime()) .set(Member::getEndTime,memberInsurance.getEndTime()) .set(Member::getDuId,memberInsurance.getDuId()) + .set(Member::getEditDate,applyChange.getEditDate()) + .set(Member::getEditor,applyChange.getEditor()) .set(Member::getWorktypeId,memberInsurance.getWorktypeId()) .eq(Member::getId, memberInsurance.getMemberId()) ); - -// if(1==1){ -// throw new BusinessException(ResponseStatus.NOT_ALLOWED); -// } +// if(1==1){ +// throw new BusinessException(ResponseStatus.NOT_ALLOWED); +// } } /** @@ -967,43 +995,76 @@ if(oldModel.getStartTime().getTime()>applyChange.getDelValidTime().getTime()||oldModel.getEndTime().getTime()<applyChange.getDelValidTime().getTime()){ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝鎵瑰噺鏃ユ湡鏈湪鐢ㄦ埛銆�" + detail.getMemberName() + "銆戠殑淇濆崟鏃ユ湡鍐咃紒"); } + BigDecimal fee = Objects.isNull(insuranceApply.getServerCost())? solutions.getPrice(): solutions.getPrice().add(insuranceApply.getServerCost()); - Date reduceDate = oldModel.getStartTime().compareTo(applyChange.getDelValidTime())!=0? - DateUtil.getMontageDate(applyChange.getDelValidTime(), 3): - DateUtil.getMontageDate(applyChange.getDelValidTime(), 2); - //鍑忎繚璁板綍鎿嶄綔鍚庣殑鎬昏垂鐢� - BigDecimal reduceFee = Constants.reduceFee( - solutions,fee,insuranceApply.getStartTime(),insuranceApply.getFinalEndTime(),oldModel.getStartTime(),reduceDate) ; + // 鍑忎繚鍚� 鎵瑰崟鏃ユ湡 榛樿涓� 鎵瑰崟鍑忎繚鏃ユ湡 00:00:00 + Date reduceDate = applyChange.getDelValidTime(); + + // 鍑忎繚鍚� 鎬昏垂鐢� 榛樿涓哄噺淇濆悗涓� 0 + BigDecimal reduceFee = BigDecimal.ZERO; + + //濡傛灉鎵瑰崟鏃ユ湡 澶т簬 鍛樺伐淇濆崟鐨勫紑濮嬫棩鏈� + if(applyChange.getDelValidTime().getTime() > oldModel.getStartTime().getTime()){ + reduceDate = DateUtil.getMontageDate(applyChange.getDelValidTime(), 3); + //鍑忎繚璁板綍鎿嶄綔鍚庣殑鎬昏垂鐢� + reduceFee = Constants.reduceFee( + solutions,fee,insuranceApply.getStartTime(),insuranceApply.getFinalEndTime(),oldModel.getStartTime(),reduceDate) ; + } + BigDecimal pullFee = BigDecimal.ZERO; - if (DateUtil.getMontageDate(new Date(), 2).getTime()>oldModel.getStartTime().getTime()) { - //// 2024骞�5鏈�8鏃�17:37:23 淇敼 璁$畻浜х敓璐圭敤 + if (oldModel.getStartTime().getTime() < System.currentTimeMillis()) { + //璁$畻浜х敓璐圭敤 pullFee = Constants.produceFee(solutions,fee,insuranceApply.getStartTime(),insuranceApply.getFinalEndTime(),oldModel.getStartTime()); if(pullFee.compareTo(reduceFee)>0){ pullFee = reduceFee; } } - bigDecimalVO.setTotalFee(bigDecimalVO.getTotalFee().add(reduceFee).subtract(oldModel.getFee())); - bigDecimalVO.setCurrentFee(bigDecimalVO.getCurrentFee().add(pullFee).subtract(oldModel.getCurrentFee())); - - applyDetailJoinMapper.update(null, new UpdateWrapper<ApplyDetail>().lambda() - .setSql(" fee = " + reduceFee) - .setSql(" current_fee = " + pullFee) + UpdateWrapper<ApplyDetail> updateWrapper = new UpdateWrapper<ApplyDetail>(); + updateWrapper.lambda() + .setSql(" fee = " + reduceFee) + .setSql(" current_fee = " + pullFee) .set(ApplyDetail::getEndTime, reduceDate) + .set(applyChange.getDelValidTime().getTime() <= oldModel.getStartTime().getTime(),ApplyDetail::getChangeStatus,Constants.TWO) .set(ApplyDetail::getEditor, applyChange.getEditor()) .set(ApplyDetail::getEditDate, applyChange.getEditDate()) - .eq(ApplyDetail::getId, oldModel.getId()) - ); + .eq(ApplyDetail::getId, oldModel.getId()); + BigDecimal reduceMoney = BigDecimal.ZERO; + if(Constants.equalsInteger(solutions.getDelOnlyReplace(),Constants.ONE) + && Constants.equalsInteger(solutions.getTimeUnit(),solutions.getInsureCycleUnit())){ + if(reduceDate.getTime()<=oldModel.getStartTime().getTime()){ + reduceFee = BigDecimal.ZERO; + updateWrapper.lambda().set(ApplyDetail::getFee,reduceFee) + .set(ApplyDetail::getChangeStatus,Constants.TWO); + }else{ + reduceMoney = solutions.getPrice().multiply(new BigDecimal(-1)); + //鏍囪鏁版嵁宸茶鏇挎崲 + updateWrapper.lambda().set(ApplyDetail::getReduceMoney,reduceMoney) + .set(ApplyDetail::getChangeStatus,Constants.ONE); + } + detail.setApplyDetailId(oldModel.getId()); + } + bigDecimalVO.setTotalFee(bigDecimalVO.getTotalFee().add(reduceFee).subtract(oldModel.getFee()).add(reduceMoney)); + bigDecimalVO.setCurrentFee(bigDecimalVO.getCurrentFee().add(pullFee).subtract(oldModel.getCurrentFee())); - //淇敼 鍛樺伐鎶曚繚鏄庣粏璁板綍 鍘嗗彶鏁版嵁 - memberInsuranceJoinMapper.update(null, new UpdateWrapper<MemberInsurance>().lambda() - .setSql(" fee = " + reduceFee) - .set(MemberInsurance::getEndTime,reduceDate) - .eq(MemberInsurance::getRelationId, oldModel.getId()) - ); + applyDetailJoinMapper.update(null, updateWrapper); + + List<MemberInsurance> oldMemberInsurance = memberInsuranceJoinMapper.selectList(new QueryWrapper<MemberInsurance>().lambda().eq(MemberInsurance::getRelationId,oldModel.getId())); + for (MemberInsurance memberInsurance:oldMemberInsurance) { + //璁板綍鏁版嵁鏃╀簬鎵瑰崟鏃ユ湡 + if(memberInsurance.getStartTime().getTime()>reduceDate.getTime()){ + memberInsurance.setIsValid(Constants.ONE); + }else if(memberInsurance.getEndTime().getTime()>=reduceDate.getTime() + && memberInsurance.getStartTime().getTime()<=reduceDate.getTime()){ + memberInsurance.setFee(reduceFee); + memberInsurance.setEndTime(reduceDate); + } + memberInsuranceJoinMapper.updateById(memberInsurance); + } + memberMapper.update(null,new UpdateWrapper<Member>() .lambda() @@ -1016,18 +1077,18 @@ //淇敼涓氬姟鏄庣粏琛屾暟鎹疄闄呮壒鍗曟棩鏈� applyChagneDetailJoinMapper.update(null,new UpdateWrapper<ApplyChagneDetail>().lambda() -// .setSql(" fee = ifnull(fee,0)+" + reduceFee) .set(ApplyChagneDetail::getFee,reduceFee.subtract(oldModel.getFee())) .set(ApplyChagneDetail::getEndTime,reduceDate) .eq(ApplyChagneDetail::getId,detail.getId()) ); + detail.setApplyDetailId(oldModel.getId()); } public void otherChangeDetailData(ApplyChange applyChange,ApplyChagneDetail detail,InsuranceApply insuranceApply){ //瀹為檯鎵瑰崟鐢熸晥鏃ユ湡 Date applyStartTime = DateUtil.getMontageDate(applyChange.getApplyStartTime(),1); //鏌ヨ鍑忎繚浜哄憳鏄惁瀛樺湪 鍐茬獊鐨� 淇濆崟鏄庣粏鏁版嵁 - if(applyDetailJoinMapper.selectCount(new QueryWrapper<ApplyDetail>() + /*if(applyDetailJoinMapper.selectCount(new QueryWrapper<ApplyDetail>() .lambda() .eq(ApplyDetail::getApplyId,applyChange.getApplyId()) .eq(ApplyDetail::getIdcardNo,detail.getIdcardNo()) @@ -1036,7 +1097,7 @@ )<=Constants.ZERO){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "褰撳墠淇濆崟涓嬶紝鎹㈠巶浜哄憳銆�" + detail.getMemberName() + "銆戞湭鏌ヨ鍒扮鍚堟壒鍗曟棩鏈熺殑鏁版嵁"); } - +*/ //鏌ヨ鍛樺伐鏄湪涓诲崟涓� 鏄惁瀛樺湪鐢熸晥涓殑鏁版嵁 ApplyDetail oldModel = applyDetailJoinMapper.selectOne(new QueryWrapper<ApplyDetail>().lambda() .eq(ApplyDetail::getApplyId, applyChange.getApplyId()) -- Gitblit v1.9.3