findHighestAlarmStatus: code cleaning
This commit is contained in:
parent
581bb536f5
commit
beeade8b07
@ -19,16 +19,18 @@ import com.google.common.util.concurrent.ListenableFuture;
|
|||||||
import org.thingsboard.server.common.data.alarm.Alarm;
|
import org.thingsboard.server.common.data.alarm.Alarm;
|
||||||
import org.thingsboard.server.common.data.alarm.AlarmInfo;
|
import org.thingsboard.server.common.data.alarm.AlarmInfo;
|
||||||
import org.thingsboard.server.common.data.alarm.AlarmQuery;
|
import org.thingsboard.server.common.data.alarm.AlarmQuery;
|
||||||
|
import org.thingsboard.server.common.data.alarm.AlarmSeverity;
|
||||||
|
import org.thingsboard.server.common.data.alarm.AlarmStatus;
|
||||||
import org.thingsboard.server.common.data.id.CustomerId;
|
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.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.AlarmDataQuery;
|
import org.thingsboard.server.common.data.query.AlarmDataQuery;
|
||||||
import org.thingsboard.server.dao.Dao;
|
import org.thingsboard.server.dao.Dao;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -48,4 +50,6 @@ public interface AlarmDao extends Dao<Alarm> {
|
|||||||
|
|
||||||
PageData<AlarmData> findAlarmDataByQueryForEntities(TenantId tenantId, CustomerId customerId,
|
PageData<AlarmData> findAlarmDataByQueryForEntities(TenantId tenantId, CustomerId customerId,
|
||||||
AlarmDataQuery query, Collection<EntityId> orderedEntityIds);
|
AlarmDataQuery query, Collection<EntityId> orderedEntityIds);
|
||||||
|
|
||||||
|
Set<AlarmSeverity> findAlarmSeverities(TenantId tenantId, EntityId entityId, Set<AlarmStatus> status);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -52,7 +52,6 @@ import org.thingsboard.server.dao.entity.AbstractEntityService;
|
|||||||
import org.thingsboard.server.dao.entity.EntityService;
|
import org.thingsboard.server.dao.entity.EntityService;
|
||||||
import org.thingsboard.server.dao.exception.DataValidationException;
|
import org.thingsboard.server.dao.exception.DataValidationException;
|
||||||
import org.thingsboard.server.dao.service.DataValidator;
|
import org.thingsboard.server.dao.service.DataValidator;
|
||||||
import org.thingsboard.server.dao.sql.alarm.AlarmRepository;
|
|
||||||
import org.thingsboard.server.dao.tenant.TenantDao;
|
import org.thingsboard.server.dao.tenant.TenantDao;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
@ -61,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;
|
||||||
@ -89,9 +87,6 @@ public class BaseAlarmService extends AbstractEntityService implements AlarmServ
|
|||||||
@Autowired
|
@Autowired
|
||||||
private EntityService entityService;
|
private EntityService entityService;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private AlarmRepository alarmRepository;
|
|
||||||
|
|
||||||
protected ExecutorService readResultsProcessingExecutor;
|
protected ExecutorService readResultsProcessingExecutor;
|
||||||
|
|
||||||
@PostConstruct
|
@PostConstruct
|
||||||
@ -327,7 +322,7 @@ public class BaseAlarmService extends AbstractEntityService implements AlarmServ
|
|||||||
statusList = Collections.singleton(alarmStatus);
|
statusList = Collections.singleton(alarmStatus);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<AlarmSeverity> alarmSeverities = alarmRepository.findHighestAlarmSeverity(tenantId.getId(), entityId.getId(), statusList);
|
Set<AlarmSeverity> alarmSeverities = alarmDao.findAlarmSeverities(tenantId, entityId, statusList);
|
||||||
|
|
||||||
return alarmSeverities.stream().min(AlarmSeverity::compareTo).orElse(null);
|
return alarmSeverities.stream().min(AlarmSeverity::compareTo).orElse(null);
|
||||||
}
|
}
|
||||||
@ -336,16 +331,6 @@ public class BaseAlarmService extends AbstractEntityService implements AlarmServ
|
|||||||
return new AlarmDataQuery(new DeviceTypeFilter(), pageLink, null, null, null, Collections.EMPTY_LIST);
|
return new AlarmDataQuery(new DeviceTypeFilter(), pageLink, null, null, null, Collections.EMPTY_LIST);
|
||||||
}
|
}
|
||||||
|
|
||||||
private AlarmSeverity detectHighestSeverity(List<AlarmData> alarms) {
|
|
||||||
if (!alarms.isEmpty()) {
|
|
||||||
List<AlarmInfo> sorted = new ArrayList(alarms);
|
|
||||||
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) {
|
||||||
log.debug("Deleting Alarm relation: {}", alarmRelation);
|
log.debug("Deleting Alarm relation: {}", alarmRelation);
|
||||||
relationService.deleteRelation(tenantId, alarmRelation);
|
relationService.deleteRelation(tenantId, alarmRelation);
|
||||||
|
|||||||
@ -80,7 +80,7 @@ public interface AlarmRepository extends CrudRepository<AlarmEntity, UUID> {
|
|||||||
" WHERE alarm.tenantId = :tenantId" +
|
" WHERE alarm.tenantId = :tenantId" +
|
||||||
" AND alarm.originatorId = :entityId" +
|
" AND alarm.originatorId = :entityId" +
|
||||||
" AND ((:status) IS NULL OR alarm.status in (:status))")
|
" AND ((:status) IS NULL OR alarm.status in (:status))")
|
||||||
List<AlarmSeverity> findHighestAlarmSeverity(@Param("tenantId") UUID tenantId,
|
Set<AlarmSeverity> findAlarmSeverities(@Param("tenantId") UUID tenantId,
|
||||||
@Param("entityId") UUID entityId,
|
@Param("entityId") UUID entityId,
|
||||||
@Param("status") Set<AlarmStatus> status);
|
@Param("status") Set<AlarmStatus> status);
|
||||||
|
|
||||||
|
|||||||
@ -24,6 +24,7 @@ import org.springframework.stereotype.Component;
|
|||||||
import org.thingsboard.server.common.data.alarm.Alarm;
|
import org.thingsboard.server.common.data.alarm.Alarm;
|
||||||
import org.thingsboard.server.common.data.alarm.AlarmInfo;
|
import org.thingsboard.server.common.data.alarm.AlarmInfo;
|
||||||
import org.thingsboard.server.common.data.alarm.AlarmQuery;
|
import org.thingsboard.server.common.data.alarm.AlarmQuery;
|
||||||
|
import org.thingsboard.server.common.data.alarm.AlarmSeverity;
|
||||||
import org.thingsboard.server.common.data.alarm.AlarmStatus;
|
import org.thingsboard.server.common.data.alarm.AlarmStatus;
|
||||||
import org.thingsboard.server.common.data.id.CustomerId;
|
import org.thingsboard.server.common.data.id.CustomerId;
|
||||||
import org.thingsboard.server.common.data.id.EntityId;
|
import org.thingsboard.server.common.data.id.EntityId;
|
||||||
@ -120,4 +121,9 @@ public class JpaAlarmDao extends JpaAbstractDao<AlarmEntity, Alarm> implements A
|
|||||||
public PageData<AlarmData> findAlarmDataByQueryForEntities(TenantId tenantId, CustomerId customerId, AlarmDataQuery query, Collection<EntityId> orderedEntityIds) {
|
public PageData<AlarmData> findAlarmDataByQueryForEntities(TenantId tenantId, CustomerId customerId, AlarmDataQuery query, Collection<EntityId> orderedEntityIds) {
|
||||||
return alarmQueryRepository.findAlarmDataByQueryForEntities(tenantId, customerId, query, orderedEntityIds);
|
return alarmQueryRepository.findAlarmDataByQueryForEntities(tenantId, customerId, query, orderedEntityIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<AlarmSeverity> findAlarmSeverities(TenantId tenantId, EntityId entityId, Set<AlarmStatus> status) {
|
||||||
|
return alarmRepository.findAlarmSeverities(tenantId.getId(), entityId.getId(), status);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -368,38 +368,35 @@ public abstract class BaseAlarmServiceTest extends AbstractServiceTest {
|
|||||||
customerDevice.setCustomerId(customer.getId());
|
customerDevice.setCustomerId(customer.getId());
|
||||||
customerDevice = deviceService.saveDevice(customerDevice);
|
customerDevice = deviceService.saveDevice(customerDevice);
|
||||||
|
|
||||||
long ts = System.currentTimeMillis();
|
|
||||||
Alarm alarm1 = Alarm.builder()
|
Alarm alarm1 = Alarm.builder()
|
||||||
.tenantId(tenantId)
|
.tenantId(tenantId)
|
||||||
.originator(customerDevice.getId())
|
.originator(customerDevice.getId())
|
||||||
.type(TEST_ALARM)
|
.type(TEST_ALARM)
|
||||||
.severity(AlarmSeverity.MAJOR)
|
.severity(AlarmSeverity.MAJOR)
|
||||||
.status(AlarmStatus.ACTIVE_UNACK)
|
.status(AlarmStatus.ACTIVE_UNACK)
|
||||||
.startTs(ts)
|
.startTs(System.currentTimeMillis())
|
||||||
.build();
|
.build();
|
||||||
alarm1 = alarmService.createOrUpdateAlarm(alarm1).getAlarm();
|
alarm1 = alarmService.createOrUpdateAlarm(alarm1).getAlarm();
|
||||||
alarmService.clearAlarm(tenantId, alarm1.getId(), null, System.currentTimeMillis()).get();
|
alarmService.clearAlarm(tenantId, alarm1.getId(), null, System.currentTimeMillis()).get();
|
||||||
|
|
||||||
ts = System.currentTimeMillis();
|
|
||||||
Alarm alarm2 = Alarm.builder()
|
Alarm alarm2 = Alarm.builder()
|
||||||
.tenantId(tenantId)
|
.tenantId(tenantId)
|
||||||
.originator(customerDevice.getId())
|
.originator(customerDevice.getId())
|
||||||
.type(TEST_ALARM)
|
.type(TEST_ALARM)
|
||||||
.severity(AlarmSeverity.MINOR)
|
.severity(AlarmSeverity.MINOR)
|
||||||
.status(AlarmStatus.ACTIVE_ACK)
|
.status(AlarmStatus.ACTIVE_ACK)
|
||||||
.startTs(ts)
|
.startTs(System.currentTimeMillis())
|
||||||
.build();
|
.build();
|
||||||
alarm2 = alarmService.createOrUpdateAlarm(alarm2).getAlarm();
|
alarm2 = alarmService.createOrUpdateAlarm(alarm2).getAlarm();
|
||||||
alarmService.clearAlarm(tenantId, alarm2.getId(), null, System.currentTimeMillis()).get();
|
alarmService.clearAlarm(tenantId, alarm2.getId(), null, System.currentTimeMillis()).get();
|
||||||
|
|
||||||
ts = System.currentTimeMillis();
|
|
||||||
Alarm alarm3 = Alarm.builder()
|
Alarm alarm3 = Alarm.builder()
|
||||||
.tenantId(tenantId)
|
.tenantId(tenantId)
|
||||||
.originator(customerDevice.getId())
|
.originator(customerDevice.getId())
|
||||||
.type(TEST_ALARM)
|
.type(TEST_ALARM)
|
||||||
.severity(AlarmSeverity.CRITICAL)
|
.severity(AlarmSeverity.CRITICAL)
|
||||||
.status(AlarmStatus.ACTIVE_ACK)
|
.status(AlarmStatus.ACTIVE_ACK)
|
||||||
.startTs(ts)
|
.startTs(System.currentTimeMillis())
|
||||||
.build();
|
.build();
|
||||||
alarm3 = alarmService.createOrUpdateAlarm(alarm3).getAlarm();
|
alarm3 = alarmService.createOrUpdateAlarm(alarm3).getAlarm();
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user