From 91c0906bda26d3718b2fa450eed27419388b24a5 Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期五, 11 七月 2025 14:49:44 +0800
Subject: [PATCH] yys  修改协同审批bug

---
 src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java |   74 +++++++++---
 src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java                    |   27 ++++
 src/main/java/com/ruoyi/approve/mapper/ApproveProcessMapper.java            |    4 
 src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java                    |   23 +--
 src/main/java/com/ruoyi/approve/service/IApproveProcessService.java         |    7 
 src/main/java/com/ruoyi/other/service/impl/TempFileServiceImpl.java         |    1 
 src/main/java/com/ruoyi/framework/security/service/TokenService.java        |   17 ++
 src/main/resources/mapper/approve/ApproveProcessMapper.xml                  |    6 +
 src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java    |   40 ++++--
 src/main/java/com/ruoyi/approve/utils/StartAndEndDateDto.java               |   21 +++
 src/main/java/com/ruoyi/project/system/mapper/SysUserMapper.java            |    8 +
 src/main/java/com/ruoyi/approve/utils/DailyRedisCounter.java                |   45 +++++++
 src/main/resources/mapper/system/SysUserMapper.xml                          |    8 +
 src/main/java/com/ruoyi/approve/controller/ApproveProcessController.java    |   15 +
 src/main/java/com/ruoyi/approve/controller/ApproveNodeController.java       |    4 
 src/main/java/com/ruoyi/approve/pojo/ApproveNode.java                       |   30 ++++
 src/main/java/com/ruoyi/approve/service/IApproveNodeService.java            |    4 
 17 files changed, 274 insertions(+), 60 deletions(-)

diff --git a/src/main/java/com/ruoyi/approve/controller/ApproveNodeController.java b/src/main/java/com/ruoyi/approve/controller/ApproveNodeController.java
index a4d815e..369a65e 100644
--- a/src/main/java/com/ruoyi/approve/controller/ApproveNodeController.java
+++ b/src/main/java/com/ruoyi/approve/controller/ApproveNodeController.java
@@ -17,7 +17,7 @@
      * @param id 娴佺▼瀹℃壒id approve_id
      * @return
      */
-    @GetMapping("/details")
+    @GetMapping("/details/{id}")
     public AjaxResult details(@PathVariable String id) {
         return AjaxResult.success(approveNodeService.details(id));
     }
