From 34c97425dac2674f616df019f8da91c3902092e0 Mon Sep 17 00:00:00 2001 From: hongawen <83944980@qq.com> Date: Tue, 23 Jan 2024 13:59:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../njcn/influx/config/InfluxDbConfig.java | 3 + .../com/njcn/influx/utils/InfluxDbUtils.java | 109 +++++++++--------- .../influx/utils/InstantDateDeserializer.java | 38 ++++++ .../com/njcn/influx/utils/InstantUtil.java | 13 +++ 4 files changed, 111 insertions(+), 52 deletions(-) create mode 100644 src/main/java/com/njcn/influx/utils/InstantDateDeserializer.java diff --git a/src/main/java/com/njcn/influx/config/InfluxDbConfig.java b/src/main/java/com/njcn/influx/config/InfluxDbConfig.java index 0192019..a16f1c4 100644 --- a/src/main/java/com/njcn/influx/config/InfluxDbConfig.java +++ b/src/main/java/com/njcn/influx/config/InfluxDbConfig.java @@ -5,6 +5,7 @@ import com.njcn.influx.core.InfluxExecutor; import com.njcn.influx.utils.InfluxDbUtils; import lombok.Data; import org.influxdb.InfluxDB; +import org.influxdb.InfluxDBFactory; import org.influxdb.impl.InfluxDBMapper; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.ConfigurableApplicationContext; @@ -42,12 +43,14 @@ public class InfluxDbConfig { @Bean(name = "influxDbMapper") public InfluxDBMapper influxDbMapper(InfluxDB influxDb) { + influxDb = InfluxDBFactory.connect(url, user, password,InfluxDbUtils.client); influxDb.setLogLevel(InfluxDB.LogLevel.BASIC); return new InfluxDBMapper(influxDb); } @Bean(name = "influxDbExecutor") public InfluxExecutor executor(InfluxDB influxDb, InfluxDBMapper influxDbMapper) { + influxDb = InfluxDBFactory.connect(url, user, password,InfluxDbUtils.client); return new InfluxExecutor(influxDb, influxDbMapper,database); } diff --git a/src/main/java/com/njcn/influx/utils/InfluxDbUtils.java b/src/main/java/com/njcn/influx/utils/InfluxDbUtils.java index 3e02395..e70fa08 100644 --- a/src/main/java/com/njcn/influx/utils/InfluxDbUtils.java +++ b/src/main/java/com/njcn/influx/utils/InfluxDbUtils.java @@ -32,8 +32,8 @@ import java.util.concurrent.TimeUnit; @Slf4j @Data public class InfluxDbUtils { - static OkHttpClient.Builder client = new OkHttpClient.Builder() - .connectTimeout(1000,TimeUnit.SECONDS) + public static OkHttpClient.Builder client = new OkHttpClient.Builder() + .connectTimeout(1000, TimeUnit.SECONDS) .readTimeout(1000, TimeUnit.SECONDS) .writeTimeout(1000, TimeUnit.SECONDS); private static final int FRACTION_MIN_WIDTH = 0; @@ -45,15 +45,25 @@ public class InfluxDbUtils { .appendZoneOrOffsetId() .toFormatter(); - /**用户名*/ + /** + * 用户名 + */ private String username; - /**密码*/ + /** + * 密码 + */ private String password; - /**链接地址*/ + /** + * 链接地址 + */ private String openurl; - /**数据库*/ + /** + * 数据库 + */ private String dbName; - /**保留策略*/ + /** + * 保留策略 + */ private String retentionPolicy; private InfluxDB influxDB; @@ -75,7 +85,7 @@ public class InfluxDbUtils { */ public InfluxDB influxDbBuild() { if (influxDB == null) { - influxDB = InfluxDBFactory.connect(openurl, username, password,client); + influxDB = InfluxDBFactory.connect(openurl, username, password, client); } try { // if (!influxDB.databaseExists(database)) { @@ -92,8 +102,6 @@ public class InfluxDbUtils { } - - /** * 创建数据库 * @@ -153,7 +161,7 @@ public class InfluxDbUtils { /** * 创建默认的保留策略 - * + *

* 策略名:hour,保存天数:30天,保存副本数量:1,设为默认保留策略 */ public void createDefaultRetentionPolicy() { @@ -192,7 +200,6 @@ public class InfluxDbUtils { } - /** * 批量写入测点 * @@ -214,7 +221,7 @@ public class InfluxDbUtils { * @param consistency 一致性 * @param records 要保存的数据(调用BatchPoints.lineProtocol()可得到一条record) */ - public void batchInsert(final String database, final String retentionPolicy, final ConsistencyLevel consistency,TimeUnit timeUnit, final List records) { + public void batchInsert(final String database, final String retentionPolicy, final ConsistencyLevel consistency, TimeUnit timeUnit, final List records) { influxDB.write(database, retentionPolicy, consistency, records); } @@ -264,39 +271,38 @@ public class InfluxDbUtils { } - - - //单条查询语句封装 + /** * 查询结果封装到map - * @param commond 单条sql语句 + * + * @param commond 单条sql语句 * @return 查询结果 */ @Deprecated - public List> getResult(String commond){ + public List> getResult(String commond) { List> retList = new ArrayList<>(); - QueryResult queryResult = influxDB.query(new Query(commond,dbName)); + QueryResult queryResult = influxDB.query(new Query(commond, dbName)); List results = queryResult.getResults(); - if (results==null||results.isEmpty()){ + if (results == null || results.isEmpty()) { return retList; } - QueryResult.Result result = results.get(0); + QueryResult.Result result = results.get(0); List seriess = result.getSeries(); - if (seriess==null||seriess.isEmpty()){ + if (seriess == null || seriess.isEmpty()) { return retList; } QueryResult.Series series = seriess.get(0); List columns = series.getColumns(); List> values = series.getValues(); - for (List columnValue :values){ + for (List columnValue : values) { Map map = new HashMap<>(1); - for (int i=0;i> getResult(String commond, String type){ + public List> getResult(String commond, String type) { List> retList = new ArrayList<>(); - QueryResult queryResult = influxDB.query(new Query(commond,dbName)); + QueryResult queryResult = influxDB.query(new Query(commond, dbName)); List results = queryResult.getResults(); - if (results==null||results.isEmpty()){ + if (results == null || results.isEmpty()) { return retList; } - QueryResult.Result result = results.get(0); + QueryResult.Result result = results.get(0); List seriess = result.getSeries(); - if (seriess==null||seriess.isEmpty()){ + if (seriess == null || seriess.isEmpty()) { return retList; } QueryResult.Series series = seriess.get(0); List columns = series.getColumns(); List> values = series.getValues(); - for (List columnValue :values){ + for (List columnValue : values) { Map map = new HashMap<>(1); - for (int i=0;i> getMapResult(String commond){ + public List> getMapResult(String commond) { List> retList = new ArrayList<>(); - QueryResult queryResult = influxDB.query(new Query(commond,dbName)); + QueryResult queryResult = influxDB.query(new Query(commond, dbName)); List results = queryResult.getResults(); - if (results==null||results.isEmpty()){ + if (results == null || results.isEmpty()) { return retList; } - QueryResult.Result result = results.get(0); + QueryResult.Result result = results.get(0); List seriess = result.getSeries(); - if (seriess==null||seriess.isEmpty()){ + if (seriess == null || seriess.isEmpty()) { return retList; } QueryResult.Series series = seriess.get(0); List columns = series.getColumns(); List> values = series.getValues(); - for (List columnValue :values){ + for (List columnValue : values) { Map map = new HashMap<>(1); - for (int i=0;i { + + + public InstantDateDeserializer() { + this(null); + } + + + protected InstantDateDeserializer(Class vc) { + super(vc); + } + + + @Override + public Instant deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException { + String text = p.getValueAsString(); + return InstantUtil.dateToInstant(DateUtil.parse(text,DatePattern.NORM_DATETIME_PATTERN)); + } +} diff --git a/src/main/java/com/njcn/influx/utils/InstantUtil.java b/src/main/java/com/njcn/influx/utils/InstantUtil.java index 40d4c26..bdab492 100644 --- a/src/main/java/com/njcn/influx/utils/InstantUtil.java +++ b/src/main/java/com/njcn/influx/utils/InstantUtil.java @@ -7,7 +7,9 @@ import java.time.LocalDateTime; import java.time.ZoneId; import java.time.ZoneOffset; import java.time.format.DateTimeFormatter; +import java.util.Date; import java.util.Locale; +import java.util.concurrent.TimeUnit; /** * @author hongawen @@ -31,4 +33,15 @@ public class InstantUtil { } + /*** + * 将date转为instant 处理8小时误差 + * @author hongawen + * @date 2023/7/20 15:58 + * @param date 日期 + * @return Instant + */ + public static Instant dateToInstant(Date date){ + return date.toInstant().plusMillis(TimeUnit.HOURS.toMillis(8)); + } + }