From 9cbad80abaabd430de6a9739fb2c898d3b10193a Mon Sep 17 00:00:00 2001
From: 青城 <1662047068@qq.com>
Date: 星期四, 10 七月 2025 16:58:24 +0800
Subject: [PATCH] 协调审批对接修改后

---
 src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java |   64 ++++++++++++++------
 src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java                    |    5 +
 src/main/java/com/ruoyi/approve/mapper/ApproveProcessMapper.java            |    1 
 src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java                    |    2 
 src/main/java/com/ruoyi/approve/service/IApproveProcessService.java         |    7 ++
 src/main/resources/mapper/approve/ApproveProcessMapper.xml                  |    8 ++
 src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java    |   55 ++++++++++++++++-
 src/main/java/com/ruoyi/approve/utils/DailyRedisCounter.java                |    1 
 src/main/java/com/ruoyi/approve/controller/ApproveProcessController.java    |    6 +-
 src/main/java/com/ruoyi/approve/controller/ApproveNodeController.java       |   17 +----
 src/main/java/com/ruoyi/approve/pojo/ApproveNode.java                       |    2 
 src/main/java/com/ruoyi/approve/vo/ApproveNodeVo.java                       |    2 
 src/main/java/com/ruoyi/approve/service/IApproveNodeService.java            |    6 +
 13 files changed, 131 insertions(+), 45 deletions(-)

diff --git a/src/main/java/com/ruoyi/approve/controller/ApproveNodeController.java b/src/main/java/com/ruoyi/approve/controller/ApproveNodeController.java
index 41cc7c0..dd1d057 100644
--- a/src/main/java/com/ruoyi/approve/controller/ApproveNodeController.java
+++ b/src/main/java/com/ruoyi/approve/controller/ApproveNodeController.java
@@ -15,11 +15,11 @@
 
     /**
      * 娴佺▼鐘舵�佽鎯�
-     * @param id 娴佺▼瀹℃壒id approve_id
+     * @param id 娴佺▼瀹℃壒缂栧彿 approve_id
      * @return
      */
-    @GetMapping("/details")
-    public AjaxResult details(@PathVariable String id) {
+    @GetMapping("/details/{id}")
+    public AjaxResult details(@PathVariable("id") String id) {
         return AjaxResult.success(approveNodeService.details(id));
     }
 
@@ -34,15 +34,6 @@
         return AjaxResult.success();
     }
 
-    /**
-     * 鍒濆鍖栧鎵硅妭鐐�
-     * @param id
-     * @return
-     */
-    @PostMapping("/init")
-    public AjaxResult init(String id) {
-        approveNodeService.initApproveNodes(id);
-        return AjaxResult.success();
-    }
+
 
 }
diff --git a/src/main/java/com/ruoyi/approve/controller/ApproveProcessController.java b/src/main/java/com/ruoyi/approve/controller/ApproveProcessController.java
index 119ed01..5ae9a7c 100644
--- a/src/main/java/com/ruoyi/approve/controller/ApproveProcessController.java
+++ b/src/main/java/com/ruoyi/approve/controller/ApproveProcessController.java
@@ -91,8 +91,8 @@
      * @return
      */
     @GetMapping("/list")
