From c21d5551744f8f55aa44157c17985243670bec24 Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期五, 26 一月 2024 13:56:53 +0800
Subject: [PATCH] 111

---
 server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java |  285 ++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 241 insertions(+), 44 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 3c38a49..eb38594 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
@@ -10,6 +10,7 @@
 import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.DateUtil;
 import com.doumee.core.utils.Utils;
+import com.doumee.core.utils.aliyun.ALiYunUtil;
 import com.doumee.dao.business.*;
 import com.doumee.dao.business.dto.InsuranceApplyOptDTO;
 import com.doumee.dao.business.dto.InsuranceApplyQueryDTO;
@@ -331,23 +332,155 @@
         insuranceApplyMapper.updateById(update);
         return  link;
     }
+    public String uploadSignFile(String link){
+        try {
+            String bucketName = systemDictDataBiz.queryByCode(Constants.OSS,Constants.BUCKETNAME).getCode();
+            String access_id= systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_ID).getCode();
+            String access_key= systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_KEY).getCode();
+            String endpoint = systemDictDataBiz.queryByCode(Constants.OSS,Constants.ENDPOINT).getCode();
+            String folder = systemDictDataBiz.queryByCode(Constants.OSS,Constants.APPLY_FILE).getCode();
+            String tempFileName =  DateUtil.getNowShortDate() + "/" + UUID.randomUUID().toString() + ".pdf";
+            String key = folder + tempFileName;// 鏂囦欢鍚�
+            ALiYunUtil obs = new ALiYunUtil(endpoint,access_id, access_key);
+            if (obs.uploadOnlineObject(link,bucketName, key,null)) {
+                // 绉诲姩鎴愬姛,杩斿洖鏂囦欢鍚�
+                return tempFileName;
+            }
+        }catch (Exception e){
+
+        }
+        return  null;
+
+    }
+
+
+    public Integer uploadSignedFileDo(InsuranceApply model,String fileurl) {
+        InsuranceApply update = new InsuranceApply();
+        update.setEditDate(new Date());
+        update.setEditor(model.getCreator());
+        update.setStatus(Constants.InsuranceApplyStatus.UPLOAD_INSURANCE.getKey());
+        update.setCheckDate(update.getEditDate());
+        update.setCheckInfo("浼佷笟瀹屾垚绛剧讲");
+        update.setCheckUserId(model.getCreator());
+        update.setId(model.getId());
+        insuranceApplyMapper.updateById(update);
+
+        Multifile f = new Multifile();
+        f.setIsdeleted(Constants.ZERO);
+        f.setCreator(model.getCreator());
+        f.setObjId(update.getId());
+        f.setCreateDate(update.getEditDate());
+        f.setObjType(Constants.MultiFile.BD_SIGNED_PDF.getKey());
+        f.setType(Constants.TWO);
+        f.setFileurl(fileurl);
+        f.setName("鎶曚繚鍗曠绾﹀悎鍚�.pdf");
+        multifileMapper.insert(f);
+        Constants.ApplyLogType applyLogType = Constants.ApplyLogType.SIGNATURE;
+        ApplyLog log = new ApplyLog(update,applyLogType.getName(), null,update.getId(),applyLogType.getKey(),JSONObject.toJSONString(model), JSONObject.toJSONString(update));
+        applyLogMapper.insert(log);
+        return  1;
+
+    }
+    public Integer uploadChangeSignedFileDo(ApplyChange model,String fileurl) {
+        ApplyChange update = new ApplyChange();
+        update.setEditDate(new Date());
+        update.setEditor(model.getCreator());
+        update.setStatus(Constants.ApplyChangeStatus.SIGNATURE.getKey());
+        update.setCheckDate(update.getEditDate());
+        update.setCheckInfo("浼佷笟瀹屾垚绛剧讲");
+        update.setCheckUserId(model.getCreator());
+        update.setId(model.getId());
+        applyChangeMapper.updateById(update);
+
+        Multifile f = new Multifile();
+        f.setIsdeleted(Constants.ZERO);
+        f.setCreator(model.getCreator());
+        f.setObjId(update.getId());
+        f.setCreateDate(update.getEditDate());
+        f.setObjType(Constants.equalsInteger(Constants.ZERO,model.getType())?Constants.MultiFile.CA_APPLY_JIAJIAN_SIGN.getKey() : Constants.MultiFile.CA_APPLY_CHANGEUNIT_SIGN.getKey());
+        f.setType(Constants.TWO);
+        f.setFileurl(fileurl);
+        f.setName("绛剧珷鐢宠琛�.pdf");
+        multifileMapper.insert(f);
+        Constants.ApplyLogType applyLogType =Constants.equalsInteger(Constants.ZERO,model.getType())? Constants.ApplyLogType.CA_JIAJIAN_APPLY_SIGN: Constants.ApplyLogType.CA_CHANGUNIT_APPLY_SIGN;
+        ApplyLog log = new ApplyLog(update,applyLogType.getName(), null,update.getId(),applyLogType.getKey(),JSONObject.toJSONString(model), JSONObject.toJSONString(update));
+        applyLogMapper.insert(log);
+        return  1;
+
+    }
+    @Override
+    public   void dealWaitSignedData(){
+        List<InsuranceApply> applyList = insuranceApplyMapper.selectList(new QueryWrapper<InsuranceApply>().lambda()
+                .eq(InsuranceApply::getStatus,Constants.InsuranceApplyStatus.WAIT_SIGNATURE)
+                .isNotNull(InsuranceApply::getSignApplyNo));
+        if(applyList !=null && applyList.size()>0 ){
+            for(InsuranceApply model : applyList){
+                String link = signService.linkFile(model.getSignApplyNo());
+                String fileUrl = uploadSignFile(link);
+                if(StringUtils.isBlank(fileUrl)){
+                    //濡傛灉涓嬭浇澶辫触锛屾竻闄ゅ悎鍚岋紝涓嬫绛剧珷閲嶆柊鐢熸垚鏂板悎鍚�
+                    return;
+                }
+                uploadSignedFileDo(model,fileUrl);
+                return;
+            }
+        }
+        List<ApplyChange> chagneList = applyChangeMapper.selectList(new QueryWrapper<ApplyChange>().lambda()
+                .eq(ApplyChange::getStatus,Constants.ApplyChangeStatus.UPLOAD)
+                .isNotNull(ApplyChange::getSignApplyNo));
+        if(chagneList !=null && chagneList.size()>0 ){
+            for(ApplyChange model : chagneList){
+                String link = signService.linkFile(model.getSignApplyNo());
+                String fileUrl = uploadSignFile(link);
+                if(StringUtils.isBlank(fileUrl)){
+                    //濡傛灉涓嬭浇澶辫触锛屾竻闄ゅ悎鍚岋紝涓嬫绛剧珷閲嶆柊鐢熸垚鏂板悎鍚�
+                    return;
+                }
+                uploadChangeSignedFileDo(model,fileUrl);
+                return;
+            }
+        }
+    }
     @Override
     public   void dealSignResult(NotifyDataReq data){
         if(data.getApplyNo() == null ){
             throw  new BusinessException(ResponseStatus.BAD_REQUEST);
         }
-        InsuranceApply model = insuranceApplyMapper.selectOne(new QueryWrapper<InsuranceApply>().lambda().eq(InsuranceApply::getSignApplyNo,data.getApplyNo()).last("limit 1" ));
-        if(model != null ){
-            //-----------------TUDO--------瀹屽杽绛剧害瀹屾垚涓氬姟------
-
-        }else{
-            ApplyChange applyChange = applyChangeMapper.selectOne(new QueryWrapper<ApplyChange>().lambda().eq(ApplyChange::getSignApplyNo,data.getApplyNo()).last("limit 1" ));
-            if(applyChange == null){
-                throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"绯荤粺鏈壘鍒板尮閰嶅悎鍚屽彿!");
+        if(Constants.equalsInteger(data.getSignStatus(), Constants.THREE )){
+            //濡傛灉宸蹭繚鍏�,鍙笅杞界绾﹂檮浠�
+            InsuranceApply model = insuranceApplyMapper.selectOne(new QueryWrapper<InsuranceApply>().lambda().eq(InsuranceApply::getSignApplyNo,data.getApplyNo()).last("limit 1" ));
+            if(model != null && Constants.equalsInteger(model.getStatus(),Constants.InsuranceApplyStatus.COMPANY_BACK_APPLY_WAIT_SIGNATURE.getKey())){
+                //瀹屾垚绛剧讲宸插畬鎴愭搷浣�
+                String link = signService.linkFile(data.getApplyNo());
+                String fileUrl = uploadSignFile(link);
+                if(StringUtils.isBlank(fileUrl)){
+                    //濡傛灉涓嬭浇澶辫触锛屾竻闄ゅ悎鍚岋紝涓嬫绛剧珷閲嶆柊鐢熸垚鏂板悎鍚�
+                    return;
+                }
+                uploadSignedFileDo(model,fileUrl);
+                return;
             }
-            //-----------------TUDO-------瀹屽杽绛剧害瀹屾垚-------
-        }
 
+            ApplyChange applyChange = applyChangeMapper.selectOne(new QueryWrapper<ApplyChange>().lambda().eq(ApplyChange::getSignApplyNo,data.getApplyNo()).last("limit 1" ));
+            if(applyChange != null &&Constants.equalsInteger(applyChange.getStatus(),Constants.ApplyChangeStatus.UPLOAD.getKey())){
+                String link = signService.linkFile(data.getApplyNo());
+                String fileUrl = uploadSignFile(link);
+                if(StringUtils.isBlank(fileUrl)){
+                    //濡傛灉涓嬭浇澶辫触锛屾竻闄ゅ悎鍚岋紝涓嬫绛剧珷閲嶆柊鐢熸垚鏂板悎鍚�
+                    return;
+                }
+                uploadChangeSignedFileDo(applyChange,fileUrl);
+            }
+        }else if(Constants.equalsInteger(data.getSignStatus(), Constants.TWO )){
+            //濡傛灉宸叉嫆绛撅紝娓呴櫎鍚堝悓锛屼笅娆$绔犻噸鏂扮敓鎴愭柊鍚堝悓
+            insuranceApplyMapper.update(null,new UpdateWrapper<InsuranceApply>().lambda()
+                    .set(InsuranceApply::getSignApplyNo,null)
+                    .eq(InsuranceApply::getSignApplyNo,data.getApplyNo()));
+            //濡傛灉宸叉嫆绛撅紝娓呴櫎鍚堝悓锛屼笅娆$绔犻噸鏂扮敓鎴愭柊鍚堝悓
+            applyChangeMapper.update(null,new UpdateWrapper<ApplyChange>().lambda()
+                    .set(ApplyChange::getSignApplyNo,null)
+                    .eq(ApplyChange::getSignApplyNo,data.getApplyNo()));
+        }
 
     }
     @Override
