From 5bce819f4a418f9ae352eb105e33707de1e0c1ce Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期三, 31 一月 2024 14:07:44 +0800
Subject: [PATCH] 111

---
 server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java |  112 ++++++++++++++++++++++++++++++++-----
 server/service/src/main/java/com/doumee/service/business/impl/ApplyDetailServiceImpl.java |    5 +
 server/service/src/main/java/com/doumee/dao/business/dto/ApplyDetailPageDTO.java          |    5 +
 server/service/src/main/java/com/doumee/service/business/ApplyChangeService.java          |    1 
 server/service/src/main/java/com/doumee/dao/business/model/ApplyChange.java               |    4 +
 server/company/src/main/java/com/doumee/api/business/InsuranceApplyController.java        |    3 -
 server/company/src/main/java/com/doumee/api/business/ApplyChangeController.java           |   14 ++--
 7 files changed, 120 insertions(+), 24 deletions(-)

diff --git a/server/company/src/main/java/com/doumee/api/business/ApplyChangeController.java b/server/company/src/main/java/com/doumee/api/business/ApplyChangeController.java
index e0c12bf..caa4af1 100644
--- a/server/company/src/main/java/com/doumee/api/business/ApplyChangeController.java
+++ b/server/company/src/main/java/com/doumee/api/business/ApplyChangeController.java
@@ -4,8 +4,10 @@
 import com.doumee.core.annotation.excel.ExcelExporter;
 import com.doumee.core.annotation.pr.PreventRepeat;
 import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.LoginUserInfo;
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.model.PageData;
+import com.doumee.core.utils.Constants;
 import com.doumee.dao.business.dto.ApplyChangeCyclePriceDTO;
 import com.doumee.dao.business.dto.ApplyChangeOptDTO;
 import com.doumee.dao.business.dto.CountCyclePriceDTO;
@@ -15,7 +17,8 @@
 import com.doumee.service.business.ApplyChangeService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.RequiresPermissions;    
+import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import javax.servlet.http.HttpServletResponse;
@@ -64,11 +67,11 @@
         return ApiResponse.success(null);
     }
 
-    @ApiOperation("鏍规嵁ID淇敼")
-    @PostMapping("/updateById")
+    @ApiOperation("淇敼淇℃伅")
+    @PostMapping("/update")
     @RequiresPermissions("business:applychange:update")
-    public ApiResponse updateById(@RequestBody ApplyChange applyChange) {
-        applyChangeService.updateById(applyChange);
+    public ApiResponse update(@RequestBody ApplyChange applyChange) {
+        applyChangeService.update(applyChange);
         return ApiResponse.success(null);
     }
 
@@ -116,7 +119,6 @@
     public ApiResponse findById(@PathVariable Integer id) {
         return ApiResponse.success(applyChangeService.findDetail(id));
     }
-
 
     @ApiOperation(value = "涓氬姟澶勭悊",notes = "閫�鍥炵敵璇凤紝鍏抽棴绛�")
     @PostMapping("/applyChangeOpt")
diff --git a/server/company/src/main/java/com/doumee/api/business/InsuranceApplyController.java b/server/company/src/main/java/com/doumee/api/business/InsuranceApplyController.java
index 657a943..be8ece9 100644
--- a/server/company/src/main/java/com/doumee/api/business/InsuranceApplyController.java
+++ b/server/company/src/main/java/com/doumee/api/business/InsuranceApplyController.java
@@ -136,9 +136,6 @@
     }
 
 
