From 35030ce30b625cec394adee29b89d0b07352763a Mon Sep 17 00:00:00 2001
From: whyclxw <810412026@qq.com>
Date: 星期六, 21 六月 2025 15:30:26 +0800
Subject: [PATCH] 实时界面电源状态修改

---
 src/main/java/com/whyc/webSocket/RealTimeSocket.java |  290 +++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 257 insertions(+), 33 deletions(-)

diff --git a/src/main/java/com/whyc/webSocket/RealTimeSocket.java b/src/main/java/com/whyc/webSocket/RealTimeSocket.java
index b899802..8c883ef 100644
--- a/src/main/java/com/whyc/webSocket/RealTimeSocket.java
+++ b/src/main/java/com/whyc/webSocket/RealTimeSocket.java
@@ -1,10 +1,16 @@
 package com.whyc.webSocket;
 
 import com.whyc.config.WebSocketConfig;
+import com.whyc.constant.BattStateEnum;
+import com.whyc.constant.DevStateEnum;
+import com.whyc.constant.FailReasonEnum;
+import com.whyc.constant.StopReasonEnum;
+import com.whyc.dto.Real.SticRealRtdataDto;
 import com.whyc.dto.Real.TopDto;
 import com.whyc.dto.RealTimeDto;
 import com.whyc.dto.Response;
 import com.whyc.factory.BattCapFactory;
+import com.whyc.pojo.db_batt_testdata.BattresdataInf;
 import com.whyc.pojo.db_batt_testdata.BatttestdataInf;
 import com.whyc.pojo.db_ram_db.BattRtdata;
 import com.whyc.pojo.db_ram_db.BattRtstate;
@@ -23,6 +29,7 @@
 import javax.servlet.http.HttpSession;
 import javax.websocket.*;
 import javax.websocket.server.ServerEndpoint;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -61,6 +68,9 @@
 
     //鍗曚綋淇℃伅
     private static BattRtdataService rtdataService;
+
+    //鍐呴樆娴嬭瘯淇℃伅
+    private static BattresdataInfService battresdataInfService;
 
 
     private volatile boolean runFlag = true;
@@ -124,6 +134,11 @@
     @Autowired
     public void setBattRtdataService(BattRtdataService rtdataService) {
         RealTimeSocket.rtdataService = rtdataService;
+    }
+
+    @Autowired
+    public void setBattresdataInfService(BattresdataInfService battresdataInfService) {
+        RealTimeSocket.battresdataInfService = battresdataInfService;
     }
 
 
