From 977447bd07d796601ed4159ef57be7b65934cd93 Mon Sep 17 00:00:00 2001
From: nieziyan <nzyone@qq.com>
Date: Wed, 20 Dec 2023 11:07:13 +0800
Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9AIDC=20Data=E6=8B=BE=E5=8F=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../java/org/jeecg/common/util/JDBCUtil.java  |  7 ++-
 .../modules/feignclient/SystemClient.java     |  7 +--
 .../org/jeecg/modules/idc/IDCDataFetch.java   | 54 ++++++++++++-------
 .../controller/SendMessageController.java     |  2 +-
 4 files changed, 41 insertions(+), 29 deletions(-)

diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/JDBCUtil.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/JDBCUtil.java
index 62881a5e..6bf9d222 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/JDBCUtil.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/JDBCUtil.java
@@ -46,7 +46,7 @@ public class JDBCUtil {
         try (Connection connection = dataSource.getConnection()) {
             return true;
         } catch (SQLException e) {
-            log.error("JDBCUtil.isConnection():数据源["+ url +"]连接失败: {}", e.getMessage());
+            log.error("数据源["+ url +"]连接失败: {}", e.getMessage());
             return false;
         }
     }
@@ -60,8 +60,7 @@ public class JDBCUtil {
         try (Connection connection = dataSource.getConnection()) {
             return new ConnR().setConn(true);
         } catch (SQLException e) {
-            String message = String.format("IDC数据源["+ url +"]连接失败: %s", e.getMessage());
-            log.error(message);
+            String message = String.format("[xxx数据源]连接失败: %s", e.getMessage());
             return new ConnR().setInfo(message);
         }
     }
@@ -73,7 +72,7 @@ public class JDBCUtil {
         } catch (SQLException e) {
             String url = "--";
             if (ObjectUtil.isNotNull(dataSource)) url = dataSource.getUrl();
-            log.error("JDBCUtil.isConnection():数据源["+ url +"]连接失败: {}", e.getMessage());
+            log.error("数据源["+ url +"]连接失败: {}", e.getMessage());
             return false;
         }
     }
diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/feignclient/SystemClient.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/feignclient/SystemClient.java
index bd88b422..bce40eb1 100644
--- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/feignclient/SystemClient.java
+++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/feignclient/SystemClient.java
@@ -6,10 +6,7 @@ import org.jeecg.common.system.vo.DictModel;
 import org.jeecg.modules.base.entity.postgre.SysUser;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.stereotype.Component;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.Collection;
 import java.util.List;
@@ -28,7 +25,7 @@ public interface SystemClient {
                      @RequestParam String groupId,
                      @RequestParam String notific);
 
-    @GetMapping("/sys/sendMessage/sendTo")
+    @PostMapping("/sys/sendMessage/sendTo")
     void sendTo(@RequestBody MessageDTO messageDTO);
 
     /* SysDictController下相关接口 */
diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/idc/IDCDataFetch.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/idc/IDCDataFetch.java
index 7aaddee3..ef5eaccb 100644
--- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/idc/IDCDataFetch.java
+++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/idc/IDCDataFetch.java
@@ -1,8 +1,10 @@
 package org.jeecg.modules.idc;
 
+import cn.hutool.core.util.StrUtil;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.api.dto.message.MessageDTO;
+import org.jeecg.common.config.mqtoken.UserTokenContext;
 import org.jeecg.common.constant.enums.MessageTypeEnum;
 import org.jeecg.common.util.JDBCUtil;
 import org.jeecg.modules.base.dto.ConnR;
@@ -17,26 +19,28 @@ import java.sql.Connection;
 import java.sql.SQLException;
 import java.util.concurrent.TimeUnit;
 
