组态功能开发

This commit is contained in:
2023-06-06 16:42:45 +08:00
parent befb138068
commit 0b65b55d28
22 changed files with 613 additions and 23 deletions

View File

@@ -20,4 +20,56 @@ public interface HarmonicConstant {
* 组态Json文件oss文件名
*/
String CONFIGURATIONNAME = "configuration.json";
String DATA_V = "data_v";
String DATA_I = "data_i";
String DATA_HARM_RATE_V = "data_harmrate_v";
String DATA_HARM_RATE_I = "data_harmrate_i";
String DATA_HARM_PHASIC_V = "data_harmphasic_v";
String DATA_HARM_PHASIC_I = "data_harmphasic_i";
String DATA_IN_HARM_V = "data_inharm_v";
String DATA_IN_HARM_I = "data_inharm_i";
String DATA_HARM_POWER_P = "data_harmpower_p";
String DATA_HARM_POWER_Q = "data_harmpower_q";
String DATA_HARM_POWER_S = "data_harmpower_s";
String DATA_FLICKER = "data_flicker";
String DATA_FLUC = "data_fluc";
String DATA_PLT = "data_plt";
String EPD_DATA = "epd_data";
String PQD_DATA = "pqd_data";
String BMD_DATA = "bmd_data";
String EVT_DATA = "evt_data";
String ALM_DATA = "alm_data";
String STS_DATA = "sts_data";
String DI_DATA = "di_data";
String DO_DATA = "do_data";
String PARM_DATA = "parm_data";
String SET_DATA = "set_data";
String INSET_DATA = "inset_data";
String CTRL_DATA = "ctrl_data";
}

View File

@@ -0,0 +1,36 @@
package com.njcn.harmonic.pojo.influx;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.njcn.common.utils.serializer.InstantDateSerializer;
import lombok.Data;
import org.influxdb.annotation.Column;
import java.time.Instant;
/**
* 类的介绍influx实时数据通用实体
*
* @author xuyang
* @version 1.0.0
* @createTime 2023/6/6 9:26
*/
@Data
public class CsCommon {
@Column(name = "time")
@JsonSerialize(using = InstantDateSerializer.class)
private Instant time;
@Column(name = "line_id")
private String lineId;
@Column(name = "phasic_type")
private String phaseType;
@Column(name = "value_type")
private String valueType;
@Column(name = "rtData")
private Double rtData;
}

View File

@@ -0,0 +1,18 @@
package com.njcn.harmonic.pojo.influx;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.influxdb.annotation.Measurement;
/**
* 类的介绍:
*
* @author xuyang
* @version 1.0.0
* @createTime 2023/6/6 9:27
*/
@EqualsAndHashCode(callSuper = true)
@Data
@Measurement(name = "data_harmphasic_i")
public class CsDataHarmPhasicI extends CsCommon{
}

View File

@@ -0,0 +1,18 @@
package com.njcn.harmonic.pojo.influx;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.influxdb.annotation.Measurement;
/**
* 类的介绍:
*
* @author xuyang
* @version 1.0.0
* @createTime 2023/6/6 9:27
*/
@EqualsAndHashCode(callSuper = true)
@Data
@Measurement(name = "data_harmphasic_v")
public class CsDataHarmPhasicV extends CsCommon{
}

View File

@@ -0,0 +1,17 @@
package com.njcn.harmonic.pojo.influx;
import lombok.Data;
import org.influxdb.annotation.Measurement;
/**
* 类的介绍:
*
* @author xuyang
* @version 1.0.0
* @createTime 2023/6/6 9:05
*/
@Data
@Measurement(name = "data_harmpower_p")
public class CsDataHarmPowerP extends CsCommon {
}

View File

@@ -0,0 +1,18 @@
package com.njcn.harmonic.pojo.influx;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.influxdb.annotation.Measurement;
/**
* 类的介绍:
*
* @author xuyang
* @version 1.0.0
* @createTime 2023/6/6 9:27
*/
@EqualsAndHashCode(callSuper = true)
@Data
@Measurement(name = "data_harmrate_i")
public class CsDataHarmRateI extends CsCommon{
}

View File

@@ -0,0 +1,18 @@
package com.njcn.harmonic.pojo.influx;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.influxdb.annotation.Measurement;
/**
* 类的介绍:
*
* @author xuyang
* @version 1.0.0
* @createTime 2023/6/6 9:27
*/
@EqualsAndHashCode(callSuper = true)
@Data
@Measurement(name = "data_harmrate_v")
public class CsDataHarmRateV extends CsCommon{
}

View File

