From 0a3eed02e78dfeeb7763a4b62992eefcd1f5a0ca Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期二, 23 十二月 2025 23:33:34 +0800
Subject: [PATCH] feat: 优化状态变更时实时推送

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskAssigneeServiceImpl.java |   16 ++++++++++++----
 1 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskAssigneeServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskAssigneeServiceImpl.java
index 1953b3d..f64a13c 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskAssigneeServiceImpl.java
+++ b/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();

--
Gitblit v1.9.1