From e6ff15690bf92e4c942f279d95cabe726d3cd56a Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期二, 10 六月 2025 15:26:35 +0800
Subject: [PATCH] 提交一把订单

---
 server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java |  138 ++++++++++++++++++++++++++++++++++------------
 1 files changed, 102 insertions(+), 36 deletions(-)

diff --git a/server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java
index e136e8b..43d2c6c 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java
@@ -19,6 +19,7 @@
 import com.doumee.dao.business.model.*;
 import com.doumee.dao.business.vo.ApplyPowerVO;
 import com.doumee.dao.business.vo.CountCyclePriceVO;
+import com.doumee.dao.business.vo.dataBoard.InsuranceDataVO;
 import com.doumee.dao.system.SystemUserMapper;
 import com.doumee.dao.system.model.SystemUser;
 import com.doumee.service.business.InsuranceApplyService;
@@ -35,6 +36,8 @@
 import io.swagger.models.auth.In;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.shiro.SecurityUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -62,7 +65,6 @@
     private SmsEmailService smsEmailService;
     @Autowired
     private ApplyChangeJoinMapper applyChangeMapper;
-
     @Autowired
     private SystemDictDataBiz systemDictDataBiz;
     @Autowired
@@ -71,25 +73,20 @@
     private CompanyMapper companyMapper;
     @Autowired
     private MemberInsuranceJoinMapper memberInsuranceJoinMapper;
-
     @Autowired
     private ApplyDetailMapper applyDetailMapper;
     @Autowired
     private ApplyDetailJoinMapper applyDetailJoinMapper;
-
     @Autowired
     private ApplyLogMapper applyLogMapper;
     @Autowired
     private SignService signService;
     @Autowired
     private MultifileMapper multifileMapper;
-
     @Autowired
     private ApplyLogJoinMapper applyLogJoinMapper;
-
     @Autowired
     private SolutionsMapper solutionsMapper;
-
     @Autowired
     private MemberMapper memberMapper;
     @Autowired
@@ -104,7 +101,6 @@
     private DuWorkTypeJoinMapper duWorkTypeJoinMapper;
     @Autowired
     private SolutionWorktypeJoinMapper solutionWorktypeJoinMapper;
-
     @Autowired
     private NoticesMapper noticesMapper;
     @Autowired
@@ -119,7 +115,8 @@
     private SystemUserMapper systemUserMapper;
     @Autowired
     private CompanyDepartmentMapper companyDepartmentMapper;
-
+    @Autowired
+    private InsuranceMapper insuranceMapper;
 
     @Override
     @Transactional(rollbackFor = {Exception.class,BusinessException.class})
@@ -150,7 +147,6 @@
             }
             update.setStatus(Constants.InsuranceApplyStatus.WTB_RETURN.getKey());
         }
-
         update.setEditDate(new Date());
         update.setEditor(user.getId());
         update.setCheckDate(update.getEditDate());
@@ -158,7 +154,6 @@
         update.setCheckUserId(user.getId());
         update.setId(model.getId());
         insuranceApplyMapper.updateById(update);
-
         //瀛樺偍寰呭姙淇℃伅
         Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.INSURANCE_APPLY;
         //鍒犻櫎鍏朵粬寰呭姙
@@ -168,8 +163,6 @@
         Notices notices = new Notices(noticeObjectType,Constants.ONE,insuranceApply.getId(),solutions.getName(),
                 model.getCompanyId(), Constants.NoticeType.FOUR);
         noticesMapper.insert(notices);
-
-
         Constants.ApplyLogType applyLogType = Constants.ApplyLogType.PLATFORM_RETURN;
         String info =applyLogType.getInfo();
         info = info.replace("${param}", update.getCheckInfo());
@@ -223,7 +216,6 @@
                 ||StringUtils.isBlank( insuranceApply.getBaoxiandanFile() .getName())){
             throw  new BusinessException(ResponseStatus.BAD_REQUEST);
         }
