高级算法特征值,暂降事件范围分析代码提交
This commit is contained in:
@@ -1,38 +0,0 @@
|
||||
package com.njcn.advance.pojo.bo;
|
||||
|
||||
/**
|
||||
* pqs
|
||||
*
|
||||
* @author cdf
|
||||
* @date 2023/6/20
|
||||
*/
|
||||
public interface FinalData {
|
||||
|
||||
/**
|
||||
* 暂降事件按开始时间归集门槛10秒
|
||||
*/
|
||||
int TIME_THRESHOLD = 10;
|
||||
//分组的最大组数
|
||||
int MAX_GROUP_NUM = 1000;
|
||||
//类别数
|
||||
int MAX_CATA_NUM = 7;
|
||||
//最大事件个数
|
||||
int MAX_EVT_NUM = 1000;
|
||||
//三相故障
|
||||
int QVVR_TYPE_THREE = 9;
|
||||
//故障类型未知
|
||||
int QVVR_TYPE_UNKNOWN = 10;
|
||||
//节点不在网络拓扑中
|
||||
int QVVR_TYPE_OUTOFRANGE = -1;
|
||||
int DATA_INF = -1;
|
||||
int EVT_TYPE_NUM = 6;//故障类型数
|
||||
int MAX_PATH_NUM = 50;//最大路径数
|
||||
int NODE_NUM = -1;//输入节点数
|
||||
|
||||
// 暂降综合评估算法
|
||||
int CLUSER_NUM = 4; // 系统中各监测点分类后的代表节点
|
||||
int MAX_LINE_NUM = 1000; // 监测点最多个数
|
||||
int MAX_STA_NUM = 120; // 支持的子系统个数
|
||||
|
||||
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.njcn.advance.pojo.bo;
|
||||
|
||||
import com.njcn.advance.pojo.dto.QtIdx;
|
||||
import com.njcn.advance.pojo.dto.relevent.FinalData;
|
||||
import com.njcn.advance.pojo.dto.relevent.QtIdx;
|
||||
import com.sun.jna.Structure;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.njcn.advance.pojo.bo;
|
||||
|
||||
import com.njcn.advance.pojo.dto.relevent.FinalData;
|
||||
import com.sun.jna.Structure;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.njcn.advance.pojo.bo;
|
||||
|
||||
import com.njcn.advance.pojo.dto.relevent.FinalData;
|
||||
import com.sun.jna.Structure;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.njcn.advance.pojo.dto;
|
||||
|
||||
import com.njcn.advance.pojo.dto.relevent.QtIdx;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
package com.njcn.advance.pojo.dto.relevent;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* pqs
|
||||
*
|
||||
* @author cdf
|
||||
* @date 2023/7/20
|
||||
*/
|
||||
@Data
|
||||
public class EntityGroupData {
|
||||
private int idx[];
|
||||
private int all_evt_num;
|
||||
private int evt_in_num;
|
||||
private int evt_out_num;
|
||||
private int evt_res_num;
|
||||
|
||||
private int Matrixcata[][];
|
||||
|
||||
private EntityGroupEvtData in_buf[];
|
||||
private EntityGroupEvtData out_buf[];
|
||||
private EntityGroupEvtData res_buf[];
|
||||
private EntityGroupEvtData grp_buf[][];
|
||||
|
||||
private int grp_num[];
|
||||
private int grp_all_num;
|
||||
private EntityGroupEvtData grp_cata_buf[][][];
|
||||
private int grp_cata_num[][];
|
||||
|
||||
public EntityGroupData() {
|
||||
idx = new int[FinalData.MAX_EVT_NUM];
|
||||
Matrixcata = new int[FinalData.MAX_CATA_NUM][FinalData.MAX_EVT_NUM];
|
||||
in_buf = new EntityGroupEvtData[FinalData.MAX_EVT_NUM];
|
||||
out_buf = new EntityGroupEvtData[FinalData.MAX_EVT_NUM];
|
||||
res_buf = new EntityGroupEvtData[FinalData.MAX_EVT_NUM];
|
||||
grp_buf = new EntityGroupEvtData[FinalData.MAX_GROUP_NUM][FinalData.MAX_EVT_NUM];
|
||||
grp_num = new int[FinalData.MAX_GROUP_NUM];
|
||||
grp_cata_buf = new EntityGroupEvtData[FinalData.MAX_GROUP_NUM][FinalData.MAX_CATA_NUM
|
||||
+ 2][FinalData.MAX_EVT_NUM];
|
||||
grp_cata_num = new int[FinalData.MAX_GROUP_NUM][FinalData.MAX_CATA_NUM + 2];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
package com.njcn.advance.pojo.dto.relevent;
|
||||
|
||||
import com.njcn.advance.pojo.dto.SagEvent;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class EntityGroupEvtData implements Cloneable,Comparable<EntityGroupEvtData> {
|
||||
|
||||
//逻辑节点序号
|
||||
private int node;
|
||||
//事件开始时间时标
|
||||
private int start_time;
|
||||
//类别
|
||||
private int cata;
|
||||
//标注类别
|
||||
private int cata2;
|
||||
//物理节点
|
||||
private String nodePhysics;
|
||||
|
||||
private SagEvent sagEvent;
|
||||
|
||||
private String sagReason;
|
||||
|
||||
|
||||
public Object objClone() {
|
||||
try {
|
||||
return clone();
|
||||
} catch (CloneNotSupportedException e) {
|
||||
return new EntityGroupEvtData(null, -1, -1, -1,null,null);
|
||||
}
|
||||
}
|
||||
|
||||
public EntityGroupEvtData(String nodePhysics, int start_time, int cata, int cata2, SagEvent sagEvent, String sagReason) {
|
||||
this.nodePhysics = nodePhysics;
|
||||
this.start_time = start_time;
|
||||
this.cata = cata;
|
||||
this.cata2 = cata2;
|
||||
this.sagEvent = sagEvent;
|
||||
this.sagReason = sagReason;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int compareTo(EntityGroupEvtData obj) {
|
||||
if(this.getStart_time() < obj.getStart_time()){
|
||||
return -1;
|
||||
}else if(this.getStart_time() > obj.getStart_time()){
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.njcn.advance.pojo.dto.relevent;
|
||||
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class EntityLogic {
|
||||
//物理隔绝变压器策略GUID
|
||||
private String tPIndex;
|
||||
//变压器逻辑上节点
|
||||
private String node_h;
|
||||
//变压器逻辑下节点
|
||||
private String node_l;
|
||||
// 变压器连接方式
|
||||
private Integer type;
|
||||
//变压器物理上节点
|
||||
private String nodeBefore;
|
||||
//变压器物理下节点
|
||||
private String nodeNext;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
package com.njcn.advance.pojo.dto.relevent;
|
||||
|
||||
import com.njcn.advance.pojo.dto.relevent.FinalData;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Arrays;
|
||||
|
||||
public class EntityMtrans implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
private int Matrixcata0[][];
|
||||
private int Matrixcata1[][];
|
||||
private int Mtrans[][];
|
||||
private int possiable_path[][];
|
||||
private int path_num;
|
||||
|
||||
public EntityMtrans() {
|
||||
super();
|
||||
Mtrans = new int[FinalData.NODE_NUM][FinalData.NODE_NUM];
|
||||
Matrixcata0 = new int[FinalData.EVT_TYPE_NUM][FinalData.NODE_NUM];
|
||||
Matrixcata1 = new int[FinalData.EVT_TYPE_NUM][FinalData.NODE_NUM];
|
||||
possiable_path = new int[FinalData.MAX_PATH_NUM][FinalData.NODE_NUM + 1];
|
||||
path_num = 0;
|
||||
}
|
||||
|
||||
public int[][] getMatrixcata0() {
|
||||
return Matrixcata0;
|
||||
}
|
||||
|
||||
public void setMatrixcata0(int[][] matrixcata0) {
|
||||
Matrixcata0 = matrixcata0;
|
||||
}
|
||||
|
||||
public int[][] getMatrixcata1() {
|
||||
return Matrixcata1;
|
||||
}
|
||||
|
||||
public void setMatrixcata1(int[][] matrixcata1) {
|
||||
Matrixcata1 = matrixcata1;
|
||||
}
|
||||
|
||||
public int[][] getMtrans() {
|
||||
return Mtrans;
|
||||
}
|
||||
|
||||
public void setMtrans(int[][] mtrans) {
|
||||
Mtrans = mtrans;
|
||||
}
|
||||
|
||||
public int[][] getPossiable_path() {
|
||||
return possiable_path;
|
||||
}
|
||||
|
||||
public void setPossiable_path(int[][] possiable_path) {
|
||||
this.possiable_path = possiable_path;
|
||||
}
|
||||
|
||||
public int getPath_num() {
|
||||
return path_num;
|
||||
}
|
||||
|
||||
public void setPath_num(int path_num) {
|
||||
this.path_num = path_num;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "EntityMtrans [Matrixcata0=" + Arrays.toString(Matrixcata0) + ", Matrixcata1="
|
||||
+ Arrays.toString(Matrixcata1) + ", Mtrans=" + Arrays.toString(Mtrans) + ", possiable_path="
|
||||
+ Arrays.toString(possiable_path) + ", path_num=" + path_num + "]";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,123 @@
|
||||
package com.njcn.advance.pojo.dto.relevent;
|
||||
|
||||
import com.njcn.advance.pojo.dto.SagEvent;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/*
|
||||
*一个归一化事件包含多个事件(一对多)
|
||||
*indexEventAss:事件关联分析表Guid
|
||||
*time:归一化中第一个时间
|
||||
*describe:关联事件描述
|
||||
*bRange:是否进行范围分析
|
||||
*indexUser:用户表Guid
|
||||
*updateTime:更新时间
|
||||
*state:数据状态
|
||||
*name:关联事件名称
|
||||
*list:属于该归一化事件的暂降事件
|
||||
*strTime:字符串时间
|
||||
*/
|
||||
@Data
|
||||
public class EventAssObj implements Serializable {
|
||||
private String indexEventAss;
|
||||
private LocalDateTime time;
|
||||
private String describe;
|
||||
private int bRange;
|
||||
private String indexUser;
|
||||
private LocalDateTime updateTime = LocalDateTime.now();
|
||||
private int state;
|
||||
private String name;
|
||||
private String strTime;
|
||||
private List<SagEvent> list;
|
||||
|
||||
public String getStrTime() {
|
||||
return strTime;
|
||||
}
|
||||
|
||||
public void setStrTime(String strTime) {
|
||||
this.strTime = strTime;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getIndexEventAss() {
|
||||
return indexEventAss;
|
||||
}
|
||||
|
||||
public void setIndexEventAss(String indexEventAss) {
|
||||
this.indexEventAss = indexEventAss;
|
||||
}
|
||||
|
||||
public LocalDateTime getTime() {
|
||||
return time;
|
||||
}
|
||||
|
||||
public void setTime(LocalDateTime time) {
|
||||
this.time = time;
|
||||
}
|
||||
|
||||
public String getDescribe() {
|
||||
return describe;
|
||||
}
|
||||
|
||||
public void setDescribe(String describe) {
|
||||
this.describe = describe;
|
||||
}
|
||||
|
||||
public int getbRange() {
|
||||
return bRange;
|
||||
}
|
||||
|
||||
public void setbRange(int bRange) {
|
||||
this.bRange = bRange;
|
||||
}
|
||||
|
||||
public String getIndexUser() {
|
||||
return indexUser;
|
||||
}
|
||||
|
||||
public void setIndexUser(String indexUser) {
|
||||
this.indexUser = indexUser;
|
||||
}
|
||||
|
||||
public LocalDateTime getUpdateTime() {
|
||||
return updateTime;
|
||||
}
|
||||
|
||||
public void setUpdateTime(LocalDateTime updateTime) {
|
||||
this.updateTime = updateTime;
|
||||
}
|
||||
|
||||
public int getState() {
|
||||
return state;
|
||||
}
|
||||
|
||||
public void setState(int state) {
|
||||
this.state = state;
|
||||
}
|
||||
|
||||
public List<SagEvent> getList() {
|
||||
return list;
|
||||
}
|
||||
|
||||
public void setList(List<SagEvent> list) {
|
||||
this.list = list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "EventAssObj [indexEventAss=" + indexEventAss + ", time=" + time + ", describe=" + describe + ", bRange="
|
||||
+ bRange + ", indexUser=" + indexUser + ", updateTime=" + updateTime + ", state=" + state + ", name="
|
||||
+ name + ", strTime=" + strTime + ", list=" + list + "]";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.njcn.advance.pojo.dto.relevent;
|
||||
|
||||
public class FinalData {
|
||||
public static final int TIME_THRESHOLD = 10;//暂降事件按开始时间归集门槛10秒
|
||||
public static final int MAX_GROUP_NUM = 1000;//分组的最大组数
|
||||
public static final int MAX_CATA_NUM = 7;//类别数
|
||||
public static final int MAX_EVT_NUM = 1000;//最大事件个数
|
||||
|
||||
public static final int QVVR_TYPE_THREE = 9; //三相故障
|
||||
public static final int QVVR_TYPE_UNKNOWN = 10; //故障类型未知
|
||||
public static final int QVVR_TYPE_OUTOFRANGE = -1; //节点不在网络拓扑中
|
||||
public static final int DATA_INF = -1;
|
||||
public static final int EVT_TYPE_NUM = 6;//故障类型数
|
||||
public static final int MAX_PATH_NUM = 50;//最大路径数
|
||||
public static int NODE_NUM;//输入节点数
|
||||
|
||||
// 暂降综合评估算法
|
||||
public static final int CLUSER_NUM = 4; // 系统中各监测点分类后的代表节点
|
||||
public static final int MAX_LINE_NUM = 1000; // 监测点最多个数
|
||||
public static final int MAX_STA_NUM = 120; // 支持的子系统个数
|
||||
|
||||
static {
|
||||
NODE_NUM = -1;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.njcn.advance.pojo.dto.relevent;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* pqs
|
||||
*终端监测点名称信息
|
||||
* nameGD:供电公司名称
|
||||
* nameBD:变电站名称
|
||||
* nameSubV:母线名称
|
||||
* namePoint:监测点名称
|
||||
* indexPoint:监测点的唯一标识
|
||||
*
|
||||
* 新增add
|
||||
* xuyang
|
||||
* 2021.05.11
|
||||
* 监测点电压等级:monitorVoltageLevel
|
||||
* 监测点干扰源类型终:monitorLoadType
|
||||
*/
|
||||
@Data
|
||||
public class PlantInfo implements Serializable {
|
||||
private String indexPoint;
|
||||
private String nameGD;
|
||||
private String nameBD;
|
||||
private String nameSubV;
|
||||
private String namePoint;
|
||||
private String monitorVoltageLevel;
|
||||
private String monitorLoadType;
|
||||
private String objName;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.njcn.advance.pojo.dto;
|
||||
package com.njcn.advance.pojo.dto.relevent;
|
||||
|
||||
import com.sun.jna.Structure;
|
||||
import lombok.Data;
|
||||
@@ -0,0 +1,423 @@
|
||||
package com.njcn.advance.pojo.dto;
|
||||
|
||||
import com.njcn.advance.pojo.dto.relevent.PlantInfo;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* pqs
|
||||
*
|
||||
* @author cdf
|
||||
* @date 2023/7/21
|
||||
*/
|
||||
public class SagEvent implements Comparable<SagEvent>, Serializable {
|
||||
// 事件的唯一标识
|
||||
private String indexEventDetail;
|
||||
|
||||
private Integer waveType;
|
||||
// 暂降事件发生时间
|
||||
private LocalDateTime sagTime;
|
||||
|
||||
// 暂降事件发生时间毫秒
|
||||
private Integer msec;
|
||||
|
||||
// 事件描述
|
||||
private String events;
|
||||
|
||||
// 持续时间
|
||||
private Float persistTime;
|
||||
|
||||
// 发生暂降事件的监测点层级信息
|
||||
private PlantInfo plantInfo;
|
||||
|
||||
// 拼接sagTime和msec
|
||||
private String strTime;
|
||||
|
||||
// 事件发生时刻的毫秒表示
|
||||
private Long time;
|
||||
|
||||
// 监测点的唯一标识
|
||||
private String indexPoint;
|
||||
|
||||
// 归一化事件的GUID
|
||||
private String indexEventAss;
|
||||
|
||||
// 特征幅值
|
||||
private Float eventValue;
|
||||
|
||||
// 暂降原因
|
||||
private String sagReason;
|
||||
|
||||
// 暂降类型
|
||||
private String sagType;
|
||||
|
||||
// 暂降类型描述
|
||||
private String sagTypeDes;
|
||||
|
||||
public String getSagTypeDes() {
|
||||
return sagTypeDes;
|
||||
}
|
||||
|
||||
public void setSagTypeDes(String sagTypeDes) {
|
||||
this.sagTypeDes = sagTypeDes;
|
||||
}
|
||||
|
||||
// 暂降深度
|
||||
private String strEventValue;
|
||||
private String strPersist;
|
||||
|
||||
// 事件是否经过高级算法处理(0-未处理,1-已处理,默认为0)
|
||||
private Integer dealFlag;
|
||||
|
||||
// 事件是否经过高级算法处理中文描述(已处理、未处理)
|
||||
private String dealFlagDescription;
|
||||
|
||||
// 录波文件是否存在(0-不存在,1-存在,默认为0)
|
||||
private Integer fileFlag;
|
||||
|
||||
// 录波文件是否存在中文描述(存在、不存在)
|
||||
private String fileFlagDescription;
|
||||
|
||||
// 高级算法返回dq持续时间
|
||||
private Float dqTime;
|
||||
|
||||
// 高级算法处理事件个数记录
|
||||
private Integer number;
|
||||
|
||||
// 归一化处理更新时间
|
||||
private LocalDateTime dealTime;
|
||||
|
||||
// 高级算法的对应关系
|
||||
private int cata;
|
||||
|
||||
// 第一次事件的触发时间
|
||||
private Date firstTime;
|
||||
|
||||
// 第一次事件的暂降类型
|
||||
private String firstType;
|
||||
|
||||
// 第一次事件的触发时间毫秒
|
||||
private Integer firstMs;
|
||||
|
||||
// 第一次事件触发时间date->毫秒
|
||||
private Long firstTimeMills;
|
||||
|
||||
// 暂降严重度
|
||||
private Float severity;
|
||||
|
||||
// 排序方式
|
||||
private int sortType = 0; // 初始化默认为0-按照时间排序 新增1-按暂降严重度排序 2-暂降发生时刻排序 3-先根据电压等级排序,如果相等再按照暂降幅值排序
|
||||
|
||||
//电压等级
|
||||
private Double voltage;
|
||||
|
||||
//监测点对象名称
|
||||
private String objName;
|
||||
|
||||
public String getObjName() {
|
||||
return objName;
|
||||
}
|
||||
|
||||
public void setObjName(String objName) {
|
||||
this.objName = objName;
|
||||
}
|
||||
|
||||
public Integer getWaveType() {
|
||||
return waveType;
|
||||
}
|
||||
|
||||
public void setWaveType(Integer waveType) {
|
||||
this.waveType = waveType;
|
||||
}
|
||||
|
||||
private String strVoltage;
|
||||
|
||||
public Double getVoltage() {
|
||||
return voltage;
|
||||
}
|
||||
|
||||
public void setVoltage(Double voltage) {
|
||||
this.voltage = voltage;
|
||||
}
|
||||
|
||||
public String getStrVoltage() {
|
||||
return strVoltage;
|
||||
}
|
||||
|
||||
public void setStrVoltage(String strVoltage) {
|
||||
//转为double
|
||||
strVoltage = strVoltage.toUpperCase();
|
||||
String str = strVoltage.substring(0, strVoltage.indexOf("KV"));
|
||||
this.voltage = Double.parseDouble(str);
|
||||
}
|
||||
|
||||
public int getSortType() {
|
||||
return sortType;
|
||||
}
|
||||
|
||||
public void setSortType(int sortType) {
|
||||
this.sortType = sortType;
|
||||
}
|
||||
|
||||
public Float getSeverity() {
|
||||
return severity;
|
||||
}
|
||||
|
||||
public void setSeverity(Float severity) {
|
||||
this.severity = severity;
|
||||
}
|
||||
|
||||
public Long getFirstTimeMills() {
|
||||
return firstTimeMills;
|
||||
}
|
||||
|
||||
public void setFirstTimeMills(Long firstTimeMills) {
|
||||
this.firstTimeMills = firstTimeMills;
|
||||
}
|
||||
|
||||
public Integer getFirstMs() {
|
||||
return firstMs;
|
||||
}
|
||||
|
||||
public void setFirstMs(Integer firstMs) {
|
||||
this.firstMs = firstMs;
|
||||
}
|
||||
|
||||
public Date getFirstTime() {
|
||||
return firstTime;
|
||||
}
|
||||
|
||||
public void setFirstTime(Date firstTime) {
|
||||
this.firstTime = firstTime;
|
||||
}
|
||||
|
||||
public String getFirstType() {
|
||||
return firstType;
|
||||
}
|
||||
|
||||
public void setFirstType(String firstType) {
|
||||
this.firstType = firstType;
|
||||
}
|
||||
|
||||
public Integer getFileFlag() {
|
||||
return fileFlag;
|
||||
}
|
||||
|
||||
public void setFileFlag(Integer fileFlag) {
|
||||
this.fileFlag = fileFlag;
|
||||
}
|
||||
|
||||
public String getFileFlagDescription() {
|
||||
return fileFlagDescription;
|
||||
}
|
||||
|
||||
public void setFileFlagDescription(String fileFlagDescription) {
|
||||
this.fileFlagDescription = fileFlagDescription;
|
||||
}
|
||||
|
||||
public int getCata() {
|
||||
return cata;
|
||||
}
|
||||
|
||||
public void setCata(int cata) {
|
||||
this.cata = cata;
|
||||
}
|
||||
|
||||
public LocalDateTime getDealTime() {
|
||||
return dealTime;
|
||||
}
|
||||
|
||||
public void setDealTime(LocalDateTime dealTime) {
|
||||
this.dealTime = dealTime;
|
||||
}
|
||||
|
||||
public Float getDqTime() {
|
||||
return dqTime;
|
||||
}
|
||||
|
||||
public void setDqTime(Float dqTime) {
|
||||
this.dqTime = dqTime;
|
||||
}
|
||||
|
||||
public Integer getNumber() {
|
||||
return number;
|
||||
}
|
||||
|
||||
public void setNumber(Integer number) {
|
||||
this.number = number;
|
||||
}
|
||||
|
||||
public void setDealFlagDescription(String dealFlagDescription) {
|
||||
this.dealFlagDescription = dealFlagDescription;
|
||||
}
|
||||
|
||||
public String getDealFlagDescription() {
|
||||
return dealFlagDescription;
|
||||
}
|
||||
|
||||
public Integer getDealFlag() {
|
||||
return dealFlag;
|
||||
}
|
||||
|
||||
public void setDealFlag(Integer dealFlag) {
|
||||
this.dealFlag = dealFlag;
|
||||
}
|
||||
|
||||
public String getIndexEventDetail() {
|
||||
return indexEventDetail;
|
||||
}
|
||||
|
||||
public void setIndexEventDetail(String indexEventDetail) {
|
||||
this.indexEventDetail = indexEventDetail;
|
||||
}
|
||||
|
||||
public LocalDateTime getSagTime() {
|
||||
return sagTime;
|
||||
}
|
||||
|
||||
public void setSagTime(LocalDateTime sagTime) {
|
||||
this.sagTime = sagTime;
|
||||
}
|
||||
|
||||
public Integer getMsec() {
|
||||
return msec;
|
||||
}
|
||||
|
||||
public void setMsec(Integer msec) {
|
||||
this.msec = msec;
|
||||
}
|
||||
|
||||
public String getEvents() {
|
||||
return events;
|
||||
}
|
||||
|
||||
public void setEvents(String events) {
|
||||
this.events = events;
|
||||
}
|
||||
|
||||
public Float getPersistTime() {
|
||||
return persistTime;
|
||||
}
|
||||
|
||||
public void setPersistTime(Float persistTime) {
|
||||
if (persistTime == null) {
|
||||
this.persistTime = 0f;
|
||||
return;
|
||||
}
|
||||
|
||||
float f1 = (float) (Math.round(persistTime.floatValue() * 1000)) / 1000;
|
||||
this.persistTime = new Float(f1);
|
||||
}
|
||||
|
||||
public PlantInfo getPlantInfo() {
|
||||
return plantInfo;
|
||||
}
|
||||
|
||||
public void setPlantInfo(PlantInfo plantInfo) {
|
||||
this.plantInfo = plantInfo;
|
||||
}
|
||||
|
||||
public String getStrTime() {
|
||||
return strTime;
|
||||
}
|
||||
|
||||
public void setStrTime(String strTime) {
|
||||
this.strTime = strTime;
|
||||
}
|
||||
|
||||
public Long getTime() {
|
||||
return time;
|
||||
}
|
||||
|
||||
public void setTime(Long time) {
|
||||
this.time = time;
|
||||
}
|
||||
|
||||
public String getIndexPoint() {
|
||||
return indexPoint;
|
||||
}
|
||||
|
||||
public void setIndexPoint(String indexPoint) {
|
||||
this.indexPoint = indexPoint;
|
||||
}
|
||||
|
||||
public String getIndexEventAss() {
|
||||
return indexEventAss;
|
||||
}
|
||||
|
||||
public void setIndexEventAss(String indexEventAss) {
|
||||
this.indexEventAss = indexEventAss;
|
||||
}
|
||||
|
||||
public Float getEventValue() {
|
||||
return eventValue;
|
||||
}
|
||||
|
||||
public void setEventValue(Float eventValue) {
|
||||
if (eventValue == null) {
|
||||
this.eventValue = 0f;
|
||||
return;
|
||||
}
|
||||
|
||||
this.eventValue = eventValue;
|
||||
}
|
||||
|
||||
public String getSagReason() {
|
||||
return sagReason;
|
||||
}
|
||||
|
||||
public void setSagReason(String sagReason) {
|
||||
this.sagReason = sagReason;
|
||||
}
|
||||
|
||||
public String getSagType() {
|
||||
return sagType;
|
||||
}
|
||||
|
||||
public void setSagType(String sagType) {
|
||||
this.sagType = sagType;
|
||||
}
|
||||
|
||||
public String getStrEventValue() {
|
||||
return strEventValue;
|
||||
}
|
||||
|
||||
public void setStrEventValue(String strEventValue) {
|
||||
this.strEventValue = strEventValue;
|
||||
}
|
||||
|
||||
public String getStrPersist() {
|
||||
return strPersist;
|
||||
}
|
||||
|
||||
public void setStrPersist(String strPersist) {
|
||||
this.strPersist = strPersist;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 根据设定规则进行排序
|
||||
@Override
|
||||
public int compareTo(SagEvent obj) {
|
||||
switch (this.getSortType()) {
|
||||
case 1:
|
||||
return obj.getSeverity().compareTo(this.getSeverity());
|
||||
case 2:
|
||||
return this.getTime().compareTo(obj.getTime());
|
||||
case 3: {
|
||||
if (obj.getVoltage().compareTo(this.getVoltage()) != 0) {
|
||||
return obj.getVoltage().compareTo(this.getVoltage());
|
||||
}
|
||||
else {
|
||||
return this.getEventValue().compareTo(obj.getEventValue());
|
||||
}
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return this.getFirstTimeMills().compareTo(obj.getFirstTimeMills());
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,200 @@
|
||||
package com.njcn.advance.pojo.dto.waveAnalysis;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
public class AnalyWaveModel {
|
||||
|
||||
/********************************
|
||||
* 解析Comtrate文件相关实体类
|
||||
* @author yexb 转ww C#代码
|
||||
**********************************/
|
||||
|
||||
// 模拟量通道记录类
|
||||
public static class tagOneChannleCfg {
|
||||
// 通道序号
|
||||
public int nIndex;
|
||||
// 通道名称
|
||||
public String szChannleName;
|
||||
// 相位名称
|
||||
public String szPhasicName;
|
||||
// 监视的通道名称
|
||||
public String szMonitoredChannleName;
|
||||
// 通道的单位
|
||||
public String szUnitName;
|
||||
// 通道的系数
|
||||
public float fCoefficent;
|
||||
// 通道的便宜量
|
||||
public float fOffset;
|
||||
// 起始采样时间的偏移量
|
||||
public float fTimeOffset;
|
||||
// 采样值的最小值
|
||||
public int nMin;
|
||||
// 采样值的最大值
|
||||
public int nMax;
|
||||
// 一次变比
|
||||
public float fPrimary;
|
||||
// 二次变比
|
||||
public float fSecondary;
|
||||
// 一次值还是二次值标志
|
||||
public String szValueType;
|
||||
}
|
||||
|
||||
// 数字量通道记录类
|
||||
public static class tagOneChannleCfg_digital {
|
||||
// 通道序号
|
||||
public int nIndex;
|
||||
// 通道名称
|
||||
public String szChannleName;
|
||||
// 相位名称
|
||||
public String szPhasicName;
|
||||
// 监视的通道名称
|
||||
public String szMonitoredChannleName;
|
||||
// 通道的单位
|
||||
public int Initial;
|
||||
|
||||
}
|
||||
|
||||
// 配置文件总类
|
||||
public static class tagComtradeCfg {
|
||||
public int nChannelNum;
|
||||
public int nPhasic;// 模拟量通道的个数 yexibao 2020-12-15
|
||||
public int nAnalogNum;// 模拟量通道的个数 WW 2013-05-15
|
||||
public int nDigitalNum;// 数字量通道的个数 WW 2013-05-15
|
||||
public List<tagOneChannleCfg> OneChannleCfg;
|
||||
public List<tagOneChannleCfg_digital> OneChannleCfgDig;
|
||||
|
||||
public tagComtradeCfg() {
|
||||
OneChannleCfg = new LinkedList<tagOneChannleCfg>();
|
||||
OneChannleCfgDig = new LinkedList<tagOneChannleCfg_digital>();
|
||||
}
|
||||
}
|
||||
|
||||
public static class tagOneRate{
|
||||
// 1秒钟内的采样点数
|
||||
public long nOneSample;
|
||||
// 总采样点数
|
||||
public long nSampleNum;
|
||||
}
|
||||
|
||||
// 采样总结构
|
||||
public static class tagRates {
|
||||
public int nRates;
|
||||
public List<tagOneRate> OneRate;
|
||||
|
||||
public tagRates() {
|
||||
OneRate = new LinkedList<tagOneRate>();
|
||||
}
|
||||
}
|
||||
|
||||
// 采样值结构
|
||||
public static class tagOneValue {
|
||||
// 数据点时间
|
||||
public String szTime;
|
||||
// 数据点序号
|
||||
public int nIndex;
|
||||
// int nValueNum; WW 2013-05-15
|
||||
// 模拟量数据个数
|
||||
public int nAnalogValueNum;
|
||||
// 数字量数据个数
|
||||
public int nDigitalValueNum;
|
||||
// 数据区
|
||||
// float fValue[8];
|
||||
public List<Float> fValue;// WW 2013-05-15 原来的8通道也是仅考虑了单路的情况,如果遇到多路这里会超出
|
||||
public List<Byte> DigitalValue;// WW 2013-05-15
|
||||
|
||||
public tagOneValue() {
|
||||
fValue = new LinkedList<Float>();
|
||||
DigitalValue = new LinkedList<Byte>();
|
||||
}
|
||||
}
|
||||
|
||||
// 采样值总结构
|
||||
public static class tagValue {
|
||||
// 数据个数
|
||||
public int nValueNum;
|
||||
// 数据区
|
||||
public List<tagOneValue> OneValueList;
|
||||
|
||||
public tagValue() {
|
||||
OneValueList = new LinkedList<tagOneValue>();
|
||||
}
|
||||
}
|
||||
|
||||
public static class tagWave {
|
||||
// 标识 1-二次值的事件波形 2-二次值的RMS 3-一次值的事件波形 4-一次值的RMS
|
||||
//标识 5-二次值的事件波形 6-二次值的RMS 7-一次值的事件波形 8-一次值的RMS
|
||||
private int type;
|
||||
// 相别
|
||||
private int phaseType;// 0:A相;1:B相;2:c相
|
||||
// X坐标值
|
||||
private int xvalue;
|
||||
// y坐标值
|
||||
private float yvalue;
|
||||
|
||||
public int getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(int type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public int getPhaseType() {
|
||||
return phaseType;
|
||||
}
|
||||
|
||||
public void setPhaseType(int phaseType) {
|
||||
this.phaseType = phaseType;
|
||||
}
|
||||
|
||||
public int getXvalue() {
|
||||
return xvalue;
|
||||
}
|
||||
|
||||
public void setXvalue(int xvalue) {
|
||||
this.xvalue = xvalue;
|
||||
}
|
||||
|
||||
public float getYvalue() {
|
||||
return yvalue;
|
||||
}
|
||||
|
||||
public void setYvalue(float yvalue) {
|
||||
this.yvalue = yvalue;
|
||||
}
|
||||
}
|
||||
//增加返回值描述
|
||||
public static class tagDataValue {
|
||||
//波形对应的标题
|
||||
private List<String> tmpWaveTitle;
|
||||
//波形对应的值
|
||||
private List<List<Float>> listWaveData;
|
||||
//波形对应的相别数量
|
||||
private int iPhasic;
|
||||
|
||||
public List<String> getTmpWaveTitle() {
|
||||
return tmpWaveTitle;
|
||||
}
|
||||
|
||||
public void setTmpWaveTitle(List<String> tmpWaveTitle) {
|
||||
this.tmpWaveTitle = tmpWaveTitle;
|
||||
}
|
||||
|
||||
public List<List<Float>> getListWaveData() {
|
||||
return listWaveData;
|
||||
}
|
||||
|
||||
public void setListWaveData(List<List<Float>> listWaveData) {
|
||||
this.listWaveData = listWaveData;
|
||||
}
|
||||
|
||||
public int getiPhasic() {
|
||||
return iPhasic;
|
||||
}
|
||||
|
||||
public void setiPhasic(int iPhasic) {
|
||||
this.iPhasic = iPhasic;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,94 @@
|
||||
package com.njcn.advance.pojo.dto.waveAnalysis;
|
||||
|
||||
import com.sun.jna.Structure;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 输出参数
|
||||
* qvvr_cata_cause 暂降原因(目前算法不支持,不填)
|
||||
* qvvr_phasetype 暂降相别 1:一相 2:两相 3:三相
|
||||
* qvvr_cata_type 暂降类型
|
||||
* 持续时间(单位秒)
|
||||
* hold_time_rms 有效值算法持续时间
|
||||
* hold_time_dq dq变换算法持续时间
|
||||
* 波形起始点(单位度)
|
||||
* POW_a A相波形起始点
|
||||
* POW_b B相波形起始点
|
||||
* POW_c C相波形起始点
|
||||
* 跳变段电压变化率(单位V/S)
|
||||
* Voltagechange_Va A相跳变段电压变化率
|
||||
* Voltagechange_Vb B相跳变段电压变化率
|
||||
* Voltagechange_Vc C相跳变段电压变化率
|
||||
* 分段信息
|
||||
* SEG_T_num 分段数目
|
||||
* SEG_T0_idx 原始分段位置
|
||||
* SEG_T_idx 修正分段位置
|
||||
* 有效值分段信息
|
||||
* SEG_RMS_T_num 分段数目
|
||||
* SEG_RMS_T_idx 分段位置
|
||||
* 特征幅值(单位V)
|
||||
* u_min_num 特征值个数
|
||||
* ua_min A相电压特征值
|
||||
* ub_min B相电压特征值
|
||||
* uc_min C相电压特征值
|
||||
* u3_min 三相电压特征值
|
||||
* order_min_idx 最小值位置
|
||||
* 相位跳变(单位度)
|
||||
* angle_diff_ap A相相位正跳变
|
||||
* angle_diff_bp B相相位正跳变
|
||||
* angle_diff_cp C相相位正跳变
|
||||
* angle_diff_an A相相位负跳变
|
||||
* angle_diff_bn B相相位负跳变
|
||||
* angle_diff_cn C相相位负跳变
|
||||
* bph_max_value 不平衡度(单位%)
|
||||
*/
|
||||
public class BackData extends Structure {
|
||||
public int qvvr_cata_cause[] = new int[256];
|
||||
public int qvvr_phasetype[] = new int[256];
|
||||
public int qvvr_cata_type[] = new int[256];
|
||||
public float hold_time_rms;
|
||||
public float hold_time_dq;
|
||||
public float POW_a;
|
||||
public float POW_b;
|
||||
public float POW_c;
|
||||
public float Voltagechange_Va;
|
||||
public float Voltagechange_Vb;
|
||||
public float Voltagechange_Vc;
|
||||
public int SEG_T_num;
|
||||
public int SEG_T0_idx[] = new int[256];
|
||||
public int SEG_T_idx[] = new int[256];
|
||||
public int SEG_RMS_T_num;
|
||||
public int SEG_RMS_T_idx[] = new int[256];
|
||||
public int u_min_num;
|
||||
public float ua_min[] = new float[256];
|
||||
public float ub_min[] = new float[256];
|
||||
public float uc_min[] = new float[256];
|
||||
public float u3_min[] = new float[256];
|
||||
public int order_min_idx[] = new int[256];
|
||||
public float angle_diff_ap[] = new float[256];
|
||||
public float angle_diff_bp[] = new float[256];
|
||||
public float angle_diff_cp[] = new float[256];
|
||||
public float angle_diff_an[] = new float[256];
|
||||
public float angle_diff_bn[] = new float[256];
|
||||
public float angle_diff_cn[] = new float[256];
|
||||
public float bph_max_value[] = new float[256];
|
||||
|
||||
public static class ByReference extends BackData implements Structure.ByReference {
|
||||
|
||||
}
|
||||
|
||||
public static class ByValue extends BackData implements Structure.ByValue {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> getFieldOrder() {
|
||||
return Arrays.asList(new String[] { "qvvr_cata_cause", "qvvr_phasetype", "qvvr_cata_type", "hold_time_rms",
|
||||
"hold_time_dq", "POW_a", "POW_b", "POW_c", "Voltagechange_Va", "Voltagechange_Vb", "Voltagechange_Vc",
|
||||
"SEG_T_num", "SEG_T0_idx", "SEG_T_idx","SEG_RMS_T_num","SEG_RMS_T_idx", "u_min_num", "ua_min", "ub_min", "uc_min", "u3_min",
|
||||
"order_min_idx", "angle_diff_ap", "angle_diff_bp", "angle_diff_cp", "angle_diff_an", "angle_diff_bn",
|
||||
"angle_diff_cn", "bph_max_value" });
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.njcn.advance.pojo.dto.waveAnalysis;
|
||||
|
||||
import com.sun.jna.Structure;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public class CauseStruct extends Structure {
|
||||
//最大能容纳的数据
|
||||
public static final int MAX_SMP_DATA_LEN = 128 * 50 * 120;
|
||||
public float smp_va[] = new float[MAX_SMP_DATA_LEN];
|
||||
public float smp_vb[] = new float[MAX_SMP_DATA_LEN];
|
||||
public float smp_vc[] = new float[MAX_SMP_DATA_LEN];
|
||||
public int smp_rate;
|
||||
public int smp_len;
|
||||
public float threshold[] = new float[50];
|
||||
public int cause = 0;
|
||||
public int no_cal = 0;
|
||||
|
||||
public static class ByReference extends CauseStruct implements Structure.ByReference {
|
||||
}
|
||||
|
||||
public static class ByValue extends CauseStruct implements Structure.ByValue {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> getFieldOrder() { // 返回值填入的顺序
|
||||
return Arrays.asList(new String[] { "cause", "no_cal" });
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package com.njcn.advance.pojo.dto.waveAnalysis;
|
||||
|
||||
public class DirectionData{
|
||||
private int trigTime[] = new int[256];
|
||||
private float qvvrBeforeRms[] = new float[256];
|
||||
private float qvvrBeforeZk[] = new float[256];
|
||||
private float qvvrOccurRms[] = new float[256];
|
||||
private float qvvrOccurZk[] = new float[256];
|
||||
private String qvvrPosInfo[] = new String[256];
|
||||
|
||||
public int[] getTrigTime() {
|
||||
return trigTime;
|
||||
}
|
||||
public void setTrigTime(int[] trigTime) {
|
||||
this.trigTime = trigTime;
|
||||
}
|
||||
public float[] getQvvrBeforeRms() {
|
||||
return qvvrBeforeRms;
|
||||
}
|
||||
public void setQvvrBeforeRms(float[] qvvrBeforeRms) {
|
||||
this.qvvrBeforeRms = qvvrBeforeRms;
|
||||
}
|
||||
public float[] getQvvrBeforeZk() {
|
||||
return qvvrBeforeZk;
|
||||
}
|
||||
public void setQvvrBeforeZk(float[] qvvrBeforeZk) {
|
||||
this.qvvrBeforeZk = qvvrBeforeZk;
|
||||
}
|
||||
public float[] getQvvrOccurRms() {
|
||||
return qvvrOccurRms;
|
||||
}
|
||||
public void setQvvrOccurRms(float[] qvvrOccurRms) {
|
||||
this.qvvrOccurRms = qvvrOccurRms;
|
||||
}
|
||||
public float[] getQvvrOccurZk() {
|
||||
return qvvrOccurZk;
|
||||
}
|
||||
public void setQvvrOccurZk(float[] qvvrOccurZk) {
|
||||
this.qvvrOccurZk = qvvrOccurZk;
|
||||
}
|
||||
public String[] getQvvrPosInfo() {
|
||||
return qvvrPosInfo;
|
||||
}
|
||||
public void setQvvrPosInfo(String[] qvvrPosInfo) {
|
||||
this.qvvrPosInfo = qvvrPosInfo;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package com.njcn.advance.pojo.dto.waveAnalysis;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author njcn
|
||||
* @高级算法返回数据
|
||||
* @包含RMS值
|
||||
* @X轴坐标
|
||||
* @处理返回的结果
|
||||
*/
|
||||
@Data
|
||||
public class EntityAdvancedData {
|
||||
public float smp_a[];
|
||||
public float smp_b[];
|
||||
public float smp_c[];
|
||||
public float smp_x[];
|
||||
public int smp_len;
|
||||
public String sagReason[]; // 暂降原因描述,数据库获取
|
||||
public String sagType[]; // 暂降类型描述,数据库获取
|
||||
public String sagPhaseType[]; // 暂降相别 1-一相 2-两相 3-三相
|
||||
public int backNumber = -1;
|
||||
public BackData evt_buf[];
|
||||
public PowerData power_before_buf[];
|
||||
public PowerData power_after_buf[];
|
||||
public DirectionData qvvr_direction_info[];
|
||||
public UtblData qvvr_utbl_info[];
|
||||
|
||||
public EntityAdvancedData(int lengthRMS) {
|
||||
super();
|
||||
this.smp_a = new float[lengthRMS];
|
||||
this.smp_b = new float[lengthRMS];
|
||||
this.smp_c = new float[lengthRMS];
|
||||
this.smp_x = new float[lengthRMS];
|
||||
this.sagReason = new String[256];
|
||||
this.sagType = new String[256];
|
||||
this.sagPhaseType = new String[256];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package com.njcn.advance.pojo.dto.waveAnalysis;
|
||||
|
||||
public class PowerData{
|
||||
private float fundP[] = new float[256];
|
||||
private float fundQ[] = new float[256];
|
||||
private float fundS[] = new float[256];
|
||||
|
||||
public float[] getFundP() {
|
||||
return fundP;
|
||||
}
|
||||
public void setFundP(float[] fundP) {
|
||||
this.fundP = fundP;
|
||||
}
|
||||
public float[] getFundQ() {
|
||||
return fundQ;
|
||||
}
|
||||
public void setFundQ(float[] fundQ) {
|
||||
this.fundQ = fundQ;
|
||||
}
|
||||
public float[] getFundS() {
|
||||
return fundS;
|
||||
}
|
||||
public void setFundS(float[] fundS) {
|
||||
this.fundS = fundS;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,168 @@
|
||||
package com.njcn.advance.pojo.dto.waveAnalysis;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
public class PubWaveModel {
|
||||
|
||||
/************************
|
||||
* Comtrate文件相关
|
||||
*
|
||||
* @author Yexb
|
||||
*
|
||||
**************************/
|
||||
|
||||
// 模拟量通道记录类
|
||||
public static class tagOneChannleCfg {
|
||||
// 通道序号
|
||||
public int nIndex;
|
||||
// 通道名称
|
||||
public String szChannleName;
|
||||
// 相位名称
|
||||
public String szPhasicName;
|
||||
// 监视的通道名称
|
||||
public String szMonitoredChannleName;
|
||||
// 通道的单位
|
||||
public String szUnitName;
|
||||
// 通道的系数
|
||||
public float fCoefficent;
|
||||
// 通道的便宜量
|
||||
public float fOffset;
|
||||
// 起始采样时间的偏移量
|
||||
public float fTimeOffset;
|
||||
// 采样值的最小值
|
||||
public int nMin;
|
||||
// 采样值的最大值
|
||||
public int nMax;
|
||||
// 一次变比
|
||||
public float fPrimary;
|
||||
// 二次变比
|
||||
public float fSecondary;
|
||||
// 一次值还是二次值标志
|
||||
public String szValueType;
|
||||
}
|
||||
|
||||
// 数字量通道记录类
|
||||
public static class tagOneChannleCfg_digital {
|
||||
// 通道序号
|
||||
public int nIndex;
|
||||
// 通道名称
|
||||
public String szChannleName;
|
||||
// 相位名称
|
||||
public String szPhasicName;
|
||||
// 监视的通道名称
|
||||
public String szMonitoredChannleName;
|
||||
// 通道的单位
|
||||
public int Initial;
|
||||
|
||||
}
|
||||
|
||||
// 配置文件总类
|
||||
public static class tagComtradeCfg {
|
||||
public int nChannelNum;
|
||||
public int nAnalogNum;// 模拟量通道的个数 WW 2013-05-15
|
||||
public int nDigitalNum;// 数字量通道的个数 WW 2013-05-15
|
||||
public List<tagOneChannleCfg> OneChannleCfg;
|
||||
public List<tagOneChannleCfg_digital> OneChannleCfgDig;
|
||||
|
||||
public tagComtradeCfg() {
|
||||
OneChannleCfg = new LinkedList<tagOneChannleCfg>();
|
||||
OneChannleCfgDig = new LinkedList<tagOneChannleCfg_digital>();
|
||||
}
|
||||
}
|
||||
|
||||
public static class tagOneRate {
|
||||
// 1秒钟内的采样点数
|
||||
public long nOneSample;
|
||||
// 总采样点数
|
||||
public long nSampleNum;
|
||||
}
|
||||
|
||||
// 采样总结构
|
||||
public static class tagRates {
|
||||
public int nRates;
|
||||
public List<tagOneRate> OneRate;
|
||||
|
||||
public tagRates() {
|
||||
OneRate = new LinkedList<tagOneRate>();
|
||||
}
|
||||
}
|
||||
|
||||
// 采样值结构
|
||||
public static class tagOneValue {
|
||||
// 数据点时间
|
||||
public String szTime;
|
||||
// 数据点序号
|
||||
public int nIndex;
|
||||
// int nValueNum; WW 2013-05-15
|
||||
// 模拟量数据个数
|
||||
public int nAnalogValueNum;
|
||||
// 数字量数据个数
|
||||
public int nDigitalValueNum;
|
||||
// 数据区
|
||||
// float fValue[8];
|
||||
public List<Float> fValue;// WW 2013-05-15 原来的8通道也是仅考虑了单路的情况,如果遇到多路这里会超出
|
||||
public List<Byte> DigitalValue;// WW 2013-05-15
|
||||
|
||||
public tagOneValue() {
|
||||
fValue = new LinkedList<Float>();
|
||||
DigitalValue = new LinkedList<Byte>();
|
||||
}
|
||||
}
|
||||
|
||||
// 采样值总结构
|
||||
public static class tagValue {
|
||||
// 数据个数
|
||||
public int nValueNum;
|
||||
// 数据区
|
||||
public List<tagOneValue> OneValueList;
|
||||
|
||||
public tagValue() {
|
||||
OneValueList = new LinkedList<tagOneValue>();
|
||||
}
|
||||
}
|
||||
|
||||
public static class tagWave {
|
||||
// 标识 1-二次值的事件波形 2-二次值的RMS 3-一次值的事件波形 4-一次值的RMS
|
||||
//标识 5-二次值的事件波形 6-二次值的RMS 7-一次值的事件波形 8-一次值的RMS
|
||||
private int type;
|
||||
// 相别
|
||||
private int phaseType;// 0:A相;1:B相;2:c相
|
||||
// X坐标值
|
||||
private float xvalue;
|
||||
// y坐标值
|
||||
private float yvalue;
|
||||
|
||||
public int getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(int type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public int getPhaseType() {
|
||||
return phaseType;
|
||||
}
|
||||
|
||||
public void setPhaseType(int phaseType) {
|
||||
this.phaseType = phaseType;
|
||||
}
|
||||
|
||||
public float getXvalue() {
|
||||
return xvalue;
|
||||
}
|
||||
|
||||
public void setXvalue(float xvalue) {
|
||||
this.xvalue = xvalue;
|
||||
}
|
||||
|
||||
public float getYvalue() {
|
||||
return yvalue;
|
||||
}
|
||||
|
||||
public void setYvalue(float yvalue) {
|
||||
this.yvalue = yvalue;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package com.njcn.advance.pojo.dto.waveAnalysis;
|
||||
|
||||
import com.sun.jna.Structure;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author njcn
|
||||
* 传入参数
|
||||
* smp_va A相电压波形数据
|
||||
* smp_vb B相电压波形数据
|
||||
* smp_vc C相电压波形数据
|
||||
* smp_rate 波形采样率
|
||||
* smp_len 每个通道波形数据个数
|
||||
* evt_num 高级算法返回事件个数
|
||||
* evt_buf 高级算法返回数据
|
||||
*/
|
||||
public class Rect extends Structure {
|
||||
public static final int MAX_SMP_DATA_LEN = 128*50*120;
|
||||
public float smp_va[] = new float[MAX_SMP_DATA_LEN];
|
||||
public float smp_vb[] = new float[MAX_SMP_DATA_LEN];
|
||||
public float smp_vc[] = new float[MAX_SMP_DATA_LEN];
|
||||
public int smp_rate;
|
||||
public int smp_len;
|
||||
public int evt_num = -1;
|
||||
public BackData evt_buf[] = new BackData[32];
|
||||
|
||||
public static class ByReference extends Rect implements Structure.ByReference {
|
||||
|
||||
}
|
||||
|
||||
public static class ByValue extends Rect implements Structure.ByValue {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> getFieldOrder() {
|
||||
return Arrays.asList(new String[] { "evt_num","evt_buf" });
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.njcn.advance.pojo.dto.waveAnalysis;
|
||||
|
||||
public class UtblData{
|
||||
private long trigTime[] = new long[1];
|
||||
|
||||
public long[] getTrigTime() {
|
||||
return trigTime;
|
||||
}
|
||||
|
||||
public void setTrigTime(long[] trigTime) {
|
||||
this.trigTime = trigTime;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,296 @@
|
||||
package com.njcn.advance.pojo.dto.waveAnalysis;
|
||||
|
||||
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author hongawen
|
||||
* @Date: 2018/12/4 10:03
|
||||
*/
|
||||
public class WaveData implements Serializable {
|
||||
//标题数据
|
||||
private List<String> tmpWaveTitle = new ArrayList<>();
|
||||
|
||||
//瞬时波形的数据
|
||||
List<List<Float>> sunData = new ArrayList<>();
|
||||
|
||||
//RMS波形的数据
|
||||
List<List<Float>> rmsData = new ArrayList<>();
|
||||
|
||||
//相别个数
|
||||
private int iPhasic = 0;
|
||||
|
||||
//PT变比
|
||||
Float pt = 0.0f;
|
||||
|
||||
//CT变比
|
||||
Float ct = 0.0f;
|
||||
|
||||
private String a="A相";
|
||||
|
||||
private String b="B相";
|
||||
|
||||
private String c="C相";
|
||||
|
||||
//波形采样率
|
||||
private long nOneWaveNum = 32;
|
||||
private Date firstTime;//暂降触发第一次
|
||||
private Integer firstMs;
|
||||
|
||||
|
||||
//发生时刻
|
||||
String time;
|
||||
|
||||
//暂降类型
|
||||
String waveType;
|
||||
|
||||
//严重度
|
||||
float yzd;
|
||||
|
||||
//监测点名称
|
||||
String lineName;
|
||||
|
||||
//暂降幅值
|
||||
Float eventValue;
|
||||
|
||||
//持续时间
|
||||
Float persistTime;
|
||||
|
||||
//暂降触发时间
|
||||
private Date trigeTime;
|
||||
|
||||
private boolean openTri=false;
|
||||
|
||||
//最大最小值集合
|
||||
private List<PubWaveModel.tagWave> readComtrade = new ArrayList<>();
|
||||
|
||||
//变电站名称
|
||||
private String subName;
|
||||
|
||||
|
||||
|
||||
public WaveData() {
|
||||
iPhasic = 0;
|
||||
}
|
||||
|
||||
public AnalyWaveModel.tagRates getRatesCfg() {
|
||||
return RatesCfg;
|
||||
}
|
||||
|
||||
public void setRatesCfg(AnalyWaveModel.tagRates ratesCfg) {
|
||||
RatesCfg = ratesCfg;
|
||||
}
|
||||
|
||||
private AnalyWaveModel.tagRates RatesCfg;//cfg_采样率实体类
|
||||
|
||||
public List<PubWaveModel.tagWave> getReadComtrade() {
|
||||
return readComtrade;
|
||||
}
|
||||
|
||||
public void setReadComtrade(List<PubWaveModel.tagWave> readComtrade) {
|
||||
this.readComtrade = readComtrade;
|
||||
}
|
||||
|
||||
public List<List<Float>> getSunData() {
|
||||
return sunData;
|
||||
}
|
||||
|
||||
public void setSunData(List<List<Float>> sunData) {
|
||||
this.sunData = sunData;
|
||||
}
|
||||
|
||||
public List<List<Float>> getRmsData() {
|
||||
return rmsData;
|
||||
}
|
||||
|
||||
public void setRmsData(List<List<Float>> rmsData) {
|
||||
this.rmsData = rmsData;
|
||||
}
|
||||
|
||||
public Float getPt() {
|
||||
return pt;
|
||||
}
|
||||
|
||||
public void setPt(Float pt) {
|
||||
this.pt = pt;
|
||||
}
|
||||
|
||||
public String getTime() {
|
||||
return time;
|
||||
}
|
||||
|
||||
public void setTime(String time) {
|
||||
this.time = time;
|
||||
}
|
||||
|
||||
public String getWaveType() {
|
||||
return waveType;
|
||||
}
|
||||
|
||||
public void setWaveType(String waveType) {
|
||||
this.waveType = waveType;
|
||||
}
|
||||
|
||||
public float getYzd() {
|
||||
return yzd;
|
||||
}
|
||||
|
||||
public void setYzd(float yzd) {
|
||||
this.yzd = yzd;
|
||||
}
|
||||
|
||||
public Float getCt() {
|
||||
return ct;
|
||||
}
|
||||
|
||||
public void setCt(Float ct) {
|
||||
this.ct = ct;
|
||||
}
|
||||
|
||||
public long getnOneWaveNum() {
|
||||
return nOneWaveNum;
|
||||
}
|
||||
|
||||
public void setnOneWaveNum(long nOneWaveNum) {
|
||||
this.nOneWaveNum = nOneWaveNum;
|
||||
}
|
||||
|
||||
public Date getFirstTime() {
|
||||
return firstTime;
|
||||
}
|
||||
|
||||
public void setFirstTime(Date firstTime) {
|
||||
this.firstTime = firstTime;
|
||||
}
|
||||
|
||||
public Integer getFirstMs() {
|
||||
return firstMs;
|
||||
}
|
||||
|
||||
public void setFirstMs(Integer firstMs) {
|
||||
this.firstMs = firstMs;
|
||||
}
|
||||
|
||||
public String getLineName() {
|
||||
return lineName;
|
||||
}
|
||||
|
||||
public void setLineName(String lineName) {
|
||||
this.lineName = lineName;
|
||||
}
|
||||
|
||||
public Float getEventValue() {
|
||||
return eventValue;
|
||||
}
|
||||
|
||||
public void setEventValue(Float eventValue) {
|
||||
this.eventValue = eventValue;
|
||||
}
|
||||
|
||||
public Float getPersistTime() {
|
||||
return persistTime;
|
||||
}
|
||||
|
||||
public void setPersistTime(Float persistTime) {
|
||||
this.persistTime = persistTime;
|
||||
}
|
||||
|
||||
|
||||
public Date getTrigeTime() {
|
||||
return trigeTime;
|
||||
}
|
||||
|
||||
public void setTrigeTime(Date trigeTime) {
|
||||
this.trigeTime = trigeTime;
|
||||
}
|
||||
|
||||
public boolean getOpenTri() {
|
||||
return openTri;
|
||||
}
|
||||
|
||||
public void setOpen(boolean open) {
|
||||
this.openTri = open;
|
||||
}
|
||||
|
||||
public List<String> getTmpWaveTitle() {
|
||||
return tmpWaveTitle;
|
||||
}
|
||||
|
||||
public void setTmpWaveTitle(List<String> tmpWaveTitle) {
|
||||
this.tmpWaveTitle = tmpWaveTitle;
|
||||
}
|
||||
|
||||
public String getA() {
|
||||
return a;
|
||||
}
|
||||
|
||||
public void setA(String a) {
|
||||
this.a = a;
|
||||
}
|
||||
|
||||
public String getB() {
|
||||
return b;
|
||||
}
|
||||
|
||||
public void setB(String b) {
|
||||
this.b = b;
|
||||
}
|
||||
|
||||
public String getC() {
|
||||
return c;
|
||||
}
|
||||
|
||||
public void setC(String c) {
|
||||
this.c = c;
|
||||
}
|
||||
|
||||
public String getSubName() {
|
||||
return subName;
|
||||
}
|
||||
|
||||
public void setSubName(String subName) {
|
||||
this.subName = subName;
|
||||
}
|
||||
|
||||
|
||||
public int getiPhasic() {
|
||||
return iPhasic;
|
||||
}
|
||||
|
||||
public void setiPhasic(int iPhasic) {
|
||||
this.iPhasic = iPhasic;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "WaveData{" +
|
||||
"tmpWaveTitle=" + tmpWaveTitle +
|
||||
", sunData=" + sunData +
|
||||
", rmsData=" + rmsData +
|
||||
", iPhasic=" + iPhasic +
|
||||
", pt=" + pt +
|
||||
", ct=" + ct +
|
||||
", a='" + a + '\'' +
|
||||
", b='" + b + '\'' +
|
||||
", c='" + c + '\'' +
|
||||
", nOneWaveNum=" + nOneWaveNum +
|
||||
", firstTime=" + firstTime +
|
||||
", firstMs=" + firstMs +
|
||||
", RatesCfg=" + RatesCfg +
|
||||
", time='" + time + '\'' +
|
||||
", waveType='" + waveType + '\'' +
|
||||
", yzd=" + yzd +
|
||||
", lineName='" + lineName + '\'' +
|
||||
", eventValue=" + eventValue +
|
||||
", persistTime=" + persistTime +
|
||||
", trigeTime=" + trigeTime +
|
||||
", openTri=" + openTri +
|
||||
", readComtrade=" + readComtrade +
|
||||
", subName='" + subName + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package com.njcn.advance.pojo.po;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.njcn.db.bo.BaseEntity;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.sql.Timestamp;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@TableName("pqs_relevancy_log")
|
||||
public class PqsRelevanceLog extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 归一化算法时间
|
||||
*/
|
||||
@TableId("Time_Id")
|
||||
private LocalDateTime timeId;
|
||||
|
||||
|
||||
/**
|
||||
* 归一化算法描述
|
||||
*/
|
||||
private String contentDes;
|
||||
|
||||
private Integer state;
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user