From 15ef66d5eb25490cb4684c32598ca25f54cd9c4b Mon Sep 17 00:00:00 2001 From: k94314517 <8417338+k94314517@user.noreply.gitee.com> Date: 星期四, 20 六月 2024 14:07:54 +0800 Subject: [PATCH] git ch --- server/service/src/main/java/com/doumee/service/business/impl/UnionChangeServiceImpl.java | 113 +++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 75 insertions(+), 38 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..84d727f 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 @@ -176,6 +176,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)){ @@ -796,7 +797,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 +827,9 @@ ,unionChange.getId(),applyLogType.getKey(),null, JSONObject.toJSONString(unionChange)); applyLogMapper.insert(log); -// if(true){ -// throw new BusinessException(ResponseStatus.NOT_ALLOWED); -// } + if(true){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED); + } } @@ -841,19 +841,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) { 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(),"鏈煡璇㈠埌鍛樺伐鏁版嵁"); + } + 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 +889,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.getId(), + 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 +928,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()); @@ -985,19 +1003,37 @@ 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(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())); +// //濡傛灉鍑忎繚鐨勬暟鎹� 宸茬粡缁撴潫 鍒欐鏁版嵁瑕佸幓鎺� 鍑忛櫎鐨勫疄闄呭樊鍊� reduceMoney +// if(System.currentTimeMillis()>detail.getEndTime().getTime()){ +// bigDecimalVO.setCurrentFee(bigDecimalVO.getCurrentFee().add(reduceMoney)); +// } + applyDetailJoinMapper.update(null, updateWrapper); //淇敼 鍛樺伐鎶曚繚鏄庣粏璁板綍 鍘嗗彶鏁版嵁 memberInsuranceJoinMapper.update(null, new UpdateWrapper<MemberInsurance>().lambda() .setSql(" fee = " + reduceFee) @@ -1021,6 +1057,7 @@ .set(ApplyChagneDetail::getEndTime,reduceDate) .eq(ApplyChagneDetail::getId,detail.getId()) ); + detail.setApplyDetailId(oldModel.getId()); } public void otherChangeDetailData(ApplyChange applyChange,ApplyChagneDetail detail,InsuranceApply insuranceApply){ -- Gitblit v1.9.3