From be0301e67768fb183df7e29f411a7e54dbf15c40 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期三, 08 五月 2024 10:37:58 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/1.0.1' into 1.0.1

---
 server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java |  122 ++++++++++++++++++++++++++++++++++------
 1 files changed, 102 insertions(+), 20 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 4da9d33..151b5c5 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
@@ -167,12 +167,14 @@
         noticesMapper.delete(new QueryWrapper<Notices>().lambda().eq(Notices::getObjType,noticeObjectType.getKey()).eq(Notices::getObjId,model.getId()));
         Notices notices = new Notices(noticeObjectType,Constants.ONE,model.getId(),solutions.getName(),
                 insuranceApply.getCompanyId(), Constants.NoticeType.FOUR);
+//        notices.setParam1(insuranceApply.getId().toString());
         noticesMapper.insert(notices);
 
         Constants.ApplyLogType applyLogType = Constants.ApplyLogType.CA_PLATFORM_CHECK_PASS_NO;
         String info =applyLogType.getInfo();
         info = info.replace("${param}", update.getCheckInfo());
-        ApplyLog log = new ApplyLog(update,applyLogType.getName(),info,update.getId(),applyLogType.getKey(), JSONObject.toJSONString(model), JSONObject.toJSONString(update));
+        ApplyLog log = new ApplyLog(update,applyLogType.getName(),
+                info,update.getId(),applyLogType.getKey(), JSONObject.toJSONString(model), JSONObject.toJSONString(update));
         applyLogMapper.insert(log);
         return  1;
 
