whycxzp
2021-10-09 b76122027a0c3e048c1404dcb5765f4279354437
新增电源告警WebSocket
1个文件已修改
1个文件已添加
200 ■■■■■ 已修改文件
src/main/java/com/whyc/service/BatteryDataService.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/websocket/PowerAlarmWebSocket.java 194 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/BatteryDataService.java
@@ -59,14 +59,14 @@
        for (int i = 0; i < enduranceList.size(); i++) {
            //每一个具体的续航进行分组
            if(enduranceList.get(i).getEnduranceActualTime()<times.get(0)){
            if(enduranceList.get(i).getEnduranceActualTime()<times.get(0)*60){
                map.put("续航"+times.get(0)+"小时内",Optional.ofNullable(map.get("续航"+times.get(0)+"小时内")).orElse(0)+1);
            }
            else if(enduranceList.get(i).getEnduranceActualTime()>times.get(times.size()-1)){
            else if(enduranceList.get(i).getEnduranceActualTime()>times.get(times.size()-1)*60){
                map.put("续航"+times.get(times.size()-1)+"小时以上",Optional.ofNullable(map.get("续航"+times.get(times.size()-1)+"小时以上")).orElse(0)+1);
            }else {
                for (int j = 0; j < times.size(); j++) {
                    if (enduranceList.get(i).getEnduranceActualTime() <= times.get(j)) {
                    if (enduranceList.get(i).getEnduranceActualTime() <= times.get(j)*60) {
                        map.put("续航" + times.get(j - 1) + "小时到" + times.get(j) + "小时", Optional.ofNullable(map.get("续航" + times.get(j - 1) + "小时到" + times.get(j) + "小时")).orElse(0) + 1);
                        break;
                    }
src/main/java/com/whyc/websocket/PowerAlarmWebSocket.java
New file
@@ -0,0 +1,194 @@
package com.whyc.websocket;
import com.whyc.service.PowerAlarmService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.websocket.*;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
@ServerEndpoint(value = "/powerAlarm/{method}/{userId}",encoders = WebSocketEncoder.class)
@Component
@Slf4j
public class PowerAlarmWebSocket {
    private Session session;
    private static PowerAlarmService service;
    private volatile Thread thread;
    private static final int executeTime = 4000;
    @Autowired
    public void setService(PowerAlarmService service) {
        PowerAlarmWebSocket.service = service;
    }
    @OnOpen
    public void onOpen(Session session, @PathParam("method") String method,@PathParam("userId")Integer userId){
        switch (method){
            case "acInput":{
                if(session!=null) {
                    thread = new Thread("Thread_powerAlarm") {
                        public void run() {
                            while (!thread.isInterrupted()) {
                                try {
                                    if (session.isOpen()) {
                                        session.getBasicRemote().sendObject(service.getACInputAnalysis(userId));
                                    }
                                    sleep(executeTime);
                                } catch (IOException | InterruptedException | EncodeException e) {
                                    interrupt();
                                }
                            }
                        }
                    };
                    thread.start();
                }
            }
            break;
            case "error":{
                if(session!=null) {
                    thread = new Thread("Thread_powerAlarm") {
                        public void run() {
                            while (!thread.isInterrupted()) {
                                try {
                                    if (session.isOpen()) {
                                        session.getBasicRemote().sendObject(service.getErrorAnalysis(userId));
                                    }
                                    sleep(executeTime);
                                } catch (IOException | InterruptedException | EncodeException e) {
                                    interrupt();
                                }
                            }
                        }
                    };
                    thread.start();
                }
            }
            break;
            case "acABC":{
                if(session!=null) {
                    thread = new Thread("Thread_powerAlarm") {
                        public void run() {
                            while (!thread.isInterrupted()) {
                                try {
                                    if (session.isOpen()) {
                                        session.getBasicRemote().sendObject(service.getAcABCAnalysis(userId));
                                    }
                                    sleep(executeTime);
                                } catch (IOException | InterruptedException | EncodeException e) {
                                    interrupt();
                                }
                            }
                        }
                    };
                    thread.start();
                }
            }
            break;
            case "rectifier":{
                if(session!=null) {
                    thread = new Thread("Thread_powerAlarm") {
                        public void run() {
                            while (!thread.isInterrupted()) {
                                try {
                                    if (session.isOpen()) {
                                        session.getBasicRemote().sendObject(service.getRectifierAnalysis(userId));
                                    }
                                    sleep(executeTime);
                                } catch (IOException | InterruptedException | EncodeException e) {
                                    interrupt();
                                }
                            }
                        }
                    };
                    thread.start();
                }
            }
            break;
            case "status":{
                if(session!=null) {
                    thread = new Thread("Thread_powerAlarm") {
                        public void run() {
                            while (!thread.isInterrupted()) {
                                try {
                                    if (session.isOpen()) {
                                        session.getBasicRemote().sendObject(service.getStatus(userId));
                                    }
                                    sleep(executeTime);
                                } catch (IOException | InterruptedException | EncodeException e) {
                                    interrupt();
                                }
                            }
                        }
                    };
                    thread.start();
                }
            }
            break;
            case "batteryGroup":{
                if(session!=null) {
                    thread = new Thread("Thread_powerAlarm") {
                        public void run() {
                            while (!thread.isInterrupted()) {
                                try {
                                    if (session.isOpen()) {
                                        session.getBasicRemote().sendObject(service.getBatteryGroupAnalysis(userId));
                                    }
                                    sleep(executeTime);
                                } catch (IOException | InterruptedException | EncodeException e) {
                                    interrupt();
                                }
                            }
                        }
                    };
                    thread.start();
                }
            }
            break;
            case "stationCount":{
                if(session!=null) {
                    thread = new Thread("Thread_powerAlarm") {
                        public void run() {
                            while (!thread.isInterrupted()) {
                                try {
                                    if (session.isOpen()) {
                                        session.getBasicRemote().sendObject(service.getAlarmStationCount(userId));
                                    }
                                    sleep(executeTime);
                                } catch (IOException | InterruptedException | EncodeException e) {
                                    interrupt();
                                }
                            }
                        }
                    };
                    thread.start();
                }
            }
            break;
        }
    }
    @OnClose
    public void onClose(){
        if (thread != null && thread.isAlive()) {
            thread.interrupt();
        }
        log.warn("webSocket会话关闭了:{}",session);
    }
    @OnError
    public void onError(Throwable error) {
        error.printStackTrace();
        if (thread != null && thread.isAlive()) {
            thread.interrupt();
        }
    }
}