@@ -488,40 +621,43 @@
         if(!CollectionUtils.isNotEmpty(duWorktypeList)){
             throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鏁版嵁寮傚父锛氫繚闄╂柟妗堜笅鏈煡璇㈠埌宸ョ淇℃伅");
         }
-        for (int i = 0; i < applyDetailList.size(); i++) {
-            ApplyDetail applyDetail = applyDetailList.get(i);
-            if(Objects.isNull(applyDetail)
-                ||Objects.isNull(applyDetail.getMemberId())
-                ||Objects.isNull(applyDetail.getDuId())
-                ||Objects.isNull(applyDetail.getWorktypeId())
-            ){
-                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鎶曚繚鍛樺伐淇℃伅鏁版嵁缂哄け");
+        if(CollectionUtils.isNotEmpty(applyDetailList)){
+            for (int i = 0; i < applyDetailList.size(); i++) {
+                ApplyDetail applyDetail = applyDetailList.get(i);
+                if(Objects.isNull(applyDetail)
+                        ||Objects.isNull(applyDetail.getMemberId())
+                        ||Objects.isNull(applyDetail.getDuId())
+                        ||Objects.isNull(applyDetail.getWorktypeId())
+                ){
+                    throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鎶曚繚鍛樺伐淇℃伅鏁版嵁缂哄け");
+                }
+                applyDetail.setCreateDate(new Date());
+                applyDetail.setCreator(loginUserInfo.getId());
+                applyDetail.setIsdeleted(Constants.ZERO);
+                applyDetail.setSortnum(i);
+                applyDetail.setApplyId(insuranceApply.getId());
+                if(Objects.isNull(applyDetail.getMemberId())){
+                    throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(),"銆�"+applyDetail.getMemberName()+"銆戝憳宸ヤ俊鎭瓨鍦ㄥ紓甯告暟鎹紒");
+                }
+                Member member = memberMapper.selectById(applyDetail.getMemberId());
+                if(Objects.isNull(member)){
+                    throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(),"銆�"+applyDetail.getMemberName()+"銆戝憳宸ヤ俊鎭瓨鍦ㄥ紓甯告暟鎹紒");
+                }
+                applyDetail.setIdcardNo(member.getIdcardNo());
+                applyDetail.setSex(member.getSex());
+                applyDetail.setFee(Constants.countDetailFee(solutions,insuranceApply.getApplyEndTime(),insuranceApply.getApplyStartTime()));
+                //楠岃瘉娲鹃仯鍗曚綅淇℃伅鏄惁瀛樺湪
+                if(duSolutionList.stream().filter(d->d.getDispatchUnitId().equals(applyDetail.getDuId())).collect(Collectors.toList()).size()<=Constants.ZERO){
+                    throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(),"銆�"+applyDetail.getMemberName()+"銆戝憳宸ユ淳閬e崟浣嶆湭鏌ヨ鍒帮紒");
+                }
+                if(duWorktypeList.stream().filter(d->d.getDuSolutionId().equals(applyDetail.getDuId())&&d.getWorkTypeId().equals(applyDetail.getWorktypeId()))
+                        .collect(Collectors.toList()).size()<=Constants.ZERO){
+                    throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(),"銆�"+applyDetail.getMemberName()+"銆戝憳宸ュ伐绉嶄俊鎭湭鏌ヨ鍒帮紒");
+                }
             }
