zhouhao %!s(int64=5) %!d(string=hai) anos
pai
achega
752970470b

+ 14 - 12
jetlinks-components/elasticsearch-component/src/main/java/org/jetlinks/community/elastic/search/timeseries/ElasticSearchTimeSeriesService.java

@@ -10,6 +10,7 @@ import org.jetlinks.community.timeseries.TimeSeriesData;
 import org.jetlinks.community.timeseries.TimeSeriesService;
 import org.jetlinks.community.timeseries.query.AggregationData;
 import org.jetlinks.community.timeseries.query.AggregationQueryParam;
+import org.jetlinks.core.metadata.types.DateTimeType;
 import org.reactivestreams.Publisher;
 import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
@@ -27,9 +28,11 @@ public class ElasticSearchTimeSeriesService implements TimeSeriesService {
 
     private AggregationService aggregationService;
 
+    static DateTimeType timeType=new DateTimeType();
+
     @Override
     public Flux<TimeSeriesData> query(QueryParam queryParam) {
-        return elasticSearchService.query(index, queryParam, map -> TimeSeriesData.of((Long) map.get("timestamp"), map));
+        return elasticSearchService.query(index, queryParam, map -> TimeSeriesData.of(timeType.convert(map.get("timestamp")), map));
     }
 
     @Override
@@ -39,6 +42,16 @@ public class ElasticSearchTimeSeriesService implements TimeSeriesService {
             .map(Long::intValue);
     }
 
+    @Override
+    public Mono<PagerResult<TimeSeriesData>> queryPager(QueryParam queryParam) {
+        return elasticSearchService.queryPager(index, queryParam, map -> TimeSeriesData.of(timeType.convert(map.get("timestamp")), map));
+    }
+
+    @Override
+    public <T> Mono<PagerResult<T>> queryPager(QueryParam queryParam, Function<TimeSeriesData, T> mapper) {
+        return elasticSearchService.queryPager(index, queryParam, map -> mapper.apply(TimeSeriesData.of(timeType.convert(map.get("timestamp")), map)));
+    }
+
     @Override
     public Flux<AggregationData> aggregation(AggregationQueryParam queryParam) {
         return aggregationService
@@ -51,17 +64,6 @@ public class ElasticSearchTimeSeriesService implements TimeSeriesService {
 
     }
 
-    @Override
-    public Mono<PagerResult<TimeSeriesData>> queryPager(QueryParam queryParam) {
-        return elasticSearchService.queryPager(index, queryParam, map -> TimeSeriesData.of((Long) map.get("timestamp"), map));
-    }
-
-    @Override
-    public <T> Mono<PagerResult<T>> queryPager(QueryParam queryParam, Function<TimeSeriesData, T> mapper) {
-        return elasticSearchService.queryPager(index, queryParam, map -> mapper.apply(TimeSeriesData.of((Long) map.get("timestamp"), map)));
-    }
-
-
     @Override
     public Mono<Void> save(Publisher<TimeSeriesData> data) {
         return Flux.from(data)

+ 10 - 5
jetlinks-components/elasticsearch-component/src/main/java/org/jetlinks/community/elastic/search/utils/ElasticSearchConverter.java

@@ -36,11 +36,11 @@ public class ElasticSearchConverter {
                 geoData.put("lat", point.getLat());
                 geoData.put("lon", point.getLon());
                 data.put(property.getId(), geoData);
-            }if (type instanceof DateTimeType) {
-                Date point = ((DateTimeType) type).convert(val);
-                data.put(property.getId(), point.getTime());
-            }  else if (type instanceof Converter) {
-                data.put(property.getId(), ((Converter) type).convert(val));
+            } else if (type instanceof DateTimeType) {
+                Date date = ((DateTimeType) type).convert(val);
+                data.put(property.getId(), date.getTime());
+            } else if (type instanceof Converter) {
+                data.put(property.getId(), ((Converter<?>) type).convert(val));
             }
         }
         return data;
@@ -56,6 +56,11 @@ public class ElasticSearchConverter {
             //处理地理位置类型
             if (type instanceof GeoType) {
                 data.put(property.getId(), ((GeoType) type).convertToMap(val));
+            } else if (type instanceof DateTimeType) {
+                Date date = ((DateTimeType) type).convert(val);
+                data.put(property.getId(), date);
+            } else if (type instanceof Converter) {
+                data.put(property.getId(), ((Converter<?>) type).convert(val));
             }
         }
         return data;

+ 5 - 0
jetlinks-components/timeseries-component/src/main/java/org/jetlinks/community/timeseries/TimeSeriesData.java

@@ -3,6 +3,7 @@ package org.jetlinks.community.timeseries;
 import org.hswebframework.web.bean.FastBeanCopier;
 import org.jetlinks.community.ValueObject;
 
+import java.util.Date;
 import java.util.Map;
 import java.util.Optional;
 
@@ -17,6 +18,10 @@ public interface TimeSeriesData extends ValueObject {
         return Optional.ofNullable(getData().get(name));
     }
 
+    static TimeSeriesData of(Date date, Map<String, Object> data) {
+        return of(date == null ? System.currentTimeMillis() : date.getTime(), data);
+    }
+
     static TimeSeriesData of(long timestamp, Map<String, Object> data) {
         return new SimpleTimeSeriesData(timestamp, data);
     }

+ 4 - 2
jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/timeseries/DeviceEventTimeSeriesMetadata.java

@@ -49,8 +49,10 @@ class DeviceEventTimeSeriesMetadata implements TimeSeriesMetadata {
     public DeviceEventTimeSeriesMetadata(String productId, EventMetadata eventMetadata) {
         metric = DeviceTimeSeriesMetric.deviceEventMetric(productId, eventMetadata.getId());
         DataType type = eventMetadata.getType();
-        if (CollectionUtils.isNotEmpty(((ObjectType) type).getProperties())) {
-            metadata.addAll(((ObjectType) type).getProperties());
+        if (type instanceof ObjectType) {
+            if (CollectionUtils.isNotEmpty(((ObjectType) type).getProperties())) {
+                metadata.addAll(((ObjectType) type).getProperties());
+            }
         } else {
             SimplePropertyMetadata property = new SimplePropertyMetadata();
             property.setId("value");