-
         InsuranceApply model = insuranceApplyMapper.selectById(insuranceApply.getId());
         if(model == null ||!Constants.equalsInteger(model.getIsdeleted(),Constants.ZERO)){
             throw  new BusinessException(ResponseStatus.DATA_EMPTY);
@@ -318,16 +310,19 @@
 
         if(CollectionUtils.isNotEmpty(applyDetailList)){
             List<MemberInsurance> memberInsuranceList = new ArrayList<>();
+            List<String> idCodeList = new ArrayList<>();
             for (ApplyDetail applyDetail:applyDetailList) {
+                idCodeList.add(applyDetail.getIdcardNo());
+            }
+            List<ApplyDetail> allDetailList =   this.getMemberSolutionList(solutions.getParentId(),idCodeList, update.getStartTime()
+                    ,update.getEndTime(),insuranceApply.getId());
 
+            for (ApplyDetail applyDetail:applyDetailList) {
                 //鏌ヨ浜哄憳淇℃伅鏄惁瀛樺湪鐩稿悓鐨勬柟妗堜笅鏄惁瀛樺湪 鍐茬獊鏁版嵁
-                this.checkMemberSolution(solutions.getParentId(),applyDetail.getIdcardNo(),applyDetail.getMemberName(),update.getStartTime()
-                        ,update.getEndTime(),insuranceApply.getId());
-
+                this.checkMemberSolution( applyDetail.getIdcardNo(),allDetailList,applyDetail.getMemberName());
                 MemberInsurance memberInsurance = new MemberInsurance(applyDetail,user.getId());
                 memberInsurance.setRelationType(Constants.ZERO);
                 memberInsuranceList.add(memberInsurance);
-
                 memberMapper.update(null,new UpdateWrapper<Member>()
                         .lambda()
                         .set(Member::getStartTime,memberInsurance.getStartTime())
@@ -338,7 +333,7 @@
                 );
 
             }
-            memberInsuranceJoinMapper.insertBatchSomeColumn(memberInsuranceList);
+            memberInsuranceJoinMapper.insert(memberInsuranceList);
         }
 
         this.updateApplyCurrentFee(insuranceApply.getId(),null);
@@ -513,7 +508,7 @@
         if(!Constants.equalsInteger(model.getStatus(),Constants.InsuranceApplyStatus.WAIT_SIGNATURE.getKey())){
             throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ョ敵璇风姸鎬佸凡娴佽浆锛屽綋鍓嶄笉鏀寔璇ユ搷浣渵");
         }
-        Company company = user.getCompany();
+        Company company = user.getShowCompany();
         if(debugModel){
             company = companyMapper.selectById(model.getCompanyId());
         }
@@ -2375,8 +2370,13 @@
 
 
 
+
+    private static Logger logger = LoggerFactory.getLogger(InsuranceApplyServiceImpl.class);
+
     public void dealApplyDetailData(InsuranceApply insuranceApply,Solutions solutions,List<ApplyDetail> applyDetailList,
                                     LoginUserInfo loginUserInfo,CountCyclePriceVO  countCyclePriceVO,Boolean checkNewData){
+        Long start = System.currentTimeMillis();
+        logger.error("澶勭悊淇濆崟鏁版嵁寮�濮嬫椂闂�:=========================>"+start);
         //2024骞�11鏈�6鏃�15:01:34  鍔犲叆  鏂规閰嶇疆浜嗘湁娲鹃仯鍗曚綅 鎵嶄細鍘婚獙璇佹淳閬e崟浣嶆暟鎹�
         List<DuSolution>  duSolutionList = new ArrayList<>();
         List<DuWorktype> duWorktypeList = new ArrayList<>();
@@ -2423,7 +2423,12 @@
             List<Member> memberList = memberMapper.selectList(new QueryWrapper<Member>().lambda()
                     .eq(Member::getCompanyId,insuranceApply.getCompanyId())
                     .eq(Member::getIsdeleted,Constants.ZERO));
-
+            List<String> idCodeList = new ArrayList<>();
+            for (ApplyDetail applyDetail:applyDetailList) {
+                idCodeList.add(applyDetail.getIdcardNo());
+            }
+            List<ApplyDetail> allDetailList =   this.getMemberSolutionList(solutions.getParentId(),idCodeList, insuranceApply.getStartTime()
+                    ,insuranceApply.getEndTime(),insuranceApply.getId());
             List<Member> addMemberList = new ArrayList<>();
             for (int i = 0; i < applyDetailList.size(); i++) {
                 ApplyDetail applyDetail = applyDetailList.get(i);
@@ -2452,13 +2457,16 @@
                     addMemberList.add(member);
                 }
                 //鏌ヨ浜哄憳淇℃伅鏄惁瀛樺湪鐩稿悓鐨勬柟妗堜笅鏄惁瀛樺湪 鍐茬獊鏁版嵁
-                this.checkMemberSolution(solutions.getParentId(),member.getIdcardNo(),member.getName(),insuranceApply.getStartTime(),insuranceApply.getEndTime(),insuranceApply.getId());
+                this.checkMemberSolution( applyDetail.getIdcardNo(),allDetailList,applyDetail.getMemberName());
+//                this.checkMemberSolutionOld(solutions.getParentId(),member.getIdcardNo(),member.getName(),insuranceApply.getStartTime(),insuranceApply.getEndTime(),insuranceApply.getId());
             }
             if(CollectionUtils.isNotEmpty(addMemberList)){
-                memberJoinMapper.insertBatchSomeColumn(addMemberList);
+                memberJoinMapper.insert(addMemberList);
             }
             memberList.addAll(addMemberList);
             for (int i = 0; i < applyDetailList.size(); i++) {
+                Long singlStart = System.currentTimeMillis();
+                logger.error("澶勭悊淇濆崟鍗曟潯鏁版嵁寮�濮嬫椂闂�:=========================>"+singlStart);
                 ApplyDetail applyDetail = applyDetailList.get(i);
                 if(Objects.isNull(applyDetail)
                         ||StringUtils.isBlank(applyDetail.getIdcardNo())
@@ -2535,24 +2543,34 @@
                         .collect(Collectors.toList()).size()<=Constants.ZERO){
                     throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(),"銆�"+applyDetail.getMemberName()+applyDetail.getIdcardNo()+"銆戝憳宸ュ伐绉嶄俊鎭湭鏌ヨ鍒帮紒");
                 }
-//                if(duWorktypeList.stream().filter(d->d.getWorkTypeId().equals(applyDetail.getWorktypeId()))
-//                        .collect(Collectors.toList()).size()<=Constants.ZERO){
-//                    throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(),"銆�"+applyDetail.getMemberName()+applyDetail.getIdcardNo()+"銆戝憳宸ュ伐绉嶄俊鎭湭鏌ヨ鍒帮紒");
-//                }
+                Long singlEnd = System.currentTimeMillis();
+                logger.error("澶勭悊淇濆崟鍗曟潯鏁版嵁缁撴潫鏃堕棿:=========================>"+singlEnd+";鑰楁椂锛�====銆�"+(singlStart-singlEnd));
             }
