Browse Source

告警屏蔽,增加大类判定

master
review512jwy@163.com 3 weeks ago
parent
commit
b6d5f991c5
  1. 7
      src/main/java/com/techsor/datacenter/sender/dao/DashboardBlockConfigDao.java
  2. 2
      src/main/java/com/techsor/datacenter/sender/dao/DeviceDao.java
  3. 3
      src/main/java/com/techsor/datacenter/sender/dto/BlockConfigDTO.java
  4. 2
      src/main/java/com/techsor/datacenter/sender/dto/DeviceInfoVO.java
  5. 19
      src/main/java/com/techsor/datacenter/sender/service/impl/DataProcessServiceImpl.java

7
src/main/java/com/techsor/datacenter/sender/dao/DashboardBlockConfigDao.java

@ -1,5 +1,6 @@
package com.techsor.datacenter.sender.dao;
import com.alibaba.fastjson2.JSON;
import com.techsor.datacenter.sender.dto.BlockConfigDTO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.jdbc.core.JdbcTemplate;
@ -25,7 +26,7 @@ public class DashboardBlockConfigDao {
if (buildingId == null) {
return Collections.emptyList();
}
String sql = "SELECT id, building_id, start_time, end_time " +
String sql = "SELECT id, building_id, start_time, end_time, block_big_class_id " +
"FROM dashboard_block_config " +
"WHERE building_id = ? AND flag = 0 AND status = 0 ";
return jdbcTemplate.query(sql, (rs, rowNum) -> {
@ -34,6 +35,10 @@ public class DashboardBlockConfigDao {
dto.setBuildingId(rs.getLong("building_id"));
dto.setStartTime(rs.getLong("start_time"));
dto.setEndTime(rs.getLong("end_time"));
String blockBigClassIdStr = rs.getString("block_big_class_id");
if (blockBigClassIdStr != null && !blockBigClassIdStr.trim().isEmpty()) {
dto.setBlockBigClassId(JSON.parseArray(blockBigClassIdStr, Long.class));
}
return dto;
}, buildingId);
}

2
src/main/java/com/techsor/datacenter/sender/dao/DeviceDao.java

@ -283,6 +283,7 @@ public class DeviceDao {
+ " bbuilding.name buildingName,\r\n"
+ " bbuilding.retain_alert retainAlert,\r\n"
+ " basset.equipment_id assetId,\r\n"
+ " basset.class_big_id bigClassId,\r\n"
+ " basset.name assetName,\r\n"
+ " ty.device_category_id categoryId,\r\n"
+ " dct.category_name_en category\r\n"
@ -312,6 +313,7 @@ public class DeviceDao {
item.setMonitoringPointName(rs.getString("monitoringPointName"));
item.setRetainAlert(rs.getInt("retainAlert"));
item.setCategoryId(rs.getLong("categoryId"));
item.setBigClassId(rs.getLong("bigClassId"));
return item;
});
return dataList;

3
src/main/java/com/techsor/datacenter/sender/dto/BlockConfigDTO.java

@ -2,10 +2,13 @@ package com.techsor.datacenter.sender.dto;
import lombok.Data;
import java.util.List;
@Data
public class BlockConfigDTO {
private Long id;
private Long buildingId;
private Long startTime;
private Long endTime;
private List<Long> blockBigClassId;
}

2
src/main/java/com/techsor/datacenter/sender/dto/DeviceInfoVO.java

@ -57,4 +57,6 @@ public class DeviceInfoVO implements Serializable {
private Integer alertBlock = 0;
private Long bigClassId;
}

19
src/main/java/com/techsor/datacenter/sender/service/impl/DataProcessServiceImpl.java

@ -705,14 +705,31 @@ public class DataProcessServiceImpl implements IDataProcessService {
&& config.getEndTime() != null
&& now >= config.getStartTime()
&& now <= config.getEndTime()
&& isBigClassBlocked(config.getBlockBigClassId(), deviceInfoVO.getBigClassId())
);
deviceInfoVO.setAlertBlock(inBlockPeriod ? 1 : 0);
if (inBlockPeriod) {
log.debug("device {} building {} in alert block period", deviceInfoVO.getDeviceId(), deviceInfoVO.getBuildingId());
log.debug("device {} building {} bigClassId {} in alert block period",
deviceInfoVO.getDeviceId(), deviceInfoVO.getBuildingId(), deviceInfoVO.getBigClassId());
}
}
}
/**
* 判断设备大类是否在屏蔽范围内
* @param blockBigClassIds 屏蔽配置的大类ID列表null或空表示屏蔽所有大类
* @param bigClassId 设备的大类ID
*/
private boolean isBigClassBlocked(List<Long> blockBigClassIds, Long bigClassId) {
if (blockBigClassIds == null || blockBigClassIds.isEmpty()) {
return true; // 未配置则屏蔽所有大类
}
if (bigClassId == null) {
return false; // 设备无大类则不匹配
}
return blockBigClassIds.contains(bigClassId);
}
// private void sysAlarmNotify(DynamodbEntity baseTransDataEntity, DeviceInfoVO deviceInfoVO) throws Exception {
// String temp = "建物「{0}」の監視ポイント「{1}」でアラームが発生しました";

Loading…
Cancel
Save