modbus本地设备数据读取失败,告警等级修改为“一般”,读到数据后自恢复
This commit is contained in:
@ -36,9 +36,9 @@ import java.util.concurrent.ExecutorService;
|
|||||||
import java.util.concurrent.Future;
|
import java.util.concurrent.Future;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
import org.eclipse.paho.client.mqttv3.MqttException;
|
import org.eclipse.paho.client.mqttv3.MqttException;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
@ -272,7 +272,8 @@ public class ModbusPoller {
|
|||||||
|
|
||||||
// 数据读取成功,重置计数器
|
// 数据读取成功,重置计数器
|
||||||
deviceFailureCounts.remove(deviceNumber);
|
deviceFailureCounts.remove(deviceNumber);
|
||||||
updateDeviceStatus(siteId, deviceNumber, DeviceRunningStatus.ONLINE.getCode());
|
// 读取到数据后告警自恢复
|
||||||
|
deleteDeviceOfflineRecord(siteId, deviceNumber);
|
||||||
|
|
||||||
// 发送MQTT消息、保存Redis数据和数据入库
|
// 发送MQTT消息、保存Redis数据和数据入库
|
||||||
Long timestamp = System.currentTimeMillis();
|
Long timestamp = System.currentTimeMillis();
|
||||||
@ -317,6 +318,12 @@ public class ModbusPoller {
|
|||||||
iEmsAlarmRecordsService.addDeviceOfflineRecord(siteId, deviceNumber);
|
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) {
|
private void updateDeviceStatus(String siteId, String deviceNumber, String deviceStatus) {
|
||||||
EmsDevicesSetting emsDevicesSetting = emsDevicesSettingMapper.getDeviceBySiteAndDeviceId(deviceNumber, siteId);
|
EmsDevicesSetting emsDevicesSetting = emsDevicesSettingMapper.getDeviceBySiteAndDeviceId(deviceNumber, siteId);
|
||||||
|
|||||||
@ -103,4 +103,6 @@ public interface IEmsAlarmRecordsService
|
|||||||
public void dealSyncData(String content, String operateType);
|
public void dealSyncData(String content, String operateType);
|
||||||
|
|
||||||
public void addDeviceOfflineRecord(String siteId, String deviceNumber);
|
public void addDeviceOfflineRecord(String siteId, String deviceNumber);
|
||||||
|
|
||||||
|
public void deleteDeviceOfflineRecord(String siteId, String deviceNumber);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -227,7 +227,8 @@ public class EmsAlarmRecordsServiceImpl implements IEmsAlarmRecordsService
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addEmptyDataAlarmRecord(String siteId, String topicDevice) {
|
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) {
|
if (emsAlarmRecords != null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -235,7 +236,7 @@ public class EmsAlarmRecordsServiceImpl implements IEmsAlarmRecordsService
|
|||||||
emsAlarmRecordsMapper.insertEmsAlarmRecords(emsAlarmRecords);
|
emsAlarmRecordsMapper.insertEmsAlarmRecords(emsAlarmRecords);
|
||||||
|
|
||||||
// 存redis-防止重复插入-有效期一天
|
// 存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) {
|
private EmsAlarmRecords createAlarmAtPcs(String siteId, String deviceId,String content,String level) {
|
||||||
@ -254,7 +255,7 @@ public class EmsAlarmRecordsServiceImpl implements IEmsAlarmRecordsService
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteEmptyDataAlarmRecord(String siteId, String topicDevice) {
|
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);
|
EmsAlarmRecords emsAlarmRecords = redisCache.getCacheObject(key);
|
||||||
if (emsAlarmRecords == null) {
|
if (emsAlarmRecords == null) {
|
||||||
return;
|
return;
|
||||||
@ -330,16 +331,41 @@ public class EmsAlarmRecordsServiceImpl implements IEmsAlarmRecordsService
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addDeviceOfflineRecord(String siteId, String deviceId) {
|
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) {
|
if (emsAlarmRecords != null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
emsAlarmRecords = createAlarmAtPcs(siteId, deviceId,"modbus连接设备失败", AlarmLevelStatus.EMERGENCY.getCode());
|
emsAlarmRecords = createAlarmAtPcs(siteId, deviceId,"modbus连接设备失败", AlarmLevelStatus.GENERAL.getCode());
|
||||||
emsAlarmRecordsMapper.insertEmsAlarmRecords(emsAlarmRecords);
|
emsAlarmRecordsMapper.insertEmsAlarmRecords(emsAlarmRecords);
|
||||||
|
|
||||||
// 存redis-防止重复插入-有效期一天
|
// 存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