-
-
-
     @ApiOperation("娴嬭瘯瀹為檯閲戦")
     @GetMapping("/testFee")
     public ApiResponse testFee(@RequestParam Integer id) {
diff --git a/server/service/src/main/java/com/doumee/dao/business/dto/ApplyDetailPageDTO.java b/server/service/src/main/java/com/doumee/dao/business/dto/ApplyDetailPageDTO.java
index b51654a..ff00756 100644
--- a/server/service/src/main/java/com/doumee/dao/business/dto/ApplyDetailPageDTO.java
+++ b/server/service/src/main/java/com/doumee/dao/business/dto/ApplyDetailPageDTO.java
@@ -16,6 +16,7 @@
     @ApiModelProperty(value = "鍦ㄤ繚鐘舵�侊細1=淇濋殰涓紱2=涓嶅湪淇濓紱 0=鍏ㄩ儴")
     private Integer applyStatus;
 
+
     @ApiModelProperty(value = "娲鹃仯鍗曚綅涓婚敭")
     private Integer duId;
 
@@ -24,6 +25,10 @@
 
     @ApiModelProperty(value = "鍛樺伐濮撳悕")
     private String memberName;
+
+    @ApiModelProperty(value = "鍛樺伐涓婚敭")
+    private Integer memberId;
+
     @ApiModelProperty(value = "鍛樺伐濮撳悕",hidden = true)
     private String companyName;
     @ApiModelProperty(value = "鏂规鍚嶇О",hidden = true)
diff --git a/server/service/src/main/java/com/doumee/dao/business/model/ApplyChange.java b/server/service/src/main/java/com/doumee/dao/business/model/ApplyChange.java
index a5ad527..75d793f 100644
--- a/server/service/src/main/java/com/doumee/dao/business/model/ApplyChange.java
+++ b/server/service/src/main/java/com/doumee/dao/business/model/ApplyChange.java
@@ -153,6 +153,10 @@
     @TableField(exist = false)
     private Integer solutionsId;
 
+    @ApiModelProperty(value = "鍩鸿〃淇濋櫓鏂规涓婚敭")
+    @TableField(exist = false)
+    private Integer baseSolutionsId;
+
     @ApiModelProperty(value = "鍔犱繚鏄庣粏鏁版嵁")
     @TableField(exist = false)
     private List<ApplyChagneDetail> addDetailList;
diff --git a/server/service/src/main/java/com/doumee/service/business/ApplyChangeService.java b/server/service/src/main/java/com/doumee/service/business/ApplyChangeService.java
index df79445..14b0e80 100644
--- a/server/service/src/main/java/com/doumee/service/business/ApplyChangeService.java
+++ b/server/service/src/main/java/com/doumee/service/business/ApplyChangeService.java
@@ -24,6 +24,7 @@
      * @return Integer
      */
     Integer create(ApplyChange applyChange);
+    Integer update(ApplyChange applyChange);
     Integer back(ApplyChange param);
     Integer dealBackApply(ApplyChange param);
     Integer uploadPidan(ApplyChange insuranceApply);
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 3370231..832c861 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
@@ -454,11 +454,12 @@
         if (!loginUserInfo.getType().equals(Constants.ONE)) {
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "鐢ㄦ埛绫诲瀷閿欒锛氶潪浼佷笟鐢ㄦ埛鏃犳硶杩涜璇ユ搷浣�");
         }
+        BigDecimal fee = BigDecimal.ZERO;
+
         InsuranceApply insuranceApply = insuranceApplyMapper.selectById(applyChange.getApplyId());
         if (Objects.isNull(insuranceApply)) {
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
-        System.out.println(Constants.InsuranceApplyStatus.UPLOAD_INSURANCE.getKey());
         if (!Constants.equalsInteger(insuranceApply.getStatus(),Constants.InsuranceApplyStatus.UPLOAD_INSURANCE.getKey())) {
             throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(), "淇濆崟鐘舵�侀敊璇�");
         }
@@ -491,6 +492,90 @@
         applyChange.setStatus(Constants.ZERO);
         applyChangeMapper.insert(applyChange);
 
