From b6d5f991c526f041694f6eab829f43388a8744c6 Mon Sep 17 00:00:00 2001 From: "review512jwy@163.com" <“review512jwy@163.com”> Date: Tue, 23 Jun 2026 11:00:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=91=8A=E8=AD=A6=E5=B1=8F=E8=94=BD=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=A4=A7=E7=B1=BB=E5=88=A4=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sender/dao/DashboardBlockConfigDao.java | 7 ++++++- .../datacenter/sender/dao/DeviceDao.java | 2 ++ .../datacenter/sender/dto/BlockConfigDTO.java | 3 +++ .../datacenter/sender/dto/DeviceInfoVO.java | 2 ++ .../service/impl/DataProcessServiceImpl.java | 19 ++++++++++++++++++- 5 files changed, 31 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/techsor/datacenter/sender/dao/DashboardBlockConfigDao.java b/src/main/java/com/techsor/datacenter/sender/dao/DashboardBlockConfigDao.java index 585b65d..67f6752 100644 --- a/src/main/java/com/techsor/datacenter/sender/dao/DashboardBlockConfigDao.java +++ b/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); } diff --git a/src/main/java/com/techsor/datacenter/sender/dao/DeviceDao.java b/src/main/java/com/techsor/datacenter/sender/dao/DeviceDao.java index 135297b..28f00a5 100644 --- a/src/main/java/com/techsor/datacenter/sender/dao/DeviceDao.java +++ b/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; diff --git a/src/main/java/com/techsor/datacenter/sender/dto/BlockConfigDTO.java b/src/main/java/com/techsor/datacenter/sender/dto/BlockConfigDTO.java index d3ac30d..8932b85 100644 --- a/src/main/java/com/techsor/datacenter/sender/dto/BlockConfigDTO.java +++ b/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 blockBigClassId; } diff --git a/src/main/java/com/techsor/datacenter/sender/dto/DeviceInfoVO.java b/src/main/java/com/techsor/datacenter/sender/dto/DeviceInfoVO.java index 3e6a659..de92070 100644 --- a/src/main/java/com/techsor/datacenter/sender/dto/DeviceInfoVO.java +++ b/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; + } diff --git a/src/main/java/com/techsor/datacenter/sender/service/impl/DataProcessServiceImpl.java b/src/main/java/com/techsor/datacenter/sender/service/impl/DataProcessServiceImpl.java index e723a35..983a8ff 100644 --- a/src/main/java/com/techsor/datacenter/sender/service/impl/DataProcessServiceImpl.java +++ b/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 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}」でアラームが発生しました";