package com.whyc.webSocket;
|
|
import cn.hutool.db.DaoTemplate;
|
import com.whyc.config.WebSocketConfig;
|
import com.whyc.dto.Response;
|
import com.whyc.pojo.NjHomeStation;
|
import com.whyc.service.BattRtstateService;
|
import com.whyc.service.Fbs9100StateService;
|
import com.whyc.service.NjHomeStationService;
|
import com.whyc.service.PwrdevAcdcdataService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
|
import javax.websocket.*;
|
import javax.websocket.server.ServerEndpoint;
|
import java.io.IOException;
|
import java.util.Date;
|
import java.util.HashMap;
|
import java.util.Map;
|
|
/**
|
* 首页
|
*/
|
@Component
|
@ServerEndpoint(value = "/njhomePage",encoders = WebSocketEncoder.class,configurator = WebSocketConfig.class)
|
public class NjHomePageSocket {
|
private Session session;
|
|
private Thread thread;
|
|
private static PwrdevAcdcdataService pwrdevAcdcservice;//PwrdevAcdc
|
|
private static Fbs9100StateService f9100service; //fbs9100
|
|
private static BattRtstateService rtstateservice; //组端
|
|
private static NjHomeStationService njHomeStationService; //南京测控配置机房信息
|
|
@Autowired
|
public void setRsAlarmService(PwrdevAcdcdataService pwrdevAcdcservice) {
|
NjHomePageSocket.pwrdevAcdcservice = pwrdevAcdcservice;
|
}
|
@Autowired
|
public void setService(BattRtstateService rtstateservice) {
|
NjHomePageSocket.rtstateservice = rtstateservice;
|
}
|
|
@Autowired
|
public void setService(Fbs9100StateService f9100service) {
|
NjHomePageSocket.f9100service = f9100service;
|
}
|
|
@Autowired
|
public void setService(NjHomeStationService njHomeStationService) {
|
NjHomePageSocket.njHomeStationService = njHomeStationService;
|
}
|
|
@OnOpen
|
public void onOpen(Session session, EndpointConfig config){
|
this.session = session;
|
Thread thread = new Thread() {
|
@Override
|
public void run() {
|
try{
|
while (!currentThread().isInterrupted()) {
|
Map<String,Object> res=new HashMap<>();
|
//获取配置表中电池组信息
|
NjHomeStation njHomeStation=njHomeStationService.getStation();
|
if(njHomeStation==null){
|
session.getBasicRemote().sendObject(new Response<>().set(1,false,"查询完成"));
|
}else{
|
//获取配电柜(ac,dc,acdc)的实时数据
|
Response pwrdevInfoRes=pwrdevAcdcservice.getPowerInfoById(njHomeStation.getPowerDevId());
|
res.put("pwrdevInfo",pwrdevInfoRes);
|
//查询fbs9100信息
|
Response f9100stateRes = f9100service.serchContactorState(njHomeStation.getDevId());
|
res.put("f9100state", f9100stateRes);
|
//查询电池组端信息
|
Response rtstateRes = rtstateservice.serchByCondition(njHomeStation.getBattgroupId());
|
res.put("rtstate", rtstateRes);
|
//推送时间
|
res.put("LocalDate",new Date());
|
session.getBasicRemote().sendObject(new Response<>().setII(1,true,res,"查询完成"));
|
}
|
sleep(4000);
|
}
|
} catch (Exception e) {
|
this.interrupt();
|
}
|
}
|
};
|
thread.start();
|
this.thread = thread;
|
}
|
|
@OnClose
|
public void onClose(CloseReason closeReason) throws IOException {
|
System.err.println("closeReason = " + closeReason);
|
if(session.isOpen()){
|
session.close();
|
}
|
}
|
|
@OnError
|
public void onError(Throwable error) throws IOException {
|
error.printStackTrace();
|
thread.isInterrupted();
|
if(session.isOpen()){
|
session.close();
|
}
|
}
|
}
|