From c9f07c1f79e7ea9eb00925975d3ae2c9e8dcbd25 Mon Sep 17 00:00:00 2001
From: nidapeng <jp@doumee.com>
Date: 星期三, 20 三月 2024 11:37:34 +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/UnionApplyServiceImpl.java |   80 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 80 insertions(+), 0 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 2acd28e..b9450d7 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
@@ -1,20 +1,35 @@
 package com.doumee.service.business.impl;
 
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
+import com.doumee.core.model.LoginUserInfo;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.UnionApplyMapper;
+import com.doumee.dao.business.dto.SaveUnionApplyDTO;
+import com.doumee.dao.business.join.InsuranceApplyJoinMapper;
+import com.doumee.dao.business.model.InsuranceApply;
+import com.doumee.dao.business.model.Solutions;
 import com.doumee.dao.business.model.UnionApply;
 import com.doumee.service.business.UnionApplyService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import io.swagger.models.auth.In;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.shiro.SecurityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
+import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 鍚堝苟鎶曚繚鍗曚俊鎭〃Service瀹炵幇
@@ -26,6 +41,9 @@
 
     @Autowired
     private UnionApplyMapper unionApplyMapper;
+
+    @Autowired
+    private InsuranceApplyJoinMapper insuranceApplyJoinMapper;
 
     @Override
     public Integer create(UnionApply unionApply) {
@@ -166,4 +184,66 @@
         QueryWrapper<UnionApply> wrapper = new QueryWrapper<>(unionApply);
         return unionApplyMapper.selectCount(wrapper);
     }
+
+
+    @Override
+    public void merge(SaveUnionApplyDTO saveUnionApplyDTO){
+        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+        if(user.getType().equals(Constants.TWO)){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炲晢鎴风敤鎴凤紝鏃犳硶杩涜璇ユ搷浣�");
+        }
+        if(Objects.isNull(saveUnionApplyDTO)
+            || Objects.isNull(saveUnionApplyDTO.getApplyIds())
+            || Objects.isNull(saveUnionApplyDTO.getStartDate())
+            || Objects.isNull(saveUnionApplyDTO.getEndDate())
+        ){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        List<InsuranceApply> insuranceApplyList = insuranceApplyJoinMapper.selectJoinList(InsuranceApply.class,
+                new MPJLambdaWrapper<InsuranceApply>()
+                        .selectAll(InsuranceApply.class)
+                        .selectAs(InsuranceApply::getSolutionBaseId,Solutions::getBaseId)
+                        .leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId)
+                        .eq(InsuranceApply::getIsdeleted, Constants.ZERO)
+                        .eq(InsuranceApply::getStatus,Constants.InsuranceApplyStatus.PLATFORM_CHECK_PASS.getKey())
+                        .eq(Solutions::getBaseId,saveUnionApplyDTO.getBaseSolutionId())
+                        .in(InsuranceApply::getId,saveUnionApplyDTO.getApplyIds())
+                        .isNull(InsuranceApply::getUnionApplyId)
+        );
+        //鏌ヨ鏁版嵁鏄惁瀛樺湪鏈浜庡鎵归�氳繃鐨勬暟鎹�
+        if(insuranceApplyList.size()!=saveUnionApplyDTO.getApplyIds().size()){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀛樺湪鏁版嵁宸插鐞嗭紝璇峰埛鏂伴噸璇�");
+        }
+
+        UnionApply unionApply = new UnionApply();
+        unionApply.setCreateDate(new Date());
+        unionApply.setCreator(user.getId());
+        unionApply.setCompanyId(user.getCompanyId());
+        unionApply.setStartTime(saveUnionApplyDTO.getStartDate());
+        unionApply.setEndTime(saveUnionApplyDTO.getEndDate());
+        unionApply.setCheckDate(new Date());
+        unionApply.setStatus(Constants.UnionApplyStatus.UPLOAD.getKey());
+        unionApply.setCheckUserId(user.getId());
+        unionApply.setFee(insuranceApplyList.stream().map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add));
+        unionApply.setCurrentFee(BigDecimal.ZERO);
+        unionApplyMapper.insert(unionApply);
+
+        insuranceApplyJoinMapper.update(null,new UpdateWrapper<InsuranceApply>().lambda()
+                .set(InsuranceApply::getUnionApplyId,unionApply.getId())
+                .set(InsuranceApply::getCheckDate,new Date())
+                .set(InsuranceApply::getCheckUserId,user.getId())
+                .in(InsuranceApply::getId,saveUnionApplyDTO.getApplyIds()));
+
+    }
+
+
+    public void cancelMerge(Integer id){
+        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+        if(user.getType().equals(Constants.TWO)){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炲晢鎴风敤鎴凤紝鏃犳硶杩涜璇ユ搷浣�");
+        }
+
+    }
+
+
 }

--
Gitblit v1.9.3