From 31be68c8916fae492c9b3fe06c6134ebbc12bbb2 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期四, 30 四月 2026 10:24:56 +0800
Subject: [PATCH] fix(approve): 修复审批流程为空时的异常处理
---
src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java | 39 +++++++++++++++++++++++++--------------
1 files changed, 25 insertions(+), 14 deletions(-)
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 3143391..a8c9da8 100644
--- a/src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
+++ b/src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
@@ -6,18 +6,19 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.approve.vo.ApproveProcessVo;
import com.ruoyi.approve.bean.vo.ApproveGetAndUpdateVo;
import com.ruoyi.approve.bean.vo.ApproveProcessConfigNodeVo;
import com.ruoyi.approve.bean.vo.ApproveProcessVO;
import com.ruoyi.approve.mapper.ApproveNodeMapper;
+import com.ruoyi.approve.mapper.ApproveProcessConfigNodeMapper;
import com.ruoyi.approve.mapper.ApproveProcessMapper;
import com.ruoyi.approve.pojo.ApproveNode;
import com.ruoyi.approve.pojo.ApproveProcess;
+import com.ruoyi.approve.pojo.ApproveProcessConfigNode;
import com.ruoyi.approve.service.ApproveProcessConfigNodeService;
import com.ruoyi.approve.service.IApproveNodeService;
import com.ruoyi.approve.service.IApproveProcessService;
-import com.ruoyi.basic.enums.ApplicationTypeEnum;
+import com.ruoyi.approve.vo.ApproveProcessVo;
import com.ruoyi.basic.enums.RecordTypeEnum;
import com.ruoyi.basic.utils.FileUtil;
import com.ruoyi.common.enums.FileNameType;
@@ -68,6 +69,7 @@
private final ApproveNodeMapper approveNodeMapper;
private final ApproveProcessConfigNodeService approveProcessConfigNodeService;
private final FileUtil fileUtil;
+ private final ApproveProcessConfigNodeMapper approveProcessConfigNodeMapper;
@Override
public void addApprove(ApproveProcessVO approveProcessVO) throws Exception {
@@ -77,6 +79,9 @@
List<Long> nodeIds = list.stream()
.map(ApproveProcessConfigNodeVo::getApproverId)
.collect(Collectors.toList());
+ if(list.isEmpty()) {
+ throw new RuntimeException("娴佺▼涓嶅瓨鍦�");
+ }
List<SysUser> sysUsers = sysUserMapper.selectUserByIds(nodeIds);
if (CollectionUtils.isEmpty(sysUsers)) throw new RuntimeException("瀹℃牳鐢ㄦ埛涓嶅瓨鍦�");
if (sysDept == null) throw new RuntimeException("閮ㄩ棬涓嶅瓨鍦�");
@@ -300,17 +305,20 @@
.eq(ApproveProcess::getApproveReason, approveGetAndUpdateVo.getApproveReason())
.last("limit 1");
ApproveProcess approveProcess = approveProcessMapper.selectOne(approveProcessLambdaQueryWrapper);
- if (approveProcess == null) throw new RuntimeException("鈥�");
- String[] split = approveGetAndUpdateVo.getApproveUserIds().split(",");
- if (split.length == 0) {
- throw new RuntimeException("璇烽�夋嫨瀹℃壒浜�");
- }
- List<SysUser> sysUsers = sysUserMapper.selectUserByIds(Arrays.asList(split).stream().map(Long::parseLong).collect(Collectors.toList()));
+
+ if (approveProcess == null) throw new RuntimeException("璇烽�夋嫨瀹℃壒浜�");
+ //鏌ヨ瀹℃壒閰嶇疆
+ List<ApproveProcessConfigNode> approveProcessConfig = approveProcessConfigNodeMapper.selectList(new LambdaQueryWrapper<ApproveProcessConfigNode>().eq(ApproveProcessConfigNode::getApproveType, approveGetAndUpdateVo.getApproveType()));
+ List<Long> configNodeIds = approveProcessConfig.stream()
+ .sorted(Comparator.comparing(ApproveProcessConfigNode::getNodeOrder))
+ .map(ApproveProcessConfigNode::getApproverId)
+ .collect(Collectors.toList());
+ List<SysUser> sysUsers = sysUserMapper.selectUserByIds(configNodeIds);
if (CollectionUtils.isEmpty(sysUsers)) throw new RuntimeException("璇烽�夋嫨瀹℃壒浜�");
//瀹℃牳涓笉鍙互缂栬緫瀹℃牳浜�
if (approveProcess.getApproveStatus() != 1) {
- approveProcess.setApproveUserCurrentId(Long.parseLong(split[0]));
- approveProcess.setApproveUserCurrentName(sysUsers.stream().filter(user -> user.getUserId().equals(Long.parseLong(split[0]))).collect(Collectors.toList()).get(0).getNickName());
+ approveProcess.setApproveUserCurrentId(configNodeIds.get(0));
+ approveProcess.setApproveUserCurrentName(sysUsers.stream().filter(user -> user.getUserId().equals(configNodeIds.get(0))).collect(Collectors.toList()).get(0).getNickName());
}
if (approveGetAndUpdateVo.getApproveStatus() != null) {
approveProcess.setApproveStatus(approveGetAndUpdateVo.getApproveStatus());
@@ -322,21 +330,24 @@
LambdaQueryWrapper<ApproveNode> approveNodeLambdaQueryWrapper = new LambdaQueryWrapper<>();
approveNodeLambdaQueryWrapper.eq(ApproveNode::getApproveProcessId, approveProcess.getApproveId())
.eq(ApproveNode::getDeleteFlag, 0)
-// .eq(ApproveNode::getTenantId, SecurityUtils.getLoginUser().getTenantId())
.orderByAsc(ApproveNode::getApproveNodeOrder);
approveNodeMapper.delete(approveNodeLambdaQueryWrapper);
+ //鏌ヨ瀹℃壒閰嶇疆
+ approveGetAndUpdateVo.setApproveUserIds(configNodeIds.stream()
+ .map(String::valueOf)
+ .collect(Collectors.joining(",")));
approveNodeService.initApproveNodes(approveGetAndUpdateVo.getApproveUserIds(), approveProcess.getApproveId(), approveProcess.getTenantId());
/*娑堟伅閫氱煡*/
- String id = approveProcess.getApproveUserIds().split(",")[0];
+ Long id = configNodeIds.get(0);
if (approveProcess.getApproveType()==8){
sysNoticeService.simpleNoticeByUser(approveProcessType(approveProcess.getApproveType()),
approveProcess.getApproveId() + "娴佺▼缂栧彿鐨勫鎵归渶瑕佹偍瀹℃牳!!!!!",
- Arrays.asList(Long.valueOf(id)),
+ Collections.singletonList(id),
"/safeProduction/safeWorkApproval?approveType=" + approveProcess.getApproveType() + "&approveId=" + approveProcess.getApproveId());
}else {
sysNoticeService.simpleNoticeByUser(approveProcessType(approveProcess.getApproveType()),
approveProcess.getApproveId() + "娴佺▼缂栧彿鐨勫鎵归渶瑕佹偍瀹℃牳!!!!!",
- Arrays.asList(Long.valueOf(id)),
+ Collections.singletonList(id),
"/collaborativeApproval/approvalProcess?approveType=" + approveProcess.getApproveType() + "&approveId=" + approveProcess.getApproveId());
}
}
--
Gitblit v1.9.3