-            applyDetail.setCreateDate(new Date());
-            applyDetail.setCreator(loginUserInfo.getId());
-            applyDetail.setIsdeleted(Constants.ZERO);
-            applyDetail.setSortnum(i);
-            applyDetail.setApplyId(insuranceApply.getId());
-            if(Objects.isNull(applyDetail.getMemberId())){
-                throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(),"銆�"+applyDetail.getMemberName()+"銆戝憳宸ヤ俊鎭瓨鍦ㄥ紓甯告暟鎹紒");
-            }
-            Member member = memberMapper.selectById(applyDetail.getMemberId());
-            if(Objects.isNull(member)){
-                throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(),"銆�"+applyDetail.getMemberName()+"銆戝憳宸ヤ俊鎭瓨鍦ㄥ紓甯告暟鎹紒");
-            }
-            applyDetail.setIdcardNo(member.getIdcardNo());
-            applyDetail.setSex(member.getSex());
-            applyDetail.setFee(Constants.countDetailFee(solutions,insuranceApply.getApplyEndTime(),insuranceApply.getApplyStartTime()));
-            //楠岃瘉娲鹃仯鍗曚綅淇℃伅鏄惁瀛樺湪
-            if(duSolutionList.stream().filter(d->d.getDispatchUnitId().equals(applyDetail.getDuId())).collect(Collectors.toList()).size()<=Constants.ZERO){
-                throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(),"銆�"+applyDetail.getMemberName()+"銆戝憳宸ユ淳閬e崟浣嶆湭鏌ヨ鍒帮紒");
-            }
-            if(duWorktypeList.stream().filter(d->d.getDuSolutionId().equals(applyDetail.getDuId())&&d.getWorkTypeId().equals(applyDetail.getWorktypeId()))
-                    .collect(Collectors.toList()).size()<=Constants.ZERO){
-                throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(),"銆�"+applyDetail.getMemberName()+"銆戝憳宸ュ伐绉嶄俊鎭湭鏌ヨ鍒帮紒");
-            }
-            applyDetailMapper.insert(applyDetail);
+            applyDetailJoinMapper.insertBatchSomeColumn(applyDetailList);
         }
