package com.mes.mechanicalMonitor.service.impl; import cn.hutool.json.JSONObject; 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.websocket.WebSocketServer; import org.springframework.stereotype.Service; import java.util.Date; import java.util.List; @Service public class MechanicalMonitorServiceImpl extends ServiceImpl implements MechanicalMonitorService { @Override public List 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); List servers = WebSocketServer.SESSIONMAP.get("mechanicalMonitor"); if (servers != null) { for (WebSocketServer server : servers) { server.sendToWeb("",message.toString()); } } } }