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