lxw
2023-05-25 f3c27fb78447449a950ba73c5e72ceda64ad8a12
src/main/java/com/whyc/webSocket/RealTimeWebsocket.java
@@ -1,5 +1,6 @@
package com.whyc.webSocket;
import com.whyc.config.WebSocketConfig;
import com.whyc.dto.DeviceTypeDTO;
import com.whyc.dto.Response;
import com.whyc.dto.paramter.RealTimePar;
@@ -10,6 +11,7 @@
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.util.HashMap;
@@ -17,7 +19,7 @@
import java.util.Map;
@Component
@ServerEndpoint(value = "/RealTime",encoders = WebSocketEncoder.class)
@ServerEndpoint(value = "/RealTime", encoders = WebSocketEncoder.class, configurator = WebSocketConfig.class)
public class RealTimeWebsocket {
    private volatile Thread thread;
@@ -71,7 +73,13 @@
    private static KgdyStateService kgdyStateService;
    private static Fbs9140TopologyStateService fbs9140TopologyStateService;
    private static Fbs5100InverterInfoService fbs5100InverterInfoService;
    private Session session;
    private HttpSession httpSession;
    @Autowired
    public void setService(BattRtstateService rtstateservice) {
@@ -171,15 +179,28 @@
        RealTimeWebsocket.kgdyStateService = kgdyStateService;
    }
    @Autowired
    public void setFbs9140TopologyStateService(Fbs9140TopologyStateService fbs9140TopologyStateService) {
        RealTimeWebsocket.fbs9140TopologyStateService = fbs9140TopologyStateService;
    }
    @Autowired
    public void setFbs5100InverterInfoService(Fbs5100InverterInfoService fbs5100InverterInfoService) {
        RealTimeWebsocket.fbs5100InverterInfoService = fbs5100InverterInfoService;
    }
    @OnOpen
    public void onOpen(Session session) {
    public void onOpen(Session session, EndpointConfig config) {
        this.session = session;
        this.httpSession = (HttpSession) config.getUserProperties().get("httpSession");
    }
    @OnMessage
    public void onMessage(Session session, String message) {
        RealTimePar realTimePar = ActionUtil.getGson().fromJson(message, RealTimePar.class);
        realTimePar.setDevType(realTimePar.getDevId() / 100000);
        String lang = (String) this.httpSession.getAttribute("lang");
        thread = new Thread("Thread_RealTime") {
            @Override
            public void run() {
@@ -190,7 +211,7 @@
                        Response res = new Response();
                        switch (realTimePar.getPageType()) {
                            case "standard":
                                res = getStandard(realTimePar);
                                res = getStandard(realTimePar, lang);
                                break;
                            case "a059":
                                res = getA059(realTimePar);
@@ -227,6 +248,15 @@
                                break;
                            case "kgdy":
                                res = getKgdy(realTimePar);
                                break;
                            case "paralle":
                                res = getParalle(realTimePar, lang);
                                break;
                            case "paralle9149":
                                res = getParalle9149(realTimePar, lang);
                                break;
                            case "inverter5100":
                                res = getInverter5100(realTimePar);
                                break;
                        }
                        //实时显示调整,增加电池数量,标称单体电压,铅酸还是锂电,放置于返回结果的data2
@@ -372,8 +402,74 @@
        return new Response().set(1, res);
    }
    //并联电源的实时页面信息
    public Response getParalle(RealTimePar realTimePar, String lang) {
        Map<String, Response> res = new HashMap<>();
        //查询fbs9100信息
        Response f9100stateRes = f9100service.serchContactorState(realTimePar.getDevId());
        res.put("f9100state", f9100stateRes);
        //查询电池组端信息
        Response rtstateRes = rtstateservice.serchByCondition(realTimePar.getBattGroupId());
        res.put("rtstate", rtstateRes);
        //查询电池组单体信息
        Response rtdataRes = rtdataservice.serchByCondition(realTimePar.getBattGroupId());
        res.put("rtdata", rtdataRes);
        //查询9140/9141信息
        Response pologystateRes = fbs9140TopologyStateService.serchByCondition(realTimePar.getDevId());
        res.put("pologystateRes", pologystateRes);
        //电池告警
        Response rtalarmRes = rtalarmService.getInfo(realTimePar.getBattGroupId());
        res.put("rtalarm", rtalarmRes);
        //组端告警
        Response rsalarmRes = rsalarmService.getInfo(realTimePar.getBattGroupId());
        res.put("rsalarm", rsalarmRes);
        //最后一次核容放电数据
        Response tinfRes = batttestDataInfService.searchBattLastHrDataById(realTimePar.getBattGroupId(), realTimePar.getDevId(), lang);
        res.put("tinfdata", tinfRes);
        return new Response().set(1, res);
    }
    //并联电源的实时页面信息
    public Response getParalle9149(RealTimePar realTimePar, String lang) {
        Map<String, Response> res = new HashMap<>();
        //查询fbs9100信息
        Response f9100stateRes = f9100service.serchContactorState(realTimePar.getDevId());
        res.put("f9100state", f9100stateRes);
        //查询电池组端信息
        Response rtstateRes = rtstateservice.serchByCondition(realTimePar.getBattGroupId());
        res.put("rtstate", rtstateRes);
        //查询电池组单体信息
        Response rtdataRes = rtdataservice.serchByCondition(realTimePar.getBattGroupId());
        res.put("rtdata", rtdataRes);
        //查询9149信息
        Response pologystateRes = fbs9140TopologyStateService.serchByCondition(realTimePar.getDevId());
        res.put("pologystateRes", pologystateRes);
        //电池告警
        Response rtalarmRes = rtalarmService.getInfo(realTimePar.getBattGroupId());
        res.put("rtalarm", rtalarmRes);
        //组端告警
        Response rsalarmRes = rsalarmService.getInfo(realTimePar.getBattGroupId());
        res.put("rsalarm", rsalarmRes);
        //最后一次核容放电数据
        Response tinfRes = batttestDataInfService.searchBattLastHrDataById(realTimePar.getBattGroupId(), realTimePar.getDevId(), lang);
        res.put("tinfdata", tinfRes);
        return new Response().set(1, res);
    }
    //配网5100
    public Response getInverter5100(RealTimePar realTimePar) {
        Map<String, Response> res = new HashMap<>();
        //查询fbs9100信息
        Response f9100stateRes = f9100service.serchContactorState(realTimePar.getDevId());
        res.put("f9100state", f9100stateRes);
        //查询tb_fbs5100_inverter_info信息
        Response f5100stateRes = fbs5100InverterInfoService.serchByDevId(realTimePar.getDevId());
        res.put("f5100stateRes", f5100stateRes);
        return new Response().set(1, res);
    }
    //标准的实时页面信息
    public Response getStandard(RealTimePar realTimePar) {
    public Response getStandard(RealTimePar realTimePar, String lang) {
        Map<String, Response> res = new HashMap<>();
        if (realTimePar.getDevType() == DeviceTypeDTO.DEVICELD94019) {//ld-9
            //ld-9数据
@@ -394,7 +490,7 @@
        //查询电池组端信息
        Response rtstateRes = rtstateservice.serchByCondition(realTimePar.getBattGroupId());
        res.put("rtstate", rtstateRes);
        if (realTimePar.getDevType() == DeviceTypeDTO.DEVICE9140) {
        if (realTimePar.getDevType() == DeviceTypeDTO.DEVICE9140 || realTimePar.getDevType() == DeviceTypeDTO.DEVICE9141) {
            //9140设备要将2组电池的组端信息都给他
            Response rtstate9140Res = rtstateservice.serch9140Info(realTimePar.getDevId());
            res.put("rtstate9140Res", rtstate9140Res);
@@ -419,7 +515,7 @@
            res.put("li9130", li9130Res);
        }
        //最后一次核容放电数据
        Response tinfRes = batttestDataInfService.searchBattLastHrDataById(realTimePar.getBattGroupId(), realTimePar.getDevId());
        Response tinfRes = batttestDataInfService.searchBattLastHrDataById(realTimePar.getBattGroupId(), realTimePar.getDevId(), lang);
        res.put("tinfdata", tinfRes);
        return new Response().set(1, res);
    }