feat(ems): 增加对噪音、照度和气体浓度的监测支持

- 在 EmsAlarmActionStepMapper.xml 中添加了对噪音、照度和气体浓度的 SQL 支持
- 在 EmsRecordAlarmDataServiceImpl 中增加了对这些新监测字段的处理逻辑
- 更新了监测字段与数据库字段的映射关系
- 调整了告警数据的保存逻辑,直接插入数据库而不进行去重检查
boardTest
zch 4 weeks ago
parent 2a1af76338
commit 4b4063259b

@ -62,6 +62,9 @@ public class EmsRecordAlarmDataServiceImpl implements IEmsRecordAlarmDataService
MONITOR_FIELD_TO_DB_FIELD.put(3L, "vibration_displacement"); // 振动-位移(um)
MONITOR_FIELD_TO_DB_FIELD.put(4L, "vibration_acceleration"); // 振动-加速度(g)
MONITOR_FIELD_TO_DB_FIELD.put(5L, "vibration_temp"); // 振动-温度(℃)
MONITOR_FIELD_TO_DB_FIELD.put(6L, "noise"); // 噪音
MONITOR_FIELD_TO_DB_FIELD.put(7L, "illuminance"); // 照度
MONITOR_FIELD_TO_DB_FIELD.put(8L, "concentration"); // 气体浓度
// 字典值 -> 中文描述映射用于异常记录的cause字段
MONITOR_FIELD_TO_DESC.put(0L, "温度");
@ -70,6 +73,9 @@ public class EmsRecordAlarmDataServiceImpl implements IEmsRecordAlarmDataService
MONITOR_FIELD_TO_DESC.put(3L, "振动-位移(um)");
MONITOR_FIELD_TO_DESC.put(4L, "振动-加速度(g)");
MONITOR_FIELD_TO_DESC.put(5L, "振动-温度(℃)");
MONITOR_FIELD_TO_DESC.put(6L, "噪音");
MONITOR_FIELD_TO_DESC.put(7L, "照度");
MONITOR_FIELD_TO_DESC.put(8L, "气体浓度");
}
/**
@ -395,6 +401,12 @@ public class EmsRecordAlarmDataServiceImpl implements IEmsRecordAlarmDataService
return record.getVibrationAcceleration();
case 5: // 振动-温度(℃)
return record.getVibrationTemp();
case 6: // 噪音
return record.getNoise();
case 7: // 照度
return record.getIlluminance();
case 8: // 气体浓度
return record.getConcentration();
default:
System.out.println("未知的监测字段: " + monitorField);
return null;
@ -498,8 +510,8 @@ public class EmsRecordAlarmDataServiceImpl implements IEmsRecordAlarmDataService
descriptions.add("温度");
descriptions.add("湿度");
descriptions.add("照度");
descriptions.add("噪");
descriptions.add("浓度");
descriptions.add("噪");
descriptions.add("气体浓度");
break;
}
@ -534,8 +546,13 @@ public class EmsRecordAlarmDataServiceImpl implements IEmsRecordAlarmDataService
return monitorField == 0L;
}
// 其他设备类型暂不支持字段级规则
return false;
// 其他设备类型支持噪音(6)、照度(7)、气体浓度(8)字段
if (monitorField >= 6L && monitorField <= 8L) {
return true;
}
// 默认支持温度和湿度字段
return monitorField == 0L || monitorField == 1L;
}
/**
@ -755,7 +772,7 @@ public class EmsRecordAlarmDataServiceImpl implements IEmsRecordAlarmDataService
/**
* WebSocket
*
*
*
* @param alarmDataList
* @return
@ -771,7 +788,10 @@ public class EmsRecordAlarmDataServiceImpl implements IEmsRecordAlarmDataService
// 设置默认值和创建时间
Date currentTime = DateUtils.getNowDate();
int insertedCount = 0;
for (EmsRecordAlarmData alarmData : alarmDataList) {
try {
// 设置创建时间
if (alarmData.getCreateTime() == null) {
alarmData.setCreateTime(currentTime);
@ -793,14 +813,24 @@ public class EmsRecordAlarmDataServiceImpl implements IEmsRecordAlarmDataService
alarmData.setCollectTime(currentTime);
}
System.out.println("准备保存告警数据 - 设备:" + alarmData.getMonitorId() +
System.out.println("保存告警数据 - 设备:" + alarmData.getMonitorId() +
", 原因:" + alarmData.getCause() +
", 数值:" + alarmData.getAlarmData() +
", 告警类型:" + alarmData.getAlarmType());
// 直接插入数据库,不进行去重检查
int result = insertEmsRecordAlarmData(alarmData);
if (result > 0) {
insertedCount++;
System.out.println("成功保存告警数据 - 设备:" + alarmData.getMonitorId() +
", 原因:" + alarmData.getCause());
}
// 复用现有的严格去重逻辑
int insertedCount = insertAlarmDataWithStrictDuplicateCheck(alarmDataList);
} catch (Exception e) {
System.err.println("保存告警数据时发生错误: " + e.getMessage());
e.printStackTrace();
}
}
System.out.println("WebSocket告警数据保存完成实际插入: " + insertedCount + " 条记录");
System.out.println("==== WebSocket告警数据保存结束 ====");

@ -108,6 +108,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
WHEN 3 THEN #{cause} = '振动-位移(um)'
WHEN 4 THEN #{cause} = '振动-加速度(g)'
WHEN 5 THEN #{cause} = '振动-温度(℃)'
WHEN 6 THEN #{cause} = '噪音'
WHEN 7 THEN #{cause} = '照度'
WHEN 8 THEN #{cause} = '气体浓度'
ELSE 0
END = 1
)

Loading…
Cancel
Save