+        this.dealApplyChangeData(applyChange,insuranceApply,companySolution,solutions,loginUserInfo,fee);
+
+        ApplyChange applyChangeFee = new ApplyChange();
+        applyChangeFee.setId(applyChange.getId());
+        applyChangeFee.setFee(fee);
+        applyChangeMapper.updateById(applyChangeFee);
+
+        this.saveApplyLog(applyChange,Constants.ApplyChangeLogStatus.UPLOAD,null);
+        return applyChange.getId();
+    }
+
+
+
+
+    @Override
+    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
+    public Integer update(ApplyChange applyChange) {
+        if (Objects.isNull(applyChange)
+                || Objects.isNull(applyChange.getId())
+                || Objects.isNull(applyChange.getApplyId())
+                || Objects.isNull(applyChange.getValidTime())
+                || Objects.isNull(applyChange.getType())
+                || !(applyChange.getType().equals(Constants.ZERO) || applyChange.getType().equals(Constants.ONE))
+        ) {
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+        if (!loginUserInfo.getType().equals(Constants.ONE)) {
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "鐢ㄦ埛绫诲瀷閿欒锛氶潪浼佷笟鐢ㄦ埛鏃犳硶杩涜璇ユ搷浣�");
+        }
+        ApplyChange dbApplyChange = applyChangeMapper.selectById(applyChange.getId());
+        if(Objects.isNull(dbApplyChange)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        if(!dbApplyChange.getStatus().equals(Constants.ApplyChangeStatus.PLATFORM_AGREE.getKey())){
+            throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(), "涓氬姟淇濈敵璇峰崟鐘舵�侀敊璇�");
+        }
+
+        InsuranceApply insuranceApply = insuranceApplyMapper.selectById(applyChange.getApplyId());
+        if (Objects.isNull(insuranceApply)) {
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        if (!Constants.equalsInteger(insuranceApply.getStatus(),Constants.InsuranceApplyStatus.UPLOAD_INSURANCE.getKey())) {
+            throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(), "淇濆崟鐘舵�侀敊璇�");
+        }
+        if (DateUtil.compareDate(insuranceApply.getEndTime(),new Date()) >= Constants.ZERO
+        ) {
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "淇濆崟宸茶繃淇濓紝鏃犳硶杩涜璇ユ搷浣�");
+        }
+        Solutions solutions = solutionsMapper.selectById(insuranceApply.getSolutionId());
+        if(Objects.isNull(solutions)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌淇濋櫓鏂规");
+        }
+        CompanySolution companySolution = companySolutionMapper.selectOne(new QueryWrapper<CompanySolution>().lambda()
+                .eq(CompanySolution::getCompanyId,loginUserInfo.getCompanyId())
+                .eq(CompanySolution::getSolutionBaseId,solutions.getId())
+                .eq(CompanySolution::getIsdeleted,Constants.ZERO)
+                .last(" limit 1 ")
+        );
+        if(Objects.isNull(companySolution)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌浼佷笟鍒嗛厤淇濋櫓鏂规淇℃伅");
+        }
+        //鐢宠鏃堕棿蹇呴』澶勪簬淇濆崟鐨勬椂闂磋寖鍥村唴
+        if (!(DateUtil.compareDate( insuranceApply.getStartTime(),applyChange.getValidTime()) >= Constants.ZERO
+                && DateUtil.compareDate( applyChange.getValidTime(),insuranceApply.getEndTime()) >= Constants.ZERO)) {
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "鐢宠鏃ユ湡鏈浜庝繚鍗曟棩鏈熷唴锛屾棤娉曡繘琛岃鎿嶄綔");
+        }
+
+
+        applyChange.setEditDate(new Date());
+        applyChange.setEditor(loginUserInfo.getId());
+        applyChange.setStatus(Constants.ZERO);
+        BigDecimal fee = BigDecimal.ZERO;
+        this.dealApplyChangeData(applyChange,insuranceApply,companySolution,solutions,loginUserInfo,fee);
+        applyChange.setFee(fee);
+        applyChangeMapper.updateById(applyChange);
+        this.saveApplyLog(applyChange,Constants.ApplyChangeLogStatus.UPLOAD,null);
+        return applyChange.getId();
+    }
+
+
+    public void dealApplyChangeData(ApplyChange applyChange,InsuranceApply insuranceApply,CompanySolution companySolution,Solutions solutions,LoginUserInfo loginUserInfo,BigDecimal fee){
+
+
         //鏌ヨ淇濋櫓鏂规涓嬬殑鎵�鏈夋淳閬e崟浣�
         List<DuSolution>  duSolutionList = duSolutionJoinMapper.selectJoinList(DuSolution.class,new MPJLambdaWrapper<DuSolution>()
                 .selectAll(DuSolution.class)
@@ -514,17 +599,16 @@
         if (!CollectionUtils.isNotEmpty(duWorktypeList)) {
             throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鏁版嵁寮傚父锛氫繚闄╂柟妗堜笅鏈煡璇㈠埌宸ョ淇℃伅");
         }
-        BigDecimal fee = BigDecimal.ZERO;
+
         //鍔犱繚鏁版嵁
         List<ApplyChagneDetail> addDetailList = applyChange.getAddDetailList();
         if (CollectionUtils.isNotEmpty(addDetailList)) {
-           if(companySolution.getCanAdd().equals(Constants.ZERO)){
-               throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "璇ヤ紒涓氬垎閰嶄繚闄╂柟妗堟棤娉曡繘琛屽姞淇�");
-           }
+            if(companySolution.getCanAdd().equals(Constants.ZERO)){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "璇ヤ紒涓氬垎閰嶄繚闄╂柟妗堟棤娉曡繘琛屽姞淇�");
+            }
             this.addChangeDetail(applyChange,addDetailList,duWorktypeList,duSolutionList,insuranceApply,solutions,loginUserInfo);
 
             fee = addDetailList.stream().map(ApplyChagneDetail::getFee).reduce(BigDecimal.ZERO,BigDecimal::add);
-
         }
 
         //鍑忎繚鏁版嵁