-    public AjaxResult list(Page page) {
-        return AjaxResult.success(approveProcessService.listAll(page));
+    public AjaxResult list(Page page,String id) {
+        return AjaxResult.success(approveProcessService.listAll(page,id));
     }
 
     /**
@@ -100,7 +100,7 @@
      * @param ids
      * @return
      */
-    @RequestMapping ("/deleteIds")
+    @DeleteMapping("/deleteIds")
     public AjaxResult deleteIds(@RequestBody Long[] ids) {
         if (ids == null || ids.length == 0) {
             return AjaxResult.warn("鍙傛暟涓嶈兘涓虹┖");
diff --git a/src/main/java/com/ruoyi/approve/mapper/ApproveProcessMapper.java b/src/main/java/com/ruoyi/approve/mapper/ApproveProcessMapper.java
index b05a5f1..7e2aba7 100644
--- a/src/main/java/com/ruoyi/approve/mapper/ApproveProcessMapper.java
+++ b/src/main/java/com/ruoyi/approve/mapper/ApproveProcessMapper.java
@@ -13,6 +13,7 @@
 @Mapper
 public interface ApproveProcessMapper extends BaseMapper<ApproveProcess> {
 
+    void updateApproveDeptId(ApproveProcess approveProcess);
 }
 
 
diff --git a/src/main/java/com/ruoyi/approve/pojo/ApproveNode.java b/src/main/java/com/ruoyi/approve/pojo/ApproveNode.java
index 3aa8e58..a634b23 100644
--- a/src/main/java/com/ruoyi/approve/pojo/ApproveNode.java
+++ b/src/main/java/com/ruoyi/approve/pojo/ApproveNode.java
@@ -69,7 +69,7 @@
     private String approveNodeReason;
 
     /**
-     * 瀹℃壒鑺傜偣澶囨敞
+     * 瀹℃壒鑺傜偣澶囨敞 (鏄惁鍒板綋鍓嶈妭鐐癸細0鍚︼紝1鏄紙榛樿0锛�)
      */
     private String approveNodeRemark;
 
diff --git a/src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java b/src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java
index 138c964..468d1a4 100644
--- a/src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java
+++ b/src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java
@@ -31,6 +31,11 @@
     private Long approveUser;
 
     /**
+     * 褰撳墠鐢宠浜哄鍚�
+     */
+    private String approveUserName;
+
+    /**
      * 鐢宠閮ㄩ棬id
      */
     private Long approveDeptId;
diff --git a/src/main/java/com/ruoyi/approve/service/IApproveNodeService.java b/src/main/java/com/ruoyi/approve/service/IApproveNodeService.java
index d6e9c66..0c2b554 100644
--- a/src/main/java/com/ruoyi/approve/service/IApproveNodeService.java
+++ b/src/main/java/com/ruoyi/approve/service/IApproveNodeService.java
@@ -8,7 +8,11 @@
 
 public interface IApproveNodeService extends IService<ApproveNode> {
 
-    void initApproveNodes(String id);
+    /**
+     * 鍒濆鍖�
+     * @param id 娴佺▼缂栧彿
+     */
+    void initApproveNodes(String id,int delFlag);
     /**
      * 璇︽儏
      * @param id
diff --git a/src/main/java/com/ruoyi/approve/service/IApproveProcessService.java b/src/main/java/com/ruoyi/approve/service/IApproveProcessService.java
index 6b1cf82..5a5f781 100644
--- a/src/main/java/com/ruoyi/approve/service/IApproveProcessService.java
+++ b/src/main/java/com/ruoyi/approve/service/IApproveProcessService.java
@@ -24,12 +24,17 @@
      */
     List<SysDept> selectDeptListByDeptIds(Long[] deptIds);
 
-    IPage<ApproveProcess> listAll(Page page);
+    IPage<ApproveProcess> listAll(Page page,String id);
 
     void delApprove(Long[] ids);
 
     void updateByApproveId(ApproveGetAndUpdateVo approveGetAndUpdateVo);
 
+    /**
+     * 鏍规嵁娴佺▼缂栧彿杩涜鏌ユ壘
+     * @param id
+     * @return
+     */
     ApproveProcess getApproveById(String id);
 
     /**
diff --git a/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java b/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
index 81af66c..5201305 100644
--- a/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
+++ b/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
@@ -30,13 +30,14 @@
 
 
     @Override
-    public void initApproveNodes(String id) {
+    public void initApproveNodes(String id,int deleteFlag) {
         //绉熸埛id
         Long tenantId = SecurityUtils.getLoginUser().getTenantId();
 
         ApproveProcess approve = approveProcessService.getApproveById(id);
         String[] names = approve.getApproveUserNames().split(",");
         Long approveId = approve.getId();
+
         for (int i = 0; i < names.length; i++) {
             ApproveNode approveNode = new ApproveNode();
             approveNode.setApproveProcessId(approveId);
@@ -45,7 +46,12 @@
             approveNode.setApproveNodeTime(new Date());
             approveNode.setApproveNodeStatus(0);
             approveNode.setTenantId(tenantId);
-            approveNode.setDeleteFlag(0);
+            approveNode.setDeleteFlag(deleteFlag);
+            approveNode.setApproveNodeReason(null);
+            approveNode.setApproveNodeRemark("0");
+            if(i==0){
+                approveNode.setApproveNodeRemark("1");
+            }
             approveNodeMapper.insert(approveNode);
         }
     }
@@ -57,6 +63,8 @@
 
         LambdaQueryWrapper<ApproveNode> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(ApproveNode::getApproveProcessId, approveId);
+        queryWrapper.eq(ApproveNode::getDeleteFlag, 0);
+
         List<ApproveNode> list = list(queryWrapper);
         // 鎸夌収 approveNodeOrder 瀛楁鍗囧簭鎺掑簭
         list.sort(Comparator.comparingInt(ApproveNode::getApproveNodeOrder));
@@ -73,21 +81,58 @@
             ApproveProcess approveProcess = approveProcessService.getBaseMapper().selectById(approveProcessId);
             approveProcess.setApproveOverTime(new Date());
             approveProcess.setApproveStatus(3);
+            //璁剧疆褰撳墠瀹℃壒浜轰负绗竴涓�
+            approveProcess.setApproveUserCurrentId(Long.valueOf(approveProcess.getApproveUserIds().split(",")[0]));
+            approveProcess.setApproveUserCurrentName(approveProcess.getApproveUserNames().split(",")[0]);
             approveProcessService.saveOrUpdate(approveProcess);
 
             //瀹℃壒鑺傜偣鐘舵�佹敼鍙�
-            initApproveNodes(approveProcess.getApproveId());
+            updateApproveNodes(approveProcess.getApproveId(),1);
+            initApproveNodes(approveProcess.getApproveId(),0);
 
             return;
         }
-        //鏇存柊瀹℃壒娴佺▼
+        //鏇存柊瀹℃壒娴佺▼ 褰撳墠瀹℃壒浜轰慨鏀�
          approveProcessService.updateApproveProcessStatus(approveNode);
 
-        //瀹℃壒娴佺▼褰撳墠瀹℃壒浜轰慨鏀�
+        //瀹℃壒娴佺▼ 鑺傜偣鐘舵�佹敼鍙�
         ApproveNode node = getById(approveNode.getId());
+        node.setApproveNodeRemark("0");
         node.setApproveNodeTime(new Date());
+        node.setApproveNodeReason(approveNode.getApproveNodeReason());
         node.setApproveNodeStatus(approveNode.getApproveNodeStatus());
         approveNodeMapper.updateById(node);
+
+        //涓嬩竴涓妭鐐圭姸鎬佹敼鍙�
+        ApproveNode node1 = approveNodeMapper.selectById(approveNode.getId());
+        Long approveProcessId = node1.getApproveProcessId();
+        ApproveProcess approveProcess = approveProcessService.getBaseMapper().selectById(approveProcessId);
+        int length = approveProcess.getApproveUserIds().split(",").length;
+
+        //姝ゆ椂鏄渶鍚庝竴涓妭鐐逛簡
+        if (length==node.getApproveNodeOrder()){
+            return;
+        }
+
+        LambdaQueryWrapper<ApproveNode> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ApproveNode::getApproveNodeOrder, node.getApproveNodeOrder()+1);
+        queryWrapper.eq(ApproveNode::getApproveProcessId, node.getApproveProcessId());
+        queryWrapper.eq(ApproveNode::getDeleteFlag, 0);
+        ApproveNode nextNode = getOne(queryWrapper);
+        nextNode.setApproveNodeRemark("1");
+        approveNodeMapper.updateById(nextNode);
+    }
+
+    private void updateApproveNodes(String id, int delFlag) {
+        ApproveProcess approve = approveProcessService.getApproveById(id);
+        Long approveId = approve.getId();
+        LambdaQueryWrapper<ApproveNode> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ApproveNode::getApproveProcessId, approveId);
+        List<ApproveNode> list = list(queryWrapper);
+        for (ApproveNode approveNode : list) {
+            approveNode.setDeleteFlag(delFlag);
+            approveNodeMapper.updateById(approveNode);
+        }
     }
 
 }
diff --git a/src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java b/src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
index a07be20..dd04916 100644
--- a/src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
+++ b/src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
@@ -13,7 +13,9 @@
 import com.ruoyi.approve.vo.ApproveGetAndUpdateVo;
 import com.ruoyi.approve.vo.ApproveNodeVo;
 import com.ruoyi.approve.vo.ApproveProcessVO;
+import com.ruoyi.basic.pojo.Customer;
 import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.project.system.domain.SysDept;
 import com.ruoyi.project.system.domain.SysUser;
 import com.ruoyi.project.system.mapper.SysDeptMapper;
@@ -27,10 +29,7 @@
 
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
 @Service
 @RequiredArgsConstructor
@@ -46,11 +45,14 @@
     private final SysUserMapper sysUserMapper;
     private final ApproveProcessMapper approveProcessMapper;
 
+
     @Override
     public void addApprove(ApproveProcessVO approveProcessVO) {
         Long userId = SecurityUtils.getUserId();
+        String nickName = SecurityUtils.getLoginUser().getNickName();
         //绉熸埛id
         Long tenantId = SecurityUtils.getLoginUser().getTenantId();
+        String deptName = sysDeptMapper.selectDeptById(approveProcessVO.getApproveDeptId()).getDeptName();
 
         String today = LocalDate.now().format(DATE_FORMAT);
         Long approveId = dailyRedisCounter.incrementAndGet("approveId");
@@ -59,17 +61,18 @@
         String approveID = today + formattedCount;
 
         //瀹℃壒浜哄鍚嶅鐞�
-        String approverIds = approveProcessVO.getApproverIds();
+        String approverIds = approveProcessVO.getApproveUserIds();
         String[] idArray = approverIds.split(",");
-        String approverNames = getApproverNames(approveProcessVO.getApproverIds());
-        String[] namdArray = approverIds.split(",");
+        String approverNames = getApproverNames(approveProcessVO.getApproveUserIds());
+        String[] namdArray = approverNames.split(",");
 
         ApproveProcess approveProcess = new ApproveProcess();
         approveProcess.setApproveId(approveID);
         approveProcess.setApproveUser(userId);
+        approveProcess.setApproveUserName(nickName);
         approveProcess.setApproveDeptId(approveProcessVO.getApproveDeptId());
-      //  approveProcess.setApproveDeptName(approveProcessVO.getDeptName());
-        approveProcess.setApproveUserIds(approveProcessVO.getApproverIds());
+        approveProcess.setApproveDeptName(deptName);
+        approveProcess.setApproveUserIds(approveProcessVO.getApproveUserIds());
         approveProcess.setApproveUserNames(approverNames);
         approveProcess.setApproveUserCurrentId(Long.parseLong(idArray[0]));
         approveProcess.setApproveUserCurrentName(namdArray[0]);
@@ -82,7 +85,7 @@
 
         save(approveProcess);
         //鍒濆鍖栧鎵硅妭鐐�
-        approveNodeService.initApproveNodes(approveID);
+        approveNodeService.initApproveNodes(approveID,0);
     }
 
     private String getApproverNames(String approverIds) {
@@ -91,13 +94,14 @@
         Integer[] ids = Arrays.stream(idArray)
                 .map(Integer::parseInt)
                 .toArray(Integer[]::new);
-        String names = "";
-        StringBuilder stringBuilder = new StringBuilder();
+        List<String> names = new ArrayList<String>();
+
         for (Integer id : ids) {
             SysUser sysUser = sysUserMapper.selectUserById(id.longValue());
-                names = stringBuilder + "," + sysUser.getUserName();
+                 names.add(sysUser.getNickName());
         }
-        return names;
+
+        return String.join(",", names);
     }
 
 
@@ -112,9 +116,16 @@
     }
 
     @Override
-    public IPage<ApproveProcess> listAll(Page page) {
+    public IPage<ApproveProcess> listAll(Page page,String id) {
+        // 1. 澶勭悊绌哄�煎満鏅紙鍙傛暟鏍¢獙锛�
+        if (page == null) {
+            page = Page.of(1, 10); // 榛樿绗�1椤碉紝姣忛〉10鏉℃暟鎹�
+        }
         LambdaQueryWrapper<ApproveProcess> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(ApproveProcess::getApproveDelete, 0);
+        if (StringUtils.isNotBlank(id)) {
+            queryWrapper.like(ApproveProcess::getApproveId, id);
+        }
         return approveProcessMapper.selectPage(page, queryWrapper);
     }
 
@@ -122,8 +133,10 @@
     public void delApprove(Long[] ids) {
         for (Long id : ids) {
             LambdaQueryWrapper<ApproveProcess> queryWrapper = new LambdaQueryWrapper<>();
-            queryWrapper.eq(ApproveProcess::getApproveDelete, 1);
-            update(queryWrapper);
+            queryWrapper.eq(ApproveProcess::getApproveId, id);
+            ApproveProcess process = getOne(queryWrapper);
+            process.setApproveDelete(1);
+            saveOrUpdate(process);
         }
     }
 
@@ -143,9 +156,16 @@
         String[] idArray = approveProcess.getApproveUserIds().split(",");
         String[] nameArray = approveProcess.getApproveUserNames().split(",");
 
+
         Integer noderOrder = approveNodeVo.getApproveNodeOrder();
-        approveProcess.setApproveUserCurrentId(Long.parseLong(idArray[noderOrder]));
-        approveProcess.setApproveUserCurrentName(nameArray[noderOrder]);
+        //璁剧疆褰撳墠瀹℃壒浜�
+        if (noderOrder ==idArray.length){
+            approveProcess.setApproveUserCurrentId(null);
+            approveProcess.setApproveUserCurrentName(null);
+        }else {
+            approveProcess.setApproveUserCurrentId(Long.parseLong(idArray[noderOrder]));
+            approveProcess.setApproveUserCurrentName(nameArray[noderOrder]);
+        }
 
         if(noderOrder.equals(1)){
             if(approveNodeVo.getApproveNodeStatus() == 1){
@@ -155,12 +175,16 @@
         if(noderOrder.equals(idArray.length)){
             if(approveNodeVo.getApproveNodeStatus() == 1){
                 approveProcess.setApproveStatus(2);
+                approveProcess.setApproveOverTime(new Date());
             }
         }
-        updateById(approveProcess);
+       // updateById(approveProcess);
+        approveProcessMapper.updateApproveDeptId(approveProcess);
+
 
     }
 
+
     @Override
     public void updateByApproveId(ApproveGetAndUpdateVo approveGetAndUpdateVo) {
         ApproveProcess approve = getApproveById(approveGetAndUpdateVo.getId());
diff --git a/src/main/java/com/ruoyi/approve/utils/DailyRedisCounter.java b/src/main/java/com/ruoyi/approve/utils/DailyRedisCounter.java
index be00664..480671f 100644
--- a/src/main/java/com/ruoyi/approve/utils/DailyRedisCounter.java
+++ b/src/main/java/com/ruoyi/approve/utils/DailyRedisCounter.java
@@ -64,6 +64,7 @@
 
     /**
      * 鐢熸垚Redis閿�
+     * 鏍煎紡 daily_counter:counterName:yyyyMMdd
      */
     private String getKey(String counterName) {
         String today = LocalDate.now().format(DATE_FORMAT);
diff --git a/src/main/java/com/ruoyi/approve/vo/ApproveNodeVo.java b/src/main/java/com/ruoyi/approve/vo/ApproveNodeVo.java
index 3abc3d6..87dcb32 100644
--- a/src/main/java/com/ruoyi/approve/vo/ApproveNodeVo.java
+++ b/src/main/java/com/ruoyi/approve/vo/ApproveNodeVo.java
@@ -16,4 +16,6 @@
      */
     private Integer approveNodeStatus;
 
+    private String approveNodeReason;
+
 }
diff --git a/src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java b/src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java
index a22a7ce..9162dcc 100644
--- a/src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java
+++ b/src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java
@@ -12,7 +12,7 @@
     //閮ㄩ棬鍚嶇О
     //private String deptName;
     //瀹℃壒浜� ids
-    private String approverIds;
+    private String approveUserIds;
     //瀹℃壒浜哄悕绉�
     //private String approverNames;
     //瀹℃壒浜嬬敱
diff --git a/src/main/resources/mapper/approve/ApproveProcessMapper.xml b/src/main/resources/mapper/approve/ApproveProcessMapper.xml
index da0d5f7..b7bb783 100644
--- a/src/main/resources/mapper/approve/ApproveProcessMapper.xml
+++ b/src/main/resources/mapper/approve/ApproveProcessMapper.xml
@@ -27,4 +27,12 @@
         approve_user_names,approve_reason,approve_time,approve_over_time,approve_status,
         approve_delete,tenant_id,approve_type,approve_remark
     </sql>
+    <update id="updateApproveDeptId" parameterType="com.ruoyi.approve.pojo.ApproveProcess">
+        update approve_process
+        set approve_user_current_id = #{approveUserCurrentId},
+            approve_user_current_name = #{approveUserCurrentName},
+            approve_status = #{approveStatus},
+            approve_over_time = #{approveOverTime}
+        where id = #{id}
+    </update>
 </mapper>

--
Gitblit v1.9.3