From 7b3b1cb76452258c3b554b6364ef5d50ed34542c Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期五, 31 五月 2024 11:40:14 +0800
Subject: [PATCH] 最新版本

---
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java |  134 +++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 131 insertions(+), 3 deletions(-)

diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java
index 19b9c4b..b1a219e 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java
@@ -20,6 +20,7 @@
 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.doumee.service.system.NoticesService;
 import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import org.apache.commons.lang3.StringUtils;
@@ -227,7 +228,7 @@
 
     /**
      * 鍒涘缓瀹℃壒娴佺▼
-     * @param tempType 妯℃澘绫诲瀷  0闈炴柦宸ヤ汉鍛樿瀹㈢敵璇� 1闈炴柦宸ヤ汉鍛樿瀹㈢敵璇� 2璁垮鎶ュ 3鍏溅甯傚唴鐢ㄨ溅 4鍏溅瀹ゅ鐢ㄨ溅 5甯傚叕鍙哥墿娴佽溅棰勭害
+     * @param tempType 妯℃澘绫诲瀷  0闈炴柦宸ヤ汉鍛樿瀹㈢敵璇� 1鏂藉伐浜哄憳璁垮鐢宠 2璁垮鎶ュ 3鍏溅甯傚唴鐢ㄨ溅 4鍏溅瀹ゅ鐢ㄨ溅 5甯傚叕鍙哥墿娴佽溅棰勭害
      * @param businessId 涓氬姟涓婚敭 鏍规嵁 tempType
      * @param createMemberId 鎻愪氦娴佺▼浜哄憳
      */
