From e16302f9d475c7cc4dd18c5abf1a23cb5502e362 Mon Sep 17 00:00:00 2001
From: whyclxw <810412026@qq.com>
Date: 星期三, 28 五月 2025 14:57:56 +0800
Subject: [PATCH] 密码验证加-

---
 src/main/java/com/whyc/webSocket/HomeAdminSocket.java |  110 ++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 81 insertions(+), 29 deletions(-)

diff --git a/src/main/java/com/whyc/webSocket/HomeAdminSocket.java b/src/main/java/com/whyc/webSocket/HomeAdminSocket.java
index 05e8964..9dc0028 100644
--- a/src/main/java/com/whyc/webSocket/HomeAdminSocket.java
+++ b/src/main/java/com/whyc/webSocket/HomeAdminSocket.java
@@ -4,13 +4,16 @@
 import com.whyc.dto.Response;
 import com.whyc.factory.ThreadPoolExecutorFactory;
 import com.whyc.pojo.Battinf;
+import com.whyc.pojo.PowerInf;
+import com.whyc.pojo.StationInf;
+import com.whyc.pojo.UserInf;
 import com.whyc.service.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import javax.servlet.http.HttpSession;
 import javax.websocket.*;
 import javax.websocket.server.ServerEndpoint;
-import java.io.IOException;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -20,7 +23,7 @@
 import java.util.stream.Collectors;
 
 /**
- * 绠$悊鍛橀椤�
+ * 鎬婚椤碉紙棰嗗灞傦級
  */
 @Component
 @ServerEndpoint(value = "/homeAdmin", encoders = WebSocketEncoder.class, configurator = WebSocketConfig.class)
@@ -29,15 +32,26 @@
 
     private Thread thread;
 
+    private volatile boolean runFlag = true;
+
+    private volatile Map<String, Thread> threadMap = new HashMap<>();
+
+    private volatile Map<Long, Boolean> threadFlagMap = new HashMap<>();
+
+    private static final int executeTime = 5000;
+
     private static BattInfService battInfService;
+
+    private static StationInfService stationInfService;
 
     private static BadBattMonService badBattMonService;
 
-    private static Fbs9100StateService fbs9100StateService;
 
     private static PowerInfService powerInfService;
 
     private static BatttestdataInfService batttestdataInfService;
+
+    private HttpSession httpSession;
 
     @Autowired
     public void setBattInfService(BattInfService battInfService) {
@@ -50,11 +64,6 @@
     }
 
     @Autowired
-    public void setFbs9100StateService(Fbs9100StateService fbs9100StateService) {
-        HomeAdminSocket.fbs9100StateService = fbs9100StateService;
-    }
-
-    @Autowired
     public void setPowerInfService(PowerInfService powerInfService) {
         HomeAdminSocket.powerInfService = powerInfService;
     }
@@ -64,13 +73,22 @@
         HomeAdminSocket.batttestdataInfService = batttestdataInfService;
     }
 
