From 40a8157440e3b906da8f52e07d939d78c3f4c313 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期日, 12 四月 2026 16:14:06 +0800
Subject: [PATCH] feat: 任务增加统计、同步增加通知

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskAssigneeServiceImpl.java |   26 +++++++++++++++++---------
 1 files changed, 17 insertions(+), 9 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..847ddf8 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
@@ -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);

--
Gitblit v1.9.1