@@ -533,23 +617,19 @@
             if(companySolution.getCanReduce().equals(Constants.ZERO)){
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "璇ヤ紒涓氬垎閰嶄繚闄╂柟妗堟棤娉曡繘琛屽噺淇�");
             }
-             this.delChangeDetail(applyChange,delDetailList,insuranceApply,solutions,loginUserInfo);
+            this.delChangeDetail(applyChange,delDetailList,insuranceApply,solutions,loginUserInfo);
             fee = fee.add(delDetailList.stream().map(ApplyChagneDetail::getFee).reduce(BigDecimal.ZERO,BigDecimal::add));
         }
-        ApplyChange applyChangeFee = new ApplyChange();
-        applyChangeFee.setId(applyChange.getId());
-        applyChangeFee.setFee(fee);
-        applyChangeMapper.updateById(applyChangeFee);
 
         //鎹㈠巶涓氬姟
         List<ApplyChagneDetail> changeDetailList = applyChange.getChangeDetailList();
         if (CollectionUtils.isNotEmpty(changeDetailList)) {
             this.changeDetail(applyChange,changeDetailList,duWorktypeList,duSolutionList,loginUserInfo);
         }
-
-        this.saveApplyLog(applyChange,Constants.ApplyChangeLogStatus.UPLOAD,null);
-        return applyChange.getId();
     }
+
+
+
 
 
     public void saveApplyLog(ApplyChange applyChange,Constants.ApplyChangeLogStatus applyChangeLogStatus,String content){
@@ -894,6 +974,7 @@
         queryWrapper
                 .selectAll(ApplyChange.class)
                 .selectAs(InsuranceApply::getCode,ApplyChange::getApplyCode)
+                .selectAs(Solutions::getName,ApplyChange::getSolutionsName)
                 .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)
@@ -906,7 +987,8 @@
                         Constants.ApplyChangeStatus.RETURN_APPLY_UPLOAD.getKey(),
                         Constants.ApplyChangeStatus.RETURN_APPLY_SIGNATURE.getKey())
                 .eq(!Objects.isNull(model.getCompanyId()),InsuranceApply::getCompanyId,model.getCompanyId())