@@ -193,6 +195,10 @@
         ApplyChange model = applyChangeMapper.selectById(param.getId());
         if(model == null ||!Constants.equalsInteger(model.getIsdeleted(),Constants.ZERO)){
             throw  new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        if(!Constants.equalsInteger(model.getType(),Constants.ONE)&&
+                 param.getDelValidTime() == null ){
+            throw  new BusinessException(ResponseStatus.BAD_REQUEST);
         }
         if(!Constants.equalsInteger(model.getStatus(),Constants.ApplyChangeStatus.SIGNATURE.getKey())){
             throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ョ敵璇风姸鎬佸凡娴佽浆锛屽綋鍓嶄笉鏀寔璇ユ搷浣渵");
@@ -215,6 +221,7 @@
         update.setId(model.getId());
         update.setValidCode(param.getValidCode());
         update.setApplyStartTime(param.getApplyStartTime());
+        update.setDelValidTime(param.getDelValidTime());
         update.setCode(model.getCode());
 
         param.getPidanFile().setIsdeleted(Constants.ZERO);
@@ -240,6 +247,15 @@
 //        if(1==1){
 //            throw new BusinessException(ResponseStatus.DATA_EMPTY);
 //        }
+
+
+        Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.APPLY_CHANGE;
+        if(model.getType().equals(Constants.ONE)){
+            noticeObjectType = Constants.NoticeObjectType.CHANGE_FACTORY;
+        }
+        //鍒犻櫎鍏朵粬寰呭姙
+        noticesMapper.delete(new QueryWrapper<Notices>().lambda().eq(Notices::getObjType,noticeObjectType.getKey()).eq(Notices::getObjId,model.getId()));
+
 
         Constants.ApplyLogType applyLogType = Constants.ApplyLogType.CA_PLATFORM_APPROVE;
         String info = "";
@@ -320,7 +336,7 @@
     }
 
     /**
-     * 澶勭悊鍔犲噺淇濇槑缁嗘暟鎹�
+     * 澶勭悊鎹㈠巶鏄庣粏鏁版嵁
      * @param update
      */
     private void dealDetailsDUdata(ApplyChange update,InsuranceApply insuranceApply) {
@@ -351,7 +367,6 @@
         //瀹為檯鎵瑰崟鐢熸晥鏃ユ湡
         Date applyStartTime = DateUtil.getMontageDate(update.getApplyStartTime(),1);
         for(ApplyChagneDetail detail : detailList){
-            //鏌ヨ鍑忎繚浜哄憳鏄惁瀛樺湪 鍐茬獊鐨� 淇濆崟鏄庣粏鏁版嵁
             if(applyDetailJoinMapper.selectCount(new QueryWrapper<ApplyDetail>()
                     .lambda()
                     .eq(ApplyDetail::getApplyId,update.getApplyId())
@@ -831,7 +846,21 @@
         applyChange.setEditor(loginUserInfo.getId());
         applyChange.setEditDate(new Date());
         applyChange.setIsdeleted(Constants.ZERO);
-        applyChange.setApplyStartTime(applyChange.getValidTime());
+        //鏍规嵁鐢宠鏃ユ湡 澶勭悊鍔犲噺淇濈殑 瀹為檯鐢熸晥鏃ユ湡
+        if(Objects.nonNull(solutions.getAddValidDays())){
+            applyChange.setApplyStartTime(
+                    DateUtil.afterDateByType(applyChange.getValidTime(),0,solutions.getAddValidDays())
+            );
+        }else{
+            applyChange.setApplyStartTime(applyChange.getValidTime());
+        }
+        if(Objects.nonNull(solutions.getDelValidDays())){
+            applyChange.setDelValidTime(
+                    DateUtil.afterDateByType(applyChange.getValidTime(),0,solutions.getDelValidDays())
+            );
+        }else{
+            applyChange.setDelValidTime(applyChange.getValidTime());
+        }
         applyChange.setStatus(Constants.ZERO);
         applyChangeMapper.insert(applyChange);
 
@@ -883,7 +912,9 @@
         if (Objects.isNull(insuranceApply)) {
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
-        if (!Constants.equalsInteger(insuranceApply.getStatus(),Constants.InsuranceApplyStatus.UPLOAD_INSURANCE.getKey())) {
+        if (!(Constants.equalsInteger(insuranceApply.getStatus(),Constants.InsuranceApplyStatus.UPLOAD_INSURANCE.getKey())
+        ||Constants.equalsInteger(insuranceApply.getStatus(),Constants.InsuranceApplyStatus.WTB_DONE.getKey())
+        )) {
             throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(), "淇濆崟鐘舵�侀敊璇�");
         }
         if (DateUtil.compareDate(insuranceApply.getEndTime(),new Date()) >= Constants.ZERO
@@ -939,6 +970,11 @@
         ApplyLog log = new ApplyLog(applyChange,applyLogType.getName(),info,applyChange.getId(),applyLogType.getKey(), null, null);
         applyLogMapper.insert(log);
 
+        Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.APPLY_CHANGE;
+        if(applyChange.getType().equals(Constants.ONE)){
+            noticeObjectType = Constants.NoticeObjectType.CHANGE_FACTORY;
+        }
+        noticesMapper.delete(new QueryWrapper<Notices>().lambda().eq(Notices::getObjType,noticeObjectType.getKey()).eq(Notices::getObjId,applyChange.getId()));
 
         return applyChange.getId();
     }
@@ -975,10 +1011,15 @@
         applyChangeCyclePriceDTO.setApplyId(insuranceApply.getId());
         //鍔犱繚鏁版嵁
         List<ApplyChagneDetail> addDetailList = applyChange.getAddDetailList();
+        Integer addDetailSize  = 0 ;
         if (CollectionUtils.isNotEmpty(addDetailList)) {
-            if(companySolution.getCanAdd().equals(Constants.ZERO)){
-                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "璇ヤ紒涓氬垎閰嶄繚闄╂柟妗堟棤娉曡繘琛屽姞淇�");
+            addDetailSize = addDetailList.size();
+            if(Objects.isNull(solutions.getCanAdd()) || solutions.getCanAdd().equals(Constants.ZERO)){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "璇ヤ繚闄╂柟妗堟棤娉曡繘琛屽姞淇�");
             }
+//            if(companySolution.getCanAdd().equals(Constants.ZERO)){
+//                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "璇ヤ紒涓氬垎閰嶄繚闄╂柟妗堟棤娉曡繘琛屽姞淇�");
+//            }
             //楠岃瘉鏄惁瀛樺湪閲嶅鏁版嵁
             List<String> idcarNo = addDetailList.stream().map(m->m.getIdcardNo()).collect(Collectors.toList());
             Set<String> set = new HashSet<>(idcarNo);
@@ -998,28 +1039,49 @@
 
         //鍑忎繚鏁版嵁
         List<ApplyChagneDetail> delDetailList = applyChange.getDelDetailList();
+        Integer delDetailSize  = 0 ;
         if (CollectionUtils.isNotEmpty(delDetailList)) {
+            delDetailSize  = delDetailList.size() ;
             //楠岃瘉鏄惁瀛樺湪閲嶅鏁版嵁
             List<String> idcarNo = delDetailList.stream().map(m->m.getIdcardNo()).collect(Collectors.toList());
             Set<String> set = new HashSet<>(idcarNo);
             if(idcarNo.size() != set.size()){
                 throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(),"瀵逛笉璧凤紝浜哄憳褰曞叆鏁版嵁瀛樺湪鐩稿悓鏁版嵁锛�");
             }
-
-            if(companySolution.getCanReduce().equals(Constants.ZERO)){
-                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "璇ヤ紒涓氬垎閰嶄繚闄╂柟妗堟棤娉曡繘琛屽噺淇�");
+            if(Objects.isNull(solutions.getCanReduce()) || solutions.getCanReduce().equals(Constants.ZERO)){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "璇ヤ繚闄╂柟妗堟棤娉曡繘琛屽噺淇�");
             }
+//            if(companySolution.getCanReduce().equals(Constants.ZERO)){
+//                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "璇ヤ紒涓氬垎閰嶄繚闄╂柟妗堟棤娉曡繘琛屽噺淇�");
+//            }
             //鍑忎繚鏄庣粏鏁版嵁 璁$畻閲戦  鏍规嵁鎵瑰崟鏃堕棿 鍓嶄竴澶� 璁$畻
-            applyChangeCyclePriceDTO.setValidTime(DateUtil.getMontageDate(applyChange.getValidTime(),2));
+            applyChangeCyclePriceDTO.setValidTime(DateUtil.getMontageDate(applyChange.getValidTime(),3));
+
             CountCyclePriceVO countCyclePriceVO =  this.getChangeCountCyclePriceVO(applyChangeCyclePriceDTO);
             BigDecimal detailFee = countCyclePriceVO.getCyclePrice();
             this.delChangeDetail(applyChange,delDetailList,insuranceApply,solutions,loginUserInfo,detailFee,applyChangeCyclePriceDTO.getValidTime());
             fee = fee.add(delDetailList.stream().map(ApplyChagneDetail::getFee).reduce(BigDecimal.ZERO,BigDecimal::add));
         }
 
+        if(Objects.nonNull(solutions.getDelOnlyReplace())&& solutions.getDelOnlyReplace().equals(Constants.ONE)){
+            if(delDetailSize > addDetailSize){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "璇ヤ繚闄╂柟妗堜粎鏀寔鏇挎崲");
+            }
+        }
+
         //鎹㈠巶涓氬姟
         List<ApplyChagneDetail> changeDetailList = applyChange.getChangeDetailList();
         if (CollectionUtils.isNotEmpty(changeDetailList)) {
+            if(Objects.isNull(solutions.getCanChangeUnit()) || solutions.getCanChangeUnit().equals(Constants.ZERO)){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "璇ヤ繚闄╂柟妗堟棤娉曡繘琛屾崲鍘傛搷浣�");
+            }
+            //楠岃瘉鏄惁瀛樺湪閲嶅鏁版嵁
+            List<String> idcarNo = changeDetailList.stream().map(m->m.getIdcardNo()).collect(Collectors.toList());
+            Set<String> set = new HashSet<>(idcarNo);
+            if(idcarNo.size() != set.size()){
+                throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(),"瀵逛笉璧凤紝浜哄憳褰曞叆鏁版嵁瀛樺湪鐩稿悓鏁版嵁锛�");
+            }
+
             this.changeDetail(applyChange,changeDetailList,duWorktypeList,duSolutionList,loginUserInfo);
         }
         return fee;
@@ -1097,6 +1159,7 @@
                 throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鍑忎繚浜哄憳銆�" + applyChagneDetail.getMemberName() + "銆戜繚鍗曚繚闅滄棩鏈熻嚦锛氥��" + applyDetail.getEndTime() + "銆戞棤娉曢�氳繃鏈鐢宠");
             }
 