@@ -40,7 +40,7 @@
      */
     @PostMapping("/init")
     public AjaxResult init(String id) {
-        approveNodeService.initApproveNodes(id);
+        approveNodeService.initApproveNodes("",id,1L);
         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 25fd122..589f14f 100644
--- a/src/main/java/com/ruoyi/approve/controller/ApproveProcessController.java
+++ b/src/main/java/com/ruoyi/approve/controller/ApproveProcessController.java
@@ -1,5 +1,7 @@
 package com.ruoyi.approve.controller;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.approve.pojo.ApproveProcess;
 import com.ruoyi.approve.service.IApproveProcessService;
 import com.ruoyi.approve.vo.ApproveGetAndUpdateVo;
 import com.ruoyi.approve.vo.ApproveProcessVO;
@@ -8,8 +10,10 @@
 import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.project.system.domain.SysDept;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
+import java.text.ParseException;
 import java.util.List;
 
 @RestController
@@ -45,7 +49,8 @@
      * @return
      */
     @PostMapping("/add")
-    public AjaxResult add(@RequestBody ApproveProcessVO approveProcessVO) {
+    @Transactional(rollbackFor = Exception.class)
+    public AjaxResult add(@RequestBody ApproveProcessVO approveProcessVO) throws ParseException {
         if (approveProcessVO == null) {
             return AjaxResult.warn("鍙傛暟涓嶈兘涓虹┖");
         }
@@ -73,6 +78,7 @@
      * @return
      */
     @PostMapping("/update")
+    @Transactional(rollbackFor = Exception.class)
     public AjaxResult update(@RequestBody ApproveGetAndUpdateVo approveGetAndUpdateVo) {
         if (approveGetAndUpdateVo == null) {
             return AjaxResult.warn("鍙傛暟涓嶈兘涓虹┖");
@@ -85,8 +91,8 @@
      * @return
      */
     @GetMapping("/list")
-    public AjaxResult list() {
-        return AjaxResult.success(approveProcessService.listAll());
+    public AjaxResult list(Page page, ApproveProcess approveProcess) {
+        return AjaxResult.success(approveProcessService.listAll(page, approveProcess));
     }
 
     /**
@@ -94,7 +100,8 @@
      * @param ids
      * @return
      */
-    @PostMapping("/deleteIds")
+    @DeleteMapping("/deleteIds")
+    @Transactional(rollbackFor = Exception.class)
     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 ce1b362..32c6be0 100644
--- a/src/main/java/com/ruoyi/approve/mapper/ApproveProcessMapper.java
+++ b/src/main/java/com/ruoyi/approve/mapper/ApproveProcessMapper.java
@@ -1,7 +1,10 @@
 package com.ruoyi.approve.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.approve.pojo.ApproveProcess;
+import org.apache.ibatis.annotations.Param;
 
 /**
 * @author Administrator
@@ -11,6 +14,7 @@
 */
 public interface ApproveProcessMapper extends BaseMapper<ApproveProcess> {
 
+    IPage<ApproveProcess> listPage(Page page,@Param("req") 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 de3a255..afcf58f 100644
--- a/src/main/java/com/ruoyi/approve/pojo/ApproveNode.java
+++ b/src/main/java/com/ruoyi/approve/pojo/ApproveNode.java
@@ -1,6 +1,7 @@
 package com.ruoyi.approve.pojo;
 
 import java.io.Serializable;
+import java.time.LocalDateTime;
 import java.util.Date;
 
 import com.baomidou.mybatisplus.annotation.FieldFill;
@@ -20,9 +21,9 @@
     private Long id;
 
     /**
-     * 瀹℃壒id
+     * 瀹℃壒缂栧彿
      */
-    private Long approveProcessId;
+    private String approveProcessId;
 
     /**
      * 瀹℃壒鑺傜偣椤哄簭
@@ -33,6 +34,11 @@
      * 瀹℃壒鑺傜偣鐢ㄦ埛鍚嶅瓧
      */
     private String approveNodeUser;
+
+    /**
+     * 瀹℃壒鑺傜偣鐢ㄦ埛id
+     */
+    private Long approveNodeUserId;
 
     /**
      * 瀹℃壒鑺傜偣鏃堕棿
@@ -63,6 +69,26 @@
     private Integer deleteFlag;
 
     /**
+     * 鍏ュ簱鐢ㄦ埛id
+     */
+    private Long createUser;
+
+    /**
+     * 鍏ュ簱鏃堕棿
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 淇敼鑰�
+     */
+    private Long updateUser;
+
+    /**
+     * 淇敼鏃堕棿
+     */
+    private LocalDateTime updateTime;
+
+    /**
      * 瀹℃壒鑺傜偣鎷掔粷鍘熷洜
      */
     private String approveNodeReason;
diff --git a/src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java b/src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java
index 58cdddb..1bb5848 100644
--- a/src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java
+++ b/src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java
@@ -1,6 +1,7 @@
 package com.ruoyi.approve.pojo;
 
 import java.io.Serializable;
+import java.time.LocalDateTime;
 import java.util.Date;
 
 import com.baomidou.mybatisplus.annotation.*;
@@ -21,7 +22,7 @@
     private Long id;
 
     /**
-     * 瀹℃壒id
+     * 娴佺▼缂栧彿
      */
     private String approveId;
 
@@ -29,6 +30,11 @@
      * 鐢宠浜篿d
      */
     private Long approveUser;
+
+    /**
+     * 鐢宠浜哄悕绉�
+     */
+    private String approveUserName;
 
     /**
      * 鐢宠閮ㄩ棬id
@@ -41,12 +47,12 @@
     private String approveDeptName;
 
     /**
-     * 鐢宠鐢ㄦ埛ids
+     * 瀹℃壒鐢ㄦ埛ids
      */
     private String approveUserIds;
 
     /**
-     * 鐢宠鐢ㄦ埛鍚嶇О
+     * 瀹℃壒鐢ㄦ埛鍚嶇О
      */
     private String approveUserNames;
 
@@ -54,6 +60,16 @@
      * 鐢宠鍘熷洜
      */
     private String approveReason;
+
+    /**
+     * 褰撳墠瀹℃壒鐢ㄦ埛ID
+     */
+    private Long approveUserCurrentId;
+
+    /**
+     * 褰撳墠瀹℃壒鐢ㄦ埛鍚嶇О
+     */
+    private String approveUserCurrentName;
 
     /**
      * 鐢宠鏃ユ湡
@@ -93,6 +109,11 @@
      */
     private String approveRemark;
 
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    private LocalDateTime createTime;
+
     private static final long serialVersionUID = 1L;
 
 
diff --git a/src/main/java/com/ruoyi/approve/service/IApproveNodeService.java b/src/main/java/com/ruoyi/approve/service/IApproveNodeService.java
index 14ff91f..71813da 100644
--- a/src/main/java/com/ruoyi/approve/service/IApproveNodeService.java
+++ b/src/main/java/com/ruoyi/approve/service/IApproveNodeService.java
@@ -7,7 +7,7 @@
 
 public interface IApproveNodeService extends IService<ApproveNode> {
 
-    void initApproveNodes(String id);
+    void initApproveNodes(String approveUserIds,String approveID,Long tenantId);
     /**
      * 璇︽儏
      * @param id
@@ -15,4 +15,6 @@
     List<ApproveNode> details(String id);
 
     void updateApproveNode(ApproveNode approveNode);
+
+    void delApproveNodeByApproveId(Long id);
 }
diff --git a/src/main/java/com/ruoyi/approve/service/IApproveProcessService.java b/src/main/java/com/ruoyi/approve/service/IApproveProcessService.java
index 5ed770d..25c89bb 100644
--- a/src/main/java/com/ruoyi/approve/service/IApproveProcessService.java
+++ b/src/main/java/com/ruoyi/approve/service/IApproveProcessService.java
@@ -1,5 +1,7 @@
 package com.ruoyi.approve.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.approve.pojo.ApproveNode;
 import com.ruoyi.approve.pojo.ApproveProcess;
@@ -7,6 +9,7 @@
 import com.ruoyi.approve.vo.ApproveProcessVO;
 import com.ruoyi.project.system.domain.SysDept;
 
+import java.text.ParseException;
 import java.util.List;
 
 public interface IApproveProcessService extends IService<ApproveProcess> {
@@ -14,14 +17,14 @@
      * 娣诲姞瀹℃壒娴佺▼
      * @param approveProcessVO 瀹℃壒娴佺▼VO瀵硅薄
      */
-    void addApprove(ApproveProcessVO approveProcessVO);
+    void addApprove(ApproveProcessVO approveProcessVO) throws ParseException;
     /**
      * 鏍规嵁閮ㄩ棬id鏌ヨ閮ㄩ棬淇℃伅
      * @param deptIds 閮ㄩ棬ID鏁扮粍
      */
     List<SysDept> selectDeptListByDeptIds(Long[] deptIds);
 
-    List<ApproveProcess> listAll();
+    IPage<ApproveProcess> listAll(Page page, ApproveProcess approveProcess);
 
     void delApprove(Long[] ids);
 
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 1bc54ed..b6c37b3 100644
--- a/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
+++ b/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
@@ -1,6 +1,7 @@
 package com.ruoyi.approve.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.approve.mapper.ApproveNodeMapper;
 import com.ruoyi.approve.pojo.ApproveNode;
@@ -8,12 +9,15 @@
 import com.ruoyi.approve.service.IApproveNodeService;
 import com.ruoyi.approve.service.IApproveProcessService;
 import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.project.system.domain.SysUser;
+import com.ruoyi.project.system.mapper.SysUserMapper;
 import lombok.AllArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDateTime;
 import java.util.Comparator;
 import java.util.Date;
 import java.util.List;
@@ -26,36 +30,40 @@
     private  ApproveNodeMapper approveNodeMapper;
     @Autowired
     private  IApproveProcessService approveProcessService;
+    @Autowired
+    private SysUserMapper sysUserMapper;
 
 
     @Override
-    public void initApproveNodes(String id) {
-        //绉熸埛id
-        Long tenantId = SecurityUtils.getLoginUser().getTenantId();
-
-        ApproveProcess approve = approveProcessService.getApproveById(id);
-        String[] names = approve.getApproveUserNames().split(",");
-        Long approveId = approve.getId();
+    public void initApproveNodes(String approveUserIds,String approveID,Long tenantId) {
+        Long userId = SecurityUtils.getLoginUser().getUser().getUserId();
+        ApproveProcess approve = approveProcessService.getApproveById(approveID);
+        String[] names = approveUserIds.split(",");
+        String approveId = approve.getApproveId();
         for (int i = 0; i < names.length; i++) {
+            SysUser sysUser = sysUserMapper.selectUserById(Long.parseLong(names[i]));
+            if (sysUser == null) continue;
             ApproveNode approveNode = new ApproveNode();
             approveNode.setApproveProcessId(approveId);
             approveNode.setApproveNodeOrder(i +1);
-            approveNode.setApproveNodeUser(names[i]);
+            approveNode.setApproveNodeUser(sysUser.getNickName());
+            approveNode.setApproveNodeUserId(sysUser.getUserId());
             approveNode.setApproveNodeTime(new Date());
             approveNode.setApproveNodeStatus(0);
             approveNode.setTenantId(tenantId);
             approveNode.setDeleteFlag(0);
+            approveNode.setCreateUser(userId);
+            approveNode.setUpdateUser(userId);
+            approveNode.setCreateTime(LocalDateTime.now());
+            approveNode.setUpdateTime(LocalDateTime.now());
             approveNodeMapper.insert(approveNode);
         }
     }
 
     @Override
     public List<ApproveNode> details(String id) {
-        ApproveProcess approve = approveProcessService.getApproveById(id);
-        Long approveId = approve.getId();
-
         LambdaQueryWrapper<ApproveNode> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(ApproveNode::getApproveProcessId, approveId);
+        queryWrapper.eq(ApproveNode::getApproveProcessId, id);
         List<ApproveNode> list = list(queryWrapper);
         // 鎸夌収 approveNodeOrder 瀛楁鍗囧簭鎺掑簭
         list.sort(Comparator.comparingInt(ApproveNode::getApproveNodeOrder));
@@ -71,4 +79,12 @@
         approveNodeMapper.updateById(approveNode);
     }
 
+    @Override
+    public void delApproveNodeByApproveId(Long id) {
+        UpdateWrapper<ApproveNode> queryWrapper = new UpdateWrapper<>();
+        queryWrapper.lambda().set(ApproveNode::getDeleteFlag, 1)
+                .eq(ApproveNode::getApproveProcessId, id);
+        update(queryWrapper);
+    }
+
 }
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 322a498..426a8d8 100644
--- a/src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
+++ b/src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
@@ -1,6 +1,9 @@
 package com.ruoyi.approve.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.approve.mapper.ApproveProcessMapper;
 import com.ruoyi.approve.pojo.ApproveNode;
@@ -12,19 +15,28 @@
 import com.ruoyi.approve.vo.ApproveProcessVO;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.project.system.domain.SysDept;
+import com.ruoyi.project.system.domain.SysUser;
 import com.ruoyi.project.system.mapper.SysDeptMapper;
+import com.ruoyi.project.system.mapper.SysUserMapper;
 import lombok.AllArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
 
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 @Service
 @RequiredArgsConstructor
@@ -37,34 +49,52 @@
 
     private final SysDeptMapper sysDeptMapper;
     private final IApproveNodeService approveNodeService;
+    private final SysUserMapper sysUserMapper;
+    private final ApproveProcessMapper approveProcessMapper;
 
     @Override
-    public void addApprove(ApproveProcessVO approveProcessVO) {
-        Long userId = SecurityUtils.getUserId();
-        //绉熸埛id
-        Long tenantId = SecurityUtils.getLoginUser().getTenantId();
-
+    public void addApprove(ApproveProcessVO approveProcessVO) throws ParseException {
+        SysUser sysUser = sysUserMapper.selectUserById(approveProcessVO.getApproveUser());
+        SysDept sysDept = sysDeptMapper.selectDeptById(approveProcessVO.getApproveDeptId());
+        String[] split = approveProcessVO.getApproveUserIds().split(",");
+        List<Long> longList = Arrays.stream(split)
+                .map(Long::valueOf)  // 灏嗘瘡涓� String 杞崲涓� Long
+                .collect(Collectors.toList());
+        List<SysUser> sysUsers = sysUserMapper.selectUserByIds(longList);
+        if(CollectionUtils.isEmpty(sysUsers)) throw new RuntimeException("瀹℃牳鐢ㄦ埛涓嶅瓨鍦�");
+        if(sysDept == null) throw new RuntimeException("閮ㄩ棬涓嶅瓨鍦�");
+        if(sysUser == null) throw new RuntimeException("鐢宠浜轰笉瀛樺湪");
         String today = LocalDate.now().format(DATE_FORMAT);
-        Long approveId = dailyRedisCounter.incrementAndGet("approveId");
+        Long approveId = dailyRedisCounter.incrementAndGetByDb();
         String formattedCount = String.format("%03d", approveId);
         //娴佺▼ ID
         String approveID = today + formattedCount;
-
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
         ApproveProcess approveProcess = new ApproveProcess();
         approveProcess.setApproveId(approveID);
-        approveProcess.setApproveUser(userId);
-        approveProcess.setApproveDeptName(approveProcessVO.getDeptName());
-        approveProcess.setApproveUserNames(approveProcessVO.getApproverNames());
-        approveProcess.setApproveTime(new Date());
+        approveProcess.setApproveUser(approveProcessVO.getApproveUser());
+        approveProcess.setApproveUserName(sysUser.getNickName());
+        approveProcess.setApproveDeptId(approveProcessVO.getApproveDeptId());
+        approveProcess.setApproveDeptName(sysDept.getDeptName());
+        approveProcess.setApproveUserNames(sysUsers.stream().map(SysUser::getNickName).collect(Collectors.joining(",")));
+        approveProcess.setApproveTime(StringUtils.isEmpty(approveProcessVO.getApproveTime()) ? null : dateFormat.parse(approveProcessVO.getApproveTime()));
         approveProcess.setApproveReason(approveProcessVO.getApproveReason());
         approveProcess.setApproveOverTime(null);
         approveProcess.setApproveStatus(0);
         approveProcess.setApproveDelete(0);
-        approveProcess.setTenantId(tenantId);
-
+        approveProcess.setCreateTime(LocalDateTime.now());
+        approveProcess.setTenantId(approveProcessVO.getApproveDeptId());
+        approveProcess.setApproveUserIds(approveProcessVO.getApproveUserIds());
+        approveProcess.setApproveUserCurrentId(longList.get(0));
+        approveProcess.setApproveUserCurrentName(sysUsers
+                .stream()
+                .filter(SysUser -> SysUser.getUserId().equals(longList.get(0)))
+                .collect(Collectors.toList())
+                .get(0)
+                .getNickName());
         save(approveProcess);
         //鍒濆鍖栧鎵硅妭鐐�
-        approveNodeService.initApproveNodes(approveID);
+        approveNodeService.initApproveNodes(approveProcessVO.getApproveUserIds(),approveID,approveProcessVO.getApproveDeptId());
     }
 
     @Override
@@ -78,19 +108,23 @@
     }
 
     @Override
-    public List<ApproveProcess> listAll() {
-        LambdaQueryWrapper<ApproveProcess> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(ApproveProcess::getApproveDelete, 0);
-        return list(queryWrapper);
+    public IPage<ApproveProcess> listAll(Page page,ApproveProcess approveProcess) {
+        IPage<ApproveProcess> approveProcessIPage = approveProcessMapper.listPage(page,approveProcess);
+        return approveProcessIPage;
     }
 
     @Override
     public void delApprove(Long[] ids) {
         for (Long id : ids) {
-            LambdaQueryWrapper<ApproveProcess> queryWrapper = new LambdaQueryWrapper<>();
-            queryWrapper.eq(ApproveProcess::getApproveId, id);
+            UpdateWrapper<ApproveProcess> queryWrapper = new UpdateWrapper<>();
+            queryWrapper.lambda().set(ApproveProcess::getApproveDelete, 1)
+                    .eq(ApproveProcess::getApproveId, id);
             update(queryWrapper);
+            // 鍒犻櫎鍏宠仈鐨勫鎵硅妭鐐�
+            approveNodeService.delApproveNodeByApproveId(id);
         }
+
+
     }
 
     @Override
diff --git a/src/main/java/com/ruoyi/approve/utils/DailyRedisCounter.java b/src/main/java/com/ruoyi/approve/utils/DailyRedisCounter.java
index eec0e4a..0fdcfc5 100644
--- a/src/main/java/com/ruoyi/approve/utils/DailyRedisCounter.java
+++ b/src/main/java/com/ruoyi/approve/utils/DailyRedisCounter.java
@@ -1,12 +1,18 @@
 package com.ruoyi.approve.utils;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.approve.mapper.ApproveProcessMapper;
+import com.ruoyi.approve.pojo.ApproveProcess;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
+import java.util.Calendar;
+import java.util.Date;
 import java.util.concurrent.TimeUnit;
 
 
@@ -21,7 +27,7 @@
         this.redisTemplate = redisTemplate;
     }
 
-    /**
+    /**鏌ョ紦瀛�
      * 鑾峰彇鎸囧畾璁℃暟鍣ㄥ湪浠婃棩鐨勬暟鍊硷紝骞惰嚜澧�1
      * @param counterName 璁℃暟鍣ㄥ悕绉帮紙渚嬪锛歭ogin_count銆乷rder_count锛�
      * @return 浠婃棩鑷鍚庣殑璁℃暟鍊�
@@ -39,6 +45,43 @@
         return count;
     }
 
+    @Autowired
+    private ApproveProcessMapper approveProcessMapper;
+
+    /**
+     * 鑾峰彇褰撳墠鏃堕棿鐨�  寮�濮嬫棩鏈�  锛岀粨鏉熸棩鏈�
+     * @return
+     */
+    public static StartAndEndDateDto getDateTime(){
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        Date date = new Date();
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(date);
+        cal.add(Calendar.DATE,1);
+        String startDateTime = simpleDateFormat.format(date);
+        String endDateTime = simpleDateFormat.format(cal.getTime());
+        StartAndEndDateDto startAndEndDateDto = new StartAndEndDateDto();
+        startAndEndDateDto.setStartDate(startDateTime);
+        startAndEndDateDto.setEndDate(endDateTime);
+        return startAndEndDateDto;
+    }
+
+    /**鏌ユ暟鎹簱
+     * 鑾峰彇鎸囧畾璁℃暟鍣ㄥ湪浠婃棩鐨勬暟鍊硷紝骞惰嚜澧�1
+     * @return 浠婃棩鑷鍚庣殑璁℃暟鍊�
+     */
+    public long incrementAndGetByDb() {
+        StartAndEndDateDto dateTime = getDateTime();
+        LambdaQueryWrapper<ApproveProcess> approveProcessLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        approveProcessLambdaQueryWrapper
+                .eq(ApproveProcess::getApproveDelete,0)
+                .gt(ApproveProcess::getCreateTime,dateTime.getStartDate())
+        .lt(ApproveProcess::getCreateTime,dateTime.getEndDate());
+        Long aLong = approveProcessMapper.selectCount(approveProcessLambdaQueryWrapper);
+
+        return aLong == null ? 1 : aLong + 1;
+    }
+
     /**
      * 鑾峰彇鎸囧畾璁℃暟鍣ㄥ湪浠婃棩鐨勫綋鍓嶆暟鍊�
      * @param counterName 璁℃暟鍣ㄥ悕绉�
diff --git a/src/main/java/com/ruoyi/approve/utils/StartAndEndDateDto.java b/src/main/java/com/ruoyi/approve/utils/StartAndEndDateDto.java
new file mode 100644
index 0000000..0c9eb11
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/utils/StartAndEndDateDto.java
@@ -0,0 +1,21 @@
+package com.ruoyi.approve.utils;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author :yys
+ * @date : 2023/9/19 10:58
+ */
+@Data
+@ApiModel
+public class StartAndEndDateDto {
+
+    @ApiModelProperty("寮�濮嬫椂闂�")
+    private String startDate;
+
+    @ApiModelProperty("缁撴潫鏃堕棿")
+    private String endDate;
+
+}
diff --git a/src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java b/src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java
index 5835645..7885247 100644
--- a/src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java
+++ b/src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java
@@ -7,17 +7,16 @@
 @Data
 public class ApproveProcessVO {
 
-    //閮ㄩ棬id
-  //  private Long deptId;
-    //閮ㄩ棬鍚嶇О
-    @NotBlank(message = "閮ㄩ棬鍚嶇О涓嶈兘涓虹┖")
-    private String deptName;
-    //瀹℃壒浜� ids
- //   private String approverIds;
-    //瀹℃壒浜哄悕绉�
-    @NotBlank(message = "瀹℃壒浜轰笉鑳戒负绌�")
-    private String approverNames;
-    //瀹℃壒浜嬬敱
-    @NotBlank(message = "11")
+
+    private Long approveDeptId;
+
+    private String approveTime;
+
+    // 鐢宠浜�
+    private Long approveUser;
+
+    // 瀹℃壒浜�
+    private String approveUserIds;
+
     private String approveReason;
 }
diff --git a/src/main/java/com/ruoyi/framework/security/service/TokenService.java b/src/main/java/com/ruoyi/framework/security/service/TokenService.java
index bb7e5ca..5b7cf11 100644
--- a/src/main/java/com/ruoyi/framework/security/service/TokenService.java
+++ b/src/main/java/com/ruoyi/framework/security/service/TokenService.java
@@ -1,9 +1,15 @@
 package com.ruoyi.framework.security.service;
 
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
 import javax.servlet.http.HttpServletRequest;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.project.system.domain.SysUserDept;
+import com.ruoyi.project.system.mapper.SysUserDeptMapper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -22,6 +28,7 @@
 import io.jsonwebtoken.Claims;
 import io.jsonwebtoken.Jwts;
 import io.jsonwebtoken.SignatureAlgorithm;
+import org.springframework.util.CollectionUtils;
 
 /**
  * token楠岃瘉澶勭悊
@@ -140,6 +147,9 @@
         }
     }
 
+    @Autowired
+    private SysUserDeptMapper sysUserDeptMapper;
+
     /**
      * 鍒锋柊浠ょ墝鏈夋晥鏈�
      * 
@@ -149,6 +159,13 @@
     {
         loginUser.setLoginTime(System.currentTimeMillis());
         loginUser.setExpireTime(loginUser.getLoginTime() + expireTime * MILLIS_MINUTE);
+        LambdaQueryWrapper<SysUserDept> sysUserDeptLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        sysUserDeptLambdaQueryWrapper.eq(SysUserDept::getUserId, loginUser.getUserId());
+        List<SysUserDept> sysUserDept = sysUserDeptMapper.selectList(sysUserDeptLambdaQueryWrapper);
+        if(!CollectionUtils.isEmpty(sysUserDept)){
+            List<Long> collect = sysUserDept.stream().map(SysUserDept::getDeptId).collect(Collectors.toList());
+            loginUser.setDeptId(collect.toArray(new Long[0]));
+        }
         // 鏍规嵁uuid灏唋oginUser缂撳瓨
         String userKey = getTokenKey(loginUser.getToken());
         redisCache.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES);
diff --git a/src/main/java/com/ruoyi/other/service/impl/TempFileServiceImpl.java b/src/main/java/com/ruoyi/other/service/impl/TempFileServiceImpl.java
index 442b090..61de057 100644
--- a/src/main/java/com/ruoyi/other/service/impl/TempFileServiceImpl.java
+++ b/src/main/java/com/ruoyi/other/service/impl/TempFileServiceImpl.java
@@ -41,6 +41,7 @@
         if(originalFilename == null) throw new IOException("鏂囦欢鍚嶄笉鑳戒负绌�");
         URLEncoder urlEncoder = new URLEncoder();
         String encodedFilename = urlEncoder.encode(originalFilename, StandardCharsets.UTF_8);
+        encodedFilename = encodedFilename.replaceAll("%2E",".");
         Path tempFilePath = Paths.get(tempDir, tempId + "_" + encodedFilename);
 
 //        Path tempFilePath = Paths.get(tempDir, tempId + "_" + file.getOriginalFilename());
diff --git a/src/main/java/com/ruoyi/project/system/mapper/SysUserMapper.java b/src/main/java/com/ruoyi/project/system/mapper/SysUserMapper.java
index f08882a..9f7003a 100644
--- a/src/main/java/com/ruoyi/project/system/mapper/SysUserMapper.java
+++ b/src/main/java/com/ruoyi/project/system/mapper/SysUserMapper.java
@@ -54,6 +54,14 @@
     public SysUser selectUserById(Long userId);
 
     /**
+     * 閫氳繃鐢ㄦ埛ID鏌ヨ鐢ㄦ埛
+     *
+     * @param userId 鐢ㄦ埛ID
+     * @return 鐢ㄦ埛瀵硅薄淇℃伅
+     */
+    public List<SysUser> selectUserByIds(@Param("userIds") List<Long> userId);
+
+    /**
      * 鏂板鐢ㄦ埛淇℃伅
      * 
      * @param user 鐢ㄦ埛淇℃伅
diff --git a/src/main/resources/mapper/approve/ApproveProcessMapper.xml b/src/main/resources/mapper/approve/ApproveProcessMapper.xml
index da0d5f7..3104940 100644
--- a/src/main/resources/mapper/approve/ApproveProcessMapper.xml
+++ b/src/main/resources/mapper/approve/ApproveProcessMapper.xml
@@ -27,4 +27,10 @@
         approve_user_names,approve_reason,approve_time,approve_over_time,approve_status,
         approve_delete,tenant_id,approve_type,approve_remark
     </sql>
+    <select id="listPage" resultType="com.ruoyi.approve.pojo.ApproveProcess">
+        select * from approve_process where approve_delete = 0
+        <if test="req.approveId != null and req.approveId != ''">
+            and approve_id like concat('%',#{req.approveId},'%')
+        </if>
+    </select>
 </mapper>
diff --git a/src/main/resources/mapper/system/SysUserMapper.xml b/src/main/resources/mapper/system/SysUserMapper.xml
index f5164bc..8e9ec54 100644
--- a/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/src/main/resources/mapper/system/SysUserMapper.xml
@@ -150,7 +150,13 @@
 	<select id="checkEmailUnique" parameterType="String" resultMap="SysUserResult">
 		select user_id, email from sys_user where email = #{email} and del_flag = '0' limit 1
 	</select>
-	
+	<select id="selectUserByIds" resultType="com.ruoyi.project.system.domain.SysUser">
+		<include refid="selectUserVo"/>
+		where u.user_id in <foreach collection="userIds" item="item" open="(" separator="," close=")">
+ 			#{item}
+        </foreach>
+	</select>
+
 	<insert id="insertUser" parameterType="com.ruoyi.project.system.domain.SysUser" useGeneratedKeys="true" keyProperty="userId">
  		insert into sys_user(
  			<if test="userId != null and userId != 0">user_id,</if>

--
Gitblit v1.9.3