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/NotifyDispatchServiceImpl.java |   58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 56 insertions(+), 2 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/NotifyDispatchServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/NotifyDispatchServiceImpl.java
index a918e86..7eb559c 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/NotifyDispatchServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/NotifyDispatchServiceImpl.java
@@ -1,6 +1,7 @@
 package com.ruoyi.system.service.impl;
 
 import com.alibaba.fastjson2.JSON;
+import com.ruoyi.common.config.WechatConfig;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.system.domain.*;
@@ -46,6 +47,16 @@
     @Autowired
     private ISmsService smsService;
 
+    @Autowired
+    private IQyWechatService qyWechatService;
+
+
+    @Autowired
+    private WechatConfig wechatConfig;
+
+    @Autowired
+    private ISysEmergencyTaskService sysEmergencyTaskService;
+
     /**
      * 鑾峰彇鎸囧畾閫氱煡绫诲瀷鍚敤鐨勬笭閬撳垪琛�
      */
@@ -75,8 +86,8 @@
             return 0;
         }
 
-        log.info("寮�濮嬪垎鍙戦�氱煡浠诲姟锛宨d={}, taskId={}, userId={}, notifyType={}", 
-                notifyTask.getId(), notifyTask.getTaskId(), notifyTask.getUserId(), notifyTask.getNotifyType());
+//        log.info("寮�濮嬪垎鍙戦�氱煡浠诲姟锛宨d={}, taskId={}, userId={}, notifyType={}",
+//                notifyTask.getId(), notifyTask.getTaskId(), notifyTask.getUserId(), notifyTask.getNotifyType());
 
         // 鏇存柊鐘舵�佷负澶勭悊涓�
         notifyTaskService.markProcessing(notifyTask.getId());
@@ -108,6 +119,9 @@
                         break;
                     case NotifyChannelConfig.CHANNEL_SMS:
                         success = sendSmsMessage(notifyTask);
+                        break;
+                    case NotifyChannelConfig.CHANNEL_QY_WECHAT:
+                        success = sendQyWechatMessage(notifyTask);
                         break;
                     default:
                         log.warn("涓嶆敮鎸佺殑娓犻亾绫诲瀷锛歿}", channel);
@@ -175,7 +189,9 @@
             sendLog.setChannel(channel);
             sendLog.setSendStatus(success ? NotifySendLog.SEND_STATUS_SUCCESS : NotifySendLog.SEND_STATUS_FAILED);
             sendLog.setSendTime(DateUtils.getNowDate());
+            sendLog.setSendContent(notifyTask.getContent());
             sendLog.setResponseMsg(errorMsg);
+            sendLog.setSendResult(success ? "鍙戦�佹垚鍔�" : ("鍙戦�佸け璐�: " + (errorMsg != null ? errorMsg : "鏈煡鍘熷洜")));
             
             notifySendLogService.insertNotifySendLog(sendLog);
         } catch (Exception e) {
@@ -318,4 +334,42 @@
             return false;
         }
     }
+
+    @Autowired
+    private ISysConfigService sysConfigService;
+    /**
+     * 鍙戦�佷紒涓氬井淇℃秷鎭�
+     */
+    @Override
+    public boolean sendQyWechatMessage(NotifyTask notifyTask) {
+        // 妫�鏌ヤ紒涓氬井淇℃湇鍔℃槸鍚﹀惎鐢�
+        if (!qyWechatService.isEnabled()) {
+            throw new RuntimeException("浼佷笟寰俊鏈嶅姟鏈惎鐢�");
+        }
+        Long taskId = notifyTask.getTaskId();
+        SysTaskEmergency emergency = this.sysEmergencyTaskService.selectSysTaskEmergencyByTaskId(taskId);
+        if (emergency == null) {
+            throw new RuntimeException("鎵句笉鍒板搴旂殑鎬ユ晳浠诲姟淇℃伅锛宼askId=" + taskId);
+        }
+        // 妫�鏌ョ敤鎴锋槸鍚︾粦瀹氫紒涓氬井淇�
+        Long userId = notifyTask.getUserId();
+        String qyUserId = qyWechatService.getQyUserIdByUserId(userId);
+        if (qyUserId == null || qyUserId.isEmpty()) {
+            throw new RuntimeException("鐢ㄦ埛鏈粦瀹氫紒涓氬井淇D锛寀serId=" + userId);
+        }
+        String appId = wechatConfig.getAppId();
+        String pathPage = "/pagesTask/detail?id=" + taskId;
+        // 鍙戦�佷紒涓氬井淇℃秷鎭�
+        boolean success = qyWechatService.sendNotifyMessage(
+                userId,
+                notifyTask.getTitle(),
+                notifyTask.getContent(), appId, pathPage
+        );
+        if (success) {
+            log.info("浼佷笟寰俊娑堟伅鍙戦�佹垚鍔燂紝userId={}", userId);
+        } else {
+            throw new RuntimeException("浼佷笟寰俊API杩斿洖澶辫触锛寀serId=" + userId);
+        }
+        return true;
+    }
 }

--
Gitblit v1.9.1