Merge pull request #13070 from dashevchenko/diffTypeComparison

Different data type comparison
This commit is contained in:
Andrew Shvayka 2025-04-03 14:03:46 +04:00 committed by GitHub
commit f1812a4722
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 32 additions and 9 deletions

View File

@ -95,7 +95,6 @@ import org.thingsboard.server.dao.edge.EdgeService;
import org.thingsboard.server.dao.entity.EntityService;
import org.thingsboard.server.dao.entityview.EntityViewDao;
import org.thingsboard.server.dao.entityview.EntityViewService;
import org.thingsboard.server.dao.model.sqlts.ts.TsKvEntity;
import org.thingsboard.server.dao.relation.RelationService;
import org.thingsboard.server.dao.service.DaoSqlTest;
import org.thingsboard.server.dao.sql.relation.RelationRepository;
@ -1664,7 +1663,7 @@ public class EntityServiceTest extends AbstractControllerTest {
List<ListenableFuture<TimeseriesSaveResult>> timeseriesFutures = new ArrayList<>();
for (int i = 0; i < devices.size(); i++) {
Device device = devices.get(i);
timeseriesFutures.add(saveLongTimeseries(device.getId(), "temperature", temperatures.get(i)));
timeseriesFutures.add(saveTimeseries(device.getId(), "temperature", temperatures.get(i)));
}
Futures.allAsList(timeseriesFutures).get();
@ -1711,6 +1710,13 @@ public class EntityServiceTest extends AbstractControllerTest {
List<String> entitiesTelemetry = loadedEntities.stream().map(entityData -> entityData.getLatest().get(EntityKeyType.TIME_SERIES).get("temperature").getValue()).toList();
assertThat(entitiesTelemetry).containsExactlyElementsOf(expectedSortedList);
// update temperature to long value for one of device
long longTempValue = -100L;
saveTimeseries(devices.get(new Random().nextInt(66)).getId(), "temperature", longTempValue).get();
loadedEntities = loadAllData(querySortByTemp, deviceTemperatures.size());
entitiesTelemetry = loadedEntities.stream().map(entityData -> entityData.getLatest().get(EntityKeyType.TIME_SERIES).get("temperature").getValue()).toList();
assertThat(entitiesTelemetry.get(0)).isEqualTo(String.valueOf(longTempValue));
deviceService.deleteDevicesByTenantId(tenantId);
}
@ -2252,15 +2258,18 @@ public class EntityServiceTest extends AbstractControllerTest {
return attributesService.save(tenantId, entityId, scope, Collections.singletonList(attr));
}
private ListenableFuture<TimeseriesSaveResult> saveLongTimeseries(EntityId entityId, String key, Double value) {
TsKvEntity tsKv = new TsKvEntity();
tsKv.setStrKey(key);
tsKv.setDoubleValue(value);
private ListenableFuture<TimeseriesSaveResult> saveTimeseries(EntityId entityId, String key, Double value) {
KvEntry telemetryValue = new DoubleDataEntry(key, value);
BasicTsKvEntry timeseries = new BasicTsKvEntry(42L, telemetryValue);
return timeseriesService.save(tenantId, entityId, timeseries);
}
private ListenableFuture<TimeseriesSaveResult> saveTimeseries(EntityId entityId, String key, Long value) {
KvEntry telemetryValue = new LongDataEntry(key, value);
BasicTsKvEntry timeseries = new BasicTsKvEntry(42L, telemetryValue);
return timeseriesService.save(tenantId, entityId, timeseries);
}
protected void createMultiRootHierarchy(List<Asset> buildings, List<Asset> apartments,
Map<String, Map<UUID, String>> entityNameByTypeMap,
Map<UUID, UUID> childParentRelationMap) throws InterruptedException {

View File

@ -46,6 +46,10 @@ public class BoolDataPoint extends AbstractDataPoint {
@Override
public int compareTo(DataPoint dataPoint) {
return Boolean.compare(value, dataPoint.getBool());
if (dataPoint.getType() == DataType.BOOLEAN) {
return Boolean.compare(value, dataPoint.getBool());
} else {
return super.compareTo(dataPoint);
}
}
}

View File

@ -46,6 +46,10 @@ public class DoubleDataPoint extends AbstractDataPoint {
@Override
public int compareTo(DataPoint dataPoint) {
return Double.compare(value, dataPoint.getDouble());
if (dataPoint.getType() == DataType.DOUBLE || dataPoint.getType() == DataType.LONG) {
return Double.compare(value, dataPoint.getDouble());
} else {
return super.compareTo(dataPoint);
}
}
}

View File

@ -51,6 +51,12 @@ public class LongDataPoint extends AbstractDataPoint {
@Override
public int compareTo(DataPoint dataPoint) {
return Long.compare(value, dataPoint.getLong());
if (dataPoint.getType() == DataType.DOUBLE) {
return Double.compare(getDouble(), dataPoint.getDouble());
} else if (dataPoint.getType() == DataType.LONG) {
return Long.compare(value, dataPoint.getLong());
} else {
return super.compareTo(dataPoint);
}
}
}