@@ -0,0 +1,18 @@
package com.njcn.harmonic.pojo.influx;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.influxdb.annotation.Measurement;
/**
* 类的介绍:
*
* @author xuyang
* @version 1.0.0
* @createTime 2023/6/6 9:27
*/
@EqualsAndHashCode(callSuper = true)
@Data
@Measurement(name = "data_i")
public class CsDataI extends CsCommon{
}

View File

@@ -0,0 +1,18 @@
package com.njcn.harmonic.pojo.influx;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.influxdb.annotation.Measurement;
/**
* 类的介绍:
*
* @author xuyang
* @version 1.0.0
* @createTime 2023/6/6 9:27
*/
@EqualsAndHashCode(callSuper = true)
@Data
@Measurement(name = "data_v")
public class CsDataV extends CsCommon{
}

View File

@@ -0,0 +1,18 @@
package com.njcn.harmonic.pojo.influx;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.influxdb.annotation.Measurement;
/**
* 类的介绍:
*
* @author xuyang
* @version 1.0.0
* @createTime 2023/6/6 11:21
*/
@EqualsAndHashCode(callSuper = true)
@Data
@Measurement(name = "pqd_data")
public class CsPqdData extends CsCommon{
}

View File

@@ -19,23 +19,32 @@ public class ElementsVO implements Serializable {
@SerializedName("type")
private String type;
@SerializedName("pointId")
private String pointId;
@SerializedName("lineId")
private List<String> lineId;
@SerializedName("pointName")
private String pointName;
@SerializedName("lineName")
private String lineName;
@SerializedName("targetId")
private String targetId;
private List<String> targetId;
@SerializedName("targetPid")
private String targetPid;
@SerializedName("targetName")
private String targetName;
@SerializedName("dataType")
private String dataType;
@SerializedName("phasic")
private String phasic;
@SerializedName("defaultPic")
private String defaultPic;
@SerializedName("width")
private Integer width;
private String width;
@SerializedName("height")
private Integer height;
@@ -49,4 +58,10 @@ public class ElementsVO implements Serializable {
@SerializedName("condition")
private List<ConditionVO> condition;
@SerializedName("color")
private String color;
@SerializedName("fontSize")
private Integer fontSize;
}

View File

@@ -0,0 +1,18 @@
package com.njcn.harmonic.pojo.vo;
import com.njcn.harmonic.pojo.influx.CsCommon;
import lombok.Data;
/**
* 类的介绍:
*
* @author xuyang
* @version 1.0.0
* @createTime 2023/6/6 11:38
*/
@Data
public class RtDataVO extends CsCommon {
private String targetName;
}

View File

@@ -0,0 +1,81 @@
package com.njcn.harmonic.utils;
import org.influxdb.annotation.Measurement;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
/**
* Description:
* Date: 2023/6/2 15:08【需求编号】
*
* @author clam
* @version V1.0.0
*/
public class CsReflectUitl {
/*
* 获取po报下所有有@Measurement注解的实体类;
*/
public static HashMap<String,Class<?>> getEntityClassesByAnnotation() {
HashMap<String,Class<?>> result = new HashMap<>();
List<Class<?>> classes = CsReflectUitl.getClasses("com.njcn.harmonic.pojo.influx");
for (Class<?> clazz : classes) {
if (clazz.isAnnotationPresent(Measurement.class)) {
Measurement annotation = (Measurement) clazz.getAnnotation(Measurement.class);
result.put(annotation.name(),clazz) ;
}
}
return result;
}
public static List<Class<?>> getClasses(String packageName) {
List<Class<?>> classes = new ArrayList<Class<?>>();
try {
String path = packageName.replace(".", "/");
Enumeration<URL> resources = Thread.currentThread().getContextClassLoader().getResources(path);
while (resources.hasMoreElements()) {
URL resource = resources.nextElement();
if (resource.getProtocol().equals("file")) {
String filePath = URLDecoder.decode(resource.getFile(), "UTF-8");
findClassesInPackage(packageName, filePath, classes);
}
}
} catch (IOException e) {
e.printStackTrace();
}
return classes;
}
private static void findClassesInPackage(String packageName, String packagePath, List<Class<?>> classes) {
File packageDir = new File(packagePath);
if (!packageDir.exists() || !packageDir.isDirectory()) {
return;
}
File[] files = packageDir.listFiles();
for (File file : files) {
if (file.isDirectory()) {
findClassesInPackage(packageName + "." + file.getName(), file.getAbsolutePath(), classes);
} else if (file.getName().endsWith(".class")) {
String className = packageName + "." + file.getName().substring(0, file.getName().length() - 6);
try {
Class<?> clazz = Class.forName(className);
classes.add(clazz);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
}
}