From c84806dc721cedbfd12ff513c05b17ba88b679dd Mon Sep 17 00:00:00 2001
From: 潘志宝 <979469083@qq.com>
Date: 星期三, 14 五月 2025 15:26:35 +0800
Subject: [PATCH] 极值点处理类

---
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/influxdb/service/impl/InfluxDBServiceImpl.java |   54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 54 insertions(+), 0 deletions(-)

diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/influxdb/service/impl/InfluxDBServiceImpl.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/influxdb/service/impl/InfluxDBServiceImpl.java
index efff0f2..177cd65 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/influxdb/service/impl/InfluxDBServiceImpl.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/influxdb/service/impl/InfluxDBServiceImpl.java
@@ -335,6 +335,60 @@
     }
 
     @Override
+    public Object queryPointMaxValueRange(InfluxPointValuePOJO point, Date startTime, Date endTime) {
+        if (influxQLQueryApi == null) {
+            influxQLQueryApi = influxDBInstance.getClient().getInfluxQLQueryApi();
+        }
+        long utcMillisS = startTime.getTime() - rawOffset;
+        String utsStart = DateUtils.format(new Date(utcMillisS), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND);
+        log.info("utsStart=" + utsStart);
+        long utcMillisE = endTime.getTime() - rawOffset;
+        String utsEnd = DateUtils.format(new Date(utcMillisE), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND);
+        log.info("utsEnd=" + utsEnd);
+
+        String measurement = PointValueUtils.getMeasurement(point.getType());
+        StringBuilder sql = new StringBuilder();
+        sql.append("SELECT MAX(value) FROM ");
+        sql.append(measurement);
+        sql.append(" WHERE point = '");
+        sql.append(point.getPoint());
+        sql.append("' AND time >= '" + utsStart + "'");
+        sql.append("' AND time <= '" + utsEnd + "'");
+        InfluxQLQueryResult data = influxQLQueryApi.query(new InfluxQLQuery(sql.toString(), influxDBInstance.getBucket()));
+        if (data == null) {
+            return null;
+        }
+        return data.getResults().get(0).getSeries().get(0).getValues().get(0).getValues()[1];
+    }
+
+    @Override
+    public Object queryPointMinValueRange(InfluxPointValuePOJO point, Date startTime, Date endTime) {
+        if (influxQLQueryApi == null) {
+            influxQLQueryApi = influxDBInstance.getClient().getInfluxQLQueryApi();
+        }
+        long utcMillisS = startTime.getTime() - rawOffset;
+        String utsStart = DateUtils.format(new Date(utcMillisS), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND);
+        log.info("utsStart=" + utsStart);
+        long utcMillisE = endTime.getTime() - rawOffset;
+        String utsEnd = DateUtils.format(new Date(utcMillisE), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND);
+        log.info("utsEnd=" + utsEnd);
+
+        String measurement = PointValueUtils.getMeasurement(point.getType());
+        StringBuilder sql = new StringBuilder();
+        sql.append("SELECT MIN(value) FROM ");
+        sql.append(measurement);
+        sql.append(" WHERE point = '");
+        sql.append(point.getPoint());
+        sql.append("' AND time >= '" + utsStart + "'");
+        sql.append("' AND time <= '" + utsEnd + "'");
+        InfluxQLQueryResult data = influxQLQueryApi.query(new InfluxQLQuery(sql.toString(), influxDBInstance.getBucket()));
+        if (data == null) {
+            return null;
+        }
+        return data.getResults().get(0).getSeries().get(0).getValues().get(0).getValues()[1];
+    }
+
+    @Override
     public List<Map<String, Object>> queryPointValues(InfluxPointValuePOJO pojo, Date startTime, Date endTime) {
         List<InfluxPointValuePOJO> influxParams = new ArrayList<>();
         influxParams.add(pojo);

--
Gitblit v1.9.3