diff --git a/application/src/main/java/org/thingsboard/server/service/subscription/DefaultTbEntityDataSubscriptionService.java b/application/src/main/java/org/thingsboard/server/service/subscription/DefaultTbEntityDataSubscriptionService.java index 4a9dba3264..a5a45be5b2 100644 --- a/application/src/main/java/org/thingsboard/server/service/subscription/DefaultTbEntityDataSubscriptionService.java +++ b/application/src/main/java/org/thingsboard/server/service/subscription/DefaultTbEntityDataSubscriptionService.java @@ -314,9 +314,9 @@ public class DefaultTbEntityDataSubscriptionService implements TbEntityDataSubsc ReadTsKvQueryInfo queryInfo = queries.get(queryResult.getQueryId()); ComparisonTsValue comparisonTsValue = entityData.getAggLatest().computeIfAbsent(queryInfo.getKey().getId(), agg -> new ComparisonTsValue()); if (queryInfo.isPrevious()) { - comparisonTsValue.setPrevious(queryResult.toTsValue()); + comparisonTsValue.setPrevious(queryResult.toTsValue(queryInfo.getQuery())); } else { - comparisonTsValue.setCurrent(queryResult.toTsValue()); + comparisonTsValue.setCurrent(queryResult.toTsValue(queryInfo.getQuery())); lastTsMap.put(queryInfo.getQuery().getKey(), queryResult.getLastEntryTs()); } } diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/kv/ReadTsKvQueryResult.java b/common/data/src/main/java/org/thingsboard/server/common/data/kv/ReadTsKvQueryResult.java index 9c7a2f1754..8991127c78 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/kv/ReadTsKvQueryResult.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/kv/ReadTsKvQueryResult.java @@ -42,9 +42,14 @@ public class ReadTsKvQueryResult { } } - public TsValue toTsValue() { + public TsValue toTsValue(ReadTsKvQuery query) { if (data == null || data.isEmpty()) { - return TsValue.EMPTY; + if (Aggregation.SUM.equals(query.getAggregation()) || Aggregation.COUNT.equals(query.getAggregation())) { + long ts = query.getStartTs() + (query.getEndTs() - query.getStartTs()) / 2; + return new TsValue(ts, "0"); + } else { + return TsValue.EMPTY; + } } if (data.size() > 1) { throw new RuntimeException("Query Result has multiple data points!"); diff --git a/ui-ngx/src/app/core/api/entity-data-subscription.ts b/ui-ngx/src/app/core/api/entity-data-subscription.ts index 4dc0e7c4e1..3d176fc841 100644 --- a/ui-ngx/src/app/core/api/entity-data-subscription.ts +++ b/ui-ngx/src/app/core/api/entity-data-subscription.ts @@ -165,7 +165,11 @@ export class EntityDataSubscription { if (key.comparisonResultType === ComparisonResultType.DELTA_ABSOLUTE) { value = currentVal - prevVal; } else { - value = (currentVal - prevVal) / prevVal * 100; + if(prevVal === 0){ + value = 100; + } else { + value = (currentVal - prevVal) / prevVal * 100; + } } } else { value = '';