fix: 欠压和欠流,不再拨打电话,功能修改。
This commit is contained in:
@@ -1504,8 +1504,12 @@ public class DeviceDataHandler {
|
||||
* @param params 事件参数
|
||||
*/
|
||||
private void triggerDeviceErrorAlarm(String deviceName, JSONObject params) {
|
||||
int errorCode = params != null && params.containsKey("errorCode")
|
||||
? params.getInt("errorCode", 0) : 0;
|
||||
boolean onlyRecordAlarm = isNoCallControllerFault(errorCode);
|
||||
|
||||
// 全局电话通知开关检查
|
||||
if (!aliyunIotProperties.isCallNoticeEnabled()) {
|
||||
if (!aliyunIotProperties.isCallNoticeEnabled() && !onlyRecordAlarm) {
|
||||
log.debug("[设备故障] 电话通知已全局关闭,跳过: {}", deviceName);
|
||||
return;
|
||||
}
|
||||
@@ -1539,8 +1543,6 @@ public class DeviceDataHandler {
|
||||
String displayName = device.getDeviceName() != null ? device.getDeviceName() : deviceName;
|
||||
|
||||
// 解析事件参数获取故障码
|
||||
int errorCode = params != null && params.containsKey("errorCode")
|
||||
? params.getInt("errorCode", 0) : 0;
|
||||
String errorDesc = DefineDeviceErrorCode.getErrorMessage(errorCode);
|
||||
if (StrUtil.isBlank(errorDesc)) {
|
||||
errorDesc = "设备故障(code=" + errorCode + ")";
|
||||
@@ -1550,6 +1552,15 @@ public class DeviceDataHandler {
|
||||
String.format("%s(%s)发生故障:%s", displayName, deviceName, errorDesc));
|
||||
log.error("[设备故障] 设备: {}, 故障信息: {}", deviceName, warnMsg);
|
||||
|
||||
if (onlyRecordAlarm) {
|
||||
String errorTitle = "控制器故障";
|
||||
MessageWarn warn = createMessageWarn(deviceId, userId, pondName, errorTitle, WARN_TYPE_DISSOLVED_OXYGEN, warnMsg);
|
||||
messageWarnMapper.insert(warn);
|
||||
log.info("[设备故障] 欠压/欠流故障仅记录报警,不创建电话通知 - 设备:{}, 故障码:{}",
|
||||
deviceName, errorCode);
|
||||
return;
|
||||
}
|
||||
|
||||
// 获取告警手机号
|
||||
AquUser aquUser = aquUserMapper.selectById(userId);
|
||||
if (aquUser == null) {
|
||||
@@ -1898,10 +1909,14 @@ public class DeviceDataHandler {
|
||||
messageWarnMapper.insert(warn);
|
||||
boolean controllerFaultCallOpen = device.getControllerFaultCallOpen() == null
|
||||
|| device.getControllerFaultCallOpen() == 1;
|
||||
boolean shouldCreateCallNotice = powerOffError || controllerFaultCallOpen;
|
||||
boolean noCallControllerFault = isNoCallControllerFault(errorCode);
|
||||
boolean shouldCreateCallNotice = !noCallControllerFault && (powerOffError || controllerFaultCallOpen);
|
||||
// 创建电话通知记录:断电不受控制器故障电话开关限制,其他故障受该开关限制。
|
||||
if (aliyunIotProperties.isCallNoticeEnabled() && shouldCreateCallNotice) {
|
||||
createCallNotices(device, messagePondName, warn);
|
||||
} else if (noCallControllerFault) {
|
||||
log.info("[故障码] 设备={} 欠压/欠流故障仅记录报警,不创建电话通知: title={}, errorCode={}",
|
||||
device.getSerialNum(), title, errorCode);
|
||||
} else if (!shouldCreateCallNotice) {
|
||||
log.info("[故障码] 设备={} 控制器故障电话报警开关关闭,仅记录报警消息: title={}",
|
||||
device.getSerialNum(), title);
|
||||
@@ -1921,6 +1936,26 @@ public class DeviceDataHandler {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 欠压和欠流故障只保留报警记录,不创建报警电话。
|
||||
*/
|
||||
private boolean isNoCallControllerFault(int errorCode) {
|
||||
return isControllerInputUnderVoltage(errorCode) || isSwitchUnderElectric(errorCode);
|
||||
}
|
||||
|
||||
private boolean isControllerInputUnderVoltage(int errorCode) {
|
||||
return errorCode == DefineDeviceErrorCode.Three_PhaseA_UnderVoltage
|
||||
|| errorCode == DefineDeviceErrorCode.Three_PhaseB_UnderVoltage
|
||||
|| errorCode == DefineDeviceErrorCode.Three_PhaseC_UnderVoltage;
|
||||
}
|
||||
|
||||
private boolean isSwitchUnderElectric(int errorCode) {
|
||||
return (errorCode >= DefineDeviceErrorCode.Three_Switch1UnderElectricA
|
||||
&& errorCode <= DefineDeviceErrorCode.Three_Switch4UnderElectricC)
|
||||
|| (errorCode >= DefineDeviceErrorCode.One_Switch1UnderElectric
|
||||
&& errorCode <= DefineDeviceErrorCode.One_Switch4UnderElectric);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除设备指定故障码记录(对应 C# RemoveErrorCode)
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user