update 优化工作流工具冗余代码

This commit is contained in:
AprilWind 2024-11-06 17:51:19 +08:00
parent fc44fd7790
commit 64f950437e
7 changed files with 86 additions and 81 deletions

View File

@ -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<String, String> 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);
}
}

View File

@ -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<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);
}
}
private static final Map<String, MessageTypeEnum> 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);
}
}

View File

@ -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<String, String> 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);
}
}

View File

@ -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<FlowDefinition> page(@Param("page") Page<FlowDefinition> page, @Param(Constants.WRAPPER) Wrapper<FlowDefinition> queryWrapper);
Page<FlowDefinition> page(@Param("page") Page<FlowDefinition> page,
@Param(Constants.WRAPPER) Wrapper<FlowDefinition> queryWrapper);
}

View File

@ -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<FlowInstanceVo> page(@Param("page") Page<FlowInstanceVo> page, @Param(Constants.WRAPPER) Wrapper<FlowInstanceBo> queryWrapper);
Page<FlowInstanceVo> page(@Param("page") Page<FlowInstanceVo> page,
@Param(Constants.WRAPPER) Wrapper<FlowInstanceBo> queryWrapper);
}

View File

@ -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<FlowTaskVo> getTaskWaitByPage(@Param("page") Page<FlowTaskVo> page,
@Param(Constants.WRAPPER) Wrapper<FlowTaskBo> queryWrapper);
Page<FlowTaskVo> getTaskWaitByPage(@Param("page") Page<FlowTaskVo> page, @Param(Constants.WRAPPER) Wrapper<FlowTaskBo> queryWrapper);
/**
* 获取已办
@ -34,8 +34,7 @@ public interface FlwTaskMapper {
* @param queryWrapper 条件
* @return 结果
*/
Page<FlowHisTaskVo> getTaskFinishByPage(@Param("page") Page<FlowTaskVo> page,
@Param(Constants.WRAPPER) Wrapper<FlowTaskBo> queryWrapper);
Page<FlowHisTaskVo> getTaskFinishByPage(@Param("page") Page<FlowTaskVo> page, @Param(Constants.WRAPPER) Wrapper<FlowTaskBo> queryWrapper);
/**
* 查询当前用户的抄送
@ -44,6 +43,5 @@ public interface FlwTaskMapper {
* @param queryWrapper 条件
* @return 结果
*/
Page<FlowTaskVo> getTaskCopyByPage(@Param("page") Page<FlowTaskVo> page,
@Param(Constants.WRAPPER) QueryWrapper<FlowTaskBo> queryWrapper);
Page<FlowTaskVo> getTaskCopyByPage(@Param("page") Page<FlowTaskVo> page, @Param(Constants.WRAPPER) QueryWrapper<FlowTaskBo> queryWrapper);
}

View File

@ -45,36 +45,30 @@ public class WorkflowUtils {
* @return 用户
*/
public static List<UserDTO> getHandlerUser(List<User> userList) {
List<UserDTO> userDTOList = new ArrayList<>();
if (CollUtil.isNotEmpty(userList)) {
UserService userService = SpringUtils.getBean(UserService.class);
List<Long> userIds = new ArrayList<>();
List<Long> roleIds = new ArrayList<>();
List<Long> 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<UserDTO> users = userService.selectListByIds(userIds);
if (CollUtil.isNotEmpty(users)) {
userDTOList.addAll(users);
}
List<UserDTO> roleUsers = userService.selectUsersByRoleIds(roleIds);
if (CollUtil.isNotEmpty(roleUsers)) {
userDTOList.addAll(roleUsers);
}
List<UserDTO> 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<Long> userIds = new ArrayList<>();
List<Long> roleIds = new ArrayList<>();
List<Long> 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<UserDTO> 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<User> getUser(List<User> userList) {
if (CollUtil.isEmpty(userList)) {
return Set.of();
}
Set<User> list = new HashSet<>();
if (CollUtil.isNotEmpty(userList)) {
UserService userService = SpringUtils.getBean(UserService.class);
for (User user : userList) {
// 根据 processedBy 前缀判断处理人类型分别获取用户列表
List<UserDTO> 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<UserDTO> 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;