+import static org.jeecg.common.util.TokenUtils.getTempToken;
+
 @Component
 @Slf4j
 public class IDCDataFetch {
 
-    @Value("inland.url")
+    @Value("${inland.url}")
     private String urlM; // 本地数据源url,即为主数据源
 
-    @Value("inland.username")
+    @Value("${inland.username}")
     private String usernameM;
 
-    @Value("inland.password")
+    @Value("${inland.password}")
     private String passwordM;
 
-    @Value("oversea.url")
+    @Value("${oversea.url}")
     private String urlS; // 国外数据源url,即为从数据源
 
-    @Value("oversea.username")
+    @Value("${oversea.username}")
     private String usernameS;
 
-    @Value("oversea.password")
+    @Value("${oversea.password}")
     private String passwordS;
 
     @Autowired
@@ -44,39 +48,51 @@ public class IDCDataFetch {
 
     // 定时拾取IDC数据
     @Scheduled(fixedDelayString = "${request-interval}", timeUnit = TimeUnit.SECONDS)
-    private void fetch() {
-        ConnR connR;
+    public void fetch() {
         JdbcTemplate template;
         MessageDTO messageDTO = new MessageDTO("IDC数据源异常", null, "admin");
         messageDTO.setType(MessageTypeEnum.XT.getType());
-        connR = JDBCUtil.isConnection(urlM, usernameM, passwordM);
+        ConnR connR = JDBCUtil.isConnection(urlM, usernameM, passwordM);
         if (connR.isConn()) {
             try {
                 template = JDBCUtil.template(urlM, usernameM, passwordM);
                 // 查询IDC Data
-                System.out.println("[inland数据源]IDC数据查询");
+
             } catch (Exception e) {
-                log.error("[inland数据源]IDC数据查询异常: {}", e.getMessage());
+                log.error("[inland数据源]IDC数据处理异常: {}", e.getMessage());
             }
             return;
         }
-        // 给管理员发送预警信息
-        messageDTO.setContent(connR.getInfo());
-        systemClient.sendTo(messageDTO);
+        UserTokenContext.setToken(getTempToken());
+        // 对发送警告消息时可能出现的异常进行捕获(503) 防止影响后续代码执行
+        try {
+            // 给管理员发送预警信息
+            String message = StrUtil.replace(connR.getInfo(), "xxx", "inland");
+            messageDTO.setContent(message);
+            systemClient.sendTo(messageDTO);
+        }catch (Exception e){
+            log.error("发送inland数据源异常信息失败: {}", e.getMessage());
+        }
         // 使用备用数据源
         connR = JDBCUtil.isConnection(urlS, usernameS, passwordS);
         if (connR.isConn()) {
             try {
                 template = JDBCUtil.template(urlS, usernameS, passwordS);
                 // 查询IDC Data
-                System.out.println("[oversea数据源]IDC数据查询");
+
             } catch (Exception e) {
-                log.error("[oversea数据源]IDC数据查询异常: {}", e.getMessage());
+                log.error("[oversea数据源]IDC数据处理异常: {}", e.getMessage());
             }
             return;
         }
-        // 给管理员发送预警信息
-        messageDTO.setContent(connR.getInfo());
-        systemClient.sendTo(messageDTO);
+        try {
+            // 给管理员发送预警信息
+            String message = StrUtil.replace(connR.getInfo(), "xxx", "oversea");
+            messageDTO.setContent(message);
+            systemClient.sendTo(messageDTO);
+        }catch (Exception e){
+            log.error("发送oversea数据源异常信息失败: {}", e.getMessage());
+        }
+        UserTokenContext.remove();
     }
 }
diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/controller/SendMessageController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/controller/SendMessageController.java
index 44edcb11..aeb6eb5c 100644
--- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/controller/SendMessageController.java
+++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/controller/SendMessageController.java
@@ -24,7 +24,7 @@ public class SendMessageController {
         sendMessage.send(title, message, groupId, notific);
     }
 
-    @GetMapping("sendTo")
+    @PostMapping("sendTo")
     public void sendTo(@RequestBody MessageDTO messageDTO){
         sysBaseAPI.sendTemplateMessage(messageDTO);
     }