+
         //瀛樺偍鏃ュ織鏁版嵁
         this.saveApplyLog(insuranceApply,insuranceApplyStatus,null);
         return insuranceApply.getId();
@@ -621,16 +757,24 @@
         IPage<InsuranceApply> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
         MPJLambdaWrapper<InsuranceApply> queryWrapper = new MPJLambdaWrapper<>();
         Utils.MP.blankToNull(pageWrap.getModel());
+        List<Integer> statusList = Constants.InsuranceApplyStatus.getKesByStatus(pageWrap.getModel().getStatusCollect());
         queryWrapper.selectAll(InsuranceApply.class);
         queryWrapper.selectAs(Company::getName,InsuranceApply::getCompanyName);
         queryWrapper.selectAs(Solutions::getName,InsuranceApply::getSolutionsName);
         queryWrapper.select(" DATEDIFF( t.END_TIME ,now()  ) AS loseEfficacyDays ");
         queryWrapper.select(" ( select count(1) from apply_detail ad  where ad.apply_id = t.id ) as insureNum");
-        queryWrapper.select(" ( select sum(td.fee) from taxes ts inner join tax_detial td on ts.TAX_ID = ts.id  where ts.status != 2 and td.INSURANCE_APPLY_ID = t.id ) as taxesMoney");
-        queryWrapper.select(" ( select td.CREATE_DATE from taxes ts inner join tax_detial td on ts.TAX_ID = ts.id  where ts.status != 2 and td.INSURANCE_APPLY_ID = t.id order by td.CREATE_DATE desc limit 1 ) as taxesLast ");
+        if(!Objects.isNull(pageWrap.getModel())&&!Objects.isNull(pageWrap.getModel().getType())){
+            queryWrapper.select(" ( select sum(td.fee) from taxes ts inner join tax_detial td on td.TAX_ID = ts.id  where ts.status != 2 and td.INSURANCE_APPLY_ID = t.id ) as taxesMoney");
+            queryWrapper.select(" ( select td.CREATE_DATE from taxes ts inner join tax_detial td on td.TAX_ID = ts.id  where ts.status != 2 and td.INSURANCE_APPLY_ID = t.id order by td.CREATE_DATE desc limit 1 ) as taxesLast ");
+        }
         queryWrapper.leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId);
         queryWrapper.leftJoin(Company.class,Company::getId,InsuranceApply::getCompanyId);
         queryWrapper.eq(InsuranceApply::getIsdeleted,Constants.ZERO);
