wlzboy
2025-12-30 a4b14a35a2209a30e53472e6333b13aa4a55b0eb
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskAssigneeServiceImpl.java
@@ -74,7 +74,9 @@
            return false;
        }
        try {
            List<Long> newAssigneeIds = newAssignees.stream().map(TaskCreateVO.AssigneeInfo::getUserId).collect(Collectors.toList());
            //过滤分配人不要出现重复
            List<Long> newAssigneeIds = newAssignees.stream().map(TaskCreateVO.AssigneeInfo::getUserId).distinct().collect(Collectors.toList());
            // 查询现有的执行人员
            List<SysTaskAssignee> existingAssignees = sysTaskAssigneeMapper.selectSysTaskAssigneeByTaskId(taskId);
@@ -83,11 +85,17 @@
            List<Long> assigneesToDelete = existingAssignees.stream().map(SysTaskAssignee::getUserId)
                    .filter(id -> !newAssigneeIds.contains(id))
                    .collect(Collectors.toList());
            Map<Long, TaskCreateVO.AssigneeInfo> addedAssignees = new HashMap<>();
            for(TaskCreateVO.AssigneeInfo assigneeInfo:newAssignees){
                Long userId = assigneeInfo.getUserId();
                if(!existingAssigneeIds.contains(userId) && !addedAssignees.containsKey(userId)){
                    addedAssignees.put(userId, assigneeInfo);
                }
            }
            // 找出需要添加的执行人(在新列表中存在但在数据库中不存在)
            List<TaskCreateVO.AssigneeInfo> assigneesToAdd = newAssignees.stream()
                    .filter(assignee -> !existingAssigneeIds.contains(assignee.getUserId()))
                    .collect(Collectors.toList());
            List<TaskCreateVO.AssigneeInfo> assigneesToAdd = new ArrayList<>(addedAssignees.values());
            //我们要对assigneesToAdd进行去重处理,对userId进行去重
            boolean hasChanges = !assigneesToDelete.isEmpty() || !assigneesToAdd.isEmpty();