From 3925e891aee913e2aa9cd12c4b62a464ea7e5312 Mon Sep 17 00:00:00 2001
From: “mitao” <“2763622819@qq.com”>
Date: 星期五, 20 三月 2026 12:02:57 +0800
Subject: [PATCH] fix:运维端消息通知类型修改

---
 xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/schedule/RoutineTaskNotificationScheduleTask.java |   29 +++++++++++++++++------------
 1 files changed, 17 insertions(+), 12 deletions(-)

diff --git a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/schedule/RoutineTaskNotificationScheduleTask.java b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/schedule/RoutineTaskNotificationScheduleTask.java
index ac3fe8b..9e5cb36 100644
--- a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/schedule/RoutineTaskNotificationScheduleTask.java
+++ b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/schedule/RoutineTaskNotificationScheduleTask.java
@@ -81,13 +81,13 @@
                 return;
             }
 
-            Map<Long, Integer> userTaskCountMap = buildUserTaskCountMap(tasks);
-            if (userTaskCountMap.isEmpty()) {
+            Map<Long, List<Long>> userTaskIdsMap = buildUserTaskIdsMap(tasks);
+            if (userTaskIdsMap.isEmpty()) {
                 log.warn("任务接收人为空,跳过通知");
                 return;
             }
 
-            Set<Long> allUserIds = userTaskCountMap.keySet();
+            Set<Long> allUserIds = userTaskIdsMap.keySet();
 
             Map<Long, XpOperationsUser> userMap = fetchOperationUsers(allUserIds);
             if (CollectionUtils.isEmpty(userMap)) {
@@ -98,10 +98,11 @@
             List<XpOperationsUserNotification> notifications = new ArrayList<>();
             int pushCount = 0;
 
-            for (Map.Entry<Long, Integer> entry : userTaskCountMap.entrySet()) {
+            for (Map.Entry<Long, List<Long>> entry : userTaskIdsMap.entrySet()) {
                 Long userId = entry.getKey();
-                Integer taskCount = entry.getValue();
-                if (taskCount == null || taskCount <= 0) {
+                List<Long> taskIds = entry.getValue();
+                int taskCount = taskIds == null ? 0 : taskIds.size();
+                if (taskCount <= 0) {
                     continue;
                 }
 
@@ -110,6 +111,9 @@
                     continue;
                 }
 
+                // 只有一个待完成任务时 dataId 赋值为该任务 ID,多个则赋值为 0
+                long dataId = taskCount == 1 ? taskIds.get(0) : 0L;
+
                 String content = buildContent(taskCount);
                 String bodyJson = buildPushBodyJson(content);
 
@@ -117,7 +121,7 @@
                 notification.setNotificationType(NotificationTypeEnum.TASK_NEW.getCode());
                 notification.setNotificationContent(content);
                 notification.setOperationsUserId(userId);
-                notification.setDataId(0L);
+                notification.setDataId(dataId);
                 notification.setReadStatus(0);
                 notification.setNotificationExt(bodyJson);
                 notifications.add(notification);
@@ -148,19 +152,20 @@
     }
 
     /**
-     * 构建用户待办数量映射
+     * 构建用户待办任务 ID 列表映射
+     * key: 运维人员 ID,value: 该用户名下的待办任务 ID 列表
      */
-    private Map<Long, Integer> buildUserTaskCountMap(List<XpTask> tasks) {
-        Map<Long, Integer> userTaskCountMap = new HashMap<>();
+    private Map<Long, List<Long>> buildUserTaskIdsMap(List<XpTask> tasks) {
+        Map<Long, List<Long>> userTaskIdsMap = new HashMap<>();
         for (XpTask task : tasks) {
             Set<Long> userIds = parseUserIds(task.getHandleUserId());
             if (!CollectionUtils.isEmpty(userIds)) {
                 for (Long userId : userIds) {
-                    userTaskCountMap.put(userId, userTaskCountMap.getOrDefault(userId, 0) + 1);
+                    userTaskIdsMap.computeIfAbsent(userId, k -> new ArrayList<>()).add(task.getId());
                 }
             }
         }
-        return userTaskCountMap;
+        return userTaskIdsMap;
     }
 
     /**

--
Gitblit v1.7.1