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/listener/TaskMessageListener.java |   78 +++++++++++++++++++++++++++++++++++----
 1 files changed, 70 insertions(+), 8 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/listener/TaskMessageListener.java b/ruoyi-system/src/main/java/com/ruoyi/system/listener/TaskMessageListener.java
index d343005..5b20aae 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/listener/TaskMessageListener.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/listener/TaskMessageListener.java
@@ -1,6 +1,7 @@
 package com.ruoyi.system.listener;
 
 import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.common.config.WechatConfig;
 import com.ruoyi.common.utils.DeptUtil;
 import com.ruoyi.common.utils.LongUtil;
 import com.ruoyi.system.domain.*;
@@ -57,6 +58,12 @@
     @Autowired
     private INotifyDispatchService notifyDispatchService;
 
+    @Autowired
+    private IQyWechatService qyWechatService;
+
+    @Autowired
+    private WechatConfig wechatConfig;
+
     /** 寰呭噯澶囩姸鎬� - 鍙互鍙戦�佺煭淇¢�氱煡 */
     private static final String TASK_STATUS_PENDING = "PENDING";
     /** 寰呭噯澶囩姸鎬� - 鍙互鍙戦�佺煭淇¢�氱煡 */
@@ -83,7 +90,7 @@
                    sendDispatchNotify(assigneeIds, task.getCreatorId(), event.getTaskId(),task.getShowTaskCode(), buildNotifyContent(task, emergency));
                }
             }
-
+            syncDispatchActualStartTime(emergency, task);
             Long taskId= event.getTaskId();
             Long dispatchOrdId= event.getDispatchOrderId();
             Long serviceOrdId= event.getServiceOrderId();
@@ -94,6 +101,19 @@
             log.error("澶勭悊浠诲姟娲惧彂鍚屾浜嬩欢澶辫触", ex);
         }
     }
+
+    private void syncDispatchActualStartTime(SysTaskEmergency emergency, SysTask task) {
+        try {
+            //杩欓噷涔熷悓姝ヤ竴涓嬪疄闄呮椂闂�
+            Long disatpchOrdId = emergency.getLegacyDispatchOrdId();
+            Date actualTime = task.getActualStartTime();
+            legacySystemSyncService.updateDispatchActualTime(disatpchOrdId, actualTime);
+        }catch (Exception ex){
+        log.error("鍚屾瀹為檯鏃堕棿澶辫触", ex);
+        }
+    }
+
+
     /**
      * 鐩戝惉浠诲姟鍒涘缓浜嬩欢
      * 
@@ -253,6 +273,7 @@
     /**
      * 鐩戝惉浠诲姟鍒嗛厤浜嬩欢
      * 鍒涘缓閫氱煡浠诲姟锛岀敱閫氱煡鍒嗗彂鏈嶅姟鍐冲畾鍙戦�佹笭閬�
+     * 鍚屾椂鐩存帴鍙戦�佷紒涓氬井淇¢�氱煡
      * 
      * @param event 浠诲姟鍒嗛厤浜嬩欢
      */
@@ -282,15 +303,18 @@
             Long creatorId = task.getCreatorId();
             String taskStatus = task.getTaskStatus();
             task.setEmergencyInfo(emergency);
-            // 浠呭湪寰呭噯澶囩姸鎬佷笅鍙戦�侀�氱煡
-            if (!TASK_STATUS_PENDING.equals(taskStatus) && !TASK_STATUS_PREPARING.equals(taskStatus)) {
-                log.info("浠诲姟鐘舵��({})闈炲緟鍑嗗鐘舵�侊紝璺宠繃閫氱煡锛宼askId={}", taskStatus, event.getTaskId());
-                return;
-            }
-
+            
             // 鏋勫缓閫氱煡鍐呭
             String notifyContent = buildNotifyContent(task, emergency);
-            this.sendDispatchNotify(event.getAssigneeIds(), creatorId, event.getTaskId(),task.getShowTaskCode(), notifyContent);
+            
+            // 鐩存帴鍙戦�佷紒涓氬井淇¢�氱煡缁欐墽琛屼汉鍛�
+            sendQyWechatNotifyToAssignees(event.getAssigneeIds(), creatorId, event.getTaskId(), notifyContent);
+            
+            // 鍚屾椂璧板師鏈夐�氱煡鍒嗗彂娴佺▼锛堢珯鍐呮秷鎭瓑锛�
+            // 浠呭湪寰呭噯澶囩姸鎬佷笅鍙戦�佸叾浠栭�氱煡
+            if (TASK_STATUS_PENDING.equals(taskStatus) || TASK_STATUS_PREPARING.equals(taskStatus)) {
+                this.sendDispatchNotify(event.getAssigneeIds(), creatorId, event.getTaskId(), task.getShowTaskCode(), notifyContent);
+            }
 
             
         } catch (Exception e) {
@@ -299,6 +323,44 @@
     }
 
     /**
+     * 鐩存帴鍙戦�佷紒涓氬井淇¢�氱煡缁欐墽琛屼汉鍛�
+     */
+    private void sendQyWechatNotifyToAssignees(List<Long> assigneeIds, Long creatorId, Long taskId, String content) {
+        String appId = wechatConfig.getAppId();
+        String pathPage = "/pagesTask/detail?id=" + taskId;
+        int successCount = 0;
+        
+        for (Long assigneeId : assigneeIds) {
+            // 鎺掗櫎鍒涘缓浜�
+            if (creatorId != null && creatorId.equals(assigneeId)) {
+                log.debug("璺宠繃鍒涘缓浜猴紝涓嶅彂閫佷紒涓氬井淇¢�氱煡锛寀serId={}", assigneeId);
+                continue;
+            }
+            
+            try {
+                boolean success = qyWechatService.sendNotifyMessage(
+                        assigneeId,
+                        "杞繍鍗曚换鍔℃淳鍗曢�氱煡",
+                        content,
+                        appId,
+                        pathPage
+                );
+                
+                if (success) {
+                    successCount++;
+                    log.info("浼佷笟寰俊娲惧崟閫氱煡鍙戦�佹垚鍔燂紝taskId={}, userId={}", taskId, assigneeId);
+                } else {
+                    log.warn("浼佷笟寰俊娲惧崟閫氱煡鍙戦�佸け璐ワ紝taskId={}, userId={}", taskId, assigneeId);
+                }
+            } catch (Exception e) {
+                log.error("浼佷笟寰俊娲惧崟閫氱煡鍙戦�佸紓甯革紝taskId={}, userId={}", taskId, assigneeId, e);
+            }
+        }
+        
+        log.info("浼佷笟寰俊娲惧崟閫氱煡鍙戦�佸畬鎴愶紝taskId={}, 鎴愬姛鏁伴噺={}/{}", taskId, successCount, assigneeIds.size());
+    }
+
+    /**
      * 鍚戞墽琛屼汉鍙戦�佷换鍔″垎閰嶉�氱煡
      * @param assigneeIds
      * @param creatorId

--
Gitblit v1.9.1