From fc4080bf410aa49a06566fce96057cd433025af7 Mon Sep 17 00:00:00 2001
From: hongawen <83944980@qq.com>
Date: Tue, 10 Oct 2023 17:42:16 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E8=A7=A3=E6=9E=90=E6=95=B0?=
=?UTF-8?q?=E6=8D=AE=E5=85=A5influx=E5=BA=93?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 7 +
.../njcn/jbsyncdata/enums/MeasTypeEnum.java | 72 +++
.../njcn/jbsyncdata/imapper/DataVMapper.java | 22 +
.../com/njcn/jbsyncdata/pojo/po/DataV.java | 235 ++++++++++
.../pojo/result/CommonTelemetry.java | 38 ++
.../jbsyncdata/pojo/result/DataResult.java | 10 -
.../jbsyncdata/pojo/result/GeneralResult.java | 15 +
.../jbsyncdata/pojo/result/PageResult.java | 24 +
.../pojo/result/StatisticsData.java | 18 +
.../service/impl/BusinessServiceImpl.java | 100 +++-
.../util/InstantDateDeserializer.java | 38 ++
.../util/InstantDateSerializer.java | 48 ++
.../com/njcn/jbsyncdata/util/PubUtils.java | 443 ++++++++++++++++++
src/main/resources/application.yml | 6 +
.../JbSyncdataApplicationTests.java | 115 ++++-
15 files changed, 1166 insertions(+), 25 deletions(-)
create mode 100644 src/main/java/com/njcn/jbsyncdata/enums/MeasTypeEnum.java
create mode 100644 src/main/java/com/njcn/jbsyncdata/imapper/DataVMapper.java
create mode 100644 src/main/java/com/njcn/jbsyncdata/pojo/po/DataV.java
create mode 100644 src/main/java/com/njcn/jbsyncdata/pojo/result/CommonTelemetry.java
delete mode 100644 src/main/java/com/njcn/jbsyncdata/pojo/result/DataResult.java
create mode 100644 src/main/java/com/njcn/jbsyncdata/pojo/result/GeneralResult.java
create mode 100644 src/main/java/com/njcn/jbsyncdata/pojo/result/PageResult.java
create mode 100644 src/main/java/com/njcn/jbsyncdata/pojo/result/StatisticsData.java
create mode 100644 src/main/java/com/njcn/jbsyncdata/util/InstantDateDeserializer.java
create mode 100644 src/main/java/com/njcn/jbsyncdata/util/InstantDateSerializer.java
create mode 100644 src/main/java/com/njcn/jbsyncdata/util/PubUtils.java
diff --git a/pom.xml b/pom.xml
index 9516f6e..818e382 100644
--- a/pom.xml
+++ b/pom.xml
@@ -46,6 +46,7 @@
8
2.8.0
5.7.9
+ 2.22
@@ -167,6 +168,12 @@
2.0.7
+
+ com.njcn
+ influxdb-springboot-starter
+ 1.0.0
+
+
diff --git a/src/main/java/com/njcn/jbsyncdata/enums/MeasTypeEnum.java b/src/main/java/com/njcn/jbsyncdata/enums/MeasTypeEnum.java
new file mode 100644
index 0000000..e02b7c7
--- /dev/null
+++ b/src/main/java/com/njcn/jbsyncdata/enums/MeasTypeEnum.java
@@ -0,0 +1,72 @@
+package com.njcn.jbsyncdata.enums;
+
+import lombok.Getter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Getter
+public enum MeasTypeEnum {
+
+ A_PHSA("A_phsA", "A相电流", "A","data_i","rms"),
+
+ A_PHSB("A_phsB", "B相电流", "B","data_i","rms"),
+
+ A_PHSC("A_phsC", "C相电流", "C","data_i","rms"),
+
+ PHV_PHSA("PhV_phsA", "A相电压", "A","data_v","rms"),
+
+ PHV_PHSB("PhV_phsB", "B相电压", "B","data_v","rms"),
+
+ PHV_PHSC("PhV_phsC", "C相电压", "C","data_v","rms"),
+
+ TOTW("TotW", "有功", "T","data_harmpower_p","p"),
+
+ TOTVAR("TotVar", "无功", "T","data_harmpower_q","q");
+
+ //冀北指标名称
+ private final String measType;
+ //中文名
+ private final String cnName;
+ //相别
+ private final String phaseType;
+ //表名
+ private final String tableName;
+ //字段名
+ private final String fieldName;
+
+ MeasTypeEnum(String measType, String cnName, String phaseType, String tableName,String fieldName) {
+ this.measType = measType;
+ this.cnName = cnName;
+ this.phaseType = phaseType;
+ this.tableName = tableName;
+ this.fieldName = fieldName;
+ }
+
+
+ /**
+ * 根据指标获取当前指标的信息
+ * @param measType 指标名称
+ */
+ public static MeasTypeEnum getMeasTypeEnumByMeasType(String measType) {
+ for (MeasTypeEnum item : values()) {
+ if (item.getMeasType().equals(measType)) {
+ return item;
+ }
+ }
+ return null;
+ }
+
+
+ /**
+ * 获取所有指标类型名称集合
+ */
+ public static List getMeasList() {
+ List measLiST = new ArrayList<>();
+ for (MeasTypeEnum temp : values()) {
+ String type = temp.getMeasType();
+ measLiST.add(type);
+ }
+ return measLiST;
+ }
+}
diff --git a/src/main/java/com/njcn/jbsyncdata/imapper/DataVMapper.java b/src/main/java/com/njcn/jbsyncdata/imapper/DataVMapper.java
new file mode 100644
index 0000000..5fcad80
--- /dev/null
+++ b/src/main/java/com/njcn/jbsyncdata/imapper/DataVMapper.java
@@ -0,0 +1,22 @@
+package com.njcn.jbsyncdata.imapper;
+
+import com.njcn.influx.base.InfluxDbBaseMapper;
+import com.njcn.influx.query.InfluxQueryWrapper;
+import com.njcn.jbsyncdata.pojo.po.DataV;
+
+import java.util.List;
+
+
+/**
+ * 类的介绍:
+ *
+ * @author xuyang
+ * @version 1.0.0
+ * @createTime 2023/5/5 14:39
+ */
+
+public interface DataVMapper extends InfluxDbBaseMapper {
+
+
+ List selectDataV(InfluxQueryWrapper queryWrapper);
+}
diff --git a/src/main/java/com/njcn/jbsyncdata/pojo/po/DataV.java b/src/main/java/com/njcn/jbsyncdata/pojo/po/DataV.java
new file mode 100644
index 0000000..bc778fe
--- /dev/null
+++ b/src/main/java/com/njcn/jbsyncdata/pojo/po/DataV.java
@@ -0,0 +1,235 @@
+package com.njcn.jbsyncdata.pojo.po;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.njcn.jbsyncdata.util.InstantDateSerializer;
+import lombok.Data;
+import org.influxdb.annotation.Column;
+import org.influxdb.annotation.Measurement;
+import org.influxdb.annotation.TimeColumn;
+
+import java.time.Instant;
+
+/**
+ * 类的介绍:
+ *
+ * @author xuyang
+ * @version 1.0.0
+ * @createTime 2022/4/7 10:00
+ */
+@Data
+@Measurement(name = "data_v")
+public class DataV {
+
+ @TimeColumn
+ @Column(name = "time",tag = true)
+ @JsonSerialize(using = InstantDateSerializer.class)
+ private Instant time;
+
+ @Column(name = "freq")
+ private double freq;
+
+ @Column(name = "freq_dev")
+ private double freqDev;
+
+ @Column(name = "quality_flag",tag = true)
+ private String qualityFlag;
+
+ @Column(name = "rms")
+ private double rms;
+
+ @Column(name = "rms_lvr")
+ private double rmsLvr;
+
+ @Column(name = "vl_dev")
+ private double vlDev;
+
+ @Column(name = "vu_dev")
+ private double vuDev;
+
+ @Column(name = "v_1")
+ private double v1;
+
+ @Column(name = "v_2")
+ private double v2;
+
+ @Column(name = "v_3")
+ private double v3;
+
+ @Column(name = "v_4")
+ private double v4;
+
+ @Column(name = "v_5")
+ private double v5;
+
+ @Column(name = "v_6")
+ private double v6;
+
+ @Column(name = "v_7")
+ private double v7;
+
+ @Column(name = "v_8")
+ private double v8;
+
+ @Column(name = "v_9")
+ private double v9;
+
+ @Column(name = "v_10")
+ private double v10;
+
+ @Column(name = "v_11")
+ private double v11;
+
+ @Column(name = "v_12")
+ private double v12;
+
+ @Column(name = "v_13")
+ private double v13;
+
+ @Column(name = "v_14")
+ private double v14;
+
+ @Column(name = "v_15")
+ private double v15;
+
+ @Column(name = "v_16")
+ private double v16;
+
+ @Column(name = "v_17")
+ private double v17;
+
+ @Column(name = "v_18")
+ private double v18;
+
+ @Column(name = "v_19")
+ private double v19;
+
+ @Column(name = "v_20")
+ private double v20;
+
+ @Column(name = "v_21")
+ private double v21;
+
+ @Column(name = "v_22")
+ private double v22;
+
+ @Column(name = "v_23")
+ private double v23;
+
+ @Column(name = "v_24")
+ private double v24;
+
+ @Column(name = "v_25")
+ private double v25;
+
+ @Column(name = "v_26")
+ private double v26;
+
+ @Column(name = "v_27")
+ private double v27;
+
+ @Column(name = "v_28")
+ private double v28;
+
+ @Column(name = "v_29")
+ private double v29;
+
+ @Column(name = "v_30")
+ private double v30;
+
+ @Column(name = "v_31")
+ private double v31;
+
+ @Column(name = "v_32")
+ private double v32;
+
+ @Column(name = "v_33")
+ private double v33;
+
+ @Column(name = "v_34")
+ private double v34;
+
+ @Column(name = "v_35")
+ private double v35;
+
+ @Column(name = "v_36")
+ private double v36;
+
+ @Column(name = "v_37")
+ private double v37;
+
+ @Column(name = "v_38")
+ private double v38;
+
+ @Column(name = "v_39")
+ private double v39;
+
+ @Column(name = "v_40")
+ private double v40;
+
+ @Column(name = "v_41")
+ private double v41;
+
+ @Column(name = "v_42")
+ private double v42;
+
+ @Column(name = "v_43")
+ private double v43;
+
+ @Column(name = "v_44")
+ private double v44;
+
+ @Column(name = "v_45")
+ private double v45;
+
+ @Column(name = "v_46")
+ private double v46;
+
+ @Column(name = "v_47")
+ private double v47;
+
+ @Column(name = "v_48")
+ private double v48;
+
+ @Column(name = "v_49")
+ private double v49;
+
+ @Column(name = "v_50")
+ private double v50;
+
+ @Column(name = "v_neg")
+ private double vNeg;
+
+ @Column(name = "v_pos")
+ private double vPos;
+
+ @Column(name = "v_thd")
+ private double vThd;
+
+ @Column(name = "v_unbalance")
+ private double vUnbalance;
+
+ @Column(name = "v_zero")
+ private double vZero;
+
+ @Column(name = "line_id",tag = true)
+ private String lineId;
+
+ @Column(name = "phasic_type",tag = true)
+ private String phasicType;
+
+ @Column(name = "value_type",tag = true)
+ private String valueType;
+
+
+ //自定义字段-总计算次数
+ @Column(name = "all_time")
+ private Integer allTime;
+
+ //自定义字段
+ @Column(name = "mean")
+ private double mean;
+
+ //自定义字段
+ @Column(name = "count")
+ private Integer count;
+}
diff --git a/src/main/java/com/njcn/jbsyncdata/pojo/result/CommonTelemetry.java b/src/main/java/com/njcn/jbsyncdata/pojo/result/CommonTelemetry.java
new file mode 100644
index 0000000..456e880
--- /dev/null
+++ b/src/main/java/com/njcn/jbsyncdata/pojo/result/CommonTelemetry.java
@@ -0,0 +1,38 @@
+package com.njcn.jbsyncdata.pojo.result;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+
+@Data
+public class CommonTelemetry implements Serializable {
+
+ private String measPointId;
+
+ private String psrId;
+
+ private String psrType;
+
+ private String astId;
+
+ private String astType;
+
+ private String consNo;
+
+ private String consType;
+
+ private String measTypeCode;
+
+ private String measTypeName;
+
+ private String source;
+
+ private String pt;
+
+ private String ct;
+
+ private List telemetryValue;
+
+}
diff --git a/src/main/java/com/njcn/jbsyncdata/pojo/result/DataResult.java b/src/main/java/com/njcn/jbsyncdata/pojo/result/DataResult.java
deleted file mode 100644
index 1b52449..0000000
--- a/src/main/java/com/njcn/jbsyncdata/pojo/result/DataResult.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.njcn.jbsyncdata.pojo.result;
-
-import lombok.Data;
-
-import java.io.Serializable;
-
-@Data
-public class DataResult implements Serializable {
-
-}
diff --git a/src/main/java/com/njcn/jbsyncdata/pojo/result/GeneralResult.java b/src/main/java/com/njcn/jbsyncdata/pojo/result/GeneralResult.java
new file mode 100644
index 0000000..fddf4dd
--- /dev/null
+++ b/src/main/java/com/njcn/jbsyncdata/pojo/result/GeneralResult.java
@@ -0,0 +1,15 @@
+package com.njcn.jbsyncdata.pojo.result;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class GeneralResult implements Serializable {
+
+ private String status;
+
+ private String errors;
+
+ private PageResult result;
+}
diff --git a/src/main/java/com/njcn/jbsyncdata/pojo/result/PageResult.java b/src/main/java/com/njcn/jbsyncdata/pojo/result/PageResult.java
new file mode 100644
index 0000000..5702a94
--- /dev/null
+++ b/src/main/java/com/njcn/jbsyncdata/pojo/result/PageResult.java
@@ -0,0 +1,24 @@
+package com.njcn.jbsyncdata.pojo.result;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 暂时未知 total 有什么用,看起来数据是一次性返回的
+ */
+@Data
+public class PageResult implements Serializable {
+
+ private Integer current;
+
+ private Integer total;
+
+ private Integer pages;
+
+ private Integer size;
+
+ private List records;
+
+}
diff --git a/src/main/java/com/njcn/jbsyncdata/pojo/result/StatisticsData.java b/src/main/java/com/njcn/jbsyncdata/pojo/result/StatisticsData.java
new file mode 100644
index 0000000..6f37aea
--- /dev/null
+++ b/src/main/java/com/njcn/jbsyncdata/pojo/result/StatisticsData.java
@@ -0,0 +1,18 @@
+package com.njcn.jbsyncdata.pojo.result;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class StatisticsData implements Serializable {
+
+ private String measValue;
+
+ private String dataTime;
+
+ private String timeInterval;
+
+ private String timeUnit;
+
+}
diff --git a/src/main/java/com/njcn/jbsyncdata/service/impl/BusinessServiceImpl.java b/src/main/java/com/njcn/jbsyncdata/service/impl/BusinessServiceImpl.java
index 53561d7..29ba8c6 100644
--- a/src/main/java/com/njcn/jbsyncdata/service/impl/BusinessServiceImpl.java
+++ b/src/main/java/com/njcn/jbsyncdata/service/impl/BusinessServiceImpl.java
@@ -1,10 +1,18 @@
package com.njcn.jbsyncdata.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.io.file.FileReader;
+import cn.hutool.core.text.StrPool;
+import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.njcn.jbsyncdata.component.TokenComponent;
+import com.njcn.jbsyncdata.enums.MeasTypeEnum;
import com.njcn.jbsyncdata.pojo.ExcelData;
-import com.njcn.jbsyncdata.pojo.result.TokenResult;
+import com.njcn.jbsyncdata.pojo.result.*;
import com.njcn.jbsyncdata.service.IBusinessService;
import com.njcn.jbsyncdata.util.RestTemplateUtil;
import lombok.extern.slf4j.Slf4j;
@@ -12,10 +20,7 @@ import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -50,9 +55,6 @@ public class BusinessServiceImpl implements IBusinessService {
jsonObjectSub.set("termType", "");
jsonObjectSub.set("measPointIds", new ArrayList<>());
jsonObject.set("filter", jsonObjectSub);
- if (excelData.getStageID().equalsIgnoreCase("1502760751")) {
- log.error("组装后的json为:{}", jsonObject);
- }
//组装好json开始发送请求
Map headers = new HashMap<>();
headers.put("x-token", tokenWithRestTemplate.getAccess_token());
@@ -81,23 +83,93 @@ public class BusinessServiceImpl implements IBusinessService {
List userId = Stream.of("160".concat(excelData.getGenerationUserID())).collect(Collectors.toList());
jsonObjectSub.set("consNos", userId);
jsonObjectSub.set("consType", 3);
-
jsonObjectSub.set("astIds", new ArrayList<>());
jsonObjectSub.set("astType", "");
jsonObjectSub.set("psrIds", new ArrayList<>());
jsonObjectSub.set("psrType", "");
jsonObjectSub.set("measPointIds", new ArrayList<>());
- List typeList = Stream.of("PhV_phsA","PhV_phsB","PhV_phsC").collect(Collectors.toList());
+ //指标类型集合
+ List typeList = MeasTypeEnum.getMeasList();
jsonObjectSub.set("telemetryTypes", typeList);
jsonObject.set("filter", jsonObjectSub);
- if (excelData.getStageID().equalsIgnoreCase("2226675026")) {
- log.error("组装后的json为:{}", jsonObject);
- }
//组装好json开始发送请求
Map headers = new HashMap<>();
headers.put("x-token", tokenWithRestTemplate.getAccess_token());
- ResponseEntity response = restTemplateUtil.post(tokenComponent.getUrl().concat("/realMeasCenter/measPoint/commonQuery"), headers, jsonObject, String.class);
+ ResponseEntity response = restTemplateUtil.post(tokenComponent.getUrl().concat("/realMeasCenter/telemetry/commonQuery"), headers, jsonObject, GeneralResult.class);
+ if (response.getStatusCodeValue() == 200 && response.getBody().getStatus().equalsIgnoreCase("000000")) {
+ PageResult result = response.getBody().getResult();
+ List records = result.getRecords();
+ if (Objects.isNull(result) || CollectionUtil.isEmpty(result.getRecords())) {
+ //日志输出:
+ log.error("用户编号为:{},无遥测数据;", excelData.getGenerationUserID());
+ continue;
+ }
+ //处理各个record的数据,因用户下可能有多个测量点,按指标循环,默认采用第一个匹配上的做数据处理
+ Map*表名*/String, List