Browse Source

fixed telemetry update handling for all keys

pull/13025/head
dashevchenko 1 year ago
parent
commit
3f13fbd23f
  1. 27
      application/src/main/java/org/thingsboard/server/service/subscription/DefaultTbLocalSubscriptionService.java

27
application/src/main/java/org/thingsboard/server/service/subscription/DefaultTbLocalSubscriptionService.java

@ -343,13 +343,28 @@ public class DefaultTbLocalSubscriptionService implements TbLocalSubscriptionSer
s -> {
TbTimeSeriesSubscription sub = (TbTimeSeriesSubscription) s;
List<TsKvEntry> updateData = null;
for (TsKvEntry kv : data) {
if (sub.getKeyStates().containsKey((kv.getKey()))) {
if (!sub.isLatestValues() || kv.getTs() > sub.getKeyStates().get(kv.getKey())) {
if (updateData == null) {
updateData = new ArrayList<>();
if (sub.isAllKeys()) {
if (sub.isLatestValues()) {
for (TsKvEntry kv : data) {
if (!sub.getKeyStates().containsKey((kv.getKey())) || kv.getTs() > sub.getKeyStates().get(kv.getKey())) {
if (updateData == null) {
updateData = new ArrayList<>();
}
updateData.add(kv);
}
}
} else {
updateData = data;
}
} else {
for (TsKvEntry kv : data) {
if (sub.getKeyStates().containsKey((kv.getKey()))) {
if (!sub.isLatestValues() || kv.getTs() > sub.getKeyStates().get(kv.getKey())) {
if (updateData == null) {
updateData = new ArrayList<>();
}
updateData.add(kv);
}
updateData.add(kv);
}
}
}

Loading…
Cancel
Save