From bf15135228cbb9ac186cc8cc39e9da32d3f1d90f Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期三, 19 六月 2024 15:51:19 +0800
Subject: [PATCH] 提交一把

---
 server/service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java |  267 ++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 191 insertions(+), 76 deletions(-)

diff --git a/server/service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
index 2e7eb25..8963283 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -10,12 +10,15 @@
 import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.DateUtil;
 import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.InsuranceApplyMapper;
 import com.doumee.dao.business.MemberMapper;
 import com.doumee.dao.business.SolutionsMapper;
 import com.doumee.dao.business.WorktypeMapper;
 import com.doumee.dao.business.dto.MemberImport;
 import com.doumee.dao.business.dto.MemberQueryDTO;
+import com.doumee.dao.business.dto.MemberReduceImport;
 import com.doumee.dao.business.dto.WorktypeImport;
+import com.doumee.dao.business.join.ApplyDetailJoinMapper;
 import com.doumee.dao.business.join.DispatchUnitJoinMapper;
 import com.doumee.dao.business.join.MemberJoinMapper;
 import com.doumee.dao.business.model.*;
@@ -53,12 +56,16 @@
 
     @Autowired
     private DispatchUnitJoinMapper dispatchUnitJoinMapper;
+    @Autowired
+    private ApplyDetailJoinMapper applyDetailJoinMapper;
 
     @Autowired
     private WorktypeMapper worktypeMapper;
 
     @Autowired
     private SolutionsMapper solutionsMapper;
+    @Autowired
+    private InsuranceApplyMapper insuranceApplyMapper;
 
     @Override
     public Integer create(Member member) {
@@ -359,21 +366,114 @@
     }
 
     @Override
