package com.mes.mechanicalMonitor.service.impl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.mes.mechanicalMonitor.entity.MechanicalMonitor;
|
import com.mes.mechanicalMonitor.mapper.MechanicalMonitorMapper;
|
import com.mes.mechanicalMonitor.service.MechanicalMonitorService;
|
import com.mes.tools.WebSocketServer;
|
import cn.hutool.json.JSONObject;
|
import org.springframework.stereotype.Service;
|
import java.util.List;
|
import java.util.Date;
|
import java.util.ArrayList;
|
|
@Service
|
public class MechanicalMonitorServiceImpl extends ServiceImpl<MechanicalMonitorMapper, MechanicalMonitor>
|
implements MechanicalMonitorService {
|
|
@Override
|
public List<MechanicalMonitor> getAllDeviceStatus() {
|
return this.list();
|
}
|
|
@Override
|
public void updateDeviceStatus(String deviceId, Integer status, String alarmInfo) {
|
MechanicalMonitor monitor = this.lambdaQuery()
|
.eq(MechanicalMonitor::getDeviceId, deviceId)
|
.one();
|
|
if (monitor == null) {
|
monitor = new MechanicalMonitor();
|
monitor.setDeviceId(deviceId);
|
}
|
|
monitor.setStatus(status);
|
monitor.setAlarmInfo(alarmInfo);
|
|
if (status == 2) { // 故障状态
|
monitor.setAlarmTime(new Date());
|
} else if (status == 0) { // 未连接状态
|
monitor.setDisconnectTime(new Date());
|
}
|
|
this.saveOrUpdate(monitor);
|
|
// 通知状态变化
|
notifyStatusChange(monitor);
|
}
|
|
@Override
|
public void notifyStatusChange(MechanicalMonitor monitor) {
|
JSONObject message = new JSONObject();
|
message.set("type", "status_change");
|
message.set("data", monitor);
|
|
ArrayList<WebSocketServer> servers = WebSocketServer.sessionMap.get("mechanicalMonitor");
|
if (servers != null) {
|
for (WebSocketServer server : servers) {
|
server.sendMessage(message.toString());
|
}
|
}
|
}
|
}
|