dev #2
@ -36,9 +36,9 @@ import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Future;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.eclipse.paho.client.mqttv3.MqttException;
|
||||
import org.slf4j.Logger;
|
||||
@ -272,7 +272,8 @@ public class ModbusPoller {
|
||||
|
||||
// 数据读取成功,重置计数器
|
||||
deviceFailureCounts.remove(deviceNumber);
|
||||
updateDeviceStatus(siteId, deviceNumber, DeviceRunningStatus.ONLINE.getCode());
|
||||
// 读取到数据后告警自恢复
|
||||
deleteDeviceOfflineRecord(siteId, deviceNumber);
|
||||
|
||||
// 发送MQTT消息、保存Redis数据和数据入库
|
||||
Long timestamp = System.currentTimeMillis();
|
||||
@ -317,6 +318,12 @@ public class ModbusPoller {
|
||||
iEmsAlarmRecordsService.addDeviceOfflineRecord(siteId, deviceNumber);
|
||||
}
|
||||
|
||||
//处理设备读取到数据的情况,更新设备状态为在线,报警记录自恢复
|
||||
private void deleteDeviceOfflineRecord(String siteId, String deviceNumber) {
|
||||
updateDeviceStatus(siteId, deviceNumber, DeviceRunningStatus.ONLINE.getCode());
|
||||
iEmsAlarmRecordsService.deleteDeviceOfflineRecord(siteId, deviceNumber);
|
||||
}
|
||||
|
||||
// 更新设备状态为在线或离线
|
||||
private void updateDeviceStatus(String siteId, String deviceNumber, String deviceStatus) {
|
||||
EmsDevicesSetting emsDevicesSetting = emsDevicesSettingMapper.getDeviceBySiteAndDeviceId(deviceNumber, siteId);
|
||||
|
||||
@ -103,4 +103,6 @@ public interface IEmsAlarmRecordsService
|
||||
public void dealSyncData(String content, String operateType);
|
||||
|
||||
public void addDeviceOfflineRecord(String siteId, String deviceNumber);
|
||||
|
||||
public void deleteDeviceOfflineRecord(String siteId, String deviceNumber);
|
||||
}
|
||||
|
||||
@ -227,7 +227,8 @@ public class EmsAlarmRecordsServiceImpl implements IEmsAlarmRecordsService
|
||||
|
||||
@Override
|
||||
public void addEmptyDataAlarmRecord(String siteId, String topicDevice) {
|
||||
EmsAlarmRecords emsAlarmRecords = redisCache.getCacheObject(RedisKeyConstants.TOPIC_EMPTY_ALARM_RECORD + siteId + "_" + topicDevice);
|
||||
String key = getRedisKeyForTopicEmptyAlarm(siteId, topicDevice);
|
||||
EmsAlarmRecords emsAlarmRecords = redisCache.getCacheObject(key);
|
||||
if (emsAlarmRecords != null) {
|
||||
return;
|
||||
}
|
||||
@ -235,7 +236,7 @@ public class EmsAlarmRecordsServiceImpl implements IEmsAlarmRecordsService
|
||||
emsAlarmRecordsMapper.insertEmsAlarmRecords(emsAlarmRecords);
|
||||
|
||||
// 存redis-防止重复插入-有效期一天
|
||||
redisCache.setCacheObject(RedisKeyConstants.TOPIC_EMPTY_ALARM_RECORD + siteId + "_" + topicDevice, emsAlarmRecords,1, TimeUnit.DAYS);
|
||||
redisCache.setCacheObject(key, emsAlarmRecords,1, TimeUnit.DAYS);
|
||||
}
|
||||
|
||||
private EmsAlarmRecords createAlarmAtPcs(String siteId, String deviceId,String content,String level) {
|
||||
@ -254,7 +255,7 @@ public class EmsAlarmRecordsServiceImpl implements IEmsAlarmRecordsService
|
||||
|
||||
@Override
|
||||
public void deleteEmptyDataAlarmRecord(String siteId, String topicDevice) {
|
||||
String key = RedisKeyConstants.TOPIC_EMPTY_ALARM_RECORD + siteId + "_" + topicDevice;
|
||||
String key = getRedisKeyForTopicEmptyAlarm(siteId, topicDevice);
|
||||
EmsAlarmRecords emsAlarmRecords = redisCache.getCacheObject(key);
|
||||
if (emsAlarmRecords == null) {
|
||||
return;
|
||||
@ -330,16 +331,41 @@ public class EmsAlarmRecordsServiceImpl implements IEmsAlarmRecordsService
|
||||
|
||||
@Override
|
||||
public void addDeviceOfflineRecord(String siteId, String deviceId) {
|
||||
EmsAlarmRecords emsAlarmRecords = redisCache.getCacheObject(RedisKeyConstants.MODBUS_OFFLINE_ALARM_RECORD + siteId + "_" + deviceId);
|
||||
String key = getRedisKeyForModbusFailAlarm(siteId, deviceId);
|
||||
EmsAlarmRecords emsAlarmRecords = redisCache.getCacheObject(key);
|
||||
if (emsAlarmRecords != null) {
|
||||
return;
|
||||
}
|
||||
emsAlarmRecords = createAlarmAtPcs(siteId, deviceId,"modbus连接设备失败", AlarmLevelStatus.EMERGENCY.getCode());
|
||||
emsAlarmRecords = createAlarmAtPcs(siteId, deviceId,"modbus连接设备失败", AlarmLevelStatus.GENERAL.getCode());
|
||||
emsAlarmRecordsMapper.insertEmsAlarmRecords(emsAlarmRecords);
|
||||
|
||||
// 存redis-防止重复插入-有效期一天
|
||||
redisCache.setCacheObject(RedisKeyConstants.MODBUS_OFFLINE_ALARM_RECORD + siteId + "_" + deviceId, emsAlarmRecords,1, TimeUnit.DAYS);
|
||||
redisCache.setCacheObject(key, emsAlarmRecords,1, TimeUnit.DAYS);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteDeviceOfflineRecord(String siteId, String deviceId) {
|
||||
String key = getRedisKeyForModbusFailAlarm(siteId, deviceId);
|
||||
EmsAlarmRecords emsAlarmRecords = redisCache.getCacheObject(key);
|
||||
if (emsAlarmRecords == null) {
|
||||
return;
|
||||
}
|
||||
emsAlarmRecords.setStatus(AlarmStatus.DONE.getCode());
|
||||
emsAlarmRecords.setUpdateTime(new Date());
|
||||
emsAlarmRecords.setAlarmEndTime(new Date());
|
||||
emsAlarmRecordsMapper.updateEmsAlarmRecords(emsAlarmRecords);
|
||||
|
||||
redisCache.deleteObject(key);
|
||||
}
|
||||
|
||||
private String getRedisKeyForTopicEmptyAlarm(String siteId, String topicDevice) {
|
||||
|
||||
return RedisKeyConstants.TOPIC_EMPTY_ALARM_RECORD + siteId + "_" + topicDevice;
|
||||
}
|
||||
|
||||
private String getRedisKeyForModbusFailAlarm(String siteId, String deviceId) {
|
||||
|
||||
return RedisKeyConstants.MODBUS_OFFLINE_ALARM_RECORD + siteId + "_" + deviceId;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user