-            applyDetailJoinMapper.insertBatchSomeColumn(applyDetailList);
+            Long end = System.currentTimeMillis();
+            logger.error("澶勭悊鍗曟暟鎹粨鏉熸椂闂�:=========================>"+end +";鑰楁椂锛�====銆�"+(end-start));
+            applyDetailJoinMapper.insert(applyDetailList);
         }
     }
 
 
     /**
      * 鏌ヨ 浼氬憳淇℃伅鍦ㄦ柟妗堜笅鏄惁瀛樺湪鍐茬獊鏁版嵁
-     * @param startTime
-     * @param endTime
      */
+    public void checkMemberSolution(String idCode,List<ApplyDetail> allDetailList,String memberName){
+        List<ApplyDetail> applyDetailList = getMemberSolutionListByIdcode(idCode,allDetailList);
+        if(applyDetailList.size() >Constants.ZERO){
+            String companyName = applyDetailList.get(Constants.ZERO).getCompanyName();
+            if(StringUtils.isNotBlank(companyName)){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璇ュ憳宸ャ��"+memberName+" "+idCode+"銆戝凡鍦ㄣ��"+companyName+"銆戝瓨鍦ㄤ繚闄�,璇疯仈绯诲鏈嶇‘璁�");
+            }else{
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璇ュ憳宸ャ��"+memberName+" "+idCode+"銆戝湪璇ヤ繚闄╂柟妗堜笅宸插瓨鍦ㄦ姇淇濊褰曪紝鏃犳硶杩涜璇ユ搷浣�");
+            }
+
+        };
+    }
     @Override
