Browse Source

Changed alarms unassign method to returen ids instead of Alarm objects and changed to use entity from deleted entity event

pull/9035/head
imbeacon 3 years ago
parent
commit
328d53dffc
  1. 18
      application/src/main/java/org/thingsboard/server/service/entitiy/alarm/DefaultTbAlarmService.java
  2. 2
      common/dao-api/src/main/java/org/thingsboard/server/dao/alarm/AlarmService.java
  3. 2
      dao/src/main/java/org/thingsboard/server/dao/alarm/AlarmDao.java
  4. 6
      dao/src/main/java/org/thingsboard/server/dao/alarm/BaseAlarmService.java
  5. 4
      dao/src/main/java/org/thingsboard/server/dao/sql/alarm/AlarmRepository.java
  6. 7
      dao/src/main/java/org/thingsboard/server/dao/sql/alarm/JpaAlarmDao.java

18
application/src/main/java/org/thingsboard/server/service/entitiy/alarm/DefaultTbAlarmService.java

@ -34,6 +34,7 @@ import org.thingsboard.server.common.data.alarm.AlarmUpdateRequest;
import org.thingsboard.server.common.data.audit.ActionType;
import org.thingsboard.server.common.data.exception.ThingsboardErrorCode;
import org.thingsboard.server.common.data.exception.ThingsboardException;
import org.thingsboard.server.common.data.id.AlarmId;
import org.thingsboard.server.common.data.id.EntityId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.id.UserId;
@ -226,22 +227,23 @@ public class DefaultTbAlarmService extends AbstractTbEntityService implements Tb
return alarmSubscriptionService.deleteAlarm(tenantId, alarm.getId());
}
private void unassignDeletedUserAlarms(UserId userId) {
List<Alarm> alarms = alarmService.findAlarmsByAssigneeId(userId);
for (Alarm alarm : alarms) {
AlarmApiCallResult result = alarmSubscriptionService.unassignAlarm(alarm.getTenantId(), alarm.getId(), System.currentTimeMillis());
private void unassignDeletedUserAlarms(User user) {
List<AlarmId> alarmIds = alarmService.findAlarmIdsByAssigneeId(user.getId());
for (AlarmId alarmId : alarmIds) {
AlarmApiCallResult result = alarmSubscriptionService.unassignAlarm(user.getTenantId(), alarmId, System.currentTimeMillis());
Alarm alarm = result.getAlarm();
if (!result.isSuccessful()) {
continue;
}
if (result.isModified()) {
try {
AlarmComment alarmComment = AlarmComment.builder()
.alarmId(alarm.getId())
.alarmId(alarmId)
.type(AlarmCommentType.SYSTEM)
.comment(JacksonUtil.newObjectNode()
.put("text", String.format("Alarm was unassigned because user with id %s - was deleted",
userId.toString()))
.put("userId", userId.toString())
(user.getFirstName() == null || user.getLastName() == null) ? user.getName() : user.getFirstName() + " " + user.getLastName()))
.put("userId", user.getId().toString())
.put("subtype", "ASSIGN"))
.build();
alarmCommentService.saveAlarmComment(alarm, alarmComment, null);
@ -260,7 +262,7 @@ public class DefaultTbAlarmService extends AbstractTbEntityService implements Tb
log.trace("[{}] DeleteEntityEvent called: {}", event.getTenantId(), event);
EntityId entityId = event.getEntityId();
if (EntityType.USER.equals(entityId.getEntityType())) {
unassignDeletedUserAlarms((UserId) entityId);
unassignDeletedUserAlarms((User) event.getEntity());
}
} catch (Exception e) {
log.error("[{}] failed to process DeleteEntityEvent: {}", event.getTenantId(), event);

2
common/dao-api/src/main/java/org/thingsboard/server/dao/alarm/AlarmService.java

@ -119,7 +119,7 @@ public interface AlarmService extends EntityDaoService {
PageData<AlarmData> findAlarmDataByQueryForEntities(TenantId tenantId,
AlarmDataQuery query, Collection<EntityId> orderedEntityIds);
List<Alarm> findAlarmsByAssigneeId(UserId userId);
List<AlarmId> findAlarmIdsByAssigneeId(UserId userId);
void deleteEntityAlarmRelations(TenantId tenantId, EntityId entityId);

2
dao/src/main/java/org/thingsboard/server/dao/alarm/AlarmDao.java

@ -77,7 +77,7 @@ public interface AlarmDao extends Dao<Alarm> {
PageData<AlarmId> findAlarmsIdsByEndTsBeforeAndTenantId(Long time, TenantId tenantId, PageLink pageLink);
List<Alarm> findAlarmByAssigneeId(UUID key);
List<AlarmId> findAlarmIdsByAssigneeId(UUID key);
void createEntityAlarmRecord(EntityAlarm entityAlarm);

6
dao/src/main/java/org/thingsboard/server/dao/alarm/BaseAlarmService.java

@ -385,10 +385,10 @@ public class BaseAlarmService extends AbstractEntityService implements AlarmServ
}
@Override
public List<Alarm> findAlarmsByAssigneeId(UserId userId) {
log.trace("Executing findAlarmsByAssigneeId [{}]", userId);
public List<AlarmId> findAlarmIdsByAssigneeId(UserId userId) {
log.trace("Executing findAlarmIdsByAssigneeId [{}]", userId);
validateId(userId, "Incorrect alarmId " + userId);
return alarmDao.findAlarmByAssigneeId(userId.getId());
return alarmDao.findAlarmIdsByAssigneeId(userId.getId());
}
@Override

4
dao/src/main/java/org/thingsboard/server/dao/sql/alarm/AlarmRepository.java

@ -315,8 +315,8 @@ public interface AlarmRepository extends JpaRepository<AlarmEntity, UUID> {
@Query(value = "SELECT a FROM AlarmInfoEntity a WHERE a.tenantId = :tenantId AND a.id = :alarmId")
AlarmInfoEntity findAlarmInfoById(@Param("tenantId") UUID tenantId, @Param("alarmId") UUID alarmId);
@Query("SELECT a FROM AlarmEntity a WHERE a.assigneeId = :assigneeId")
List<AlarmEntity> findAlarmByAssigneeId(@Param("assigneeId") UUID assigneeId);
@Query("SELECT a.id FROM AlarmEntity a WHERE a.assigneeId = :assigneeId")
List<UUID> findAlarmIdsByAssigneeId(@Param("assigneeId") UUID assigneeId);
@Query(value = "SELECT create_or_update_active_alarm(:t_id, :c_id, :a_id, :a_created_ts, :a_o_id, :a_o_type, :a_type, :a_severity, " +
":a_start_ts, :a_end_ts, :a_details, :a_propagate, :a_propagate_to_owner, " +

7
dao/src/main/java/org/thingsboard/server/dao/sql/alarm/JpaAlarmDao.java

@ -66,6 +66,7 @@ import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.UUID;
import java.util.stream.Collectors;
/**
* Created by Valerii Sosliuk on 5/19/2017.
@ -286,9 +287,9 @@ public class JpaAlarmDao extends JpaAbstractDao<AlarmEntity, Alarm> implements A
}
@Override
public List<Alarm> findAlarmByAssigneeId(UUID key) {
List<AlarmEntity> assignedAlarms = alarmRepository.findAlarmByAssigneeId(key);
return DaoUtil.convertDataList(assignedAlarms);
public List<AlarmId> findAlarmIdsByAssigneeId(UUID key) {
List<UUID> assignedAlarmIds = alarmRepository.findAlarmIdsByAssigneeId(key);
return assignedAlarmIds.stream().map(AlarmId::new).collect(Collectors.toList());
}
@Override

Loading…
Cancel
Save