From 90f8142d0b764506387f50ae54eceff2dc9b9136 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 8 Jun 2026 17:26:32 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E5=B0=8F=E4=BC=98=E5=8C=96=E9=A1=B9=20-=20=E6=8A=84=E9=80=81?= =?UTF-8?q?=E5=8E=86=E5=8F=B2=E4=BB=BB=E5=8A=A1=E4=B8=BA=E7=A9=BA=E6=97=B6?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=E6=98=8E=E7=A1=AE=E7=9A=84=20ServiceExceptio?= =?UTF-8?q?n=EF=BC=9B=E5=BD=93=E5=89=8D=E4=BB=BB=E5=8A=A1=E5=8A=9E?= =?UTF-8?q?=E7=90=86=E4=BA=BA=E6=9F=A5=E8=AF=A2=E6=94=B9=E4=B8=BA=20ID=20?= =?UTF-8?q?=E5=8E=BB=E9=87=8D=E5=90=8E=E6=89=B9=E9=87=8F=E8=BF=9C=E7=A8=8B?= =?UTF-8?q?=E6=9F=A5=20-=20=E6=B5=81=E7=A8=8B=E5=9B=BE=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E9=87=8C=E7=94=A8=E6=88=B7=20ID=20=E5=8E=BB=E9=87=8D=EF=BC=8C?= =?UTF-8?q?=E9=83=A8=E9=97=A8=E5=90=8D=E7=A7=B0=E4=BB=8E=E5=BE=AA=E7=8E=AF?= =?UTF-8?q?=E5=86=85=E9=80=90=E6=9D=A1Dubbo=20=E8=B0=83=E7=94=A8=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=E4=B8=80=E6=AC=A1=E6=89=B9=E9=87=8F=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/FlwChartExtServiceImpl.java | 18 +++++++++--------- .../service/impl/FlwTaskServiceImpl.java | 10 +++++++--- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwChartExtServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwChartExtServiceImpl.java index fcdf06933..c5533c198 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwChartExtServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwChartExtServiceImpl.java @@ -27,10 +27,7 @@ import org.dromara.workflow.common.constant.FlowConstant; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -74,10 +71,12 @@ public class FlwChartExtServiceImpl implements ChartExtService { Map> groupedByNode = StreamUtils.groupByKey(flowHisTasks, FlowHisTask::getNodeCode); // 批量查询所有审批人的用户信息 - List userDTOList = userService.selectListByIds(StreamUtils.toList(flowHisTasks, e -> Convert.toLong(e.getApprover()))); + List userDTOList = userService.selectListByIds(StreamUtils.toSet(flowHisTasks, e -> Convert.toLong(e.getApprover()))); // 将查询到的用户列表转换为以用户ID为key的映射 Map userMap = StreamUtils.toIdentityMap(userDTOList, UserDTO::getUserId); + Set deptIds = StreamUtils.toSet(userDTOList, UserDTO::getDeptId); + Map deptNameMap = deptService.selectDeptNamesByIds(deptIds); Map dictType = dictService.getAllDictByDictType(FlowConstant.WF_TASK_STATUS); @@ -100,7 +99,7 @@ public class FlwChartExtServiceImpl implements ChartExtService { )); // 处理当前节点的扩展信息 - this.processNodeExtInfo(nodeJson, latestPerApprover, userMap, dictType); + this.processNodeExtInfo(nodeJson, latestPerApprover, userMap, deptNameMap, dictType); } } @@ -168,9 +167,11 @@ public class FlwChartExtServiceImpl implements ChartExtService { * @param nodeJson 当前流程节点对象,包含节点基础信息和提示内容容器 * @param taskList 当前节点关联的历史审批任务列表,用于生成提示信息 * @param userMap 用户信息映射表,key 为用户ID,value 为用户DTO对象,用于获取审批人信息 + * @param deptNameMap 部门名称映射表,key 为部门ID,value 为部门名称 * @param dictType 数据字典映射表,key 为字典项编码,value 为对应显示值,用于翻译审批状态等 */ - private void processNodeExtInfo(NodeJson nodeJson, List taskList, Map userMap, Map dictType) { + private void processNodeExtInfo(NodeJson nodeJson, List taskList, Map userMap, + Map deptNameMap, Map dictType) { // 获取节点提示内容对象中的 info 列表,用于追加提示项 List info = nodeJson.getPromptContent().getInfo(); @@ -182,8 +183,7 @@ public class FlwChartExtServiceImpl implements ChartExtService { continue; } - // 查询用户所属部门名称 - String deptName = deptService.selectDeptNameByIds(Convert.toStr(userDTO.getDeptId())); + String deptName = deptNameMap.getOrDefault(userDTO.getDeptId(), StringUtils.EMPTY); // 添加标题项,如:👤 张三(市场部) info.add(new PromptContent.InfoItem() diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index 2ea66e2d6..9f0e5aa33 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -338,10 +338,14 @@ public class FlwTaskServiceImpl implements IFlwTaskService { return; } // 添加抄送人记录 - FlowHisTask flowHisTask = flowHisTaskMapper.selectList( + List flowHisTasks = flowHisTaskMapper.selectList( QueryBuilder.lambda(FlowHisTask.class) .eq(FlowHisTask::getTaskId, task.getId()) - .build()).get(0); + .build()); + if (CollUtil.isEmpty(flowHisTasks)) { + throw new ServiceException("流程历史任务不存在,无法添加抄送记录"); + } + FlowHisTask flowHisTask = flowHisTasks.get(0); FlowNode flowNode = new FlowNode(); flowNode.setNodeCode(flowHisTask.getTargetNodeCode()); flowNode.setNodeName(flowHisTask.getTargetNodeName()); @@ -897,7 +901,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService { if (CollUtil.isEmpty(userList)) { return Collections.emptyList(); } - return userService.selectListByIds(StreamUtils.toList(userList, e -> Convert.toLong(e.getProcessedBy()))); + return userService.selectListByIds(StreamUtils.toSet(userList, e -> Convert.toLong(e.getProcessedBy()))); } /**