-    public void checkMemberSolution(Integer solutionParentId,String idCode,String memberName,Date startTime,Date endTime,Integer applyId){
-        List<ApplyDetail> applyDetailList = new ArrayList<ApplyDetail>();
+    public void checkMemberSolutionOld(Integer solutionParentId,String idCode, String memberName, Date startTime,Date endTime,Integer applyId){
+        List<ApplyDetail> applyDetailList = new ArrayList<>();
         try {
             applyDetailList = applyDetailJoinMapper.selectJoinList(ApplyDetail.class,
                     new MPJLambdaWrapper<ApplyDetail>()
@@ -2591,8 +2609,53 @@
 
         };
     }
+    private List<ApplyDetail> getMemberSolutionListByIdcode(String idCode, List<ApplyDetail> allDetailList) {
+        if(allDetailList == null || allDetailList.size()==0){
+            return  new ArrayList<>();
+        }
+        List<ApplyDetail> list = new ArrayList<>();
+        for(ApplyDetail d : allDetailList){
+            if(StringUtils.equals(d.getIdcardNo(),idCode)){
+                list.add(d);
+            }
+        }
+        return list;
+    }
 
-    public static void checkStaticMemberSolution(Integer solutionId,String idCode,String memberName,Date startTime,
+    public  List<ApplyDetail>  getMemberSolutionList(Integer solutionParentId,List<String> idCodeList, Date startTime,Date endTime,Integer applyId){
+        List<ApplyDetail> applyDetailList = new ArrayList<ApplyDetail>();
+        try {
+            applyDetailList = applyDetailJoinMapper.selectJoinList(ApplyDetail.class,
+                    new MPJLambdaWrapper<ApplyDetail>()
+                            .selectAll(ApplyDetail.class)
+                            .selectAs(InsuranceApply::getCode,ApplyDetail::getApplyCode)
+                            .selectAs(Company::getName,ApplyDetail::getCompanyName)
+                            .leftJoin(InsuranceApply.class,InsuranceApply::getId,ApplyDetail::getApplyId)
+                            .leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId)
+                            .leftJoin(Company.class,Company::getId,InsuranceApply::getCompanyId)
+                            .in(ApplyDetail::getIdcardNo,idCodeList)
+                            .eq(ApplyDetail::getIsdeleted,Constants.ZERO)
+                            .eq(Solutions::getParentId,solutionParentId)
+                            .ne(Objects.nonNull(applyId),InsuranceApply::getId,applyId)
+                            .notIn(InsuranceApply::getStatus
+                                    ,Constants.InsuranceApplyStatus.FAIL_RETURN.getKey()
+                                    ,Constants.InsuranceApplyStatus.COMPANY_BACK_APPLY_PASS.getKey()
+                                    ,Constants.InsuranceApplyStatus.CLOSE.getKey()
+                                    ,Constants.InsuranceApplyStatus.WTB_RETURN.getKey()
+                                    ,Constants.InsuranceApplyStatus.WTB_CLOSED.getKey() )
+                            .apply(" ( " +
+                                    " '"+DateUtil.getPlusTime(startTime)+"'  <= t.start_time AND t.start_time < '"+DateUtil.getPlusTime(endTime)+"' " +
+                                    " or " +
+                                    "  ( '"+DateUtil.getPlusTime(startTime)+"' < t.end_time AND t.end_time < '"+DateUtil.getPlusTime(endTime)+"' )  " +
+                                    " or " +
+                                    " ( '"+DateUtil.getPlusTime(startTime)+"' > t.start_time AND '"+DateUtil.getPlusTime(endTime)+"' < t.end_time )" +
+                                    " ) " ));
+        }catch (Exception e){
+        }
+      return applyDetailList;
+    }
+
+    public static void checkStaticMemberSolution(Integer solutionId,Integer memberId,String memberIdCard,String memberName,Date startTime,
                                                  Date endTime,ApplyDetailJoinMapper applyDetailJoinMapper){
         List<ApplyDetail> applyDetailList = new ArrayList<ApplyDetail>();
         try {
@@ -2604,7 +2667,7 @@
                             .leftJoin(InsuranceApply.class,InsuranceApply::getId,ApplyDetail::getApplyId)
                             .leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId)
                             .leftJoin(Company.class,Company::getId,InsuranceApply::getCompanyId)
-                            .eq(ApplyDetail::getIdcardNo,idCode)
+                            .eq(ApplyDetail::getIdcardNo,memberIdCard)
                             .eq(Solutions::getBaseId,solutionId)
                             .eq(ApplyDetail::getIsdeleted,Constants.ZERO)
                             .notIn(InsuranceApply::getStatus
@@ -2622,6 +2685,7 @@
         }
         if(applyDetailList.size() >Constants.ZERO){
             String companyName = applyDetailList.get(Constants.ZERO).getCompanyName();
+            String idCode = applyDetailList.get(Constants.ZERO).getIdcardNo();
             if(StringUtils.isNotBlank(companyName)){
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璇ュ憳宸ャ��"+memberName+" "+idCode+"銆戝凡鍦ㄣ��"+companyName+"銆戝瓨鍦ㄤ繚闄�,璇疯仈绯诲鏈嶇‘璁�");
             }else{
@@ -3493,7 +3557,7 @@
         if(!Constants.equalsInteger(model.getStatus(),Constants.InsuranceApplyStatus.WTB_UPLOAD.getKey())){
             throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ョ敵璇风姸鎬佸凡娴佽浆锛屽綋鍓嶄笉鏀寔璇ユ搷浣渵");
         }
-        Company company = user.getCompany();
+        Company company = user.getShowCompany();
         if(debugModel){
             company = companyMapper.selectById(model.getCompanyId());
         }
@@ -3578,7 +3642,7 @@
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝璇ョ敵璇风姸鎬佸凡娴佽浆锛屽綋鍓嶄笉鏀寔绛剧珷鎿嶄綔锛�");
         }
         LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
-        Company company = user.getCompany();
+        Company company = user.getShowCompany();
         if(debugModel){
             company = companyMapper.selectById(model.getCompanyId());
         }
@@ -3659,7 +3723,7 @@
         if(!Constants.equalsInteger(model.getStatus(),Constants.InsuranceApplyStatus.WTB_TOUBAOING.getKey())){
             throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ョ敵璇风姸鎬佸凡娴佽浆锛屽綋鍓嶄笉鏀寔璇ユ搷浣渵");
         }
-        Company company = user.getCompany();
+        Company company = user.getShowCompany();
         if(debugModel){
             company = companyMapper.selectById(model.getCompanyId());
         }
@@ -3766,6 +3830,8 @@
         return applyPowerVO;
     }
 
+
+
 }
 
 

--
Gitblit v1.9.3