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