|
|
@ -39,10 +39,10 @@ import org.thingsboard.server.common.data.id.CustomerId; |
|
|
import org.thingsboard.server.common.data.id.EntityId; |
|
|
import org.thingsboard.server.common.data.id.EntityId; |
|
|
import org.thingsboard.server.common.data.id.TenantId; |
|
|
import org.thingsboard.server.common.data.id.TenantId; |
|
|
import org.thingsboard.server.common.data.page.PageData; |
|
|
import org.thingsboard.server.common.data.page.PageData; |
|
|
import org.thingsboard.server.common.data.page.TimePageLink; |
|
|
|
|
|
import org.thingsboard.server.common.data.query.AlarmData; |
|
|
import org.thingsboard.server.common.data.query.AlarmData; |
|
|
import org.thingsboard.server.common.data.query.AlarmDataPageLink; |
|
|
import org.thingsboard.server.common.data.query.AlarmDataPageLink; |
|
|
import org.thingsboard.server.common.data.query.AlarmDataQuery; |
|
|
import org.thingsboard.server.common.data.query.AlarmDataQuery; |
|
|
|
|
|
import org.thingsboard.server.common.data.query.DeviceTypeFilter; |
|
|
import org.thingsboard.server.common.data.relation.EntityRelation; |
|
|
import org.thingsboard.server.common.data.relation.EntityRelation; |
|
|
import org.thingsboard.server.common.data.relation.EntityRelationsQuery; |
|
|
import org.thingsboard.server.common.data.relation.EntityRelationsQuery; |
|
|
import org.thingsboard.server.common.data.relation.EntitySearchDirection; |
|
|
import org.thingsboard.server.common.data.relation.EntitySearchDirection; |
|
|
@ -60,7 +60,6 @@ import javax.annotation.PreDestroy; |
|
|
import java.util.ArrayList; |
|
|
import java.util.ArrayList; |
|
|
import java.util.Collection; |
|
|
import java.util.Collection; |
|
|
import java.util.Collections; |
|
|
import java.util.Collections; |
|
|
import java.util.Comparator; |
|
|
|
|
|
import java.util.LinkedHashSet; |
|
|
import java.util.LinkedHashSet; |
|
|
import java.util.List; |
|
|
import java.util.List; |
|
|
import java.util.Set; |
|
|
import java.util.Set; |
|
|
@ -316,37 +315,16 @@ public class BaseAlarmService extends AbstractEntityService implements AlarmServ |
|
|
@Override |
|
|
@Override |
|
|
public AlarmSeverity findHighestAlarmSeverity(TenantId tenantId, EntityId entityId, AlarmSearchStatus alarmSearchStatus, |
|
|
public AlarmSeverity findHighestAlarmSeverity(TenantId tenantId, EntityId entityId, AlarmSearchStatus alarmSearchStatus, |
|
|
AlarmStatus alarmStatus) { |
|
|
AlarmStatus alarmStatus) { |
|
|
TimePageLink nextPageLink = new TimePageLink(100); |
|
|
Set<AlarmStatus> statusList = null; |
|
|
boolean hasNext = true; |
|
|
if (alarmSearchStatus != null) { |
|
|
AlarmSeverity highestSeverity = null; |
|
|
statusList = alarmSearchStatus.getStatuses(); |
|
|
AlarmQuery query; |
|
|
} else if (alarmStatus != null) { |
|
|
while (hasNext && AlarmSeverity.CRITICAL != highestSeverity) { |
|
|
statusList = Collections.singleton(alarmStatus); |
|
|
query = new AlarmQuery(entityId, nextPageLink, alarmSearchStatus, alarmStatus, false, null); |
|
|
|
|
|
PageData<AlarmInfo> alarms = alarmDao.findAlarms(tenantId, query); |
|
|
|
|
|
if (alarms.hasNext()) { |
|
|
|
|
|
nextPageLink = nextPageLink.nextPageLink(); |
|
|
|
|
|
} |
|
|
|
|
|
AlarmSeverity severity = detectHighestSeverity(alarms.getData()); |
|
|
|
|
|
if (severity == null) { |
|
|
|
|
|
continue; |
|
|
|
|
|
} |
|
|
|
|
|
if (severity == AlarmSeverity.CRITICAL || highestSeverity == null) { |
|
|
|
|
|
highestSeverity = severity; |
|
|
|
|
|
} else { |
|
|
|
|
|
highestSeverity = highestSeverity.compareTo(severity) < 0 ? highestSeverity : severity; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
return highestSeverity; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private AlarmSeverity detectHighestSeverity(List<AlarmInfo> alarms) { |
|
|
Set<AlarmSeverity> alarmSeverities = alarmDao.findAlarmSeverities(tenantId, entityId, statusList); |
|
|
if (!alarms.isEmpty()) { |
|
|
|
|
|
List<AlarmInfo> sorted = new ArrayList(alarms); |
|
|
return alarmSeverities.stream().min(AlarmSeverity::compareTo).orElse(null); |
|
|
sorted.sort(Comparator.comparing(Alarm::getSeverity)); |
|
|
|
|
|
return sorted.get(0).getSeverity(); |
|
|
|
|
|
} else { |
|
|
|
|
|
return null; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private void deleteRelation(TenantId tenantId, EntityRelation alarmRelation) { |
|
|
private void deleteRelation(TenantId tenantId, EntityRelation alarmRelation) { |
|
|
|