+
             applyChagneDetail.setPrice(applyDetail.getPrice());
             applyChagneDetail.setCreateDate(new Date());
             applyChagneDetail.setCreator(loginUserInfo.getId());
@@ -1114,7 +1177,10 @@
             member.setEndTime(applyChagneDetail.getEndTime());
             memberMapper.updateById(member);
 
-            applyChagneDetail.setFee( detailFee.multiply(new BigDecimal(-1)));
+            //鏌ヨ鍑忎繚鏃ユ湡
+            Integer delDays = DateUtil.daysBetweenDates(applyDetail.getEndTime(),endTime);
+
+            applyChagneDetail.setFee( new BigDecimal(delDays).multiply(applyDetail.getPrice()).multiply(new BigDecimal(-1)));
             applyChagneDetailJoinMapper.insert(applyChagneDetail);
         }
     }
@@ -1499,11 +1565,11 @@
         }else if(loginUserInfo.getType().equals(Constants.TWO)){
             //濡傛灉鏄晢鎴锋煡鐪�
             if(pageWrap.getModel().getSolutionType()!=null && pageWrap.getModel().getSolutionType() ==0){
-                queryWrapper.exists("select cs.id from company_solution cs where cs.isdeleted=0 and cs.company_id=t1.company_id and cs.shop_id="+loginUserInfo.getCompanyId());
+                queryWrapper.exists("select cs.id from company_solution cs where cs.isdeleted=0 AND cs.SOLUTION_ID = t1.SOLUTION_ID  and cs.shop_id="+loginUserInfo.getCompanyId());
             }else if(pageWrap.getModel().getSolutionType()!=null && pageWrap.getModel().getSolutionType() ==1){
                 queryWrapper.eq(Solutions::getShopId,loginUserInfo.getCompanyId());
             }else{
-                queryWrapper.apply("((t1.type=0 and exists(select cs.id from company_solution cs where cs.isdeleted=0 and cs.company_id=t1.company_id and cs.shop_id="+loginUserInfo.getCompanyId()+")) or (" +
+                queryWrapper.apply("((t1.type=0 and exists(select cs.id from company_solution cs where cs.isdeleted=0 AND cs.SOLUTION_ID = t1.SOLUTION_ID  and cs.shop_id="+loginUserInfo.getCompanyId()+")) or (" +
                         "t2.type=1 and t2.shop_id="+loginUserInfo.getCompanyId()+"))") ;
             }
         }else{
@@ -1757,6 +1823,7 @@
                 .select("( select count(1) from apply_chagne_detail ad where t.id = ad.APPLY_CHANGE_ID and ad.TYPE = 0  )",ApplyChange::getAddNum)
                 .select("( select count(1) from apply_chagne_detail ad where t.id = ad.APPLY_CHANGE_ID and ad.TYPE = 1  )",ApplyChange::getDelNum)
                 .select("( select count(1) from apply_chagne_detail ad where t.id = ad.APPLY_CHANGE_ID and ad.TYPE = 2  )",ApplyChange::getChangeNum)
+                .select(" ( select max(ac.APPLY_START_TIME) from apply_change ac  where ac.apply_id = t.apply_id and ac.status = 2 ) as lastChangeDate")
                 .leftJoin(InsuranceApply.class,InsuranceApply::getId,ApplyChange::getApplyId)
                 .leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId)
                 .leftJoin(Company.class,Company::getId,InsuranceApply::getCompanyId)
@@ -2026,7 +2093,7 @@
         CountCyclePriceVO returnCountCyclePriceVO = new CountCyclePriceVO();
         //鍔犲噺淇濋噾棰�
 //        returnCountCyclePriceVO.setCyclePrice(sumPrice.multiply(new BigDecimal(optDays)).divide(new BigDecimal(sumDays),2, RoundingMode.HALF_UP));
-        returnCountCyclePriceVO.setCyclePrice(applyDetail.getPrice().multiply(new BigDecimal(optDays)));
+        returnCountCyclePriceVO.setCyclePrice(applyDetail.getPrice().multiply(new BigDecimal(optDays)).setScale(2, RoundingMode.HALF_UP));
         return returnCountCyclePriceVO;
     }
 
