diff --git a/jetlinks-components/tdengine-component/src/main/java/org/jetlinks/community/tdengine/things/TDengineThingDataHelper.java b/jetlinks-components/tdengine-component/src/main/java/org/jetlinks/community/tdengine/things/TDengineThingDataHelper.java index 5bc7c685..1b9d775b 100644 --- a/jetlinks-components/tdengine-component/src/main/java/org/jetlinks/community/tdengine/things/TDengineThingDataHelper.java +++ b/jetlinks-components/tdengine-component/src/main/java/org/jetlinks/community/tdengine/things/TDengineThingDataHelper.java @@ -14,6 +14,7 @@ import org.hswebframework.web.exception.BusinessException; import org.jetlinks.community.tdengine.TDEngineUtils; import org.jetlinks.community.tdengine.term.TDengineQueryConditionBuilder; import org.jetlinks.community.things.data.ThingsDataConstants; +import org.jetlinks.community.things.utils.ThingsDatabaseUtils; import org.jetlinks.core.metadata.Converter; import org.jetlinks.core.metadata.DataType; import org.jetlinks.community.Interval; @@ -100,11 +101,7 @@ class TDengineThingDataHelper implements Disposable { .getColumn(metric, term.getColumn()) .ifPresent(meta -> { DataType type = meta.getValueType(); - if (isArrayTerm(type, term)) { - term.setValue(tryConvertList(type, term)); - } else if (type instanceof Converter) { - term.setValue(((Converter) type).convert(term.getValue())); - } + ThingsDatabaseUtils.tryConvertTermValue(type, term); }); } diff --git a/jetlinks-components/things-component/src/main/java/org/jetlinks/community/things/utils/ThingsDatabaseUtils.java b/jetlinks-components/things-component/src/main/java/org/jetlinks/community/things/utils/ThingsDatabaseUtils.java index 4f5195c0..5f72b283 100644 --- a/jetlinks-components/things-component/src/main/java/org/jetlinks/community/things/utils/ThingsDatabaseUtils.java +++ b/jetlinks-components/things-component/src/main/java/org/jetlinks/community/things/utils/ThingsDatabaseUtils.java @@ -10,6 +10,8 @@ import org.hswebframework.ezorm.rdb.codec.NumberValueCodec; import org.hswebframework.ezorm.rdb.metadata.RDBColumnMetadata; import org.jetlinks.community.ConfigMetadataConstants; import org.jetlinks.community.utils.ConverterUtils; +import org.jetlinks.community.utils.TimeUtils; +import org.jetlinks.core.metadata.Converter; import org.jetlinks.core.metadata.DataType; import org.jetlinks.core.metadata.PropertyMetadata; import org.jetlinks.core.metadata.types.*; @@ -208,6 +210,33 @@ public class ThingsDatabaseUtils { } } + public static void tryConvertTermValue(DataType type, + Term term, + BiFunction tryConvertTermValue) { + tryConvertTermValue(type, + term, + ThingsDatabaseUtils::isDoNotConvertValue, + ThingsDatabaseUtils::maybeList, + tryConvertTermValue); + } + + public static void tryConvertTermValue(DataType type, + Term term) { + tryConvertTermValue(type, + term, + ThingsDatabaseUtils::tryConvertTermValue); + } + + public static Object tryConvertTermValue(DataType type, Object value) { + if (type instanceof DateTimeType) { + return TimeUtils.convertToDate(value).getTime(); + } else if (type instanceof Converter) { + return ((Converter) type).convert(value); + } + return value; + } + + public static void tryConvertTermValue(DataType type, Term term, BiPredicate isDoNotConvertValue,