-    public List<MemberImport> importBatch(MultipartFile file,Integer  solutionId){
+    public List<MemberReduceImport> importReduceBatch(MultipartFile file, Integer  applyId){
+        if(applyId == null  ){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇烽�夋嫨鏈夋晥鐨勬柟妗堝啀杩涜鎿嶄綔锛�");
+        }
         LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
         if(!loginUserInfo.getType().equals(Constants.ONE)){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炰紒涓氫汉鍛樻棤娉曡繘琛岃鎿嶄綔");
         }
-        List<Member> list =  memberJoinMapper.selectJoinList(Member.class,new MPJLambdaWrapper<Member>()
-                .selectAll(Member.class)
-                .selectAs(DispatchUnit::getName,Member::getDuName)
-                .selectAs(Worktype::getName,Member::getWorkTypeName)
-                .leftJoin(DispatchUnit.class,DispatchUnit::getId,Member::getDuId)
-                .leftJoin(Worktype.class,Worktype::getId,Member::getWorktypeId)
-                .isNotNull(Member::getIdcardNo)
-                .eq(Member::getCompanyId,loginUserInfo.getCompanyId())
-                .eq(Member::getIsdeleted,Constants.ZERO)
-        );
+        ExcelImporter ie = null;
+        List<MemberReduceImport> dataList =null;
+        try {
+            ie = new ExcelImporter(file,1,0);
+            dataList = ie.getDataList(MemberReduceImport.class,null);
+        }  catch (Exception e) {
+            e.printStackTrace();
+        }
+        if(dataList == null || dataList.size() ==0){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝褰曞叆鏁版嵁涓虹┖锛�");
+        }
+
+        InsuranceApply insuranceApply = insuranceApplyMapper.selectById(applyId);
+        if (Objects.isNull(insuranceApply) || !Constants.equalsInteger(insuranceApply.getCompanyId(),loginUserInfo.getCompanyId())) {
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝淇濆崟淇℃伅涓嶅瓨鍦紝璇峰埛鏂伴〉闈㈤噸璇曪紒");
+        }
+        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 ) {
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.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(),"鏈煡璇㈠埌淇濋櫓鏂规");
+        }
+        int index = Constants.TWO;
+        Map<String,String> idCardMap = new HashMap<>();
+        for(MemberReduceImport model : dataList){
+            //鏍¢獙鍙傛暟鏄惁鍚堟硶
+            validReduceImportParam(model,idCardMap,dataList,index);
+            index += 1;
+        }
+        index = Constants.TWO;
+        for(MemberReduceImport model : dataList){
+            ApplyDetail detail =applyDetailJoinMapper.selectJoinOne(ApplyDetail.class,new MPJLambdaWrapper<ApplyDetail>()
+                            .selectAll(ApplyDetail.class)
+                            .selectAs(Worktype::getName,ApplyDetail::getWorkTypeName)
+                            .selectAs(DispatchUnit::getName,ApplyDetail::getDuName)
+                            .selectAs(InsuranceApply::getStartTime,ApplyDetail::getStartTime)
+                            .selectAs(InsuranceApply::getFinalEndTime,ApplyDetail::getEndTime)
+                            .selectAs(InsuranceApply::getServerCost,ApplyDetail::getDetailServerCost)
+                            .leftJoin(Worktype.class,Worktype::getId,ApplyDetail::getWorktypeId)
+                            .leftJoin(DispatchUnit.class,DispatchUnit::getId,ApplyDetail::getDuId)
+                            .leftJoin(InsuranceApply.class,InsuranceApply::getId,ApplyDetail::getApplyId)
+                            .eq(ApplyDetail::getApplyId,insuranceApply.getId())
+                            .eq(ApplyDetail::getApplyId,insuranceApply.getId())
+                            .eq(ApplyDetail::getIdcardNo,model.getIdCard())
+                            .le(ApplyDetail::getStartTime,DateUtil.getMontageDate(new Date(),1))
+                            .ge(ApplyDetail::getEndTime,DateUtil.getMontageDate(new Date(),3)));
+            if(detail == null){
+                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "褰撳墠淇濆崟涓嬶紝鍛樺伐銆�" + model.getName()+model.getIdCard() + "銆戦潪鍦ㄤ繚浜哄憳锛屽娉曡繘琛岃鎿嶄綔");
+            }
+            model.setDuId(detail.getDuId());
+            model.setDuName(detail.getDuName());
+            model.setWorktypeId(detail.getWorktypeId());
+            model.setWorkTypeName(detail.getWorkTypeName());
+            model.setFee(
+                    Constants.reduceFee(solutions,
+                            Objects.isNull(detail.getDetailServerCost())?
+                                    solutions.getPrice():solutions.getPrice().add(detail.getDetailServerCost()),detail.getParentStartTime(),detail.getParentEndTime(),detail.getStartTime(),
+                            detail.getEndTime()).subtract(detail.getFee()));
+            index += 1;
+        }
+        return dataList;
+    }
+
+    private void validReduceImportParam(MemberReduceImport model, Map<String, String> idCardMap, List<MemberReduceImport> dataList, int index) {
+        if(StringUtils.isBlank(model.getName())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+index+"琛屾暟鎹鍚嶄笉鑳戒负绌猴紒");
+        }
+        if(StringUtils.isBlank(model.getIdCard())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+index+"琛屾暟鎹韩浠借瘉鍙蜂笉鑳戒负绌猴紒");
+        }
+        if(StringUtils.isBlank(model.getIdCard())||model.getIdCard().length()!=18){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+index+"琛屾暟鎹韩浠借瘉銆�"+model.getIdCard()+"銆戞牸寮忎笉姝g‘锛�");
+        }
+        if(!IdcardUtil.isValidCard(model.getIdCard())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+index+"琛屾暟鎹韩浠借瘉銆�"+model.getIdCard()+"銆戜俊鎭笉姝g‘锛�");
+        }
+        if(Objects.nonNull(idCardMap.get(model.getIdCard()))){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝鏂囨。涓"+index+"琛屾暟鎹韩浠借瘉鍙枫��"+model.getIdCard()+"銆戝瓨鍦ㄧ浉鍚屾暟鎹紒");
+        }
+        idCardMap.put(model.getIdCard(), model.getIdCard());
+    }
+    @Override
+    public List<MemberImport> importBatch(MultipartFile file,Integer  solutionId){
+        if(solutionId == null  ){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇烽�夋嫨鏈夋晥鐨勬柟妗堝啀杩涜鎿嶄綔锛�");
+        }
+        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+        if(!loginUserInfo.getType().equals(Constants.ONE)){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炰紒涓氫汉鍛樻棤娉曡繘琛岃鎿嶄綔");
+        }
         ExcelImporter ie = null;
         List<MemberImport> dataList =null;
         try {
@@ -385,14 +485,14 @@
         if(dataList == null || dataList.size() ==0){
             throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝褰曞叆鏁版嵁涓虹┖锛�");
         }
-//        List<String> idCardList = dataList.stream().map(m->m.getIdCard()).collect(Collectors.toList());
-//        Set<String> set = new HashSet<>(idCardList);
-//        if(idCardList.size() != set.size()){
-//            throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(),"瀵逛笉璧凤紝褰曞叆鏁版嵁瀛樺湪韬唤璇佸彿鐩稿悓鏁版嵁锛�");
-//        }
-        List<DispatchUnit> dispatchUnitList = new ArrayList<>();
-        if(!Objects.isNull(solutionId)){
-            dispatchUnitList  = dispatchUnitJoinMapper.selectJoinList(DispatchUnit.class,
+        int index = Constants.TWO;
+        Map<String,String> idCardMap = new HashMap<>();
+        for(MemberImport model : dataList){
+            //鏍¢獙鍙傛暟鏄惁鍚堟硶
+            validImportParam(model,idCardMap,dataList,index,solutionId);
+            index += 1;
+        }
+        List<DispatchUnit> dispatchUnitList    = dispatchUnitJoinMapper.selectJoinList(DispatchUnit.class,
                     new MPJLambdaWrapper<DispatchUnit>()
                             .selectAll(DispatchUnit.class)
                             .select("(select b.id from du_solution b where b.isdeleted=0 and b.dispatch_unit_id=t.id and b.solution_id="+solutionId+" limit 1) as du_solution_id" )
@@ -402,70 +502,85 @@
                             .eq(loginUserInfo.getType().equals(Constants.ONE),DispatchUnit::getCompanyId,loginUserInfo.getCompanyId())
                             .exists("select b.id from du_solution b where b.isdeleted=0 and b.dispatch_unit_id=t.id and b.status = 1 and  b.solution_id="+solutionId )
             );
-            if(CollectionUtils.isNotEmpty(dispatchUnitList)){
-                for (DispatchUnit dispatchUnit:dispatchUnitList) {
-                    List<Worktype> worktypeList = worktypeMapper.selectList(new QueryWrapper<Worktype>().lambda()
-                            .eq(Worktype::getIsdeleted,Constants.ZERO)
-                            .eq(Worktype::getDataType,Constants.TWO)
-                            .eq(Worktype::getStatus,Constants.ZERO)
-                            .apply("id in ( select  dw.work_type_id from du_worktype dw where dw.status = 1" +
-                                    " and  dw.du_solution_id = "+dispatchUnit.getDuSolutionId()+" )")
-                    );
-                    dispatchUnit.setWorktypeList(worktypeList);
-                }
+        if(CollectionUtils.isNotEmpty(dispatchUnitList)){
+            for (DispatchUnit dispatchUnit:dispatchUnitList) {
+                List<Worktype> worktypeList = worktypeMapper.selectList(new QueryWrapper<Worktype>().lambda()
+                        .eq(Worktype::getIsdeleted,Constants.ZERO)
+                        .eq(Worktype::getDataType,Constants.TWO)
+                        .eq(Worktype::getStatus,Constants.ZERO)
+                        .apply("id in ( select  dw.work_type_id from du_worktype dw where dw.status = 1" +
+                                " and  dw.du_solution_id = "+dispatchUnit.getDuSolutionId()+" )")
+                );
+                dispatchUnit.setWorktypeList(worktypeList);
             }
         }
-        long index = Constants.TWO;
-        Map<String,String> idCardMap = new HashMap<>();
+        index = Constants.TWO;
         for(MemberImport model : dataList){
-            if(StringUtils.isBlank(model.getIdCard())||model.getIdCard().length()!=18){
-                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+index+"琛屾暟鎹韩浠借瘉淇℃伅寮傚父锛�");
-            }
-            if(!IdcardUtil.isValidCard(model.getIdCard())){
-                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+index+"琛屾暟鎹韩浠借瘉淇℃伅寮傚父锛�");
-            }
-            if(StringUtils.isBlank(model.getName())){
-                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+index+"琛屾暟鎹鍚嶄俊鎭紓甯革紒");
-            }
-            if(Objects.nonNull(idCardMap.get(model.getIdCard()))){
-                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+index+"琛屾暟鎹韩浠借瘉鍙枫��"+model.getIdCard()+"銆戝瓨鍦ㄧ浉鍚屾暟鎹紒");
-            }
-            idCardMap.put(model.getIdCard(), model.getIdCard());
-            index = index + Constants.ONE;
-            if(CollectionUtils.isNotEmpty(list)){
-                Optional<Member>  memberOptional= list.stream().filter(m->m.getIdcardNo().equals(model.getIdCard())).findFirst();
-                if(memberOptional.isPresent()){
-                    Member member =  memberOptional.get();
-                    model.setIdCard(member.getIdcardNo());
-                    model.setSex(member.getSex());
-                }else{
-                    model.setSex(Constants.getSexByIdCard(model.getIdCard()));
-                }
-            }else{
-                model.setSex(Constants.getSexByIdCard(model.getIdCard()));
-            }
-            if(StringUtils.isNotBlank(model.getDuName())&&CollectionUtils.isNotEmpty(dispatchUnitList)){
-                Optional<DispatchUnit>  dispatchUnitOptional= dispatchUnitList.stream().filter(m->m.getName().equals(model.getDuName())).findFirst();
-                if(dispatchUnitOptional.isPresent()){
-                    DispatchUnit dispatchUnit =  dispatchUnitOptional.get();
-                    model.setDuId(dispatchUnit.getId());
-                    if(StringUtils.isNotBlank(model.getWorkTypeName())&&CollectionUtils.isNotEmpty(dispatchUnit.getWorktypeList())){
-                        Optional<Worktype>  worktypeOptional= dispatchUnit.getWorktypeList().stream().filter(m->m.getName().equals(model.getWorkTypeName())).findFirst();
-                        if(worktypeOptional.isPresent()){
-                            Worktype worktype = worktypeOptional.get();
-                            model.setWorktypeId(worktype.getId());
-                        }
+            //鏍¢獙浜哄憳鏄惁宸茬粡鍦ㄥ弬淇濅腑
+            isMemberValidForSolution(model,index,solutionId);
+            //妫�鏌ユ淳閬e崟浣嶅拰宸ョ鏈夋晥鎬�
+            dealDuAndWorktype(model,index,dispatchUnitList);
+            index += 1;
+        }
+        return dataList;
+    }
+
+    private void isMemberValidForSolution(MemberImport model, int index, Integer solutionId) {
+       /* ApplyDetail detail = applyDetailJoinMapper.selectJoinOne(ApplyDetail.class,new MPJLambdaWrapper<ApplyDetail>()
+                .last("limit 1"));
+        if(detail!=null){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+index+"琛岃韩浠借瘉涓恒��"+model.getIdCard()+"銆戜汉鍛樺凡缁忓湪璇ユ柟妗堜笅瀛樺湪鎶曚繚璁板綍锛�");
+        }*/
+    }
+
+    private void dealDuAndWorktype(MemberImport model, int index, List<DispatchUnit> dispatchUnitList  ) {
+
+        if(CollectionUtils.isNotEmpty(dispatchUnitList)){
+            Optional<DispatchUnit>  dispatchUnitOptional= dispatchUnitList.stream().filter(m->m.getName().equals(model.getDuName())).findFirst();
+            if(dispatchUnitOptional.isPresent()){
+                DispatchUnit dispatchUnit =  dispatchUnitOptional.get();
+                model.setDuId(dispatchUnit.getId());
+                if(StringUtils.isNotBlank(model.getWorkTypeName())&&CollectionUtils.isNotEmpty(dispatchUnit.getWorktypeList())){
+                    Optional<Worktype>  worktypeOptional= dispatchUnit.getWorktypeList().stream().filter(m->m.getName().equals(model.getWorkTypeName())).findFirst();
+                    if(worktypeOptional.isPresent()){
+                        Worktype worktype = worktypeOptional.get();
+                        model.setWorktypeId(worktype.getId());
                     }
                 }
             }
-            if(Objects.isNull(model.getDuId())){
-                model.setWorkTypeName(null);
-                model.setDuName(null);
-            }else if(Objects.isNull(model.getWorktypeId())){
-                model.setWorkTypeName(null);
-            }
         }
-        return dataList;
+        if(Objects.isNull(model.getDuId())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+index+"琛屾暟鎹淳閬e崟浣嶃��"+model.getDuName()+"銆戜笉姝g‘锛�");
+        }
+        if(Objects.isNull(model.getWorktypeId())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+index+"琛屾暟鎹伐绉嶃��"+model.getWorkTypeName()+"銆戜笉姝g‘锛�");
+        }
+    }
+
+    private void validImportParam(MemberImport model, Map<String, String> idCardMap, List<MemberImport> dataList,int index,Integer solutionId) {
+        if(StringUtils.isBlank(model.getName())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+index+"琛屾暟鎹鍚嶄笉鑳戒负绌猴紒");
+        }
+        if(StringUtils.isBlank(model.getIdCard())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+index+"琛屾暟鎹韩浠借瘉鍙蜂笉鑳戒负绌猴紒");
+        }
+        if(StringUtils.isBlank(model.getDuName())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+index+"琛屾暟鎹淳閬e崟浣嶄笉鑳戒负绌猴紒");
+        }
+        if(StringUtils.isBlank(model.getWorkTypeName())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+index+"琛屾暟鎹伐绉嶄笉鑳戒负绌猴紒");
+        }
+        if(StringUtils.isBlank(model.getIdCard())||model.getIdCard().length()!=18){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+index+"琛屾暟鎹韩浠借瘉銆�"+model.getIdCard()+"銆戞牸寮忎笉姝g‘锛�");
+        }
+        if(!IdcardUtil.isValidCard(model.getIdCard())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+index+"琛屾暟鎹韩浠借瘉銆�"+model.getIdCard()+"銆戜俊鎭笉姝g‘锛�");
+        }
+        if(Objects.nonNull(idCardMap.get(model.getIdCard()))){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝鏂囨。涓"+index+"琛屾暟鎹韩浠借瘉鍙枫��"+model.getIdCard()+"銆戝瓨鍦ㄧ浉鍚屾暟鎹紒");
+        }
+        idCardMap.put(model.getIdCard(), model.getIdCard());
+
     }
 
 

--
Gitblit v1.9.3