+    @Autowired
+    public void setStationInfService(StationInfService stationInfService) {
+        HomeAdminSocket.stationInfService = stationInfService;
+    }
+
     @OnOpen
     public void onOpen(Session session, EndpointConfig config) {
         this.session = session;
-         /*HttpSession httpSession = (HttpSession) config.getUserProperties().get("httpSession");
-        UserInf user = (UserInf) httpSession.getAttribute("user");
-        final int userId = user.getUId().intValue();*/
-        final int userId = 1001;
+        this.httpSession = (HttpSession) config.getUserProperties().get("httpSession");
+    }
+
+    @OnMessage
+    public void onMessage(Session session, String message) {
+        UserInf user = (UserInf) this.httpSession.getAttribute("user");
+        final int userId = user.getUId().intValue();
+        //final int userId = 1087;
         Thread thread = new Thread() {
             @Override
             public void run() {
@@ -80,9 +98,8 @@
                         ThreadPoolExecutor poolExecutor = ThreadPoolExecutorFactory.getPoolExecutor();
                         CountDownLatch latch = new CountDownLatch(7);
                         poolExecutor.execute(() -> {
-                            //钃勭數姹犱紭鍔e垎鏋�
-                            Response resQualityAnalysis = badBattMonService.getQualityAnalysis(userId);
-                            res.put("resQualityAnalysis", resQualityAnalysis);
+                            Response resGroupAnalysis = batttestdataInfService.getGroupAnalysis3(userId);
+                            res.put("resGroupAnalysis", resGroupAnalysis);
                             latch.countDown();
                         });
                         poolExecutor.execute(() -> {
@@ -93,8 +110,30 @@
                         });
                         poolExecutor.execute(() -> {
                             //绔欑偣淇℃伅
-                            Response resStateAnalysis = fbs9100StateService.getSateAnalysis(userId);
-                            res.put("resStateAnalysis", resStateAnalysis);
+                            Response resStationAnalysis = new Response();
+                            try {
+                                //List<Battinf> battinfList = battInfService.getSateAnalysis(userId);
+                                List<StationInf> sinfList = stationInfService.getSateAnalysis(userId);
+                                Map<Integer, List<StationInf>> nodeStationMap = sinfList.stream().collect(Collectors.groupingBy(StationInf::getNodeStation));
+                                Map<String, List<StationInf>> stationTypeMap = sinfList.stream().collect(Collectors.groupingBy(StationInf::getStationType));
+                                Map<Integer, Object> nodeMap = new HashMap<>();
+                                Map<String, Object> stationMap = new HashMap<>();
+                                Map<String, Object> battGroupInfoMap = new HashMap<>();
+                                int battSize = sinfList.size();
+                                for (Integer node : nodeStationMap.keySet()) {
+                                    nodeMap.put(node, nodeStationMap.get(node).size());
+                                }
+                                for (String station : stationTypeMap.keySet()) {
+                                    stationMap.put(station, stationTypeMap.get(station).size());
+                                }
+                                battGroupInfoMap.put("node", nodeMap);
+                                battGroupInfoMap.put("stationType", stationMap);
+                                battGroupInfoMap.put("totalNum", battSize);
+                                resStationAnalysis.setII(1, true, battGroupInfoMap, null);
+                            } catch (Exception e) {
+                                resStationAnalysis.set(1, false, "鍙戠敓寮傚父:" + e.getCause());
+                            }
+                            res.put("resStationAnalysis", resStationAnalysis);
                             latch.countDown();
                         });
                         poolExecutor.execute(() -> {
@@ -132,19 +171,30 @@
                         });
                         poolExecutor.execute(() -> {
                             //鐢垫簮淇℃伅
-                            Response<Map> resPwrdevInfAnalysis = powerInfService.getPwrdevInfAnalysis(userId);
+                            Response resPwrdevInfAnalysis = new Response();
+                            try {
+                                List<PowerInf> powerInfList = powerInfService.getPwrdevInfAnalysis(userId);
+                                Map<String, List<PowerInf>> powerProducerMap = powerInfList.stream().collect(Collectors.groupingBy(PowerInf::getPowerProducer));
+                                Map<String, Object> AnalysisMap = new HashMap<>();
+                                for (String producer : powerProducerMap.keySet()) {
+                                    AnalysisMap.put(producer, powerProducerMap.get(producer).size());
+                                }
+                                resPwrdevInfAnalysis.setII(1, true, AnalysisMap, "鐢垫簮淇℃伅");
+                            } catch (Exception e) {
+                                resPwrdevInfAnalysis.set(1, false, "鍙戠敓寮傚父:" + e.getCause());
+                            }
                             res.put("resPwrdevInfAnalysis", resPwrdevInfAnalysis);
                             latch.countDown();
                         });
                         poolExecutor.execute(() -> {
                             //娴嬭瘯淇℃伅
-                            Response<Map> resTestdataInfAnalysis = batttestdataInfService.getTestdataInfAnalysis(userId);
+                            Response resTestdataInfAnalysis = batttestdataInfService.getTestdataInfAnalysis(userId);
                             res.put("resTestdataInfAnalysis", resTestdataInfAnalysis);
                             latch.countDown();
                         });
                         latch.await(10, TimeUnit.MINUTES);
                         session.getBasicRemote().sendObject(new Response().set(1, res));
-                        sleep(4000);
+                        sleep(5000);
                     }
                 } catch (Exception e) {
                     this.interrupt();
@@ -156,20 +206,22 @@
     }
 
     @OnClose
-    public void onClose(CloseReason closeReason) throws IOException {
-        //System.err.println("closeReason = " + closeReason);
-        if (session.isOpen()) {
-            session.close();
+    public void onClose(CloseReason closeReason) {
+        System.err.println("closeReason = " + closeReason);
+        runFlag = false;
+        if (thread != null && thread.isAlive()) {
+            thread.interrupt();
         }
+        threadMap.remove(session.getId());
     }
 
     @OnError
-    public void onError(Throwable error) throws IOException {
-        //error.printStackTrace();
-        thread.isInterrupted();
-        if (session.isOpen()) {
-            session.close();
+    public void onError(Throwable error) {
+        error.printStackTrace();
+        if (thread != null && thread.isAlive()) {
+            thread.interrupt();
         }
+        threadMap.remove(session.getId());
     }
 
 }

--
Gitblit v1.9.1