fix 修复 重构导致的问题

This commit is contained in:
疯狂的狮子Li 2025-05-12 18:21:21 +08:00
parent a4ad56f0eb
commit facd3e351f
4 changed files with 9 additions and 39 deletions

View File

@ -15,19 +15,9 @@ public interface IFlwTaskAssigneeService {
* 根据存储标识符storageId解析分配类型和ID并获取对应的用户列表 * 根据存储标识符storageId解析分配类型和ID并获取对应的用户列表
* 支持单个标识例如 "user:123" "456"格式非法将返回空列表 * 支持单个标识例如 "user:123" "456"格式非法将返回空列表
* *
* @param storageId 包含分配类型和ID的字符串 * @param storageIds 包含分配类型和ID的字符串
* @return 匹配的用户列表格式非法返回空列表 * @return 匹配的用户列表格式非法返回空列表
*/ */
List<UserDTO> fetchUsersByStorageId(String storageId); List<UserDTO> fetchUsersByStorageIds(String storageIds);
/**
* 批量解析多个存储标识符storageIds按类型分类并合并查询用户列表
* 输入格式支持多个以逗号分隔的标识 "user:123,role:456,789"
* 会自动去重返回结果非法格式的标识将被忽略
*
* @param storageIds 多个存储标识符字符串逗号分隔
* @return 合并后的用户列表去重后返回非法格式的标识将被跳过
*/
List<UserDTO> fetchUsersByStorageIds(List<String> storageIds);
} }

View File

@ -72,11 +72,8 @@ public class FlwCommonServiceImpl implements IFlwCommonService {
IFlwTaskAssigneeService taskAssigneeService = SpringUtils.getBean(IFlwTaskAssigneeService.class); IFlwTaskAssigneeService taskAssigneeService = SpringUtils.getBean(IFlwTaskAssigneeService.class);
Map<String, List<User>> userListMap = StreamUtils.groupByKey(userList, User::getType); Map<String, List<User>> userListMap = StreamUtils.groupByKey(userList, User::getType);
for (Map.Entry<String, List<User>> entry : userListMap.entrySet()) { for (Map.Entry<String, List<User>> entry : userListMap.entrySet()) {
List<String> processedBys = entry.getValue().stream() List<User> entryValue = entry.getValue();
.map(User::getProcessedBy) String processedBys = StreamUtils.join(entryValue, User::getProcessedBy);
.filter(StringUtils::isNotBlank)
.distinct()
.collect(Collectors.toList());
// 根据 processedBy 前缀判断处理人类型分别获取用户列表 // 根据 processedBy 前缀判断处理人类型分别获取用户列表
List<UserDTO> users = taskAssigneeService.fetchUsersByStorageIds(processedBys); List<UserDTO> users = taskAssigneeService.fetchUsersByStorageIds(processedBys);
// 转换为 FlowUser 并添加到结果集合 // 转换为 FlowUser 并添加到结果集合

View File

@ -169,33 +169,16 @@ public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, Hand
* 根据存储标识符storageId解析分配类型和ID并获取对应的用户列表 * 根据存储标识符storageId解析分配类型和ID并获取对应的用户列表
* 支持单个标识例如 "user:123" "456"格式非法将返回空列表 * 支持单个标识例如 "user:123" "456"格式非法将返回空列表
* *
* @param storageId 包含分配类型和ID的字符串 * @param storageIds 包含分配类型和ID的字符串
* @return 匹配的用户列表格式非法返回空列表 * @return 匹配的用户列表格式非法返回空列表
*/ */
@Override @Override
public List<UserDTO> fetchUsersByStorageId(String storageId) { public List<UserDTO> fetchUsersByStorageIds(String storageIds) {
Pair<TaskAssigneeEnum, Long> parsed = this.parseStorageId(storageId); if (StringUtils.isEmpty(storageIds)) {
if (parsed == null) {
return List.of();
}
return this.getUsersByType(parsed.getKey(), Collections.singletonList(parsed.getValue()));
}
/**
* 批量解析多个存储标识符storageIds按类型分类并合并查询用户列表
* 输入格式支持多个以逗号分隔的标识 "user:123,role:456,789"
* 会自动去重返回结果非法格式的标识将被忽略
*
* @param storageIds 多个存储标识符字符串逗号分隔
* @return 合并后的用户列表去重后返回非法格式的标识将被跳过
*/
@Override
public List<UserDTO> fetchUsersByStorageIds(List<String> storageIds) {
if (CollUtil.isEmpty(storageIds)) {
return List.of(); return List.of();
} }
Map<TaskAssigneeEnum, List<Long>> typeIdMap = new EnumMap<>(TaskAssigneeEnum.class); Map<TaskAssigneeEnum, List<Long>> typeIdMap = new EnumMap<>(TaskAssigneeEnum.class);
for (String storageId : storageIds) { for (String storageId : storageIds.split(StringUtils.SEPARATOR)) {
Pair<TaskAssigneeEnum, Long> parsed = this.parseStorageId(storageId); Pair<TaskAssigneeEnum, Long> parsed = this.parseStorageId(storageId);
if (parsed != null) { if (parsed != null) {
typeIdMap.computeIfAbsent(parsed.getKey(), k -> new ArrayList<>()).add(parsed.getValue()); typeIdMap.computeIfAbsent(parsed.getKey(), k -> new ArrayList<>()).add(parsed.getValue());

View File

@ -600,7 +600,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
for (FlowNode flowNode : nextFlowNodes) { for (FlowNode flowNode : nextFlowNodes) {
buildNextTaskList.stream().filter(t -> t.getNodeCode().equals(flowNode.getNodeCode())).findFirst().ifPresent(t -> { buildNextTaskList.stream().filter(t -> t.getNodeCode().equals(flowNode.getNodeCode())).findFirst().ifPresent(t -> {
if (CollUtil.isNotEmpty(t.getPermissionList())) { if (CollUtil.isNotEmpty(t.getPermissionList())) {
List<UserDTO> users = flwTaskAssigneeService.fetchUsersByStorageIds(t.getPermissionList()); List<UserDTO> users = flwTaskAssigneeService.fetchUsersByStorageIds(String.join(StringUtils.SEPARATOR, t.getPermissionList()));
if (CollUtil.isNotEmpty(users)) { if (CollUtil.isNotEmpty(users)) {
flowNode.setPermissionFlag(StreamUtils.join(users, e -> String.valueOf(e.getUserId()))); flowNode.setPermissionFlag(StreamUtils.join(users, e -> String.valueOf(e.getUserId())));
} }