From 734a2606b9b90b16272d1eeb3f5ed8e70cad03a0 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, 17 Jun 2024 11:14:55 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E7=89=B9?= =?UTF-8?q?=E6=AE=8Aservice=E4=BC=A0=E5=80=BC=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflow/flowable/cmd/AttachmentCmd.java | 8 +++++--- .../impl/ActProcessInstanceServiceImpl.java | 12 ++++++++---- .../service/impl/ActTaskServiceImpl.java | 19 +++++++++++-------- .../dromara/workflow/utils/WorkflowUtils.java | 8 +++----- 4 files changed, 27 insertions(+), 20 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/cmd/AttachmentCmd.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/cmd/AttachmentCmd.java index da6fd432..1b23def6 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/cmd/AttachmentCmd.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/cmd/AttachmentCmd.java @@ -1,7 +1,6 @@ package org.dromara.workflow.flowable.cmd; import cn.hutool.core.collection.CollUtil; -import org.dromara.common.core.utils.SpringUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.resource.api.RemoteFileService; @@ -28,17 +27,20 @@ public class AttachmentCmd implements Command { private final String processInstanceId; - public AttachmentCmd(String fileId, String taskId, String processInstanceId) { + private final RemoteFileService remoteFileService; + + public AttachmentCmd(String fileId, String taskId, String processInstanceId, + RemoteFileService remoteFileService) { this.fileId = fileId; this.taskId = taskId; this.processInstanceId = processInstanceId; + this.remoteFileService = remoteFileService; } @Override public Boolean execute(CommandContext commandContext) { try { if (StringUtils.isNotBlank(fileId)) { - RemoteFileService remoteFileService = SpringUtils.getBean(RemoteFileService.class); List ossList = remoteFileService.selectByIds(fileId); if (CollUtil.isNotEmpty(ossList)) { for (RemoteFile oss : ossList) { diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java index dafd0599..7c31589e 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java @@ -9,12 +9,14 @@ import cn.hutool.core.util.ObjectUtil; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; +import org.apache.dubbo.config.annotation.DubboReference; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.system.api.RemoteUserService; import org.dromara.workflow.common.constant.FlowConstant; import org.dromara.common.core.enums.BusinessStatusEnum; import org.dromara.workflow.common.enums.TaskStatusEnum; @@ -77,6 +79,8 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService private final IWfTaskBackNodeService wfTaskBackNodeService; private final IWfNodeConfigService wfNodeConfigService; private final FlowProcessEventHandler flowProcessEventHandler; + @DubboReference + private final RemoteUserService remoteUserService; @Value("${flowable.activity-font-name}") private String activityFontName; @@ -323,7 +327,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService historyInfoVo.setEndTime(infoVo.getEndTime() == null ? null : infoVo.getEndTime()); historyInfoVo.setRunDuration(infoVo.getEndTime() == null ? null : infoVo.getRunDuration()); if (ObjectUtil.isEmpty(infoVo.getAssignee())) { - ParticipantVo participantVo = WorkflowUtils.getCurrentTaskParticipant(infoVo.getId()); + ParticipantVo participantVo = WorkflowUtils.getCurrentTaskParticipant(infoVo.getId(), remoteUserService); if (ObjectUtil.isNotEmpty(participantVo) && CollUtil.isNotEmpty(participantVo.getCandidate())) { historyInfoVo.setAssignee(StreamUtils.join(participantVo.getCandidate(), Convert::toStr)); } @@ -338,7 +342,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService historyInfoVo.setEndTime(e.getEndTime() == null ? null : e.getEndTime()); historyInfoVo.setRunDuration(e.getEndTime() == null ? null : e.getRunDuration()); if (ObjectUtil.isEmpty(e.getAssignee())) { - ParticipantVo participantVo = WorkflowUtils.getCurrentTaskParticipant(e.getId()); + ParticipantVo participantVo = WorkflowUtils.getCurrentTaskParticipant(e.getId(), remoteUserService); if (ObjectUtil.isNotEmpty(participantVo) && CollUtil.isNotEmpty(participantVo.getCandidate())) { historyInfoVo.setAssignee(StreamUtils.join(participantVo.getCandidate(), Convert::toStr)); } @@ -394,7 +398,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService } //设置人员id if (ObjectUtil.isEmpty(historicTaskInstance.getAssignee())) { - ParticipantVo participantVo = WorkflowUtils.getCurrentTaskParticipant(historicTaskInstance.getId()); + ParticipantVo participantVo = WorkflowUtils.getCurrentTaskParticipant(historicTaskInstance.getId(), remoteUserService); if (ObjectUtil.isNotEmpty(participantVo) && CollUtil.isNotEmpty(participantVo.getCandidate())) { actHistoryInfoVo.setAssignee(StreamUtils.join(participantVo.getCandidate(), Convert::toStr)); } @@ -675,7 +679,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService message = "您的【" + processInstance.getName() + "】单据还未审批,请您及时处理。"; } List list = QueryUtils.taskQuery(taskUrgingBo.getProcessInstanceId()).list(); - WorkflowUtils.sendMessage(list, processInstance.getName(), taskUrgingBo.getMessageType(), message); + WorkflowUtils.sendMessage(list, processInstance.getName(), taskUrgingBo.getMessageType(), message, remoteUserService); } catch (ServiceException e) { throw new ServiceException(e.getMessage()); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java index dad0c96d..58cab933 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java @@ -15,6 +15,7 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.tenant.helper.TenantHelper; +import org.dromara.resource.api.RemoteFileService; import org.dromara.system.api.RemoteUserService; import org.dromara.system.api.domain.vo.RemoteUserVo; import org.dromara.system.api.model.RoleDTO; @@ -79,9 +80,11 @@ public class ActTaskServiceImpl implements IActTaskService { private final ActHiTaskinstMapper actHiTaskinstMapper; private final IWfNodeConfigService wfNodeConfigService; private final IWfDefinitionConfigService wfDefinitionConfigService; - @DubboReference - private final RemoteUserService userService; private final FlowProcessEventHandler flowProcessEventHandler; + @DubboReference + private RemoteUserService remoteUserService; + @DubboReference + private RemoteFileService remoteFileService; /** * 启动任务 @@ -177,7 +180,7 @@ public class ActTaskServiceImpl implements IActTaskService { return true; } //附件上传 - AttachmentCmd attachmentCmd = new AttachmentCmd(completeTaskBo.getFileId(), task.getId(), task.getProcessInstanceId()); + AttachmentCmd attachmentCmd = new AttachmentCmd(completeTaskBo.getFileId(), task.getId(), task.getProcessInstanceId(), remoteFileService); managementService.executeCommand(attachmentCmd); String businessStatus = WorkflowUtils.getBusinessStatus(processInstance.getBusinessKey()); //流程提交监听 @@ -241,7 +244,7 @@ public class ActTaskServiceImpl implements IActTaskService { */ @Async public void sendMessage(List list, String name, List messageType, String message) { - WorkflowUtils.sendMessage(list, name, messageType, message); + WorkflowUtils.sendMessage(list, name, messageType, message, remoteUserService); } /** @@ -275,7 +278,7 @@ public class ActTaskServiceImpl implements IActTaskService { List wfNodeConfigVoList = wfNodeConfigService.selectByDefIds(processDefinitionIds); for (TaskVo task : taskList) { task.setBusinessStatusName(BusinessStatusEnum.findByStatus(task.getBusinessStatus())); - task.setParticipantVo(WorkflowUtils.getCurrentTaskParticipant(task.getId())); + task.setParticipantVo(WorkflowUtils.getCurrentTaskParticipant(task.getId(), remoteUserService)); task.setMultiInstance(WorkflowUtils.isMultiInstance(task.getProcessDefinitionId(), task.getTaskDefinitionKey()) != null); if (CollUtil.isNotEmpty(wfNodeConfigVoList)) { wfNodeConfigVoList.stream().filter(e -> e.getDefinitionId().equals(task.getProcessDefinitionId()) && FlowConstant.TRUE.equals(e.getApplyUserTask())).findFirst().ifPresent(task::setWfNodeConfigVo); @@ -340,7 +343,7 @@ public class ActTaskServiceImpl implements IActTaskService { }); } taskVo.setAssignee(StringUtils.isNotBlank(task.getAssignee()) ? Long.valueOf(task.getAssignee()) : null); - taskVo.setParticipantVo(WorkflowUtils.getCurrentTaskParticipant(task.getId())); + taskVo.setParticipantVo(WorkflowUtils.getCurrentTaskParticipant(task.getId(), remoteUserService)); taskVo.setMultiInstance(WorkflowUtils.isMultiInstance(task.getProcessDefinitionId(), task.getTaskDefinitionKey()) != null); if (CollUtil.isNotEmpty(wfNodeConfigVoList)) { wfNodeConfigVoList.stream().filter(e -> e.getDefinitionId().equals(task.getProcessDefinitionId()) && FlowConstant.TRUE.equals(e.getApplyUserTask())).findFirst().ifPresent(taskVo::setWfNodeConfigVo); @@ -820,7 +823,7 @@ public class ActTaskServiceImpl implements IActTaskService { if (multiInstance.getType() instanceof SequentialMultiInstanceBehavior) { List userIds = StreamUtils.filter(assigneeList, e -> !String.valueOf(e).equals(task.getAssignee())); - List userList = userService.selectListByIds(userIds); + List userList = remoteUserService.selectListByIds(userIds); for (Long userId : userIds) { TaskVo taskVo = new TaskVo(); taskVo.setId("串行会签"); @@ -838,7 +841,7 @@ public class ActTaskServiceImpl implements IActTaskService { List tasks = StreamUtils.filter(taskList, e -> StringUtils.isBlank(e.getParentTaskId()) && !e.getExecutionId().equals(task.getExecutionId()) && e.getTaskDefinitionKey().equals(task.getTaskDefinitionKey())); if (CollUtil.isNotEmpty(tasks)) { List userIds = StreamUtils.toList(tasks, e -> Long.valueOf(e.getAssignee())); - List userList = userService.selectListByIds(userIds); + List userList = remoteUserService.selectListByIds(userIds); for (Task t : tasks) { TaskVo taskVo = new TaskVo(); taskVo.setId(t.getId()); diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java index 57a9920f..0e77d066 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java @@ -125,8 +125,7 @@ public class WorkflowUtils { * * @param taskId 任务id */ - public static ParticipantVo getCurrentTaskParticipant(String taskId) { - RemoteUserService remoteUserService = SpringUtils.getBean(RemoteUserService.class); + public static ParticipantVo getCurrentTaskParticipant(String taskId, RemoteUserService remoteUserService) { ParticipantVo participantVo = new ParticipantVo(); List linksForTask = PROCESS_ENGINE.getHistoryService().getHistoricIdentityLinksForTask(taskId); Task task = QueryUtils.taskQuery().taskId(taskId).singleResult(); @@ -235,14 +234,13 @@ public class WorkflowUtils { * @param messageType 消息类型 * @param message 消息内容,为空则发送默认配置的消息内容 */ - public static void sendMessage(List list, String name, List messageType, String message) { - RemoteUserService remoteUserService = SpringUtils.getBean(RemoteUserService.class); + public static void sendMessage(List list, String name, List messageType, String message, RemoteUserService remoteUserService) { Set userIds = new HashSet<>(); if (StringUtils.isBlank(message)) { message = "有新的【" + name + "】单据已经提交至您的待办,请您及时处理。"; } for (Task t : list) { - ParticipantVo taskParticipant = WorkflowUtils.getCurrentTaskParticipant(t.getId()); + ParticipantVo taskParticipant = WorkflowUtils.getCurrentTaskParticipant(t.getId(), remoteUserService); if (CollUtil.isNotEmpty(taskParticipant.getGroupIds())) { List userIdList = remoteUserService.selectUserIdsByRoleIds(taskParticipant.getGroupIds()); if (CollUtil.isNotEmpty(userIdList)) {