Bladeren bron

feat(增加小程序获取导出时间间隔单位接口,修正导出数据时不兼容5m与10m的情况): 增加小程序获取导出时间间隔单位接口,修正导出数据时不兼容5m与10m的情况

增加小程序获取导出时间间隔单位接口,修正导出数据时不兼容5m与10m的情况
zjian 1 week geleden
bovenliggende
commit
184109cbd2

+ 18 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/app/controller/AppController.java

@@ -1,8 +1,10 @@
 package vip.xiaonuo.coldchain.modular.app.controller;
 
 import cn.hutool.core.io.resource.InputStreamResource;
+import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.jfcloud.influxdb.flux.AggregationWindow;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import jakarta.annotation.Resource;
@@ -25,9 +27,11 @@ import vip.xiaonuo.common.exception.CommonException;
 import vip.xiaonuo.common.pojo.CommonResult;
 
 import java.io.IOException;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 @Tag(name = "APP移动端控制器")
 @RestController
@@ -169,4 +173,18 @@ public class AppController {
     public CommonResult<CountEntity> getIndexCount() {
         return CommonResult.data(monitorDeviceService.getIndexCount());
     }
+
+    @Operation(summary = "获取统计间隔单位")
+    @GetMapping("/device/aggregationWindow")
+    public CommonResult<List<Map>> getAggregationWindow(){
+        //从枚举获取时间单位间隔
+        List<Map> datas = Arrays.stream(AggregationWindow.values())
+                .filter(a -> !a.equals(AggregationWindow.DEFAULT) && !a.equals(AggregationWindow.MINUTE))
+                .map(a->{return MapUtil.builder()
+                        .put("value",a.getCode())
+                        .put("label",a.getDescription()).build();
+                })
+                .collect(Collectors.toList());
+        return CommonResult.data(datas);
+    }
 }

+ 6 - 1
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/app/param/SensorDataTransformer.java

@@ -66,7 +66,12 @@ public class SensorDataTransformer {
         LinkedHashSet<String> times = new LinkedHashSet<>();
         List<Float> values = new ArrayList<>();
         sortedData.stream().filter(data -> isValidData(data, dataType)).forEach(data -> {
-            String x = InfluxDBDateFormatter.formatTime(data.getTime(), window);
+            AggregationWindow windowUnit = window;
+            //兼容5分钟与10分钟情况 修正X轴时间格式化单位
+            if(window.name().startsWith("MINUTE")){
+                windowUnit=AggregationWindow.MINUTE;
+            }
+            String x = InfluxDBDateFormatter.formatTime(data.getTime(), windowUnit);
             Float y = SensorDataTransformer.formatFloat(getDataValue(data, dataType));
             if (!times.contains(x)) {
                 times.add(x);