From 37f8d15dd8954e04ad09445184c04a58773af17a Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 周三, 14 6月 2023 09:13:37 +0800
Subject: [PATCH] 增加websocket报警点数量推送

---
 ruoyi-common/src/main/java/com/ruoyi/common/websocket/service/ChatServerEndpoint.java |   12 +++++-------
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/AlarmTask.java                       |   26 ++++++++++++++++++--------
 2 files changed, 23 insertions(+), 15 deletions(-)

diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/websocket/service/ChatServerEndpoint.java b/ruoyi-common/src/main/java/com/ruoyi/common/websocket/service/ChatServerEndpoint.java
index 7ed66be..17c2f64 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/websocket/service/ChatServerEndpoint.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/websocket/service/ChatServerEndpoint.java
@@ -23,12 +23,12 @@
 
 @Component
 @Slf4j(topic = "websocket")
-@ServerEndpoint("/websocket")
+@ServerEndpoint("/websocket/{userId}")
 public class ChatServerEndpoint {
 
     @OnOpen
-    public void openSession( Session session) {
-        String userId = SecurityUtils.getUserId();
+    public void openSession( @PathParam("userId")String userId, Session session) {
+
         ONLINE_USER_SESSIONS.put(userId, session);
         String message = "用户[" + userId + "] 成功连接!";
         log.info("用户登录:"+message);
@@ -36,17 +36,15 @@
     }
 
     @OnMessage
-    public void onMessage( String message) {
+    public void onMessage(@PathParam("userId")String userId, String message) {
         log.info("收到消息:"+message);
-        String userId = SecurityUtils.getUserId();
         Session session = ONLINE_USER_SESSIONS.get(userId);
         sendMessage(session,message);
 //        sendMessageAll("用户[" + userid + "] : " + message);
     }
 
     @OnClose
-    public void onClose( Session session) {
-        String userId = SecurityUtils.getUserId();
+    public void onClose( @PathParam("userId")String userId,Session session) {
         //当前的Session 移除
         ONLINE_USER_SESSIONS.remove(userId);
         //并且通知其他人当前用户已经离开聊天室了
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/StealAlarmTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/AlarmTask.java
similarity index 86%
rename from ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/StealAlarmTask.java
rename to ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/AlarmTask.java
index 57f3a49..1b552c7 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/StealAlarmTask.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/AlarmTask.java
@@ -1,5 +1,6 @@
 package com.ruoyi.quartz.task;
 
+import com.ruoyi.alarm.globalAlarm.service.IGlobalAlarmService;
 import com.ruoyi.alarm.stealAlarm.domain.ArdAlarmStealelec;
 import com.ruoyi.alarm.stealAlarm.service.IStealElecAlarmService;
 import com.ruoyi.common.core.domain.entity.SysUser;
@@ -16,20 +17,22 @@
 import static com.ruoyi.common.websocket.util.WebSocketUtils.ONLINE_USER_SESSIONS;
 
 /**
- * @ClassName: stealAlarmTask
+ * @ClassName: AlarmTask
  * @Description:
  * @Author: Administrator
  * @Date: 2023年03月06日 11:13
  * @Version: 1.0
  **/
-@Component("StealAlarmTask")
-@Slf4j(topic = "stealAlarm")
-public class StealAlarmTask {
+@Component("AlarmTask")
+@Slf4j(topic = "AlarmTask")
+public class AlarmTask {
 
     @Resource
     IStealElecAlarmService IStealElecAlarmService;
     @Resource
     ISysUserService sysUserService;
+    @Resource
+    IGlobalAlarmService globalAlarmService;
 
     /**
      * @描述 盗电报警实时推送任务
@@ -39,12 +42,12 @@
      * @创建时间 2023/3/6 15:10
      * @修改人和其它信息
      */
-    public void alarmPush() {
+    public void stealElecAlarmPush() {
         log.info("盗电报警推送开始");
         // 开始时间
         long stime = System.currentTimeMillis();
         try {
-            for(String userId : ONLINE_USER_SESSIONS.keySet()) {
+            for (String userId : ONLINE_USER_SESSIONS.keySet()) {
                 SysUser sysUser = sysUserService.selectUserById(userId);
                 List<ArdAlarmStealelec> alarms = IStealElecAlarmService.getRealAlarm(sysUser.getDeptId());
                 Map<String, Object> map = new HashMap<>();
@@ -81,7 +84,7 @@
                 map.put("total", alarms.size());
                 map.put("data", alarms);
                 if (alarms.size() > 0) {
-                    WebSocketUtils.sendMessage(ONLINE_USER_SESSIONS.get(userId),map);
+                    WebSocketUtils.sendMessage(ONLINE_USER_SESSIONS.get(userId), map);
                 }
             }
         } catch (Exception ex) {
@@ -101,7 +104,7 @@
      * @创建时间 2023/2/28 11:51
      * @修改人和其它信息
      */
-    public void alarmPull() {
+    public void stealElecAlarmPull() {
         log.info("盗电数据拉取开始");
         // 开始时间
         long stime = System.currentTimeMillis();
@@ -116,4 +119,11 @@
         // 计算执行时间
         log.info("盗电数据拉取结束:" + (etime - stime) + " 毫秒");
     }
+
+    public void globalAlarmCountPush() {
+        Map<String, Integer> stringIntegerMap = globalAlarmService.selectAlarmLogsCount();
+        if (ONLINE_USER_SESSIONS.size() > 0) {
+                WebSocketUtils.sendMessageAll(stringIntegerMap);
+        }
+    }
 }

--
Gitblit v1.9.3