From 09da100729793848bc01b51f7b05ca3f1e7ec64f Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期四, 20 六月 2024 14:05:35 +0800
Subject: [PATCH] 提交一把

---
 server/service/src/main/java/com/doumee/service/business/impl/UnionApplyServiceImpl.java |   89 ++++++++++++++++++++++++++++++++------------
 1 files changed, 65 insertions(+), 24 deletions(-)

diff --git a/server/service/src/main/java/com/doumee/service/business/impl/UnionApplyServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/UnionApplyServiceImpl.java
index ba9b444..d702a41 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/UnionApplyServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/UnionApplyServiceImpl.java
@@ -156,14 +156,22 @@
                 .selectAs(Solutions::getOrtherInfo,UnionApply::getOrtherInfo)
                 .selectAs(Solutions::getSpecialAgreement,UnionApply::getSpecialAgreement)
                 .selectAs(Solutions::getSpecialInfo,UnionApply::getSpecialInfo);
-        queryWrapper.select("(select count(b.id) from apply_detail b where b.isdeleted=0 and b.union_apply_id=t.id) as insureNum ");
+        queryWrapper.select("(select count(distinct(b.MEMBER_ID)) from apply_detail b where b.isdeleted=0 and b.union_apply_id=t.id) as insureNum ");
+        queryWrapper.select("(select count(distinct(b.MEMBER_ID)) from apply_detail b where b.isdeleted=0   and b.END_TIME > now() and b.union_apply_id=t.id) as guaranteeNum ");
 
