From 581d7144d6cbfe2515b178de02ea811483943c3a Mon Sep 17 00:00:00 2001 From: Liang <545073804@qq.com> Date: Fri, 15 Mar 2024 10:32:43 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E6=B5=81=E6=8A=84=E9=80=81=E4=BB=BB=E5=8A=A1=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E5=A4=9A=E6=AC=A1=E8=8E=B7=E5=8F=96=E7=A7=9F=E6=88=B7?= =?UTF-8?q?=20update=20=E4=BC=98=E5=8C=96=20=E5=B7=A5=E4=BD=9C=E6=B5=81?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=BD=93=E5=89=8D=E4=BB=BB=E5=8A=A1=E5=8F=82?= =?UTF-8?q?=E4=B8=8E=E8=80=85=E5=AD=98=E5=9C=A8=E5=A4=9A=E4=B8=AA=E5=8A=9E?= =?UTF-8?q?=E7=90=86=E4=BA=BA=E8=AE=A4=E9=A2=86=E9=80=BB=E8=BE=91=20update?= =?UTF-8?q?=20=E4=BC=98=E5=8C=96=20=E5=B7=A5=E4=BD=9C=E6=B5=81=E5=8F=91?= =?UTF-8?q?=E9=80=81=E6=B6=88=E6=81=AF=E7=B1=BB=E5=9E=8B=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/enums/MessageTypeEnum.java | 20 +++++++++ .../dromara/workflow/utils/WorkflowUtils.java | 41 +++++++++++-------- 2 files changed, 43 insertions(+), 18 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/MessageTypeEnum.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/MessageTypeEnum.java index d7ba1bf01..a28295822 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/MessageTypeEnum.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/MessageTypeEnum.java @@ -3,6 +3,9 @@ package org.dromara.workflow.common.enums; import lombok.AllArgsConstructor; import lombok.Getter; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + /** * 消息类型枚举 * @@ -27,5 +30,22 @@ public enum MessageTypeEnum { private final String code; private final String desc; + + private final static Map MESSAGE_TYPE_ENUM_MAP = new ConcurrentHashMap<>(MessageTypeEnum.values().length); + + static { + for (MessageTypeEnum messageType : MessageTypeEnum.values()) { + MESSAGE_TYPE_ENUM_MAP.put(messageType.code, messageType); + } + } + + /** + * 根据消息类型 code 获取 MessageTypeEnum + * @param code 消息类型code + * @return MessageTypeEnum + */ + public static MessageTypeEnum getByCode(String code) { + return MESSAGE_TYPE_ENUM_MAP.get(code); + } } 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 6f75fb996..96a5089d2 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 @@ -95,6 +95,7 @@ public class WorkflowUtils { */ public static void createCopyTask(List parentTaskList, List userIds) { List list = new ArrayList<>(); + String tenantId = TenantHelper.getTenantId(); for (Task parentTask : parentTaskList) { for (Long userId : userIds) { TaskEntity newTask = (TaskEntity) PROCESS_ENGINE.getTaskService().newTask(); @@ -104,7 +105,7 @@ public class WorkflowUtils { newTask.setProcessDefinitionId(parentTask.getProcessDefinitionId()); newTask.setProcessInstanceId(parentTask.getProcessInstanceId()); newTask.setTaskDefinitionKey(parentTask.getTaskDefinitionKey()); - newTask.setTenantId(TenantHelper.getTenantId()); + newTask.setTenantId(tenantId); list.add(newTask); } } @@ -117,7 +118,7 @@ public class WorkflowUtils { actHiTaskinst.setProcDefId(processDefinitionId); actHiTaskinst.setProcInstId(processInstanceId); actHiTaskinst.setScopeType(TaskStatusEnum.COPY.getStatus()); - actHiTaskinst.setTenantId(TenantHelper.getTenantId()); + actHiTaskinst.setTenantId(tenantId); LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.in(ActHiTaskinst::getId, taskIds); ACT_HI_TASKINST_MAPPER.update(actHiTaskinst, updateWrapper); @@ -169,11 +170,10 @@ public class WorkflowUtils { List nickNames = StreamUtils.toList(sysUsers, SysUserVo::getNickName); participantVo.setCandidate(userIds); participantVo.setCandidateName(nickNames); - if (StringUtils.isBlank(task.getAssignee()) && CollUtil.isNotEmpty(candidateList) && candidateList.size() > 1) { - participantVo.setClaim(false); - } - if (!StringUtils.isBlank(task.getAssignee()) && CollUtil.isNotEmpty(candidateList) && candidateList.size() > 1) { - participantVo.setClaim(true); + // 判断当前任务是否具有多个办理人 + if (CollUtil.isNotEmpty(candidateList) && candidateList.size() > 1) { + // 如果 assignee 存在,则设置当前任务已经被认领 + participantVo.setClaim(StringUtils.isNotBlank(task.getAssignee())); } } } @@ -322,17 +322,22 @@ public class WorkflowUtils { if (CollUtil.isNotEmpty(userIds)) { List sysUserVoList = WORKFLOW_USER_SERVICE.getUserListByIds(new ArrayList<>(userIds)); for (String code : messageType) { - if (code.equals(MessageTypeEnum.SYSTEM_MESSAGE.getCode())) { - WebSocketMessageDto dto = new WebSocketMessageDto(); - dto.setSessionKeys(new ArrayList<>(userIds)); - dto.setMessage(message); - WebSocketUtils.publishMessage(dto); - } - if (code.equals(MessageTypeEnum.EMAIL_MESSAGE.getCode())) { - MailUtils.sendText(StreamUtils.join(sysUserVoList, SysUserVo::getEmail), "单据审批提醒", message); - } - if (code.equals(MessageTypeEnum.SMS_MESSAGE.getCode())) { - //todo 短信发送 + MessageTypeEnum messageTypeEnum = MessageTypeEnum.getByCode(code); + if (ObjectUtil.isNotEmpty(messageTypeEnum)) { + switch (messageTypeEnum) { + case SYSTEM_MESSAGE: + WebSocketMessageDto dto = new WebSocketMessageDto(); + dto.setSessionKeys(new ArrayList<>(userIds)); + dto.setMessage(message); + WebSocketUtils.publishMessage(dto); + break; + case EMAIL_MESSAGE: + MailUtils.sendText(StreamUtils.join(sysUserVoList, SysUserVo::getEmail), "单据审批提醒", message); + break; + case SMS_MESSAGE: + //todo 短信发送 + break; + } } } }