+        queryWrapper.in(statusList.size()>0,InsuranceApply::getStatus,statusList);
+        if(Constants.equalsInteger(pageWrap.getModel().getStatusCollect(),Constants.THREE) ){
+            queryWrapper.eq(InsuranceApply::getStatus,Constants.InsuranceApplyStatus.UPLOAD_INSURANCE.getKey());
+            queryWrapper.lt(InsuranceApply::getEndTime, Utils.Date.getStart(new Date()));
+        }
         //浼佷笟浜哄憳鏌ョ湅鏈紒涓氭暟鎹�
         if(loginUserInfo.getType().equals(Constants.ONE)){
             queryWrapper.eq(InsuranceApply::getCompanyId, loginUserInfo.getCompanyId());
@@ -673,6 +817,17 @@
             }
         }
         PageData<InsuranceApply> pageData = PageData.from(insuranceApplyJoinMapper.selectJoinPage(page,InsuranceApply.class, queryWrapper));
+        if(pageData.getRecords()!=null){
+            for (InsuranceApply apply : pageData.getRecords()){
+                apply.setStatusCollect(Constants.InsuranceApplyStatus.getCollectStatus(apply.getStatus()));
+                if(Constants.equalsInteger(apply.getStatusCollect(),Constants.InsuranceApplyStatus.UPLOAD_INSURANCE.getKey())){
+                    //濡傛灉宸插畬鎴�
+                    if(apply.getEndTime()==null || System.currentTimeMillis()>apply.getEndTime().getTime()){
+                        apply.setStatusCollect(Constants.THREE);//宸茶繃鏈�
+                    }
+                }
+            }
+        }
         return pageData;
     }
 
@@ -910,6 +1065,48 @@
     }
 
 
+    /**
+     * 鏇存柊淇濆崟瀹為檯閲戦
+     */
+    @Override
+    @Transactional(rollbackFor = {Exception.class})
+    public void updateApplyCurrentFee(){
+        List<InsuranceApply> insuranceApplyList = insuranceApplyMapper.selectList(new QueryWrapper<InsuranceApply>().lambda()
+                .eq(InsuranceApply::getIsdeleted,Constants.ZERO)
+                .eq(InsuranceApply::getStatus,Constants.InsuranceApplyStatus.UPLOAD_INSURANCE.getKey())
+                .ge(InsuranceApply::getStartTime,DateUtil.getDate(new Date(),"yyyy-MM-dd") + " 00:00:00")
+                .le(InsuranceApply::getEndTime,DateUtil.getDate(new Date(),"yyyy-MM-dd") + " 23:59:59")
+        );
+
+        if(CollectionUtils.isNotEmpty(insuranceApplyList)){
+            for (InsuranceApply insuranceApply:insuranceApplyList) {
+                Solutions solutions = solutionsMapper.selectById(insuranceApply.getSolutionId());
+                if(Objects.isNull(solutions)){
+                    continue;
+                }
+                BigDecimal sumAmount = BigDecimal.ZERO;
+                List<ApplyDetail> applyDetailList = applyDetailMapper.selectList(new QueryWrapper<ApplyDetail>().lambda().eq(ApplyDetail::getApplyId,insuranceApply.getId()));
+                if(CollectionUtils.isNotEmpty(applyDetailList)){
+                    for (ApplyDetail applyDetail: applyDetailList) {
+                        applyDetail.setCurrentFee(Constants.countDetailFee(solutions,new Date(),applyDetail.getStartTime()));
+                        applyDetailMapper.updateById(applyDetail);
+                        sumAmount = sumAmount.add(applyDetail.getCurrentFee());
+                    }
+                }
+                insuranceApply.setCurrentFee(sumAmount);
+                insuranceApplyMapper.updateById(insuranceApply);
+            }
+        }
+
+
+
+
+
+
+    }
+
+
+
 
 
 }

--
Gitblit v1.9.3