From fd4c91301ea339ff477f2a1c66c068d6864171a5 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子Li <15040126243@163.com> Date: 星期五, 15 三月 2024 13:00:16 +0800 Subject: [PATCH] !496 工作流工具方法优化 Merge pull request !496 from 秋辞未寒/dev --- ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/MessageTypeEnum.java | 20 ++++++++++ ruoyi-modules/ruoyi-workflow/src/main/java/org/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 d7ba1bf..a282958 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 @@ import lombok.AllArgsConstructor; import lombok.Getter; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + /** * 娑堟伅绫诲瀷鏋氫妇 * @@ -27,5 +30,22 @@ private final String code; private final String desc; + + private final static Map<String, MessageTypeEnum> 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 6f75fb9..96a5089 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 static void createCopyTask(List<Task> parentTaskList, List<Long> userIds) { List<Task> 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 @@ 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 @@ actHiTaskinst.setProcDefId(processDefinitionId); actHiTaskinst.setProcInstId(processInstanceId); actHiTaskinst.setScopeType(TaskStatusEnum.COPY.getStatus()); - actHiTaskinst.setTenantId(TenantHelper.getTenantId()); + actHiTaskinst.setTenantId(tenantId); LambdaUpdateWrapper<ActHiTaskinst> updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.in(ActHiTaskinst::getId, taskIds); ACT_HI_TASKINST_MAPPER.update(actHiTaskinst, updateWrapper); @@ -169,11 +170,10 @@ List<String> 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 @@ if (CollUtil.isNotEmpty(userIds)) { List<SysUserVo> 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; + } } } } -- Gitblit v1.9.3