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