From 9e0b26ab12647bd08fe973f9fc8ffb8980201ba7 Mon Sep 17 00:00:00 2001 From: YevhenBondarenko Date: Thu, 18 Mar 2021 11:48:43 +0200 Subject: [PATCH] fix getHighestAlarmSeverity for propagated entities --- .../server/dao/sql/alarm/AlarmRepository.java | 19 ++++++++++++------- .../server/dao/sql/alarm/JpaAlarmDao.java | 4 ++-- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/AlarmRepository.java b/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/AlarmRepository.java index f34048c5ad..b422f1cd4a 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/AlarmRepository.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/AlarmRepository.java @@ -76,12 +76,17 @@ public interface AlarmRepository extends CrudRepository { @Param("searchText") String searchText, Pageable pageable); - @Query("SELECT alarm.severity FROM AlarmEntity alarm" + - " WHERE alarm.tenantId = :tenantId" + - " AND alarm.originatorId = :entityId" + - " AND ((:status) IS NULL OR alarm.status in (:status))") + @Query(value = "SELECT a.severity FROM AlarmEntity a " + + "LEFT JOIN RelationEntity re ON a.id = re.toId " + + "AND re.relationTypeGroup = 'ALARM' " + + "AND re.toType = 'ALARM' " + + "AND re.fromId = :affectedEntityId " + + "AND re.fromType = :affectedEntityType " + + "WHERE a.tenantId = :tenantId " + + "AND (a.originatorId = :affectedEntityId or re.fromId IS NOT NULL) " + + "AND ((:alarmStatuses) IS NULL OR a.status in (:alarmStatuses))") Set findAlarmSeverities(@Param("tenantId") UUID tenantId, - @Param("entityId") UUID entityId, - @Param("status") Set status); - + @Param("affectedEntityId") UUID affectedEntityId, + @Param("affectedEntityType") String affectedEntityType, + @Param("alarmStatuses") Set alarmStatuses); } diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/JpaAlarmDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/JpaAlarmDao.java index 722928e1b8..bfca088c69 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/JpaAlarmDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/JpaAlarmDao.java @@ -123,7 +123,7 @@ public class JpaAlarmDao extends JpaAbstractDao implements A } @Override - public Set findAlarmSeverities(TenantId tenantId, EntityId entityId, Set status) { - return alarmRepository.findAlarmSeverities(tenantId.getId(), entityId.getId(), status); + public Set findAlarmSeverities(TenantId tenantId, EntityId entityId, Set statuses) { + return alarmRepository.findAlarmSeverities(tenantId.getId(), entityId.getId(), entityId.getEntityType().name(), statuses); } }