package com.whyc.webSocket.receiver;
|
|
import com.google.gson.Gson;
|
import com.google.gson.reflect.TypeToken;
|
import com.whyc.dto.FireRobotData;
|
import com.whyc.pojo.db_fire_robot.*;
|
import com.whyc.service.*;
|
import com.whyc.util.JsonUtil;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.socket.CloseStatus;
|
import org.springframework.web.socket.TextMessage;
|
import org.springframework.web.socket.WebSocketSession;
|
import org.springframework.web.socket.handler.TextWebSocketHandler;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
|
import java.util.Date;
|
|
public class ThirdPartyWebSocketHandler extends TextWebSocketHandler {
|
|
private static final Logger log = LoggerFactory.getLogger(ThirdPartyWebSocketHandler.class);
|
private WebSocketSession session;
|
|
@Autowired
|
private EnvironmentService environmentService;
|
|
@Autowired
|
private EnvironmentThresholdService environmentThresholdService;
|
|
@Autowired
|
private RobotAlarmService robotAlarmService;
|
|
@Autowired
|
private RobotStatusService robotStatusService;
|
|
@Autowired
|
private IdentifyAlarmService identifyAlarmService;
|
|
@Override
|
public void afterConnectionEstablished(WebSocketSession session) {
|
this.session = session;
|
log.info("WebSocket connection established.");
|
}
|
|
@Override
|
public void handleTextMessage(WebSocketSession session, TextMessage message) {
|
log.info("Received message: {}", message.getPayload());
|
// 可以在这里做业务处理,比如发布事件、存入队列等
|
String jsonStr = message.getPayload();
|
Gson gson = JsonUtil.getGson();
|
FireRobotData fireRobotData = gson.fromJson(jsonStr, FireRobotData.class);
|
Date now = new Date();
|
switch (fireRobotData.getType()){
|
case "environment": {
|
FireRobotData<Environment> data = gson.fromJson(jsonStr, new TypeToken<FireRobotData<Environment>>() {
|
}.getType());
|
Environment env = data.getData();
|
env.setRecordTime(now);
|
//存入数据库,插入或更新
|
environmentService.addOrUpdate(env);
|
}break;
|
case "status": {
|
FireRobotData<RobotStatus> data = gson.fromJson(jsonStr, new TypeToken<FireRobotData<RobotStatus>>() {
|
}.getType());
|
RobotStatus status = data.getData();
|
status.setRecordTime(now);
|
//存入数据库
|
robotStatusService.addOrUpdate(status);
|
}break;
|
case "alarm": {
|
gson = JsonUtil.getGson("yyyy-MM-dd HH-mm-ss");
|
FireRobotData<RobotAlarm> data = gson.fromJson(jsonStr, new TypeToken<FireRobotData<RobotAlarm>>() {
|
}.getType());
|
RobotAlarm alarm = data.getData();
|
//存入数据库
|
robotAlarmService.addOrUpdate(alarm);
|
}break;
|
case "threshold": {
|
FireRobotData<EnvironmentThreshold> data = gson.fromJson(jsonStr, new TypeToken<FireRobotData<EnvironmentThreshold>>() {
|
}.getType());
|
EnvironmentThreshold threshold = data.getData();
|
threshold.setRecordTime(now);
|
//存入数据库
|
environmentThresholdService.addOrUpdate(threshold);
|
}break;
|
case "identifyAlarm": {
|
FireRobotData<IdentifyAlarm> data = gson.fromJson(jsonStr, new TypeToken<FireRobotData<IdentifyAlarm>>() {
|
}.getType());
|
IdentifyAlarm alarm = data.getData();
|
//存入数据库
|
identifyAlarmService.add(alarm);
|
}break;
|
default:
|
break;
|
}
|
|
}
|
|
@Override
|
public void handleTransportError(WebSocketSession session, Throwable exception) {
|
log.error("Transport error occurred.", exception);
|
}
|
|
@Override
|
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) {
|
log.info("WebSocket connection closed: {}", status);
|
this.session = null;
|
}
|
|
public WebSocketSession getSession() {
|
return session;
|
}
|
}
|