-                .eq(!Objects.isNull(model.getSolutionsId()),ApplyChange::getSolutionsId,model.getSolutionsId())
+//                .eq(!Objects.isNull(model.getSolutionsId()),ApplyChange::getSolutionsId,model.getSolutionsId())
+                .eq(!Objects.isNull(model.getBaseSolutionsId()),Solutions::getBaseId,model.getBaseSolutionsId())
                 .ge(StringUtils.isNotBlank(model.getCreateDateS()),ApplyChange::getCreateDate, model.getCreateDateS()+" 00:00:00" )
                 .le(StringUtils.isNotBlank(model.getCreateDateE()),ApplyChange::getCreateDate, model.getCreateDateE()+" 23:59:59" );
 
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/ApplyDetailServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/ApplyDetailServiceImpl.java
index 638ff33..4936fdf 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/ApplyDetailServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/ApplyDetailServiceImpl.java
@@ -249,12 +249,16 @@
         MPJLambdaWrapper<ApplyDetail> queryWrapper = new MPJLambdaWrapper<>();
         queryWrapper.selectAll(ApplyDetail.class);
         queryWrapper.selectAs(DispatchUnit::getName,ApplyDetail::getDuName);
+        queryWrapper.selectAs(InsuranceApply::getCode,ApplyDetail::getApplyCode);
+        queryWrapper.selectAs(Solutions::getName,ApplyDetail::getSolutionName);
         queryWrapper.selectAs(Worktype::getName,ApplyDetail::getWorkTypeName);
         queryWrapper.selectAs(Member::getIdcardNo,ApplyDetail::getIdcardNo);
         queryWrapper.selectAs(Member::getName,ApplyDetail::getMemberName);
         queryWrapper.leftJoin(DispatchUnit.class,DispatchUnit::getId,ApplyDetail::getDuId);
         queryWrapper.leftJoin(Worktype.class,Worktype::getId,ApplyDetail::getWorktypeId);
         queryWrapper.leftJoin(Member.class,Member::getId,ApplyDetail::getMemberId);
+        queryWrapper.leftJoin(InsuranceApply.class,InsuranceApply::getId,ApplyDetail::getApplyId);
+        queryWrapper.leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId);
         queryWrapper.eq(!Objects.isNull(applyDetailPageDTO.getApplyId()),ApplyDetail::getApplyId,applyDetailPageDTO.getApplyId());
         queryWrapper.ge(!Objects.isNull(applyDetailPageDTO.getApplyStatus())
                         &&!applyDetailPageDTO.getApplyStatus().equals(Constants.ZERO),
@@ -270,6 +274,7 @@
         queryWrapper.eq(!Objects.isNull(applyDetailPageDTO.getDuId()),ApplyDetail::getDuId,applyDetailPageDTO.getDuId());
         queryWrapper.eq(!Objects.isNull(applyDetailPageDTO.getWorkTypeId()),ApplyDetail::getWorktypeId,applyDetailPageDTO.getWorkTypeId());
         queryWrapper.like(StringUtils.isNotBlank(applyDetailPageDTO.getMemberName()),Member::getName,applyDetailPageDTO.getMemberName());
+        queryWrapper.eq(!Objects.isNull(applyDetailPageDTO.getMemberId()),Member::getId,applyDetailPageDTO.getMemberId());
         queryWrapper.ge(StringUtils.isNotBlank(applyDetailPageDTO.getStartTimeS()),ApplyDetail::getStartTime,applyDetailPageDTO.getStartTimeS()+" 00:00:00");
         queryWrapper.le(StringUtils.isNotBlank(applyDetailPageDTO.getStartTimeE()),ApplyDetail::getStartTime,applyDetailPageDTO.getStartTimeE()+" 23:59:59");
         queryWrapper.ge(StringUtils.isNotBlank(applyDetailPageDTO.getEndTimeS()),ApplyDetail::getEndTime,applyDetailPageDTO.getEndTimeS()+" 00:00:00");

--
Gitblit v1.9.3