update 优化工作流工具冗余代码
This commit is contained in:
parent
fc44fd7790
commit
64f950437e
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user