@@ -190,6 +205,7 @@
             BattRtstate battRtstate = battRtstateService.getBattRealInfo(realDto.getBattgroupId());
             if (battRtstate != null) {
                 topDto.setBattState(battRtstate.getBattState());
+                topDto.setBattStateName(BattStateEnum.getValue(battRtstate.getBattState()));
                 topDto.setVbusVol(battRtstate.getVbusVol());
                 topDto.setOnlineVol(battRtstate.getOnlineVol());
                 topDto.setRecordtime(ThreadLocalUtil.format(battRtstate.getRecDatetime(),1));
@@ -218,7 +234,8 @@
             DeviceState deviceState = deviceStateService.getDevRealInfo(realDto.getDevId());
             if (deviceState != null) {
                 topDto.setDevState(deviceState.getDevWorkstate());
-                if (deviceState.getDevWorkstate() == 1) {//鏍稿鏀剧數
+                topDto.setDevStateName(DevStateEnum.getValue(deviceState.getDevWorkstate()));
+                if (deviceState.getDevWorkstate() == DevStateEnum.DEVSTATE_2.getStateId()) {//鏍稿鏀剧數
                     topDto.setCaptestGroupvol(deviceState.getDevCaptestGroupvol());
                     topDto.setCaptestCurr(deviceState.getDevCaptestCurr());
                     topDto.setCaptestTimelong(deviceState.getDevCaptestTimelong());
@@ -228,7 +245,7 @@
                     topDto.setRestCap(restCap);
                     //瀹炴椂缁勭鐢垫祦锛屽墿浣欏閲忥紝鏍囩О瀹归噺
                     if(battRtstate!=null){
-                        Float restTime= BattCapFactory.getTheoryTime(battRtstate.getGroupCurr(), restCap, binf.getMoncapstd());
+                        Float restTime= BattCapFactory.getTheoryTime(battRtstate.getLoadCurr(), restCap, binf.getMoncapstd());
                         topDto.setRestTime(restTime);
                     }
                 }
@@ -244,12 +261,19 @@
                 topDto.setPwrALmNum(pwrALmNum);
 
                 //瀹炴椂鑾峰彇鐢垫簮淇℃伅(鏄惁瀛樺湪鐢垫簮鍛婅淇℃伅)
-                //PwrdevAcdcdata pwrdevAcdcdata = pwrdevAcdcdataService.getPwrRealInfo(realDto.getPowerId());
-                topDto.setPwrState((pwrALmNum > 0 ? 1 : 0));
-
+                PwrdevAcdcdata pwrdevAcdcdata = pwrdevAcdcdataService.getPwrRealInfo(realDto.getPowerId());
+                topDto.setPwrState(pwrdevAcdcdata.getIsJunCharge());
+                //鏌ョ湅褰撳墠鏄惁瀛樺湪浜ゆ祦鍋滅數鍛婅锛坕s_jun_charge   鐢垫簮鏄惁鍧囧厖[1-鍧囧厖 0-娴厖],鑻ュ綋鍓嶇數婧愬瓨鍦ㄤ氦娴佸仠鐢靛憡璀﹀垯鏄剧ず鍋滅數鍏朵粬鎸夌収鐘舵�佸睍绀恒�傦級
+                int stopFalg=pwrdevAlarmService.judge3100014(realDto.getPowerId());
+                if(stopFalg==1){
+                    topDto.setPwrStateName("鍋滅數");
+                }else{
+                    topDto.setPwrStateName((pwrdevAcdcdata.getIsJunCharge()==1 ? "鍧囧厖" : "娴厖"));
+                }
                 Integer allALmNum = battALmNum + devALmNum + pwrALmNum;
                 topDto.setAllALmNum(allALmNum);
                 topDto.setSystemState((allALmNum > 0 ? 1 : 0));
+                topDto.setSystemStateName((allALmNum > 0 ? "绯荤粺寮傚父" : "绯荤粺姝e父"));
             }
             return new Response().setII(1, true, topDto, "瀹炴椂椤甸潰澶撮儴鏁版嵁鎺ㄩ��");
         } catch (Exception e) {
@@ -276,61 +300,144 @@
     }
     //鑾峰彇绠$悊鐣岄潰淇℃伅
     private Response getManagePage(RealTimeDto realDto) {
-        return new Response().set(1);
+        Map<String, Object> map=new HashMap<>();
+        try {
+            StationInf sinf=stationInfService.getStationInfById(realDto.getStationId());
+            map.put("sinf",sinf);
+            PowerInf pinf=powerInfService.getPowerInfById(realDto.getPowerId());
+            map.put("pinf",pinf);
+            BattInf binf=battInfService.getBinfByBattgroupId(realDto.getBattgroupId());
+            map.put("binf",binf);
+            map.put("pageType",realDto.getPageType());
+            return new Response().setII(1,true,map,"绠$悊鐣岄潰淇℃伅鎺ㄩ��");
+        }catch (Exception e){
+            return new Response().set(1,false,"绠$悊鐣岄潰淇℃伅鎺ㄩ��");
+        }
     }
     //鑾峰彇鑷剤鑳藉姏鐣岄潰淇℃伅
     private Response getSelfPage(RealTimeDto realDto) {
-        return new Response().set(1);
+        Map<String, Object> map=new HashMap<>();
+        map.put("pageType",realDto.getPageType());
+        return new Response().setII(1,true,map,"鑷剤鑳藉姏鐣岄潰淇℃伅鎺ㄩ��");
     }
     //鑾峰彇3D鐣岄潰淇℃伅
     private Response get3DPage(RealTimeDto realDto) {
-        return new Response().set(1);
+        Map<String, Object> map=new HashMap<>();
+        map.put("pageType",realDto.getPageType());
+        return new Response().setII(1,true,map,"3D鐣岄潰淇℃伅淇℃伅鎺ㄩ��");
     }
     //鑾峰彇鍥剧墖鐣岄潰淇℃伅
     private Response getImgPage(RealTimeDto realDto) {
-        return new Response().set(1);
+        Map<String, Object> map=new HashMap<>();
+        map.put("pageType",realDto.getPageType());
+        return new Response().setII(1,true,map,"鍥剧墖鐣岄潰淇℃伅淇℃伅鎺ㄩ��");
     }
     //鑾峰彇娓╁害鐣岄潰淇℃伅
     private Response getTmpPage(RealTimeDto realDto) {
-        return new Response().set(1);
+        Map<String, Object> map=new HashMap<>();
+        Float maxData=0f;
+        Float minData=0f;
+        Float avgData=0f;
+        try {
+            //瀹炴椂鑾峰彇鍗曚綋淇℃伅
+            List<BattRtdata> rtdataList = rtdataService.getRtdataRealInfo(realDto.getBattgroupId());
+            if(rtdataList!=null&&rtdataList.size()>0){
+                for(int i=0;i<rtdataList.size();i++) {
+                    BattRtdata battRtdata=rtdataList.get(i);
+                    if(i==0){
+                        maxData=battRtdata.getMonTmp();
+                        minData=battRtdata.getMonTmp();
+                    }
+                    if (battRtdata.getMonTmp() >= maxData) {
+                        maxData = battRtdata.getMonTmp();
+                    }
+                    if (battRtdata.getMonTmp() <= minData) {
+                        minData = battRtdata.getMonTmp();
+                    }
+                    avgData += battRtdata.getMonTmp();
+                }
+                avgData=avgData/rtdataList.size();
+            }
+            map.put("rtdataList",rtdataList!=null?rtdataList:"");
+            map.put("maxData",maxData);
+            map.put("minData",minData);
+            map.put("avgData",avgData);
+            map.put("pageType",realDto.getPageType());
+            return new Response().setII(1,true,map,"娓╁害鐣岄潰淇℃伅鎺ㄩ��");
+        }catch (Exception e){
+            return new Response().set(1,false,"娓╁害鐣岄潰淇℃伅鎺ㄩ��");
+        }
     }
     //鑾峰彇鍐呴樆鐣岄潰淇℃伅
     private Response getResPage(RealTimeDto realDto) {
         Map<String, Object> map=new HashMap<>();
+        Float maxData=0f;
+        Float minData=0f;
+        Float avgData=0f;
         try {
             //瀹炴椂鑾峰彇鍗曚綋淇℃伅
             List<BattRtdata> rtdataList = rtdataService.getRtdataRealInfo(realDto.getBattgroupId());
-            map.put("rtdataList",rtdataList);
-            return new Response().setII(1,true,map,"鐢靛帇鐣岄潰淇℃伅鎺ㄩ��");
+            if(rtdataList!=null&&rtdataList.size()>0){
+                for(int i=0;i<rtdataList.size();i++) {
+                    BattRtdata battRtdata=rtdataList.get(i);
+                    if(i==0){
+                        maxData=battRtdata.getMonRes();
+                        minData=battRtdata.getMonRes();
+                    }
+                    if (battRtdata.getMonRes() >= maxData) {
+                        maxData = battRtdata.getMonRes();
+                    }
+                    if (battRtdata.getMonRes() <= minData) {
+                        minData = battRtdata.getMonRes();
+                    }
+                    avgData += battRtdata.getMonRes();
+                }
+                avgData=avgData/rtdataList.size();
+            }
+            map.put("rtdataList",rtdataList!=null?rtdataList:"");
+            map.put("maxData",maxData);
+            map.put("minData",minData);
+            map.put("avgData",avgData);
+            //涓婁竴娆″唴闃绘祴璇曟暟鎹�
+            BattresdataInf rinfData= battresdataInfService.getLastTestData(realDto.getBattgroupId());
+            map.put("rinfData",rinfData!=null?rinfData:"");
+            map.put("pageType",realDto.getPageType());
+            return new Response().setII(1,true,map,"鍐呴樆鐣岄潰淇℃伅鎺ㄩ��");
         }catch (Exception e){
-            return new Response().set(1,false,"鐢靛帇鐣岄潰淇℃伅鎺ㄩ��");
+            return new Response().set(1,false,"鍐呴樆鐣岄潰淇℃伅鎺ㄩ��");
         }
     }
     //鑾峰彇鐢靛帇鐣岄潰淇℃伅
     private Response getVolPage(RealTimeDto realDto) {
         Map<String, Object> map=new HashMap<>();
-        Float maxVol=0f;
-        Float minVol=0f;
-        Float avgVol=0f;
+        Float maxData=0f;
+        Float minData=0f;
+        Float avgData=0f;
         try {
             //瀹炴椂鑾峰彇鍗曚綋淇℃伅
             List<BattRtdata> rtdataList = rtdataService.getRtdataRealInfo(realDto.getBattgroupId());
             if(rtdataList!=null&&rtdataList.size()>0){
-                for(BattRtdata battRtdata:rtdataList) {
-                    if (battRtdata.getMonVol() > maxVol) {
-                        maxVol = battRtdata.getMonVol();
+                for(int i=0;i<rtdataList.size();i++) {
+                    BattRtdata battRtdata=rtdataList.get(i);
+                    if(i==0){
+                        maxData=battRtdata.getMonVol();
+                        minData=battRtdata.getMonVol();
                     }
-                    if (battRtdata.getMonVol() < minVol) {
-                        minVol = battRtdata.getMonVol();
+                    if (battRtdata.getMonVol() >= maxData) {
+                        maxData = battRtdata.getMonVol();
                     }
-                    avgVol += battRtdata.getMonVol();
+                    if (battRtdata.getMonVol() <= minData) {
+                        minData = battRtdata.getMonVol();
+                    }
+                    avgData += battRtdata.getMonVol();
                 }
-                avgVol=avgVol/rtdataList.size();
+                avgData=avgData/rtdataList.size();
             }
-            map.put("rtdataList",rtdataList);
-            map.put("maxVol",maxVol);
-            map.put("minVol",minVol);
-            map.put("avgVol",avgVol);
+            map.put("rtdataList",rtdataList!=null?rtdataList:"");
+            map.put("maxData",maxData);
+            map.put("minData",minData);
+            map.put("avgData",avgData);
+            map.put("pageType",realDto.getPageType());
             return new Response().setII(1,true,map,"鐢靛帇鐣岄潰淇℃伅鎺ㄩ��");
         }catch (Exception e){
             return new Response().set(1,false,"鐢靛帇鐣岄潰淇℃伅鎺ㄩ��");
@@ -342,7 +449,11 @@
         try {
             //瀹炴椂鑾峰彇鐢垫簮淇℃伅
             PwrdevAcdcdata pwrdevAcdcdata = pwrdevAcdcdataService.getPwrRealInfo(realDto.getPowerId());
-            map.put("pwrdevAcdcdata",pwrdevAcdcdata);
+            map.put("pwrdevAcdcdata",pwrdevAcdcdata!=null?pwrdevAcdcdata:"");
+            //鐢垫簮瀵硅薄(鏁存祦鍣ㄤ娇鐢ㄦ儏鍐�)
+            PowerInf powerInf = powerInfService.getPowerInfById(realDto.getPowerId());
+            map.put("powerInf",powerInf!=null?powerInf:"");
+            map.put("pageType",realDto.getPageType());
             return new Response().setII(1,true,map,"鐢垫簮鐣岄潰淇℃伅鎺ㄩ��");
         }catch (Exception e){
             return new Response().set(1,false,"鐢垫簮鐣岄潰淇℃伅鎺ㄩ��");
@@ -351,26 +462,139 @@
     //鑾峰彇绯荤粺姒傝堪鐣岄潰淇℃伅
     private Response getSystemPage(RealTimeDto realDto) {
         Map<String, Object> map=new HashMap<>();
+        map.put("pageType",realDto.getPageType());
         try {
             //瀹炴椂鑾峰彇鐢垫睜缁勪俊鎭�
             BattRtstate battRtstate = battRtstateService.getBattRealInfo(realDto.getBattgroupId());
-            map.put("battRtstate",battRtstate);
+            if(battRtstate!=null){
+                battRtstate.setLastCaptestStopTypeReason(StopReasonEnum.getValue(battRtstate.getLastCaptestStopType()));
+                battRtstate.setControlFailTypeReason(FailReasonEnum.getValue(battRtstate.getControlFailType()));
+            }
+            map.put("battRtstate",battRtstate!=null?battRtstate:"");
             //瀹炴椂鑾峰彇璁惧淇℃伅
             DeviceState deviceState = deviceStateService.getDevRealInfo(realDto.getDevId());
-            map.put("deviceState",deviceState);
+            map.put("deviceState",deviceState!=null?deviceState:"");
             //鑾峰彇涓婁竴娆℃爣鍑嗘牳瀹逛俊鎭�
             BatttestdataInf tinfData= batttestdataInfService.getLastStandardTestData(realDto.getBattgroupId());
-            map.put("tinfData",tinfData);
+            map.put("tinfData",tinfData!=null?tinfData:"");
             //鑾峰彇杩戝崐灏忔椂鐢垫簮鏁版嵁锛屾暣娴佸櫒鏁版嵁锛屾牳瀹硅澶囨暟鎹紙鎺ㄩ�佸疄鏃讹紝鎺ュ彛鏌ヨ鏈�杩戝崐灏忔椂鏁版嵁锛�
             PwrdevAcdcdata pwrdevAcdcdata = pwrdevAcdcdataService.getPwrRealInfo(realDto.getPowerId());
-            map.put("pwrdevAcdcdata",pwrdevAcdcdata);
+            map.put("pwrdevAcdcdata",pwrdevAcdcdata!=null?pwrdevAcdcdata:"");
+            //鐢垫簮瀵硅薄(鏁存祦鍣ㄤ娇鐢ㄦ儏鍐�)
+            PowerInf powerInf = powerInfService.getPowerInfById(realDto.getPowerId());
+            map.put("powerInf",powerInf!=null?powerInf:"");
+            //鑾峰彇鐢垫睜缁勭殑钃勭數姹犱俊鎭�
+            List<BattRtdata> battRtdataList = rtdataService.getRtdataRealInfo(realDto.getBattgroupId());
+            SticRealRtdataDto dto=setMaxMinData(battRtdataList);
+            map.put("sticRtdata",dto);
             return new Response().setII(1,true,map,"绯荤粺姒傝堪鎺ㄩ��");
         }catch (Exception e) {
             e.printStackTrace();
         }
         return new Response().set(1,false,"绯荤粺姒傝堪鎺ㄩ��");
     }
-
+    //璁$畻闆嗗悎涓崟浣撶數鍘嬶紝鍐呴樆锛屾俯搴︼紝瀹归噺鐨勬渶澶ф渶灏忓��
+    public SticRealRtdataDto setMaxMinData(List<BattRtdata> battRtdataList){
+        SticRealRtdataDto dto=new SticRealRtdataDto();
+        Float maxCap = 0.0f;
+        Float minCap = 0.0f;
+        Float maxVol = 0.0f;
+        Float minVol = 0.0f;
+        Float maxTmp = 0.0f;
+        Float minTmp = 0.0f;
+        Float maxRes = 0.0f;
+        Float minRes = 0.0f;
+        List<Integer> maxCapNumList = new ArrayList<>();
+        List<Integer> minCapNumList = new ArrayList<>();
+        List<Integer> maxVolNumList = new ArrayList<>();
+        List<Integer> minVolNumList = new ArrayList<>();
+        List<Integer> maxTmpNumList = new ArrayList<>();
+        List<Integer> minTmpNumList = new ArrayList<>();
+        List<Integer> maxResNumList = new ArrayList<>();
+        List<Integer> minResNumList = new ArrayList<>();
+          //璁$畻闆嗗悎涓崟浣撶數鍘嬶紝鍐呴樆锛屾俯搴︼紝瀹归噺鐨勬渶澶ф渶灏忓��
+        for (int i=0;i<battRtdataList.size();i++) {
+            BattRtdata rtdata=battRtdataList.get(i);
+            if(i==0){
+                //璧嬪�煎垵濮嬪��
+                maxVol = rtdata.getMonVol();
+                minVol = rtdata.getMonVol();
+                maxTmp = rtdata.getMonTmp();
+                minTmp = rtdata.getMonTmp();
+                maxRes = rtdata.getMonRes();
+                minRes = rtdata.getMonRes();
+                maxCap = rtdata.getMonCap();
+                minCap = rtdata.getMonCap();
+            }
+            if(rtdata.getMonVol()>=maxVol){
+                maxVol = rtdata.getMonVol();
+            }
+            if(rtdata.getMonVol()<=minVol){
+                minVol = rtdata.getMonVol();
+            }
+            if(rtdata.getMonTmp()>=maxTmp){
+                maxTmp = rtdata.getMonTmp();
+            }
+            if(rtdata.getMonTmp()<=minTmp){
+                minTmp = rtdata.getMonTmp();
+            }
+            if(rtdata.getMonRes()>=maxRes){
+                maxRes = rtdata.getMonRes();
+            }
+            if(rtdata.getMonRes()<=minRes){
+                minRes = rtdata.getMonRes();
+            }
+            if(rtdata.getMonCap()>=maxCap){
+                maxCap = rtdata.getMonCap();
+            }
+            if(rtdata.getMonCap()<=minCap){
+                minCap = rtdata.getMonCap();
+            }
+        }
+        dto.setMaxCap(maxCap);
+        dto.setMinCap(minCap);
+        dto.setMaxVol(maxVol);
+        dto.setMinVol(minVol);
+        dto.setMaxTmp(maxTmp);
+        dto.setMinTmp(minTmp);
+        dto.setMaxRes(maxRes);
+        dto.setMinRes(minRes);
+        for (BattRtdata rtdata:battRtdataList) {
+            if(rtdata.getMonVol()==maxVol){
+                maxVolNumList.add(rtdata.getMonNum());
+            }
+            if(rtdata.getMonVol()==minVol){
+                minVolNumList.add(rtdata.getMonNum());
+            }
+            if(rtdata.getMonTmp()==maxTmp){
+                maxTmpNumList.add(rtdata.getMonNum());
+            }
+            if(rtdata.getMonTmp()==minTmp){
+                minTmpNumList.add(rtdata.getMonNum());
+            }
+            if(rtdata.getMonRes()==maxRes){
+                maxResNumList.add(rtdata.getMonNum());
+            }
+            if(rtdata.getMonRes()==minRes){
+                minResNumList.add(rtdata.getMonNum());
+            }
+            if(rtdata.getMonCap()==maxCap){
+                maxCapNumList.add(rtdata.getMonNum());
+            }
+            if(rtdata.getMonCap()==minCap){
+                minCapNumList.add(rtdata.getMonNum());
+            }
+        }
+        dto.setMaxCapNumList(maxCapNumList);
+        dto.setMinCapNumList(minCapNumList);
+        dto.setMaxVolNumList(maxVolNumList);
+        dto.setMinVolNumList(minVolNumList);
+        dto.setMaxTmpNumList(maxTmpNumList);
+        dto.setMinTmpNumList(minTmpNumList);
+        dto.setMaxResNumList(maxResNumList);
+        dto.setMinResNumList(minResNumList);
+        return dto;
+    }
     @OnClose
     public void onClose(CloseReason closeReason){
         System.err.println("closeReason = " + closeReason);

--
Gitblit v1.9.1