whyclxw
2025-05-28 e16302f9d475c7cc4dd18c5abf1a23cb5502e362
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
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();
        }
    }
}