From 618688161567a5e92263874076c50d3d5eff48fc 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:12:52 +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 --- .../dromara/workflow/flowable/cmd/AttachmentCmd.java | 8 +++++--- .../service/impl/ActProcessInstanceServiceImpl.java | 10 ++++++---- .../workflow/service/impl/ActTaskServiceImpl.java | 12 +++++++----- .../org/dromara/workflow/utils/WorkflowUtils.java | 8 +++----- 4 files changed, 21 insertions(+), 17 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 dd9849afc..20a0a5f3a 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 @@ -3,7 +3,6 @@ package org.dromara.workflow.flowable.cmd; import cn.hutool.core.collection.CollUtil; import org.dromara.common.core.domain.dto.OssDTO; import org.dromara.common.core.service.OssService; -import org.dromara.common.core.utils.SpringUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.satoken.utils.LoginHelper; import org.flowable.common.engine.impl.interceptor.Command; @@ -28,17 +27,20 @@ public class AttachmentCmd implements Command { private final String processInstanceId; - public AttachmentCmd(String fileId, String taskId, String processInstanceId) { + private final OssService ossService; + + public AttachmentCmd(String fileId, String taskId, String processInstanceId, OssService ossService) { this.fileId = fileId; this.taskId = taskId; this.processInstanceId = processInstanceId; + this.ossService = ossService; } @Override public Boolean execute(CommandContext commandContext) { try { if (StringUtils.isNotBlank(fileId)) { - List ossList = SpringUtils.getBean(OssService.class).selectByIds(fileId); + List ossList = ossService.selectByIds(fileId); if (CollUtil.isNotEmpty(ossList)) { for (OssDTO oss : ossList) { AttachmentEntityManager attachmentEntityManager = CommandContextUtil.getAttachmentEntityManager(); 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 dafd05994..33227c2ef 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 @@ -10,6 +10,7 @@ import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.service.UserService; import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; @@ -77,6 +78,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService private final IWfTaskBackNodeService wfTaskBackNodeService; private final IWfNodeConfigService wfNodeConfigService; private final FlowProcessEventHandler flowProcessEventHandler; + private final UserService userService; @Value("${flowable.activity-font-name}") private String activityFontName; @@ -323,7 +325,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(), userService); if (ObjectUtil.isNotEmpty(participantVo) && CollUtil.isNotEmpty(participantVo.getCandidate())) { historyInfoVo.setAssignee(StreamUtils.join(participantVo.getCandidate(), Convert::toStr)); } @@ -338,7 +340,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(), userService); if (ObjectUtil.isNotEmpty(participantVo) && CollUtil.isNotEmpty(participantVo.getCandidate())) { historyInfoVo.setAssignee(StreamUtils.join(participantVo.getCandidate(), Convert::toStr)); } @@ -394,7 +396,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService } //设置人员id if (ObjectUtil.isEmpty(historicTaskInstance.getAssignee())) { - ParticipantVo participantVo = WorkflowUtils.getCurrentTaskParticipant(historicTaskInstance.getId()); + ParticipantVo participantVo = WorkflowUtils.getCurrentTaskParticipant(historicTaskInstance.getId(), userService); if (ObjectUtil.isNotEmpty(participantVo) && CollUtil.isNotEmpty(participantVo.getCandidate())) { actHistoryInfoVo.setAssignee(StreamUtils.join(participantVo.getCandidate(), Convert::toStr)); } @@ -675,7 +677,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, userService); } 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 32be130ec..5cb288d00 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 @@ -10,6 +10,7 @@ import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.dto.RoleDTO; import org.dromara.common.core.domain.dto.UserDTO; import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.service.OssService; import org.dromara.common.core.service.UserService; import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StringUtils; @@ -78,8 +79,9 @@ public class ActTaskServiceImpl implements IActTaskService { private final ActHiTaskinstMapper actHiTaskinstMapper; private final IWfNodeConfigService wfNodeConfigService; private final IWfDefinitionConfigService wfDefinitionConfigService; - private final UserService userService; private final FlowProcessEventHandler flowProcessEventHandler; + private final UserService userService; + private final OssService ossService; /** * 启动任务 @@ -175,7 +177,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(), ossService); managementService.executeCommand(attachmentCmd); String businessStatus = WorkflowUtils.getBusinessStatus(processInstance.getBusinessKey()); //流程提交监听 @@ -239,7 +241,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, userService); } /** @@ -273,7 +275,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(), userService)); 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); @@ -338,7 +340,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(), userService)); 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); 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 385bd23a2..d7c44723b 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) { - UserService userService = SpringUtils.getBean(UserService.class); + public static ParticipantVo getCurrentTaskParticipant(String taskId, UserService userService) { ParticipantVo participantVo = new ParticipantVo(); List linksForTask = PROCESS_ENGINE.getHistoryService().getHistoricIdentityLinksForTask(taskId); Task task = QueryUtils.taskQuery().taskId(taskId).singleResult(); @@ -234,14 +233,13 @@ public class WorkflowUtils { * @param messageType 消息类型 * @param message 消息内容,为空则发送默认配置的消息内容 */ - public static void sendMessage(List list, String name, List messageType, String message) { - UserService userService = SpringUtils.getBean(UserService.class); + public static void sendMessage(List list, String name, List messageType, String message, UserService userService) { 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(), userService); if (CollUtil.isNotEmpty(taskParticipant.getGroupIds())) { List userIdList = userService.selectUserIdsByRoleIds(taskParticipant.getGroupIds()); if (CollUtil.isNotEmpty(userIdList)) {