whyclxw
2025-06-10 a1d2d4dbf00ffc778003abefac9e643c6bb82059
src/main/java/com/whyc/webSocket/RealTimeSocket.java
@@ -2,6 +2,7 @@
import com.whyc.config.WebSocketConfig;
import com.whyc.constant.DevStateEnum;
import com.whyc.dto.Real.SticRealRtdataDto;
import com.whyc.dto.Real.TopDto;
import com.whyc.dto.RealTimeDto;
import com.whyc.dto.Response;
@@ -25,6 +26,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;
@@ -238,7 +240,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);
                    }
                }
@@ -462,13 +464,98 @@
            //电源对象(整流器使用情况)
            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 (BattRtdata rtdata:battRtdataList) {
            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());
            }
        }
        return dto;
    }
    @OnClose
    public void onClose(CloseReason closeReason){
        System.err.println("closeReason = " + closeReason);