@@ -241,7 +242,7 @@
                 .last(" limit 1 ")
         );
         if(Objects.isNull(approveTempl)){
-            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌閰嶇疆妯℃澘");
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌瀹℃壒娴侀厤缃ā鏉�");
         }
         //鏌ヨ閰嶇疆娴佺▼
         List<ApproveParam> approveParamAllList = approveParamMapper.selectList(new QueryWrapper<ApproveParam>()
@@ -294,8 +295,13 @@
         for (int i = 0; i < approveParamList.size(); i++) {
             ApproveParam approveParam = approveParamList.get(i);
             List<Integer> ids = this.getApproveUserIds(approveParam,createMember);
+            //鐢熸垚寰呭姙 notices 琛ㄦ暟鎹�
+            if(i==0){
+
+            }
             for (Integer memberId:ids) {
                 Approve approve = new Approve();
+                approve.setRemark(approveParam.getRemark());
                 approve.setCreateDate(new Date());
                 approve.setIsdeleted(Constants.ZERO);
                 approve.setTemplatId(approveTempl.getId());
@@ -305,6 +311,7 @@
                 approve.setIsEndCheck((i+1) == approveParamList.size()?Constants.ONE:Constants.ZERO);
                 approve.setObjId(businessId);
                 approve.setLevel(i+1);
+                approve.setObjType(approveTempl.getType());
                 approve.setApproveType(approveParam.getApproveType());
                 approve.setDriverParam(approveParam.getDriverParam());
                 approve.setAddrParam(approveParam.getAddrParam());
@@ -434,6 +441,96 @@
         return auditCompany;
     }
 
+    public ApproveDataVO arrangeApprovedDataNew(Integer businessId, Integer businessType, Integer memberId){
+        ApproveDataVO approveDateVO = new ApproveDataVO();
+        approveDateVO.setApproveList(new ArrayList<>());
+        approveDateVO.setCanBeApproved(Constants.ZERO);
+        List<Approve> approveGroupList = approveJoinMapper.selectJoinList(Approve.class,
+                new MPJLambdaWrapper<Approve>().
+                        selectAll(Approve.class)
+                        .eq(Approve::getIsdeleted,Constants.ZERO)
+                        .eq(Approve::getObjId,businessId)
+                        .eq(Approve::getObjType,businessType)
+                        .orderByAsc(Approve::getLevel)
+        );
+
+        //鏌ユ壘鍏ㄩ儴levelList
+        List<Approve> levelList = getLevelListFromResult(approveGroupList);
+        //閬嶅巻level鏌ヨ姣忎竴绾у埆涓氬姟鏁版嵁
+        for(Approve level:levelList){
+            List<Approve> tlist = getLevelInfoFromList(level,approveGroupList);
+            approveDateVO.getApproveList().addAll(tlist);
+            if(tlist.size() ==0
+                    ||Constants.equalsInteger(Constants.approveStatus.unPass,  tlist.get(0).getStatus())
+                    ||Constants.equalsInteger(Constants.approveStatus.cancel,  tlist.get(0).getStatus())){
+                break;
+            }
+        }
+        return approveDateVO;
+    }
+
+    private List<Approve> getLevelInfoFromList(Approve level,List<Approve> approveGroupList) {
+        List<Approve> list = new ArrayList<>();
+        if(Constants.equalsInteger(level.getApproveType(),Constants.TWO)){
+            //濡傛灉鏄崟浜哄鎵�
+            list.add(level);
+            return list;
+        }
+        //鏌ユ壘鍏ㄩ儴宸插鐞嗙殑闆嗗悎
+        List<Approve> passList = new ArrayList<>();//宸插悓鎰忕殑璁板綍闆�
+        Approve  refuseModel = new Approve();//宸叉嫆缁濈殑璁板綍
+        List<Approve> waitList = new ArrayList<>();  //鏌ヨ鍏ㄩ儴鏈鐞嗙殑闆嗗悎
+        List<Approve> otherPassList = new ArrayList<>();//浠栦汉宸插鐞嗙殑璁板綍闆�
+        dealGroupListBiz(level,passList,refuseModel,waitList,otherPassList);
+        if(refuseModel !=null){
+            //瀛樺湪鎷掔粷鐨勶紝鍙渶瑕佽繑鍥炰竴鏉″鐞嗘暟鎹紝鍚庣画涓嶉渶瑕佸洖鏄�
+            list.add(refuseModel);
+            return list;
+        }
+        list.addAll(sortByCreateTime(passList));
+        if(Constants.equalsInteger(level.getApproveType(),Constants.ONE)){
+            //濡傛灉鏄細绛�
+            if(waitList.size()>0){
+                Approve waitModel = new Approve();
+                waitModel.setApproveType(Constants.ONE);
+                waitModel.setStatusInfo(StringUtils.defaultString(level.getTitle(),"瀹℃壒浜�")+"澶勭悊涓�");
+                waitModel.setStatus(Constants.ONE);
+                waitModel.setApproveList(waitList);
+                list.add(waitModel);
+            }
+        }else {
+            //濡傛灉鏄垨绛�
+            if(otherPassList.size()>0){
+                Approve waitModel = new Approve();
+                waitModel.setApproveType(Constants.ONE);
+                waitModel.setStatusInfo(StringUtils.defaultString(level.getTitle(),"瀹℃壒浜�")+"锛堟妱閫佹垨绛惧鎵逛汉锛�");
+                waitModel.setStatus(Constants.ONE);
+                waitModel.setApproveList(otherPassList);
+                list.add(waitModel);
+            }
+        }
+
+
+        return  list;
+
+    }
+
+    private void dealGroupListBiz(Approve level, List<Approve> passList, Approve refuseModel, List<Approve> waitList, List<Approve> otherPassList) {
+
+        //TODO----------rk
+    }
+
+    private List<Approve> sortByCreateTime(List<Approve> passList) {
+        //TODO----------rk
+
+        return  passList;
+    }
+
+
+    private List<Approve> getLevelListFromResult(List<Approve> approveGroupList) {
+        //TODO----------rk
+        return  null;
+    }
 
     /**
      * 鏁寸悊 瀹℃壒鏁版嵁
@@ -463,6 +560,7 @@
                         .selectAll(Approve.class)
                         .selectAs(Member::getName,Approve::getMemberName)
                         .selectAs(Member::getPhone,Approve::getMemberPhone)
+                        .selectAs(Member::getFaceImg,Approve::getFaceImg)
                         .selectAs(Company::getName,Approve::getCompanyName)
                         .leftJoin(Member.class,Member::getId,Approve::getChekorId)
                         .leftJoin(Company.class,Company::getId,Member::getCompanyId)
@@ -474,14 +572,26 @@
                         .orderByAsc(Approve::getLevel)
                         .orderByAsc(Approve::getId)
         );
+
+
+        String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()
+                +systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode();
+        for (Approve approve:approveAllList ) {
+            if(StringUtils.isNotBlank(approve.getFaceImg())){
+                approve.setFaceImg(path + approve.getFaceImg());
+            }
+        }
+
         if(CollectionUtils.isEmpty(approveAllList)){
             return approveDateVO;
         }
-        List<Approve> approveList = approveAllList.stream().filter(i->i.getType().equals(Constants.ZERO)).collect(Collectors.toList());
+        List<Approve> approveList = approveAllList.stream().filter(i->Constants.equalsInteger(i.getType(),(Constants.ZERO)))
+                .collect(Collectors.toList());
         if(CollectionUtils.isEmpty(approveList)){
             return approveDateVO;
         }
         approveDateVO.setCanBeApproved(this.canBeApproved(approveList,memberId));
+        approveDateVO.setDriverParam(this.canDriverParam(approveList,memberId));
         //鏍规嵁瀹℃壒绾у埆 澶勭悊鏁版嵁
         for (Approve approve:approveGroupList) {
             approve.setApproveList(
@@ -510,6 +620,24 @@
         return Constants.ZERO;
     }
 
+    public Integer canDriverParam(List<Approve> approveList,Integer memberId){
+        //鑾峰彇鎵�鏈夊緟瀹℃壒鐨勬暟鎹�
+        List<Approve> waitApprovedList = approveList.stream().filter(i->i.getType().equals(Constants.ZERO)&&i.getStatus().equals(Constants.ZERO)).collect(Collectors.toList());
+        if(CollectionUtils.isNotEmpty(waitApprovedList)){
+            //涓嬩釜瀹℃壒娴佺▼绛夌骇
+            Integer nextApprovedLevel = waitApprovedList.get(Constants.ZERO).getLevel();
+            //涓嬩釜瀹℃壒娴佺▼鐨� 鎵�鏈夋暟鎹�
+            List<Approve> nextApprovedList = waitApprovedList.stream().filter(i->i.getStatus().equals(Constants.ZERO)&&i.getLevel().equals(nextApprovedLevel)).collect(Collectors.toList());
+            //涓嬩釜瀹℃壒娴佺▼鍐� 濡傛灉瀛樺湪褰撳墠 鐢ㄦ埛鐨勬姄绱� 鍒欏彲浠ヨ繘琛屽鎵�
+            List<Approve> auditApproveList  = nextApprovedList.stream().filter(i->i.getChekorId().equals(memberId)).collect(Collectors.toList());
+            if(auditApproveList.size() >0){
+                Approve auditApprove = auditApproveList.get(Constants.ZERO);
+                return auditApprove.getDriverParam();
+            }
+        }
+        return Constants.ZERO;
+    }
+
 
 
 

--
Gitblit v1.9.3