diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/FormTypeEnum.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/FormTypeEnum.java index 083ab7b85..ae043bdb6 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/FormTypeEnum.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/FormTypeEnum.java @@ -3,9 +3,10 @@ package org.dromara.workflow.common.enums; import cn.hutool.core.util.StrUtil; import lombok.AllArgsConstructor; import lombok.Getter; -import org.apache.commons.lang3.StringUtils; import java.util.Arrays; +import java.util.Map; +import java.util.stream.Collectors; /** * 任务状态枚举 @@ -15,10 +16,12 @@ import java.util.Arrays; @Getter @AllArgsConstructor public enum FormTypeEnum { + /** * 自定义表单 */ STATIC("static", "自定义表单"), + /** * 动态表单 */ @@ -34,21 +37,18 @@ public enum FormTypeEnum { */ private final String desc; + private static final Map TYPE_DESC_MAP = Arrays.stream(values()) + .collect(Collectors.toConcurrentMap(FormTypeEnum::getType, FormTypeEnum::getDesc)); + /** * 表单类型 * * @param formType 表单类型 */ public static String findByType(String formType) { - if (StringUtils.isBlank(formType)) { - return StrUtil.EMPTY; - } - - return Arrays.stream(FormTypeEnum.values()) - .filter(statusEnum -> statusEnum.getType().equals(formType)) - .findFirst() - .map(FormTypeEnum::getDesc) - .orElse(StrUtil.EMPTY); + // 从缓存中直接获取描述 + return TYPE_DESC_MAP.getOrDefault(formType, StrUtil.EMPTY); } + } 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 a28295822..0fe5cfe90 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,8 +3,10 @@ package org.dromara.workflow.common.enums; import lombok.AllArgsConstructor; import lombok.Getter; +import java.util.Arrays; import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Function; +import java.util.stream.Collectors; /** * 消息类型枚举 @@ -14,14 +16,17 @@ import java.util.concurrent.ConcurrentHashMap; @Getter @AllArgsConstructor public enum MessageTypeEnum { + /** * 站内信 */ SYSTEM_MESSAGE("1", "站内信"), + /** * 邮箱 */ EMAIL_MESSAGE("2", "邮箱"), + /** * 短信 */ @@ -31,21 +36,18 @@ public enum MessageTypeEnum { 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); - } - } + private static final Map MESSAGE_TYPE_ENUM_MAP = Arrays.stream(values()) + .collect(Collectors.toConcurrentMap(MessageTypeEnum::getCode, Function.identity())); /** * 根据消息类型 code 获取 MessageTypeEnum + * * @param code 消息类型code * @return MessageTypeEnum */ public static MessageTypeEnum getByCode(String code) { - return MESSAGE_TYPE_ENUM_MAP.get(code); + return MESSAGE_TYPE_ENUM_MAP.getOrDefault(code, null); } + } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/TaskStatusEnum.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/TaskStatusEnum.java index 7b2f55c20..f6eca80cd 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/TaskStatusEnum.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/TaskStatusEnum.java @@ -3,9 +3,10 @@ package org.dromara.workflow.common.enums; import cn.hutool.core.util.StrUtil; import lombok.AllArgsConstructor; import lombok.Getter; -import org.apache.commons.lang3.StringUtils; import java.util.Arrays; +import java.util.Map; +import java.util.stream.Collectors; /** * 任务状态枚举 @@ -15,50 +16,62 @@ import java.util.Arrays; @Getter @AllArgsConstructor public enum TaskStatusEnum { + /** * 撤销 */ CANCEL("cancel", "撤销"), + /** * 通过 */ PASS("pass", "通过"), + /** * 待审核 */ WAITING("waiting", "待审核"), + /** * 作废 */ INVALID("invalid", "作废"), + /** * 退回 */ BACK("back", "退回"), + /** * 终止 */ TERMINATION("termination", "终止"), + /** * 转办 */ TRANSFER("transfer", "转办"), + /** * 委托 */ PENDING("pending", "委托"), + /** * 抄送 */ COPY("copy", "抄送"), + /** * 加签 */ SIGN("sign", "加签"), + /** * 减签 */ SIGN_OFF("sign_off", "减签"), + /** * 超时 */ @@ -74,21 +87,18 @@ public enum TaskStatusEnum { */ private final String desc; + private static final Map STATUS_DESC_MAP = Arrays.stream(values()) + .collect(Collectors.toConcurrentMap(TaskStatusEnum::getStatus, TaskStatusEnum::getDesc)); + /** * 任务业务状态 * * @param status 状态 */ public static String findByStatus(String status) { - if (StringUtils.isBlank(status)) { - return StrUtil.EMPTY; - } - - return Arrays.stream(TaskStatusEnum.values()) - .filter(statusEnum -> statusEnum.getStatus().equals(status)) - .findFirst() - .map(TaskStatusEnum::getDesc) - .orElse(StrUtil.EMPTY); + // 从缓存中直接获取描述 + return STATUS_DESC_MAP.getOrDefault(status, StrUtil.EMPTY); } + } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwDefMapper.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwDefMapper.java index b7131184e..4b316d98d 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwDefMapper.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwDefMapper.java @@ -13,6 +13,7 @@ import org.apache.ibatis.annotations.Param; * @date 2024-03-02 */ public interface FlwDefMapper { + /** * 流程实例信息 * @@ -20,7 +21,6 @@ public interface FlwDefMapper { * @param queryWrapper 条件 * @return 结果 */ + Page page(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); - Page page(@Param("page") Page page, - @Param(Constants.WRAPPER) Wrapper queryWrapper); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwInstanceMapper.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwInstanceMapper.java index 6bb0f1ece..bf63475f7 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwInstanceMapper.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwInstanceMapper.java @@ -14,6 +14,7 @@ import org.dromara.workflow.domain.vo.FlowInstanceVo; * @date 2024-03-02 */ public interface FlwInstanceMapper { + /** * 流程实例信息 * @@ -21,7 +22,6 @@ public interface FlwInstanceMapper { * @param queryWrapper 条件 * @return 结果 */ + Page page(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); - Page page(@Param("page") Page page, - @Param(Constants.WRAPPER) Wrapper queryWrapper); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwTaskMapper.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwTaskMapper.java index cad896379..18a37d081 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwTaskMapper.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwTaskMapper.java @@ -17,6 +17,7 @@ import org.dromara.workflow.domain.vo.FlowTaskVo; * @date 2024-03-02 */ public interface FlwTaskMapper { + /** * 获取待办信息 * @@ -24,8 +25,7 @@ public interface FlwTaskMapper { * @param queryWrapper 条件 * @return 结果 */ - Page getTaskWaitByPage(@Param("page") Page page, - @Param(Constants.WRAPPER) Wrapper queryWrapper); + Page getTaskWaitByPage(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); /** * 获取已办 @@ -34,8 +34,7 @@ public interface FlwTaskMapper { * @param queryWrapper 条件 * @return 结果 */ - Page getTaskFinishByPage(@Param("page") Page page, - @Param(Constants.WRAPPER) Wrapper queryWrapper); + Page getTaskFinishByPage(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); /** * 查询当前用户的抄送 @@ -44,6 +43,5 @@ public interface FlwTaskMapper { * @param queryWrapper 条件 * @return 结果 */ - Page getTaskCopyByPage(@Param("page") Page page, - @Param(Constants.WRAPPER) QueryWrapper queryWrapper); + Page getTaskCopyByPage(@Param("page") Page page, @Param(Constants.WRAPPER) QueryWrapper queryWrapper); } 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 63a769375..4977a66bb 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 @@ -45,36 +45,30 @@ public class WorkflowUtils { * @return 用户 */ public static List getHandlerUser(List userList) { - List userDTOList = new ArrayList<>(); - if (CollUtil.isNotEmpty(userList)) { - UserService userService = SpringUtils.getBean(UserService.class); - List userIds = new ArrayList<>(); - List roleIds = new ArrayList<>(); - List deptIds = new ArrayList<>(); - for (User user : userList) { - if (user.getProcessedBy().startsWith("user:")) { - userIds.add(Long.valueOf(StringUtils.substringAfter(user.getProcessedBy(), StrUtil.C_COLON))); - } else if (user.getProcessedBy().startsWith("role:")) { - roleIds.add(Long.valueOf(StringUtils.substringAfter(user.getProcessedBy(), StrUtil.C_COLON))); - } else if (user.getProcessedBy().startsWith("dept:")) { - deptIds.add(Long.valueOf(StringUtils.substringAfter(user.getProcessedBy(), StrUtil.C_COLON))); - } else { - userIds.add(Long.valueOf(user.getProcessedBy())); - } - } - List users = userService.selectListByIds(userIds); - if (CollUtil.isNotEmpty(users)) { - userDTOList.addAll(users); - } - List roleUsers = userService.selectUsersByRoleIds(roleIds); - if (CollUtil.isNotEmpty(roleUsers)) { - userDTOList.addAll(roleUsers); - } - List deptUsers = userService.selectUsersByDeptIds(deptIds); - if (CollUtil.isNotEmpty(deptUsers)) { - userDTOList.addAll(deptUsers); + if (CollUtil.isEmpty(userList)) { + return List.of(); + } + UserService userService = SpringUtils.getBean(UserService.class); + List userIds = new ArrayList<>(); + List roleIds = new ArrayList<>(); + List deptIds = new ArrayList<>(); + for (User user : userList) { + String processedBy = user.getProcessedBy(); + Long id = Long.valueOf(StringUtils.substringAfter(processedBy, StrUtil.C_COLON)); + if (processedBy.startsWith("user:")) { + userIds.add(id); + } else if (processedBy.startsWith("role:")) { + roleIds.add(id); + } else if (processedBy.startsWith("dept:")) { + deptIds.add(id); + } else { + userIds.add(Long.valueOf(processedBy)); } } + // 合并不同类型用户 + List userDTOList = new ArrayList<>(userService.selectListByIds(userIds)); + userDTOList.addAll(userService.selectUsersByRoleIds(roleIds)); + userDTOList.addAll(userService.selectUsersByDeptIds(deptIds)); return userDTOList; } @@ -85,21 +79,22 @@ public class WorkflowUtils { * @return 用户 */ public static Set getUser(List userList) { + if (CollUtil.isEmpty(userList)) { + return Set.of(); + } Set list = new HashSet<>(); - if (CollUtil.isNotEmpty(userList)) { - UserService userService = SpringUtils.getBean(UserService.class); - for (User user : userList) { - // 根据 processedBy 前缀判断处理人类型,分别获取用户列表 - List users = getAssociatedUsers(userService, user); - // 转换为 FlowUser 并添加到结果集合 - if (CollUtil.isNotEmpty(users)) { - users.forEach(dto -> { - FlowUser flowUser = new FlowUser(); - flowUser.setType(user.getType()); - flowUser.setProcessedBy(String.valueOf(dto.getUserId())); - list.add(flowUser); - }); - } + UserService userService = SpringUtils.getBean(UserService.class); + for (User user : userList) { + // 根据 processedBy 前缀判断处理人类型,分别获取用户列表 + List users = getAssociatedUsers(userService, user); + // 转换为 FlowUser 并添加到结果集合 + if (CollUtil.isNotEmpty(users)) { + users.forEach(dto -> { + FlowUser flowUser = new FlowUser(); + flowUser.setType(user.getType()); + flowUser.setProcessedBy(String.valueOf(dto.getUserId())); + list.add(flowUser); + }); } } return list;