@@ -2092,14 +2159,14 @@
     public String getChangeMemberListOnlineSignLink(SmsCheckDTO smsCheckDTO) {
         if(Objects.isNull(smsCheckDTO)
                 || Objects.isNull(smsCheckDTO.getBusinessId())
-                || StringUtils.isBlank(smsCheckDTO.getCode())
+//                || StringUtils.isBlank(smsCheckDTO.getCode())
         ){
             throw  new BusinessException(ResponseStatus.BAD_REQUEST);
         }
         //楠岃瘉 楠岃瘉鐮�
-        if(!debugModel){
-            smsEmailService.validateCode(smsCheckDTO.getCode());
-        }
+//        if(!debugModel){
+//            smsEmailService.validateCode(smsCheckDTO.getCode());
+//        }
         ApplyChange model = this.queryApplyChangeData(smsCheckDTO.getBusinessId());
         if(Objects.isNull(model)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠姞鍑忎繚/鎹㈠巶淇℃伅");
@@ -2167,6 +2234,9 @@
         }
         if(applyChange.getId() == null){
             throw  new BusinessException(ResponseStatus.BAD_REQUEST);
+        } 
+        if(Objects.isNull(applyChange)){
+            throw  new BusinessException(ResponseStatus.DATA_EMPTY);
         }
         ApplyChange model = applyChangeJoinMapper.selectJoinOne(ApplyChange.class,
                 new MPJLambdaWrapper<ApplyChange>()
@@ -2206,8 +2276,20 @@
             update.setStatus(Constants.ApplyChangeStatus.CHECHED_PASSED.getKey());
         }
         applyChangeJoinMapper.updateById(update);
+
+
+        Constants.ApplyLogType applyLogType = Constants.ApplyLogType.CA_HBD_AUDIT;
+        String info = applyChange.getCheckInfo();
+        if(StringUtils.isNotBlank(applyChange.getCheckInfo())){
+            info = info.replace("${param}", applyChange.getCheckInfo());
+        }else{
+            info = info.replace("${param}", "");
+        }
+        ApplyLog log = new ApplyLog(update,applyLogType.getName(),info,update.getId(),applyLogType.getKey(), null, null);
+        applyLogMapper.insert(log);
+
         Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.APPLY_CHANGE;
-        if(Constants.equalsInteger(applyChange.getType(),Constants.ONE)){
+        if(Constants.equalsInteger(model.getType(),Constants.ONE)){
             noticeObjectType = Constants.NoticeObjectType.CHANGE_FACTORY;
         }
         //鍒犻櫎鍏ㄩ儴寰呭姙

--
Gitblit v1.9.3