-        queryWrapper.select("(select count(1) from apply_change a inner join insurance_apply b on a.apply_id = b.id  where b.union_apply_id=t.id " +
-                "and b.status = "+Constants.InsuranceApplyStatus.WTB_TOUBAOING.getKey()+" and a.type = 0  ) as addApplyNum ");
+        if(pageWrap.getModel().getQueryFlag() == 1){
+            queryWrapper.select("(select count(1) from apply_change a inner join insurance_apply b on a.apply_id = b.id  where b.union_apply_id=t.id " +
+                    "and a.status = "+Constants.ApplyChangeStatus.CHECHED_PASSED.getKey()+" and a.type = 0  ) as addApplyNum ");
+        }else  if(pageWrap.getModel().getQueryFlag() ==2){
+            queryWrapper.select("(select count(1) from apply_change a inner join insurance_apply b on a.apply_id = b.id  where b.union_apply_id=t.id " +
+                    "and a.status = "+Constants.ApplyChangeStatus.CHECHED_PASSED.getKey()+" and a.type = 1  ) as changeApplyNum ");
+        }else{
+            queryWrapper.select("(select count(1) from apply_change a inner join insurance_apply b on a.apply_id = b.id  where b.union_apply_id=t.id " +
+                    "and b.status = "+Constants.InsuranceApplyStatus.WTB_TOUBAOING.getKey()+" and a.type = 0  ) as addApplyNum ");
 
-        queryWrapper.select("(select count(1) from apply_change a inner join insurance_apply b on a.apply_id = b.id  where b.union_apply_id=t.id " +
-                "and b.status = "+Constants.InsuranceApplyStatus.WTB_TOUBAOING.getKey()+" and a.type = 1  ) as changeApplyNum ");
-
+            queryWrapper.select("(select count(1) from apply_change a inner join insurance_apply b on a.apply_id = b.id  where b.union_apply_id=t.id " +
+                    "and b.status = "+Constants.InsuranceApplyStatus.WTB_TOUBAOING.getKey()+" and a.type = 1  ) as changeApplyNum ");
+        }
         queryWrapper.leftJoin(Solutions.class,Solutions::getId,UnionApply::getSolutionId);
         LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
         if(Constants.equalsInteger(user.getType(),Constants.TWO)){
@@ -239,7 +247,8 @@
         }
         if (pageWrap.getModel().getSignApplyNo() != null) {
             queryWrapper.eq(UnionApply::getSignApplyNo, pageWrap.getModel().getSignApplyNo());
-        }if(pageWrap.getSorts().size() == 0){
+        }
+        if(pageWrap.getSorts().size() == 0){
             queryWrapper.orderByDesc(UnionApply::getCreateDate );
         }else {
             for(PageWrap.SortData sortData: pageWrap.getSorts()) {
@@ -309,6 +318,7 @@
                         .selectAs(Solutions::getName,UnionApply::getSolutionName)
                         .selectAs(Company::getName,UnionApply::getCompanyName)
                         .select(" ( select count(DISTINCT(ad.MEMBER_ID)) from apply_detail ad  where ad.UNION_APPLY_ID = t.id ) as insureNum")
+                        .select("(select count(distinct(b.MEMBER_ID)) from apply_detail b where b.isdeleted=0   and b.END_TIME > now() and b.union_apply_id=t.id) as guaranteeNum ")
                         .select(" ( select group_concat(DISTINCT(cd.name)) from insurance_apply ad left join company cd on ad.company_id = cd.id where ad.UNION_APPLY_ID = t.id ) as companyNames")
                         .leftJoin(Solutions.class,Solutions::getId,UnionApply::getSolutionId)
                         .leftJoin(Company.class,Company::getId,UnionApply::getCompanyId)
@@ -409,6 +419,14 @@
         if(solutions == null){
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝鏂规淇℃伅鏈夎锛岃鍒锋柊椤甸潰閲嶈瘯");
         }
+        //鏍规嵁鏂规鏌ヨ瀵瑰簲鐨勭粨鏉熸棩鏈�
+        CountCyclePriceDTO countCyclePriceDTO = new CountCyclePriceDTO();
+        countCyclePriceDTO.setSolutions(solutions);
+        countCyclePriceDTO.setStartDate(saveUnionApplyDTO.getStartDate());
+        Date endTime =  Constants.getCountCyclePriceVO(countCyclePriceDTO).getEndDate();
+        if(saveUnionApplyDTO.getEndDate().getTime()>endTime.getTime()) {
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝缁撴潫鏃ユ湡瓒呭嚭鏂规鍙厑璁告棩鏈熷懆鏈燂紝璇锋洿鏀瑰悗閲嶈瘯锛�");
+        }
         List<InsuranceApply> insuranceApplyList = insuranceApplyJoinMapper.selectJoinList(InsuranceApply.class,
                 new MPJLambdaWrapper<InsuranceApply>()
                         .selectAll(InsuranceApply.class)
@@ -451,8 +469,9 @@
         }
         BigDecimal fee = BigDecimal.ZERO;
         for (ApplyDetail applyDetail:applyDetailList) {
-            Integer oldDays = DateUtil.calculateBetween(applyDetail.getStartTime(),applyDetail.getEndTime(),0);
-            fee =fee.add(new BigDecimal(maxDays).multiply( applyDetail.getFee()).divide(new BigDecimal(oldDays),2,RoundingMode.HALF_UP));
+            fee =fee.add(
+                    Constants.reduceFee(solutions,solutions.getPrice(),applyDetail.getStartTime(),applyDetail.getEndTime(),saveUnionApplyDTO.getStartDate(),saveUnionApplyDTO.getEndDate())
+            );
         }
         unionApply.setFee(fee);
 
@@ -586,6 +605,10 @@
         if(CollectionUtils.isNotEmpty(uploadMultifileDTO.getMultifileList())){
             List<Multifile> multifileList = uploadMultifileDTO.getMultifileList();
             for (Multifile multifile:multifileList) {
+                if(StringUtils.isBlank(multifile.getName())
+                || StringUtils.isBlank(multifile.getFileurl()) ){
+                    continue;
+                }
                 if(Objects.isNull(multifile.getObjId())
                     ||Objects.isNull(multifile.getName())
                     ||Objects.isNull(multifile.getFileurl())){
@@ -655,14 +678,14 @@
     public  String getSignLink(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());
+//        }
         LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
         if(!user.getType().equals(Constants.TWO)){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炲晢鎴风敤鎴凤紝鏃犳硶杩涜璇ユ搷浣滐紒");
@@ -741,6 +764,18 @@
         if(!unionApply.getStatus().equals(Constants.UnionApplyStatus.UPLOAD_INSURANCE_POLICY.getKey())){
             throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ュ悎骞跺崟鐘舵�佸凡娴佽浆锛屽綋鍓嶄笉鏀寔璇ユ搷浣渵");
         }
+        Solutions solutions = solutionsMapper.selectById(unionApply.getSolutionId());
+        if(Objects.isNull(solutions)){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鏈煡璇㈠埌鏂规淇℃伅");
+        }
+        //鏍规嵁鏂规鏌ヨ瀵瑰簲鐨勭粨鏉熸棩鏈�
+        CountCyclePriceDTO countCyclePriceDTO = new CountCyclePriceDTO();
+        countCyclePriceDTO.setSolutions(solutions);
+        countCyclePriceDTO.setStartDate(unionApplyBXDDTO.getStartTime());
+        Date endTime =  Constants.getCountCyclePriceVO(countCyclePriceDTO).getEndDate();
+        if(unionApplyBXDDTO.getEndTime().getTime()>endTime.getTime()) {
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝缁撴潫鏃ユ湡瓒呭嚭鏂规鍙厑璁告棩鏈熷懆鏈燂紝璇锋洿鏀瑰悗閲嶈瘯锛�");
+        }
         //鍔犱环鍙傛暟
         List<UnionApplyBXDDetailDTO> unionApplyBXDDetailDTOList = unionApplyBXDDTO.getUnionApplyBXDDDetailDTOList();
 
@@ -783,16 +818,12 @@
                 continue;
             }
             BigDecimal price = Constants.formatBigdecimal(applyDetails.get(Constants.ZERO).getPrice());
-
             Optional<UnionApplyBXDDetailDTO> unionApplyBXDDDetailTO= unionApplyBXDDetailDTOList.stream().filter(
                     m->m.getApplyId().equals(insuranceApply.getId())).findFirst();
             BigDecimal serverCost = BigDecimal.ZERO;
             if(unionApplyBXDDDetailTO.isPresent()){
                 UnionApplyBXDDetailDTO unionApplyBXDDetailDTO = unionApplyBXDDDetailTO.get();
                 serverCost = unionApplyBXDDetailDTO.getServerMoney();
-                BigDecimal dayServerMoney = unionApplyBXDDetailDTO.getServerMoney().divide(new BigDecimal(maxDays),2, RoundingMode.HALF_UP);
-
-                price = Constants.formatBigdecimal(price).add(Constants.formatBigdecimal(dayServerMoney));
                 //涓婁紶淇濆崟淇℃伅
                 if(StringUtils.isNotBlank(unionApplyBXDDetailDTO.getFileUrl())){
                     Multifile multifile = new Multifile();
@@ -813,9 +844,12 @@
             //瀹為檯宸蹭骇鐢熻垂鐢紙鍗曚汉锛�
             BigDecimal currentFee = BigDecimal.ZERO;
             if(useDays==-1){
-                currentFee =  new BigDecimal(maxDays).multiply(price);
+                currentFee = solutions.getPrice().add(serverCost);
             }else if(useDays>0){
-                currentFee =  new BigDecimal(useDays).multiply(price);
+                currentFee = Constants.produceFee(solutions,solutions.getPrice().add(serverCost)
+                        ,unionApplyBXDDTO.getStartTime(),unionApplyBXDDTO.getEndTime(),
+                        unionApplyBXDDTO.getStartTime()
+                );
             }
             //鐢熸垚鎶曚繚璁板綍
             if(CollectionUtils.isNotEmpty(applyDetailList)){
@@ -823,7 +857,7 @@
                 for (ApplyDetail applyDetail:applyDetailList.stream()
                         .filter(m->Constants.equalsInteger(m.getApplyId(),(insuranceApply.getId()))).collect(Collectors.toList())) {
                     applyDetail.setPrice(price);
-                    applyDetail.setFee(price.multiply(new BigDecimal(maxDays)));
+                    applyDetail.setFee(price.multiply(new BigDecimal(maxDays)).add(serverCost));
                     applyDetail.setStartTime(unionApplyBXDDTO.getStartTime());
                     applyDetail.setEndTime(unionApplyBXDDTO.getEndTime());
                     MemberInsurance memberInsurance = new MemberInsurance(applyDetail,user.getId());
@@ -843,12 +877,18 @@
                 }
                 memberInsuranceJoinMapper.insertBatchSomeColumn(memberInsuranceList);
             }
+            BigDecimal detailFee = Constants.reduceFee(solutions,solutions.getPrice().add(serverCost),insuranceApply.getStartTime(),insuranceApply.getFinalEndTime(),
+                    unionApplyBXDDTO.getStartTime(),unionApplyBXDDTO.getEndTime());
+
+            BigDecimal applyFee =  detailFee.multiply(new BigDecimal(applyDetails.size()));
+
+            Date finalEndTime =  endTime;
 
             //鏇存柊鎶曚繚鐢宠鍗�
             insuranceApplyJoinMapper.update(null,new UpdateWrapper<InsuranceApply>().lambda()
                     .set(InsuranceApply::getUnionApplyTbdStatus,Constants.THREE)
                     .set(InsuranceApply::getStatus,Constants.InsuranceApplyStatus.WTB_DONE.getKey())
-                    .set(InsuranceApply::getFee,price.multiply(new BigDecimal(applyDetails.size())).multiply(new BigDecimal(maxDays)))
+                    .set(InsuranceApply::getFee,applyFee)
                     .set(InsuranceApply::getCurrentFee,currentFee.multiply(new BigDecimal(applyDetails.size())))
                     .set(InsuranceApply::getStartTime,unionApplyBXDDTO.getStartTime())
                     .set(InsuranceApply::getEndTime,unionApplyBXDDTO.getEndTime())
@@ -856,11 +896,12 @@
                     .set(InsuranceApply::getEditor,user.getId())
                     .set(InsuranceApply::getServerCost,serverCost)
                     .set(InsuranceApply::getCode,unionApplyBXDDTO.getCode())
+                    .set(InsuranceApply::getFinalEndTime,finalEndTime)
                     .eq(InsuranceApply::getId,insuranceApply.getId()));
             //鏇存柊鎶曚繚鍗曟槑缁嗛噾棰�
             applyDetailJoinMapper.update(null,new UpdateWrapper<ApplyDetail>().lambda()
                     .set(ApplyDetail::getPrice,price)
-                    .set(ApplyDetail::getFee, price.multiply(new BigDecimal(maxDays)))
+                    .set(ApplyDetail::getFee, detailFee)
                     .set(ApplyDetail::getCurrentFee,currentFee)
                     .set(ApplyDetail::getEditDate,new Date())
                     .set(ApplyDetail::getEditor,user.getId())
@@ -868,7 +909,7 @@
                     .set(ApplyDetail::getEndTime,unionApplyBXDDTO.getEndTime())
                     .in(ApplyDetail::getId,applyDetails.stream().map(m->m.getId()).collect(Collectors.toList()))
             );
-            sumFee = sumFee.add(price.multiply(new BigDecimal(applyDetails.size())).multiply(new BigDecimal(maxDays)));
+            sumFee = sumFee.add(applyFee);
             sumCurrFee = sumCurrFee.add(currentFee.multiply(new BigDecimal(applyDetails.size())));
         }
 
@@ -920,7 +961,7 @@
         List<UnionApply> unionApplyList = unionApplyJoinMapper.selectJoinList(UnionApply.class,new MPJLambdaWrapper<UnionApply>()
                 .selectAll(UnionApply.class)
                 .eq(UnionApply::getIsdeleted,Constants.ZERO)
-                .eq(UnionApply::getStatus,Constants.UnionApplyStatus.FINISH)
+                .eq(UnionApply::getStatus,Constants.UnionApplyStatus.FINISH.getKey())
                 .eq(!Objects.isNull(id),UnionApply::getId,id)
                 .le(UnionApply::getStartTime,DateUtil.getDate(new Date(),"yyyy-MM-dd") + " 00:00:00")
                 .ge(UnionApply::getEndTime,DateUtil.getDate(new Date(),"yyyy-MM-dd") + " 23:59:59")

--
Gitblit v1.9.3