| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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; |
| | | |
| | |
| | | |
| | | private static KgdyStateService kgdyStateService; |
| | | |
| | | private static Fbs9140TopologyStateService fbs9140TopologyStateService; |
| | | |
| | | private static Fbs5100InverterInfoService fbs5100InverterInfoService; |
| | | |
| | | private Session session; |
| | | |
| | | private HttpSession httpSession; |
| | | |
| | | @Autowired |
| | | public void setService(BattRtstateService rtstateservice) { |
| | |
| | | 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() { |
| | |
| | | Response res = new Response(); |
| | | switch (realTimePar.getPageType()) { |
| | | case "standard": |
| | | res = getStandard(realTimePar); |
| | | res = getStandard(realTimePar, lang); |
| | | break; |
| | | case "a059": |
| | | res = getA059(realTimePar); |
| | |
| | | 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 |
| | |
| | | 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数据 |
| | |
| | | //查询电池组端信息 |
| | | 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); |
| | |
| | | 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); |
| | | } |