wlzboy
2026-02-26 f5c900c58513bad824381e69750ac7667ef35de0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskAssigneeServiceImpl.java
@@ -32,7 +32,7 @@
    private ApplicationEventPublisher eventPublisher;
    @Override
    @Transactional
    public void saveTaskAssignees(Long taskId, List<TaskCreateVO.AssigneeInfo> assignees, String userName) {
        if (assignees == null || assignees.isEmpty()) {
            return;
@@ -68,13 +68,15 @@
    }
    @Override
    @Transactional
    public boolean updateTaskAssignees(Long taskId, List<TaskCreateVO.AssigneeInfo> newAssignees, String userName) {
        if (newAssignees == null) {
            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();
@@ -173,13 +181,13 @@
    }
    @Override
    @Transactional
    public int deleteAssigneesByTaskId(Long taskId) {
        return sysTaskAssigneeMapper.deleteSysTaskAssigneeByTaskId(taskId);
    }
    @Override
    @Transactional
    public AjaxResult setAssigneeReady(Long taskId, Long userId) {
        // 1. 查询执行人关联信息
        List<SysTaskAssignee> assignees = sysTaskAssigneeMapper.selectSysTaskAssigneeByTaskId(taskId);
@@ -212,7 +220,7 @@
    }
    @Override
    @Transactional
    public AjaxResult cancelAssigneeReady(Long taskId, Long userId) {
        // 查询执行人关联信息
        List<SysTaskAssignee> assignees = sysTaskAssigneeMapper.selectSysTaskAssigneeByTaskId(taskId);