diff --git a/cs-harmonic/cs-harmonic-api/pom.xml b/cs-harmonic/cs-harmonic-api/pom.xml
index e03ce97..2473bef 100644
--- a/cs-harmonic/cs-harmonic-api/pom.xml
+++ b/cs-harmonic/cs-harmonic-api/pom.xml
@@ -51,6 +51,12 @@
1.0.0
compile
+
+ com.njcn
+ common-oss
+ 1.0.0
+ compile
+
UTF-8
diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/dto/report/DataI.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/dto/report/DataI.java
new file mode 100644
index 0000000..0ff5c5d
--- /dev/null
+++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/dto/report/DataI.java
@@ -0,0 +1,81 @@
+package com.njcn.csharmonic.pojo.dto.report;
+
+import lombok.Data;
+import org.influxdb.annotation.Column;
+import org.influxdb.annotation.Measurement;
+
+import java.time.Instant;
+
+/**
+ * data_v influxDB别名映射表
+ *
+ * @author qijian
+ * @version 1.0.0
+ * @createTime 2022/10/27 15:27
+ */
+@Data
+@Measurement(name = "data_i")
+public class DataI {
+
+ @Column(name = "time")
+ private Instant time;
+
+ @Column(name = "phasic_type")
+ private String phaseType;
+
+ @Column(name = "value_type")
+ private String valueType;
+
+ @Column(name = "rms")
+ private Double rms;
+
+ @Column(name = "line_id")
+ private String lineId;
+
+ @Column(name = "freq_max")
+ private Double frepMAX;
+
+ @Column(name = "freq_min")
+ private Double frepMIN;
+
+ @Column(name = "rms_max")
+ private Double rmsMAX;
+
+ @Column(name = "rms_min")
+ private Double rmsMIN;
+
+ @Column(name = "rms_lvr_max")
+ private Double rmsLvrMAX;
+
+ @Column(name = "rms_lvr_min")
+ private Double rmsLvrMIN;
+
+ @Column(name = "v_thd_max")
+ private Double vThdMAX;
+
+ @Column(name = "v_thd_min")
+ private Double vThdMIN;
+
+ @Column(name = "v_unbalance_max")
+ private Double vUnbalanceMAX;
+
+ @Column(name = "v_unbalance_min")
+ private Double vUnbalanceMIN;
+
+ @Column(name = "freq_count")
+ private Integer freqCount;
+
+ @Column(name = "rms_count")
+ private Integer rmsCount;
+
+ @Column(name = "rms_lvr_count")
+ private Integer rmsLvrCount;
+
+ @Column(name = "v_thd_count")
+ private Integer vThdCount;
+
+ @Column(name = "v_unbalance_count")
+ private Integer vUnbalanceCount;
+
+
+}
diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/dto/report/EnumPass.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/dto/report/EnumPass.java
new file mode 100644
index 0000000..583f5c9
--- /dev/null
+++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/dto/report/EnumPass.java
@@ -0,0 +1,35 @@
+package com.njcn.csharmonic.pojo.dto.report;
+
+public enum EnumPass {
+ MAX(1, "使用最大值与国标限值比较,判断指标是否合格"),
+ MIN(2, "使用最小值与国标限值比较,判断指标是否合格"),
+ MEAN(3, "使用平均值与国标限值比较,判断指标是否合格"),
+ CP95(4, "使用CP95值与国标限值比较,判断指标是否合格"),
+ DEFAULT(5, "不作比较"),
+ PASS(0, "合格"),
+ FPYVALUE(98, "合格率限值"),
+ FPYV(1, "UHARM_0_OVERTIME"),
+ FPYI(2, "IHARM_0_OVERTIME"),
+ FPYVOLTAGE(3, "VOLTAGE_DEV_OVERTIME"),
+ FPYTHREE(4, "UBALANCE_OVERTIME"),
+ FPYTHDV(5, "UABERRANCE_OVERTIME"),
+ FPYRATE(6, "FREQ_DEV_OVERTIME"),
+ FPYFLICKER(7, "FLICKER_OVERTIME"),
+ NOPASS(-1, "不合格");
+
+ private Integer code;
+ private String describe;
+
+ EnumPass(Integer code, String describe) {
+ this.code = code;
+ this.describe = describe;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public String getDescribe() {
+ return describe;
+ }
+}
diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/dto/report/OverLimitInfo.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/dto/report/OverLimitInfo.java
new file mode 100644
index 0000000..ec51794
--- /dev/null
+++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/dto/report/OverLimitInfo.java
@@ -0,0 +1,20 @@
+package com.njcn.csharmonic.pojo.dto.report;
+
+
+import com.njcn.device.biz.pojo.po.Overlimit;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class OverLimitInfo implements Serializable {
+ private static final long serialVersionUID = 7466469972886414616L;
+ private List overLimitRate;
+ private Double count;
+ private Double pltCount;
+ private Double pstCount;
+ private List list;
+ private String mode;
+
+}
diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/dto/report/Pass.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/dto/report/Pass.java
new file mode 100644
index 0000000..f0d1e8f
--- /dev/null
+++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/dto/report/Pass.java
@@ -0,0 +1,24 @@
+package com.njcn.csharmonic.pojo.dto.report;
+
+import lombok.Data;
+
+/**
+ * @author wr
+ * @description
+ * @date 2023/4/12 11:40
+ */
+@Data
+public class Pass {
+ private Float overLimit;
+ private Integer code;
+
+ public Pass(Float overLimit) {
+ this.code = EnumPass.DEFAULT.getCode();
+ this.overLimit = overLimit;
+ }
+
+ public Pass(Float overLimit, Integer code) {
+ this.overLimit = overLimit;
+ this.code = code;
+ }
+}
diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/dto/report/ReportTarget.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/dto/report/ReportTarget.java
new file mode 100644
index 0000000..0877c0c
--- /dev/null
+++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/dto/report/ReportTarget.java
@@ -0,0 +1,17 @@
+package com.njcn.csharmonic.pojo.dto.report;
+
+import com.njcn.csharmonic.pojo.vo.report.ReportValue;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+@Data
+public class ReportTarget implements Serializable {
+
+ private static final long serialVersionUID = -6931764660060228127L;
+ private List list;
+ private Float overLimit; //指标的国标限值
+ private Integer pass;
+
+
+}
diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/param/report/ReportQueryParam.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/param/report/ReportQueryParam.java
new file mode 100644
index 0000000..d541cb9
--- /dev/null
+++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/param/report/ReportQueryParam.java
@@ -0,0 +1,36 @@
+package com.njcn.csharmonic.pojo.param.report;
+
+import com.njcn.web.pojo.annotation.DateTimeStrValid;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * pqs
+ *
+ * @author cdf
+ * @date 2022/8/26
+ */
+@Data
+public class ReportQueryParam {
+
+ @ApiModelProperty(name = "lineId",value = "监测点id")
+ private String lineId;
+
+ @ApiModelProperty(name = "startTime",value = "开始时间")
+ @NotBlank(message = "起始时间不可为空")
+ @DateTimeStrValid(message = "起始时间格式出错")
+ private String startTime;
+
+ @ApiModelProperty(name = "endTime",value = "结束时间")
+ @NotBlank(message = "结束时间不可为空")
+ private String endTime;
+
+ @ApiModelProperty(name = "b",value = "判断时间是否是当天(true 当天 false不是当天)")
+ private Boolean b ;
+
+ @ApiModelProperty(name = "lineId",value = "95条数取值")
+ private double count;
+
+}
diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatAssesDPO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatAssesDPO.java
new file mode 100644
index 0000000..4488cad
--- /dev/null
+++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatAssesDPO.java
@@ -0,0 +1,44 @@
+package com.njcn.csharmonic.pojo.po.day;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 类的介绍:
+ *
+ * @author xuyang
+ * @version 1.0.0
+ * @createTime 2023/3/27 15:20
+ */
+@Data
+@TableName(value = "r_stat_asses_d")
+public class RStatAssesDPO implements Serializable {
+
+ @MppMultiId
+ @TableField(value = "time_id")
+ private Date time;
+
+ @MppMultiId
+ @TableField(value = "line_id")
+ private String lineId;
+
+ @TableField(value = "vu_dev")
+ private Double vuDev;
+
+ @TableField(value = "freq_dev")
+ private Double freqDev;
+
+ @TableField(value = "data_plt")
+ private Double dataPlt;
+
+ @TableField(value = "v_unbalance_cp95")
+ private Double vUnbalanceCp95;
+
+ @TableField(value = "v_thd_cp95")
+ private Double vThdCp95;
+}
diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatComassesDPO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatComassesDPO.java
new file mode 100644
index 0000000..d611b59
--- /dev/null
+++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatComassesDPO.java
@@ -0,0 +1,120 @@
+package com.njcn.csharmonic.pojo.po.day;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 类的介绍:
+ *
+ * @author xuyang
+ * @version 1.0.0
+ * @createTime 2023/3/27 15:20
+ */
+@Data
+@TableName(value = "r_stat_comasses_d")
+public class RStatComassesDPO implements Serializable {
+
+ @MppMultiId
+ @TableField(value = "time_id")
+ private Date time;
+
+ @MppMultiId
+ @TableField(value = "line_id")
+ private String lineId;
+
+ @TableField(value = "freq_dev1")
+ private Double freqDev1;
+
+ @TableField(value = "freq_dev2")
+ private Double freqDev2;
+
+ @TableField(value = "freq_dev3")
+ private Double freqDev3;
+
+ @TableField(value = "freq_dev4")
+ private Double freqDev4;
+
+ @TableField(value = "freq_dev5")
+ private Double freqDev5;
+
+ @TableField(value = "vu_dev1")
+ private Double vuDev1;
+
+ @TableField(value = "vu_dev2")
+ private Double vuDev2;
+
+ @TableField(value = "vu_dev3")
+ private Double vuDev3;
+
+ @TableField(value = "vu_dev4")
+ private Double vuDev4;
+
+ @TableField(value = "vu_dev5")
+ private Double vuDev5;
+
+ @TableField(value = "data_plt1")
+ private Double dataPst1;
+
+ @TableField(value = "data_plt2")
+ private Double dataPst2;
+
+ @TableField(value = "data_plt3")
+ private Double dataPst3;
+
+ @TableField(value = "data_plt4")
+ private Double dataPst4;
+
+ @TableField(value = "data_plt5")
+ private Double dataPst5;
+
+ @TableField(value = "v_unbalance1")
+ private Double vUnbalance1;
+
+ @TableField(value = "v_unbalance2")
+ private Double vUnbalance2;
+
+ @TableField(value = "v_unbalance3")
+ private Double vUnbalance3;
+
+ @TableField(value = "v_unbalance4")
+ private Double vUnbalance4;
+
+ @TableField(value = "v_unbalance5")
+ private Double vUnbalance5;
+
+ @TableField(value = "v_thd1")
+ private Double vThd1;
+
+ @TableField(value = "v_thd2")
+ private Double vThd2;
+
+ @TableField(value = "v_thd3")
+ private Double vThd3;
+
+ @TableField(value = "v_thd4")
+ private Double vThd4;
+
+ @TableField(value = "v_thd5")
+ private Double vThd5;
+
+ @TableField(value = "event1")
+ private Double event1;
+
+ @TableField(value = "event2")
+ private Double event2;
+
+ @TableField(value = "event3")
+ private Double event3;
+
+ @TableField(value = "event4")
+ private Double event4;
+
+ @TableField(value = "event5")
+ private Double event5;
+
+}
diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataFlickerDPO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataFlickerDPO.java
new file mode 100644
index 0000000..46e753c
--- /dev/null
+++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataFlickerDPO.java
@@ -0,0 +1,50 @@
+package com.njcn.csharmonic.pojo.po.day;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+/**
+ * 类的介绍:
+ *
+ * @author xuyang
+ * @version 1.0.0
+ * @createTime 2023/3/22 19:07
+ */
+@Data
+@TableName(value = "r_stat_data_flicker_d")
+public class RStatDataFlickerDPO implements Serializable {
+
+ @MppMultiId
+ @TableField(value = "time")
+ private LocalDate time;
+
+ @MppMultiId
+ @TableField(value = "line_id")
+ private String lineId;
+
+ @MppMultiId
+ @TableField(value = "phasic_type")
+ private String phaseType;
+
+ @MppMultiId
+ @TableField(value = "value_type")
+ private String valueType;
+
+ @TableField(value = "quality_flag")
+ private Integer qualityFlag;
+
+ @TableField(value = "fluc")
+ private Double fluc;
+
+ @TableField(value = "plt")
+ private Double plt;
+
+ @TableField(value = "pst")
+ private Double pst;
+
+}
diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataFlucDPO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataFlucDPO.java
new file mode 100644
index 0000000..96a1d92
--- /dev/null
+++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataFlucDPO.java
@@ -0,0 +1,46 @@
+package com.njcn.csharmonic.pojo.po.day;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+/**
+ * 类的介绍:
+ *
+ * @author xuyang
+ * @version 1.0.0
+ * @createTime 2023/3/24 11:21
+ */
+@Data
+@TableName(value = "r_stat_data_fluc_d")
+public class RStatDataFlucDPO implements Serializable {
+
+ @MppMultiId
+ @TableField(value = "time")
+ private LocalDate time;
+
+ @MppMultiId
+ @TableField(value = "line_id")
+ private String lineId;
+
+ @MppMultiId
+ @TableField(value = "phasic_type")
+ private String phaseType;
+
+ @MppMultiId
+ @TableField(value = "value_type")
+ private String valueType;
+
+ @TableField(value = "quality_flag")
+ private Integer qualityFlag;
+
+ @TableField(value = "fluc")
+ private Double fluc;
+
+ @TableField(value = "fluccf")
+ private Double fluccf;
+}
diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataHarmphasicIDPO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataHarmphasicIDPO.java
new file mode 100644
index 0000000..ba05eb5
--- /dev/null
+++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataHarmphasicIDPO.java
@@ -0,0 +1,190 @@
+package com.njcn.csharmonic.pojo.po.day;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+/**
+ * 类的介绍:
+ *
+ * @author xuyang
+ * @version 1.0.0
+ * @createTime 2023/3/24 11:39
+ */
+@Data
+@TableName(value = "r_stat_data_harmphasic_i_d")
+public class RStatDataHarmphasicIDPO implements Serializable {
+
+ @MppMultiId
+ @TableField(value = "time")
+ private LocalDate time;
+
+ @MppMultiId
+ @TableField(value = "line_id")
+ private String lineId;
+
+ @MppMultiId
+ @TableField(value = "phasic_type")
+ private String phaseType;
+
+ @MppMultiId
+ @TableField(value = "value_type")
+ private String valueType;
+
+ @TableField(value = "quality_flag")
+ private Integer qualityFlag;
+
+ @TableField(value = "i_1")
+ private Double i1;
+
+ @TableField(value = "i_2")
+ private Double i2;
+
+ @TableField(value = "i_3")
+ private Double i3;
+
+ @TableField(value = "i_4")
+ private Double i4;
+
+ @TableField(value = "i_5")
+ private Double i5;
+
+ @TableField(value = "i_6")
+ private Double i6;
+
+ @TableField(value = "i_7")
+ private Double i7;
+
+ @TableField(value = "i_8")
+ private Double i8;
+
+ @TableField(value = "i_9")
+ private Double i9;
+
+ @TableField(value = "i_10")
+ private Double i10;
+
+ @TableField(value = "i_11")
+ private Double i11;
+
+ @TableField(value = "i_12")
+ private Double i12;
+
+ @TableField(value = "i_13")
+ private Double i13;
+
+ @TableField(value = "i_14")
+ private Double i14;
+
+ @TableField(value = "i_15")
+ private Double i15;
+
+ @TableField(value = "i_16")
+ private Double i16;
+
+ @TableField(value = "i_17")
+ private Double i17;
+
+ @TableField(value = "i_18")
+ private Double i18;
+
+ @TableField(value = "i_19")
+ private Double i19;
+
+ @TableField(value = "i_20")
+ private Double i20;
+
+ @TableField(value = "i_21")
+ private Double i21;
+
+ @TableField(value = "i_22")
+ private Double i22;
+
+ @TableField(value = "i_23")
+ private Double i23;
+
+ @TableField(value = "i_24")
+ private Double i24;
+
+ @TableField(value = "i_25")
+ private Double i25;
+
+ @TableField(value = "i_26")
+ private Double i26;
+
+ @TableField(value = "i_27")
+ private Double i27;
+
+ @TableField(value = "i_28")
+ private Double i28;
+
+ @TableField(value = "i_29")
+ private Double i29;
+
+ @TableField(value = "i_30")
+ private Double i30;
+
+ @TableField(value = "i_31")
+ private Double i31;
+
+ @TableField(value = "i_32")
+ private Double i32;
+
+ @TableField(value = "i_33")
+ private Double i33;
+
+ @TableField(value = "i_34")
+ private Double i34;
+
+ @TableField(value = "i_35")
+ private Double i35;
+
+ @TableField(value = "i_36")
+ private Double i36;
+
+ @TableField(value = "i_37")
+ private Double i37;
+
+ @TableField(value = "i_38")
+ private Double i38;
+
+ @TableField(value = "i_39")
+ private Double i39;
+
+ @TableField(value = "i_40")
+ private Double i40;
+
+ @TableField(value = "i_41")
+ private Double i41;
+
+ @TableField(value = "i_42")
+ private Double i42;
+
+ @TableField(value = "i_43")
+ private Double i43;
+
+ @TableField(value = "i_44")
+ private Double i44;
+
+ @TableField(value = "i_45")
+ private Double i45;
+
+ @TableField(value = "i_46")
+ private Double i46;
+
+ @TableField(value = "i_47")
+ private Double i47;
+
+ @TableField(value = "i_48")
+ private Double i48;
+
+ @TableField(value = "i_49")
+ private Double i49;
+
+ @TableField(value = "i_50")
+ private Double i50;
+}
diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataHarmphasicVDPO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataHarmphasicVDPO.java
new file mode 100644
index 0000000..92cdfcd
--- /dev/null
+++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataHarmphasicVDPO.java
@@ -0,0 +1,190 @@
+package com.njcn.csharmonic.pojo.po.day;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+/**
+ * 类的介绍:
+ *
+ * @author xuyang
+ * @version 1.0.0
+ * @createTime 2023/3/24 11:39
+ */
+@Data
+@TableName(value = "r_stat_data_harmphasic_v_d")
+public class RStatDataHarmphasicVDPO implements Serializable {
+
+ @MppMultiId
+ @TableField(value = "time")
+ private LocalDate time;
+
+ @MppMultiId
+ @TableField(value = "line_id")
+ private String lineId;
+
+ @MppMultiId
+ @TableField(value = "phasic_type")
+ private String phaseType;
+
+ @MppMultiId
+ @TableField(value = "value_type")
+ private String valueType;
+
+ @TableField(value = "quality_flag")
+ private Integer qualityFlag;
+
+ @TableField(value = "v_1")
+ private Double v1;
+
+ @TableField(value = "v_2")
+ private Double v2;
+
+ @TableField(value = "v_3")
+ private Double v3;
+
+ @TableField(value = "v_4")
+ private Double v4;
+
+ @TableField(value = "v_5")
+ private Double v5;
+
+ @TableField(value = "v_6")
+ private Double v6;
+
+ @TableField(value = "v_7")
+ private Double v7;
+
+ @TableField(value = "v_8")
+ private Double v8;
+
+ @TableField(value = "v_9")
+ private Double v9;
+
+ @TableField(value = "v_10")
+ private Double v10;
+
+ @TableField(value = "v_11")
+ private Double v11;
+
+ @TableField(value = "v_12")
+ private Double v12;
+
+ @TableField(value = "v_13")
+ private Double v13;
+
+ @TableField(value = "v_14")
+ private Double v14;
+
+ @TableField(value = "v_15")
+ private Double v15;
+
+ @TableField(value = "v_16")
+ private Double v16;
+
+ @TableField(value = "v_17")
+ private Double v17;
+
+ @TableField(value = "v_18")
+ private Double v18;
+
+ @TableField(value = "v_19")
+ private Double v19;
+
+ @TableField(value = "v_20")
+ private Double v20;
+
+ @TableField(value = "v_21")
+ private Double v21;
+
+ @TableField(value = "v_22")
+ private Double v22;
+
+ @TableField(value = "v_23")
+ private Double v23;
+
+ @TableField(value = "v_24")
+ private Double v24;
+
+ @TableField(value = "v_25")
+ private Double v25;
+
+ @TableField(value = "v_26")
+ private Double v26;
+
+ @TableField(value = "v_27")
+ private Double v27;
+
+ @TableField(value = "v_28")
+ private Double v28;
+
+ @TableField(value = "v_29")
+ private Double v29;
+
+ @TableField(value = "v_30")
+ private Double v30;
+
+ @TableField(value = "v_31")
+ private Double v31;
+
+ @TableField(value = "v_32")
+ private Double v32;
+
+ @TableField(value = "v_33")
+ private Double v33;
+
+ @TableField(value = "v_34")
+ private Double v34;
+
+ @TableField(value = "v_35")
+ private Double v35;
+
+ @TableField(value = "v_36")
+ private Double v36;
+
+ @TableField(value = "v_37")
+ private Double v37;
+
+ @TableField(value = "v_38")
+ private Double v38;
+
+ @TableField(value = "v_39")
+ private Double v39;
+
+ @TableField(value = "v_40")
+ private Double v40;
+
+ @TableField(value = "v_41")
+ private Double v41;
+
+ @TableField(value = "v_42")
+ private Double v42;
+
+ @TableField(value = "v_43")
+ private Double v43;
+
+ @TableField(value = "v_44")
+ private Double v44;
+
+ @TableField(value = "v_45")
+ private Double v45;
+
+ @TableField(value = "v_46")
+ private Double v46;
+
+ @TableField(value = "v_47")
+ private Double v47;
+
+ @TableField(value = "v_48")
+ private Double v48;
+
+ @TableField(value = "v_49")
+ private Double v49;
+
+ @TableField(value = "v_50")
+ private Double v50;
+}
diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataHarmpowerPDPO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataHarmpowerPDPO.java
new file mode 100644
index 0000000..8fe4b26
--- /dev/null
+++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataHarmpowerPDPO.java
@@ -0,0 +1,199 @@
+package com.njcn.csharmonic.pojo.po.day;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+/**
+ * 类的介绍:
+ *
+ * @author xuyang
+ * @version 1.0.0
+ * @createTime 2023/3/24 13:31
+ */
+@Data
+@TableName(value = "r_stat_data_harmpower_p_d")
+public class RStatDataHarmpowerPDPO implements Serializable {
+
+ @MppMultiId
+ @TableField(value = "time")
+ private LocalDate time;
+
+ @MppMultiId
+ @TableField(value = "line_id")
+ private String lineId;
+
+ @MppMultiId
+ @TableField(value = "phasic_type")
+ private String phaseType;
+
+ @MppMultiId
+ @TableField(value = "value_type")
+ private String valueType;
+
+ @TableField(value = "quality_flag")
+ private Integer qualityFlag;
+
+ @TableField(value = "df")
+ private Double df;
+
+ @TableField(value = "pf")
+ private Double pf;
+
+ @TableField(value = "p")
+ private Double p;
+
+ @TableField(value = "p_1")
+ private Double p1;
+
+ @TableField(value = "p_2")
+ private Double p2;
+
+ @TableField(value = "p_3")
+ private Double p3;
+
+ @TableField(value = "p_4")
+ private Double p4;
+
+ @TableField(value = "p_5")
+ private Double p5;
+
+ @TableField(value = "p_6")
+ private Double p6;
+
+ @TableField(value = "p_7")
+ private Double p7;
+
+ @TableField(value = "p_8")
+ private Double p8;
+
+ @TableField(value = "p_9")
+ private Double p9;
+
+ @TableField(value = "p_10")
+ private Double p10;
+
+ @TableField(value = "p_11")
+ private Double p11;
+
+ @TableField(value = "p_12")
+ private Double p12;
+
+ @TableField(value = "p_13")
+ private Double p13;
+
+ @TableField(value = "p_14")
+ private Double p14;
+
+ @TableField(value = "p_15")
+ private Double p15;
+
+ @TableField(value = "p_16")
+ private Double p16;
+
+ @TableField(value = "p_17")
+ private Double p17;
+
+ @TableField(value = "p_18")
+ private Double p18;
+
+ @TableField(value = "p_19")
+ private Double p19;
+
+ @TableField(value = "p_20")
+ private Double p20;
+
+ @TableField(value = "p_21")
+ private Double p21;
+
+ @TableField(value = "p_22")
+ private Double p22;
+
+ @TableField(value = "p_23")
+ private Double p23;
+
+ @TableField(value = "p_24")
+ private Double p24;
+
+ @TableField(value = "p_25")
+ private Double p25;
+
+ @TableField(value = "p_26")
+ private Double p26;
+
+ @TableField(value = "p_27")
+ private Double p27;
+
+ @TableField(value = "p_28")
+ private Double p28;
+
+ @TableField(value = "p_29")
+ private Double p29;
+
+ @TableField(value = "p_30")
+ private Double p30;
+
+ @TableField(value = "p_31")
+ private Double p31;
+
+ @TableField(value = "p_32")
+ private Double p32;
+
+ @TableField(value = "p_33")
+ private Double p33;
+
+ @TableField(value = "p_34")
+ private Double p34;
+
+ @TableField(value = "p_35")
+ private Double p35;
+
+ @TableField(value = "p_36")
+ private Double p36;
+
+ @TableField(value = "p_37")
+ private Double p37;
+
+ @TableField(value = "p_38")
+ private Double p38;
+
+ @TableField(value = "p_39")
+ private Double p39;
+
+ @TableField(value = "p_40")
+ private Double p40;
+
+ @TableField(value = "p_41")
+ private Double p41;
+
+ @TableField(value = "p_42")
+ private Double p42;
+
+ @TableField(value = "p_43")
+ private Double p43;
+
+ @TableField(value = "p_44")
+ private Double p44;
+
+ @TableField(value = "p_45")
+ private Double p45;
+
+ @TableField(value = "p_46")
+ private Double p46;
+
+ @TableField(value = "p_47")
+ private Double p47;
+
+ @TableField(value = "p_48")
+ private Double p48;
+
+ @TableField(value = "p_49")
+ private Double p49;
+
+ @TableField(value = "p_50")
+ private Double p50;
+}
diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataHarmpowerQDPO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataHarmpowerQDPO.java
new file mode 100644
index 0000000..23f8003
--- /dev/null
+++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataHarmpowerQDPO.java
@@ -0,0 +1,193 @@
+package com.njcn.csharmonic.pojo.po.day;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+/**
+ * 类的介绍:
+ *
+ * @author xuyang
+ * @version 1.0.0
+ * @createTime 2023/3/24 13:31
+ */
+@Data
+@TableName(value = "r_stat_data_harmpower_q_d")
+public class RStatDataHarmpowerQDPO implements Serializable {
+
+ @MppMultiId
+ @TableField(value = "time")
+ private LocalDate time;
+
+ @MppMultiId
+ @TableField(value = "line_id")
+ private String lineId;
+
+ @MppMultiId
+ @TableField(value = "phasic_type")
+ private String phaseType;
+
+ @MppMultiId
+ @TableField(value = "value_type")
+ private String valueType;
+
+ @TableField(value = "quality_flag")
+ private Integer qualityFlag;
+
+ @TableField(value = "q")
+ private Double q;
+
+ @TableField(value = "q_1")
+ private Double q1;
+
+ @TableField(value = "q_2")
+ private Double q2;
+
+ @TableField(value = "q_3")
+ private Double q3;
+
+ @TableField(value = "q_4")
+ private Double q4;
+
+ @TableField(value = "q_5")
+ private Double q5;
+
+ @TableField(value = "q_6")
+ private Double q6;
+
+ @TableField(value = "q_7")
+ private Double q7;
+
+ @TableField(value = "q_8")
+ private Double q8;
+
+ @TableField(value = "q_9")
+ private Double q9;
+
+ @TableField(value = "q_10")
+ private Double q10;
+
+ @TableField(value = "q_11")
+ private Double q11;
+
+ @TableField(value = "q_12")
+ private Double q12;
+
+ @TableField(value = "q_13")
+ private Double q13;
+
+ @TableField(value = "q_14")
+ private Double q14;
+
+ @TableField(value = "q_15")
+ private Double q15;
+
+ @TableField(value = "q_16")
+ private Double q16;
+
+ @TableField(value = "q_17")
+ private Double q17;
+
+ @TableField(value = "q_18")
+ private Double q18;
+
+ @TableField(value = "q_19")
+ private Double q19;
+
+ @TableField(value = "q_20")
+ private Double q20;
+
+ @TableField(value = "q_21")
+ private Double q21;
+
+ @TableField(value = "q_22")
+ private Double q22;
+
+ @TableField(value = "q_23")
+ private Double q23;
+
+ @TableField(value = "q_24")
+ private Double q24;
+
+ @TableField(value = "q_25")
+ private Double q25;
+
+ @TableField(value = "q_26")
+ private Double q26;
+
+ @TableField(value = "q_27")
+ private Double q27;
+
+ @TableField(value = "q_28")
+ private Double q28;
+
+ @TableField(value = "q_29")
+ private Double q29;
+
+ @TableField(value = "q_30")
+ private Double q30;
+
+ @TableField(value = "q_31")
+ private Double q31;
+
+ @TableField(value = "q_32")
+ private Double q32;
+
+ @TableField(value = "q_33")
+ private Double q33;
+
+ @TableField(value = "q_34")
+ private Double q34;
+
+ @TableField(value = "q_35")
+ private Double q35;
+
+ @TableField(value = "q_36")
+ private Double q36;
+
+ @TableField(value = "q_37")
+ private Double q37;
+
+ @TableField(value = "q_38")
+ private Double q38;
+
+ @TableField(value = "q_39")
+ private Double q39;
+
+ @TableField(value = "q_40")
+ private Double q40;
+
+ @TableField(value = "q_41")
+ private Double q41;
+
+ @TableField(value = "q_42")
+ private Double q42;
+
+ @TableField(value = "q_43")
+ private Double q43;
+
+ @TableField(value = "q_44")
+ private Double q44;
+
+ @TableField(value = "q_45")
+ private Double q45;
+
+ @TableField(value = "q_46")
+ private Double q46;
+
+ @TableField(value = "q_47")
+ private Double q47;
+
+ @TableField(value = "q_48")
+ private Double q48;
+
+ @TableField(value = "q_49")
+ private Double q49;
+
+ @TableField(value = "q_50")
+ private Double q50;
+}
diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataHarmpowerSDPO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataHarmpowerSDPO.java
new file mode 100644
index 0000000..0055ec2
--- /dev/null
+++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataHarmpowerSDPO.java
@@ -0,0 +1,193 @@
+package com.njcn.csharmonic.pojo.po.day;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+/**
+ * 类的介绍:
+ *
+ * @author xuyang
+ * @version 1.0.0
+ * @createTime 2023/3/24 13:31
+ */
+@Data
+@TableName(value = "r_stat_data_harmpower_s_d")
+public class RStatDataHarmpowerSDPO implements Serializable {
+
+ @MppMultiId
+ @TableField(value = "time")
+ private LocalDate time;
+
+ @MppMultiId
+ @TableField(value = "line_id")
+ private String lineId;
+
+ @MppMultiId
+ @TableField(value = "phasic_type")
+ private String phaseType;
+
+ @MppMultiId
+ @TableField(value = "value_type")
+ private String valueType;
+
+ @TableField(value = "quality_flag")
+ private Integer qualityFlag;
+
+ @TableField(value = "s")
+ private Double s;
+
+ @TableField(value = "s_1")
+ private Double s1;
+
+ @TableField(value = "s_2")
+ private Double s2;
+
+ @TableField(value = "s_3")
+ private Double s3;
+
+ @TableField(value = "s_4")
+ private Double s4;
+
+ @TableField(value = "s_5")
+ private Double s5;
+
+ @TableField(value = "s_6")
+ private Double s6;
+
+ @TableField(value = "s_7")
+ private Double s7;
+
+ @TableField(value = "s_8")
+ private Double s8;
+
+ @TableField(value = "s_9")
+ private Double s9;
+
+ @TableField(value = "s_10")
+ private Double s10;
+
+ @TableField(value = "s_11")
+ private Double s11;
+
+ @TableField(value = "s_12")
+ private Double s12;
+
+ @TableField(value = "s_13")
+ private Double s13;
+
+ @TableField(value = "s_14")
+ private Double s14;
+
+ @TableField(value = "s_15")
+ private Double s15;
+
+ @TableField(value = "s_16")
+ private Double s16;
+
+ @TableField(value = "s_17")
+ private Double s17;
+
+ @TableField(value = "s_18")
+ private Double s18;
+
+ @TableField(value = "s_19")
+ private Double s19;
+
+ @TableField(value = "s_20")
+ private Double s20;
+
+ @TableField(value = "s_21")
+ private Double s21;
+
+ @TableField(value = "s_22")
+ private Double s22;
+
+ @TableField(value = "s_23")
+ private Double s23;
+
+ @TableField(value = "s_24")
+ private Double s24;
+
+ @TableField(value = "s_25")
+ private Double s25;
+
+ @TableField(value = "s_26")
+ private Double s26;
+
+ @TableField(value = "s_27")
+ private Double s27;
+
+ @TableField(value = "s_28")
+ private Double s28;
+
+ @TableField(value = "s_29")
+ private Double s29;
+
+ @TableField(value = "s_30")
+ private Double s30;
+
+ @TableField(value = "s_31")
+ private Double s31;
+
+ @TableField(value = "s_32")
+ private Double s32;
+
+ @TableField(value = "s_33")
+ private Double s33;
+
+ @TableField(value = "s_34")
+ private Double s34;
+
+ @TableField(value = "s_35")
+ private Double s35;
+
+ @TableField(value = "s_36")
+ private Double s36;
+
+ @TableField(value = "s_37")
+ private Double s37;
+
+ @TableField(value = "s_38")
+ private Double s38;
+
+ @TableField(value = "s_39")
+ private Double s39;
+
+ @TableField(value = "s_40")
+ private Double s40;
+
+ @TableField(value = "s_41")
+ private Double s41;
+
+ @TableField(value = "s_42")
+ private Double s42;
+
+ @TableField(value = "s_43")
+ private Double s43;
+
+ @TableField(value = "s_44")
+ private Double s44;
+
+ @TableField(value = "s_45")
+ private Double s45;
+
+ @TableField(value = "s_46")
+ private Double s46;
+
+ @TableField(value = "s_47")
+ private Double s47;
+
+ @TableField(value = "s_48")
+ private Double s48;
+
+ @TableField(value = "s_49")
+ private Double s49;
+
+ @TableField(value = "s_50")
+ private Double s50;
+}
diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataHarmrateIDPO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataHarmrateIDPO.java
new file mode 100644
index 0000000..64999ed
--- /dev/null
+++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataHarmrateIDPO.java
@@ -0,0 +1,191 @@
+package com.njcn.csharmonic.pojo.po.day;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+/**
+ * 类的介绍:
+ *
+ * @author xuyang
+ * @version 1.0.0
+ * @createTime 2023/3/24 14:18
+ */
+@Data
+@TableName(value = "r_stat_data_harmrate_i_d")
+public class RStatDataHarmrateIDPO implements Serializable {
+
+ @MppMultiId
+ @TableField(value = "time")
+ private LocalDate time;
+
+ @MppMultiId
+ @TableField(value = "line_id")
+ private String lineId;
+
+ @MppMultiId
+ @TableField(value = "phasic_type")
+ private String phaseType;
+
+ @MppMultiId
+ @TableField(value = "value_type")
+ private String valueType;
+
+ @TableField(value = "quality_flag")
+ private Integer qualityFlag;
+
+ @TableField(value = "i_1")
+ private Double i1;
+
+ @TableField(value = "i_2")
+ private Double i2;
+
+ @TableField(value = "i_3")
+ private Double i3;
+
+ @TableField(value = "i_4")
+ private Double i4;
+
+ @TableField(value = "i_5")
+ private Double i5;
+
+ @TableField(value = "i_6")
+ private Double i6;
+
+ @TableField(value = "i_7")
+ private Double i7;
+
+ @TableField(value = "i_8")
+ private Double i8;
+
+ @TableField(value = "i_9")
+ private Double i9;
+
+ @TableField(value = "i_10")
+ private Double i10;
+
+ @TableField(value = "i_11")
+ private Double i11;
+
+ @TableField(value = "i_12")
+ private Double i12;
+
+ @TableField(value = "i_13")
+ private Double i13;
+
+ @TableField(value = "i_14")
+ private Double i14;
+
+ @TableField(value = "i_15")
+ private Double i15;
+
+ @TableField(value = "i_16")
+ private Double i16;
+
+ @TableField(value = "i_17")
+ private Double i17;
+
+ @TableField(value = "i_18")
+ private Double i18;
+
+ @TableField(value = "i_19")
+ private Double i19;
+
+ @TableField(value = "i_20")
+ private Double i20;
+
+ @TableField(value = "i_21")
+ private Double i21;
+
+ @TableField(value = "i_22")
+ private Double i22;
+
+ @TableField(value = "i_23")
+ private Double i23;
+
+ @TableField(value = "i_24")
+ private Double i24;
+
+ @TableField(value = "i_25")
+ private Double i25;
+
+ @TableField(value = "i_26")
+ private Double i26;
+
+ @TableField(value = "i_27")
+ private Double i27;
+
+ @TableField(value = "i_28")
+ private Double i28;
+
+ @TableField(value = "i_29")
+ private Double i29;
+
+ @TableField(value = "i_30")
+ private Double i30;
+
+ @TableField(value = "i_31")
+ private Double i31;
+
+ @TableField(value = "i_32")
+ private Double i32;
+
+ @TableField(value = "i_33")
+ private Double i33;
+
+ @TableField(value = "i_34")
+ private Double i34;
+
+ @TableField(value = "i_35")
+ private Double i35;
+
+ @TableField(value = "i_36")
+ private Double i36;
+
+ @TableField(value = "i_37")
+ private Double i37;
+
+ @TableField(value = "i_38")
+ private Double i38;
+
+ @TableField(value = "i_39")
+ private Double i39;
+
+ @TableField(value = "i_40")
+ private Double i40;
+
+ @TableField(value = "i_41")
+ private Double i41;
+
+ @TableField(value = "i_42")
+ private Double i42;
+
+ @TableField(value = "i_43")
+ private Double i43;
+
+ @TableField(value = "i_44")
+ private Double i44;
+
+ @TableField(value = "i_45")
+ private Double i45;
+
+ @TableField(value = "i_46")
+ private Double i46;
+
+ @TableField(value = "i_47")
+ private Double i47;
+
+ @TableField(value = "i_48")
+ private Double i48;
+
+ @TableField(value = "i_49")
+ private Double i49;
+
+ @TableField(value = "i_50")
+ private Double i50;
+
+}
diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataHarmrateVDPO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataHarmrateVDPO.java
new file mode 100644
index 0000000..6618ecd
--- /dev/null
+++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataHarmrateVDPO.java
@@ -0,0 +1,191 @@
+package com.njcn.csharmonic.pojo.po.day;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+/**
+ * 类的介绍:
+ *
+ * @author xuyang
+ * @version 1.0.0
+ * @createTime 2023/3/24 14:18
+ */
+@Data
+@TableName(value = "r_stat_data_harmrate_v_d")
+public class RStatDataHarmrateVDPO implements Serializable {
+
+ @MppMultiId
+ @TableField(value = "time")
+ private LocalDate time;
+
+ @MppMultiId
+ @TableField(value = "line_id")
+ private String lineId;
+
+ @MppMultiId
+ @TableField(value = "phasic_type")
+ private String phaseType;
+
+ @MppMultiId
+ @TableField(value = "value_type")
+ private String valueType;
+
+ @TableField(value = "quality_flag")
+ private Integer qualityFlag;
+
+ @TableField(value = "v_1")
+ private Double v1;
+
+ @TableField(value = "v_2")
+ private Double v2;
+
+ @TableField(value = "v_3")
+ private Double v3;
+
+ @TableField(value = "v_4")
+ private Double v4;
+
+ @TableField(value = "v_5")
+ private Double v5;
+
+ @TableField(value = "v_6")
+ private Double v6;
+
+ @TableField(value = "v_7")
+ private Double v7;
+
+ @TableField(value = "v_8")
+ private Double v8;
+
+ @TableField(value = "v_9")
+ private Double v9;
+
+ @TableField(value = "v_10")
+ private Double v10;
+
+ @TableField(value = "v_11")
+ private Double v11;
+
+ @TableField(value = "v_12")
+ private Double v12;
+
+ @TableField(value = "v_13")
+ private Double v13;
+
+ @TableField(value = "v_14")
+ private Double v14;
+
+ @TableField(value = "v_15")
+ private Double v15;
+
+ @TableField(value = "v_16")
+ private Double v16;
+
+ @TableField(value = "v_17")
+ private Double v17;
+
+ @TableField(value = "v_18")
+ private Double v18;
+
+ @TableField(value = "v_19")
+ private Double v19;
+
+ @TableField(value = "v_20")
+ private Double v20;
+
+ @TableField(value = "v_21")
+ private Double v21;
+
+ @TableField(value = "v_22")
+ private Double v22;
+
+ @TableField(value = "v_23")
+ private Double v23;
+
+ @TableField(value = "v_24")
+ private Double v24;
+
+ @TableField(value = "v_25")
+ private Double v25;
+
+ @TableField(value = "v_26")
+ private Double v26;
+
+ @TableField(value = "v_27")
+ private Double v27;
+
+ @TableField(value = "v_28")
+ private Double v28;
+
+ @TableField(value = "v_29")
+ private Double v29;
+
+ @TableField(value = "v_30")
+ private Double v30;
+
+ @TableField(value = "v_31")
+ private Double v31;
+
+ @TableField(value = "v_32")
+ private Double v32;
+
+ @TableField(value = "v_33")
+ private Double v33;
+
+ @TableField(value = "v_34")
+ private Double v34;
+
+ @TableField(value = "v_35")
+ private Double v35;
+
+ @TableField(value = "v_36")
+ private Double v36;
+
+ @TableField(value = "v_37")
+ private Double v37;
+
+ @TableField(value = "v_38")
+ private Double v38;
+
+ @TableField(value = "v_39")
+ private Double v39;
+
+ @TableField(value = "v_40")
+ private Double v40;
+
+ @TableField(value = "v_41")
+ private Double v41;
+
+ @TableField(value = "v_42")
+ private Double v42;
+
+ @TableField(value = "v_43")
+ private Double v43;
+
+ @TableField(value = "v_44")
+ private Double v44;
+
+ @TableField(value = "v_45")
+ private Double v45;
+
+ @TableField(value = "v_46")
+ private Double v46;
+
+ @TableField(value = "v_47")
+ private Double v47;
+
+ @TableField(value = "v_48")
+ private Double v48;
+
+ @TableField(value = "v_49")
+ private Double v49;
+
+ @TableField(value = "v_50")
+ private Double v50;
+
+}
diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataIDPO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataIDPO.java
new file mode 100644
index 0000000..acdd33d
--- /dev/null
+++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataIDPO.java
@@ -0,0 +1,209 @@
+package com.njcn.csharmonic.pojo.po.day;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+/**
+ * 类的介绍:
+ *
+ * @author xuyang
+ * @version 1.0.0
+ * @createTime 2023/3/24 14:29
+ */
+@Data
+@TableName(value = "r_stat_data_i_d")
+public class RStatDataIDPO implements Serializable {
+
+ @MppMultiId
+ @TableField(value = "time")
+ private LocalDate time;
+
+ @MppMultiId
+ @TableField(value = "line_id")
+ private String lineId;
+
+ @MppMultiId
+ @TableField(value = "phasic_type")
+ private String phaseType;
+
+ @MppMultiId
+ @TableField(value = "value_type")
+ private String valueType;
+
+ @TableField(value = "quality_flag")
+ private Integer qualityFlag;
+
+ @TableField(value = "i_neg")
+ private Double iNeg;
+
+ @TableField(value = "i_pos")
+ private Double iPos;
+
+ @TableField(value = "i_thd")
+ private Double iThd;
+
+ @TableField(value = "i_unbalance")
+ private Double iUnbalance;
+
+ @TableField(value = "i_zero")
+ private Double iZero;
+
+ @TableField(value = "rms")
+ private Double rms;
+
+ @TableField(value = "i_1")
+ private Double i1;
+
+ @TableField(value = "i_2")
+ private Double i2;
+
+ @TableField(value = "i_3")
+ private Double i3;
+
+ @TableField(value = "i_4")
+ private Double i4;
+
+ @TableField(value = "i_5")
+ private Double i5;
+
+ @TableField(value = "i_6")
+ private Double i6;
+
+ @TableField(value = "i_7")
+ private Double i7;
+
+ @TableField(value = "i_8")
+ private Double i8;
+
+ @TableField(value = "i_9")
+ private Double i9;
+
+ @TableField(value = "i_10")
+ private Double i10;
+
+ @TableField(value = "i_11")
+ private Double i11;
+
+ @TableField(value = "i_12")
+ private Double i12;
+
+ @TableField(value = "i_13")
+ private Double i13;
+
+ @TableField(value = "i_14")
+ private Double i14;
+
+ @TableField(value = "i_15")
+ private Double i15;
+
+ @TableField(value = "i_16")
+ private Double i16;
+
+ @TableField(value = "i_17")
+ private Double i17;
+
+ @TableField(value = "i_18")
+ private Double i18;
+
+ @TableField(value = "i_19")
+ private Double i19;
+
+ @TableField(value = "i_20")
+ private Double i20;
+
+ @TableField(value = "i_21")
+ private Double i21;
+
+ @TableField(value = "i_22")
+ private Double i22;
+
+ @TableField(value = "i_23")
+ private Double i23;
+
+ @TableField(value = "i_24")
+ private Double i24;
+
+ @TableField(value = "i_25")
+ private Double i25;
+
+ @TableField(value = "i_26")
+ private Double i26;
+
+ @TableField(value = "i_27")
+ private Double i27;
+
+ @TableField(value = "i_28")
+ private Double i28;
+
+ @TableField(value = "i_29")
+ private Double i29;
+
+ @TableField(value = "i_30")
+ private Double i30;
+
+ @TableField(value = "i_31")
+ private Double i31;
+
+ @TableField(value = "i_32")
+ private Double i32;
+
+ @TableField(value = "i_33")
+ private Double i33;
+
+ @TableField(value = "i_34")
+ private Double i34;
+
+ @TableField(value = "i_35")
+ private Double i35;
+
+ @TableField(value = "i_36")
+ private Double i36;
+
+ @TableField(value = "i_37")
+ private Double i37;
+
+ @TableField(value = "i_38")
+ private Double i38;
+
+ @TableField(value = "i_39")
+ private Double i39;
+
+ @TableField(value = "i_40")
+ private Double i40;
+
+ @TableField(value = "i_41")
+ private Double i41;
+
+ @TableField(value = "i_42")
+ private Double i42;
+
+ @TableField(value = "i_43")
+ private Double i43;
+
+ @TableField(value = "i_44")
+ private Double i44;
+
+ @TableField(value = "i_45")
+ private Double i45;
+
+ @TableField(value = "i_46")
+ private Double i46;
+
+ @TableField(value = "i_47")
+ private Double i47;
+
+ @TableField(value = "i_48")
+ private Double i48;
+
+ @TableField(value = "i_49")
+ private Double i49;
+
+ @TableField(value = "i_50")
+ private Double i50;
+
+}
diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataInharmIDPO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataInharmIDPO.java
new file mode 100644
index 0000000..148986c
--- /dev/null
+++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataInharmIDPO.java
@@ -0,0 +1,191 @@
+package com.njcn.csharmonic.pojo.po.day;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+/**
+ * 类的介绍:
+ *
+ * @author xuyang
+ * @version 1.0.0
+ * @createTime 2023/3/24 14:36
+ */
+@Data
+@TableName(value = "r_stat_data_inharm_i_d")
+public class RStatDataInharmIDPO implements Serializable {
+
+ @MppMultiId
+ @TableField(value = "time")
+ private LocalDate time;
+
+ @MppMultiId
+ @TableField(value = "line_id")
+ private String lineId;
+
+ @MppMultiId
+ @TableField(value = "phasic_type")
+ private String phaseType;
+
+ @MppMultiId
+ @TableField(value = "value_type")
+ private String valueType;
+
+ @TableField(value = "quality_flag")
+ private Integer qualityFlag;
+
+ @TableField(value = "i_1")
+ private Double i1;
+
+ @TableField(value = "i_2")
+ private Double i2;
+
+ @TableField(value = "i_3")
+ private Double i3;
+
+ @TableField(value = "i_4")
+ private Double i4;
+
+ @TableField(value = "i_5")
+ private Double i5;
+
+ @TableField(value = "i_6")
+ private Double i6;
+
+ @TableField(value = "i_7")
+ private Double i7;
+
+ @TableField(value = "i_8")
+ private Double i8;
+
+ @TableField(value = "i_9")
+ private Double i9;
+
+ @TableField(value = "i_10")
+ private Double i10;
+
+ @TableField(value = "i_11")
+ private Double i11;
+
+ @TableField(value = "i_12")
+ private Double i12;
+
+ @TableField(value = "i_13")
+ private Double i13;
+
+ @TableField(value = "i_14")
+ private Double i14;
+
+ @TableField(value = "i_15")
+ private Double i15;
+
+ @TableField(value = "i_16")
+ private Double i16;
+
+ @TableField(value = "i_17")
+ private Double i17;
+
+ @TableField(value = "i_18")
+ private Double i18;
+
+ @TableField(value = "i_19")
+ private Double i19;
+
+ @TableField(value = "i_20")
+ private Double i20;
+
+ @TableField(value = "i_21")
+ private Double i21;
+
+ @TableField(value = "i_22")
+ private Double i22;
+
+ @TableField(value = "i_23")
+ private Double i23;
+
+ @TableField(value = "i_24")
+ private Double i24;
+
+ @TableField(value = "i_25")
+ private Double i25;
+
+ @TableField(value = "i_26")
+ private Double i26;
+
+ @TableField(value = "i_27")
+ private Double i27;
+
+ @TableField(value = "i_28")
+ private Double i28;
+
+ @TableField(value = "i_29")
+ private Double i29;
+
+ @TableField(value = "i_30")
+ private Double i30;
+
+ @TableField(value = "i_31")
+ private Double i31;
+
+ @TableField(value = "i_32")
+ private Double i32;
+
+ @TableField(value = "i_33")
+ private Double i33;
+
+ @TableField(value = "i_34")
+ private Double i34;
+
+ @TableField(value = "i_35")
+ private Double i35;
+
+ @TableField(value = "i_36")
+ private Double i36;
+
+ @TableField(value = "i_37")
+ private Double i37;
+
+ @TableField(value = "i_38")
+ private Double i38;
+
+ @TableField(value = "i_39")
+ private Double i39;
+
+ @TableField(value = "i_40")
+ private Double i40;
+
+ @TableField(value = "i_41")
+ private Double i41;
+
+ @TableField(value = "i_42")
+ private Double i42;
+
+ @TableField(value = "i_43")
+ private Double i43;
+
+ @TableField(value = "i_44")
+ private Double i44;
+
+ @TableField(value = "i_45")
+ private Double i45;
+
+ @TableField(value = "i_46")
+ private Double i46;
+
+ @TableField(value = "i_47")
+ private Double i47;
+
+ @TableField(value = "i_48")
+ private Double i48;
+
+ @TableField(value = "i_49")
+ private Double i49;
+
+ @TableField(value = "i_50")
+ private Double i50;
+
+}
diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataInharmVDPO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataInharmVDPO.java
new file mode 100644
index 0000000..b1c8e77
--- /dev/null
+++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataInharmVDPO.java
@@ -0,0 +1,191 @@
+package com.njcn.csharmonic.pojo.po.day;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+/**
+ * 类的介绍:
+ *
+ * @author xuyang
+ * @version 1.0.0
+ * @createTime 2023/3/24 14:36
+ */
+@Data
+@TableName(value = "r_stat_data_inharm_v_d")
+public class RStatDataInharmVDPO implements Serializable {
+
+ @MppMultiId
+ @TableField(value = "time")
+ private LocalDate time;
+
+ @MppMultiId
+ @TableField(value = "line_id")
+ private String lineId;
+
+ @MppMultiId
+ @TableField(value = "phasic_type")
+ private String phaseType;
+
+ @MppMultiId
+ @TableField(value = "value_type")
+ private String valueType;
+
+ @TableField(value = "quality_flag")
+ private Integer qualityFlag;
+
+ @TableField(value = "v_1")
+ private Double v1;
+
+ @TableField(value = "v_2")
+ private Double v2;
+
+ @TableField(value = "v_3")
+ private Double v3;
+
+ @TableField(value = "v_4")
+ private Double v4;
+
+ @TableField(value = "v_5")
+ private Double v5;
+
+ @TableField(value = "v_6")
+ private Double v6;
+
+ @TableField(value = "v_7")
+ private Double v7;
+
+ @TableField(value = "v_8")
+ private Double v8;
+
+ @TableField(value = "v_9")
+ private Double v9;
+
+ @TableField(value = "v_10")
+ private Double v10;
+
+ @TableField(value = "v_11")
+ private Double v11;
+
+ @TableField(value = "v_12")
+ private Double v12;
+
+ @TableField(value = "v_13")
+ private Double v13;
+
+ @TableField(value = "v_14")
+ private Double v14;
+
+ @TableField(value = "v_15")
+ private Double v15;
+
+ @TableField(value = "v_16")
+ private Double v16;
+
+ @TableField(value = "v_17")
+ private Double v17;
+
+ @TableField(value = "v_18")
+ private Double v18;
+
+ @TableField(value = "v_19")
+ private Double v19;
+
+ @TableField(value = "v_20")
+ private Double v20;
+
+ @TableField(value = "v_21")
+ private Double v21;
+
+ @TableField(value = "v_22")
+ private Double v22;
+
+ @TableField(value = "v_23")
+ private Double v23;
+
+ @TableField(value = "v_24")
+ private Double v24;
+
+ @TableField(value = "v_25")
+ private Double v25;
+
+ @TableField(value = "v_26")
+ private Double v26;
+
+ @TableField(value = "v_27")
+ private Double v27;
+
+ @TableField(value = "v_28")
+ private Double v28;
+
+ @TableField(value = "v_29")
+ private Double v29;
+
+ @TableField(value = "v_30")
+ private Double v30;
+
+ @TableField(value = "v_31")
+ private Double v31;
+
+ @TableField(value = "v_32")
+ private Double v32;
+
+ @TableField(value = "v_33")
+ private Double v33;
+
+ @TableField(value = "v_34")
+ private Double v34;
+
+ @TableField(value = "v_35")
+ private Double v35;
+
+ @TableField(value = "v_36")
+ private Double v36;
+
+ @TableField(value = "v_37")
+ private Double v37;
+
+ @TableField(value = "v_38")
+ private Double v38;
+
+ @TableField(value = "v_39")
+ private Double v39;
+
+ @TableField(value = "v_40")
+ private Double v40;
+
+ @TableField(value = "v_41")
+ private Double v41;
+
+ @TableField(value = "v_42")
+ private Double v42;
+
+ @TableField(value = "v_43")
+ private Double v43;
+
+ @TableField(value = "v_44")
+ private Double v44;
+
+ @TableField(value = "v_45")
+ private Double v45;
+
+ @TableField(value = "v_46")
+ private Double v46;
+
+ @TableField(value = "v_47")
+ private Double v47;
+
+ @TableField(value = "v_48")
+ private Double v48;
+
+ @TableField(value = "v_49")
+ private Double v49;
+
+ @TableField(value = "v_50")
+ private Double v50;
+
+}
diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataPltDPO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataPltDPO.java
new file mode 100644
index 0000000..4948cf0
--- /dev/null
+++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataPltDPO.java
@@ -0,0 +1,44 @@
+package com.njcn.csharmonic.pojo.po.day;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+/**
+ * 类的介绍:
+ *
+ * @author xuyang
+ * @version 1.0.0
+ * @createTime 2023/3/24 14:46
+ */
+@Data
+@TableName(value = "r_stat_data_plt_d")
+public class RStatDataPltDPO implements Serializable {
+
+ @MppMultiId
+ @TableField(value = "time")
+ private LocalDate time;
+
+ @MppMultiId
+ @TableField(value = "line_id")
+ private String lineId;
+
+ @MppMultiId
+ @TableField(value = "phasic_type")
+ private String phaseType;
+
+ @MppMultiId
+ @TableField(value = "value_type")
+ private String valueType;
+
+ @TableField(value = "quality_flag")
+ private Integer qualityFlag;
+
+ @TableField(value = "plt")
+ private Double plt;
+
+}
diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataVDPO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataVDPO.java
new file mode 100644
index 0000000..d242218
--- /dev/null
+++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatDataVDPO.java
@@ -0,0 +1,224 @@
+package com.njcn.csharmonic.pojo.po.day;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+/**
+ * 类的介绍:
+ *
+ * @author xuyang
+ * @version 1.0.0
+ * @createTime 2023/3/24 14:29
+ */
+@Data
+@TableName(value = "r_stat_data_v_d")
+public class RStatDataVDPO implements Serializable {
+
+ @MppMultiId
+ @TableField(value = "time")
+ private LocalDate time;
+
+ @MppMultiId
+ @TableField(value = "line_id")
+ private String lineId;
+
+ @MppMultiId
+ @TableField(value = "phasic_type")
+ private String phaseType;
+
+ @MppMultiId
+ @TableField(value = "value_type")
+ private String valueType;
+
+ @TableField(value = "quality_flag")
+ private Integer qualityFlag;
+
+ @TableField(value = "freq")
+ private Double freq;
+
+ @TableField(value = "freq_dev")
+ private Double freqDev;
+
+ @TableField(value = "rms")
+ private Double rms;
+
+ @TableField(value = "rms_lvr")
+ private Double rmsLvr;
+
+ @TableField(value = "v_neg")
+ private Double vNeg;
+
+ @TableField(value = "v_pos")
+ private Double vPos;
+
+ @TableField(value = "v_thd")
+ private Double vThd;
+
+ @TableField(value = "v_unbalance")
+ private Double vUnbalance;
+
+ @TableField(value = "v_zero")
+ private Double vZero;
+
+ @TableField(value = "vl_dev")
+ private Double vlDev;
+
+ @TableField(value = "vu_dev")
+ private Double vuDev;
+
+ @TableField(value = "v_1")
+ private Double v1;
+
+ @TableField(value = "v_2")
+ private Double v2;
+
+ @TableField(value = "v_3")
+ private Double v3;
+
+ @TableField(value = "v_4")
+ private Double v4;
+
+ @TableField(value = "v_5")
+ private Double v5;
+
+ @TableField(value = "v_6")
+ private Double v6;
+
+ @TableField(value = "v_7")
+ private Double v7;
+
+ @TableField(value = "v_8")
+ private Double v8;
+
+ @TableField(value = "v_9")
+ private Double v9;
+
+ @TableField(value = "v_10")
+ private Double v10;
+
+ @TableField(value = "v_11")
+ private Double v11;
+
+ @TableField(value = "v_12")
+ private Double v12;
+
+ @TableField(value = "v_13")
+ private Double v13;
+
+ @TableField(value = "v_14")
+ private Double v14;
+
+ @TableField(value = "v_15")
+ private Double v15;
+
+ @TableField(value = "v_16")
+ private Double v16;
+
+ @TableField(value = "v_17")
+ private Double v17;
+
+ @TableField(value = "v_18")
+ private Double v18;
+
+ @TableField(value = "v_19")
+ private Double v19;
+
+ @TableField(value = "v_20")
+ private Double v20;
+
+ @TableField(value = "v_21")
+ private Double v21;
+
+ @TableField(value = "v_22")
+ private Double v22;
+
+ @TableField(value = "v_23")
+ private Double v23;
+
+ @TableField(value = "v_24")
+ private Double v24;
+
+ @TableField(value = "v_25")
+ private Double v25;
+
+ @TableField(value = "v_26")
+ private Double v26;
+
+ @TableField(value = "v_27")
+ private Double v27;
+
+ @TableField(value = "v_28")
+ private Double v28;
+
+ @TableField(value = "v_29")
+ private Double v29;
+
+ @TableField(value = "v_30")
+ private Double v30;
+
+ @TableField(value = "v_31")
+ private Double v31;
+
+ @TableField(value = "v_32")
+ private Double v32;
+
+ @TableField(value = "v_33")
+ private Double v33;
+
+ @TableField(value = "v_34")
+ private Double v34;
+
+ @TableField(value = "v_35")
+ private Double v35;
+
+ @TableField(value = "v_36")
+ private Double v36;
+
+ @TableField(value = "v_37")
+ private Double v37;
+
+ @TableField(value = "v_38")
+ private Double v38;
+
+ @TableField(value = "v_39")
+ private Double v39;
+
+ @TableField(value = "v_40")
+ private Double v40;
+
+ @TableField(value = "v_41")
+ private Double v41;
+
+ @TableField(value = "v_42")
+ private Double v42;
+
+ @TableField(value = "v_43")
+ private Double v43;
+
+ @TableField(value = "v_44")
+ private Double v44;
+
+ @TableField(value = "v_45")
+ private Double v45;
+
+ @TableField(value = "v_46")
+ private Double v46;
+
+ @TableField(value = "v_47")
+ private Double v47;
+
+ @TableField(value = "v_48")
+ private Double v48;
+
+ @TableField(value = "v_49")
+ private Double v49;
+
+ @TableField(value = "v_50")
+ private Double v50;
+
+}
diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatLimitRateDPO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatLimitRateDPO.java
new file mode 100644
index 0000000..af5a516
--- /dev/null
+++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatLimitRateDPO.java
@@ -0,0 +1,614 @@
+//package com.njcn.csharmonic.pojo.po.day;
+//
+//import com.baomidou.mybatisplus.annotation.TableField;
+//import com.baomidou.mybatisplus.annotation.TableName;
+//import com.fasterxml.jackson.annotation.JsonFormat;
+//import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
+//import com.njcn.harmonic.annotaion.HarCurrent;
+//import com.njcn.harmonic.annotaion.HarVoltage;
+//import com.njcn.harmonic.annotaion.InterharVoltage;
+//import io.swagger.annotations.ApiModelProperty;
+//import lombok.AllArgsConstructor;
+//import lombok.Data;
+//import lombok.NoArgsConstructor;
+//
+//import java.time.LocalDate;
+//
+//@Data
+//@AllArgsConstructor
+//@NoArgsConstructor
+//@TableName(value = "r_stat_limit_rate_d")
+//public class RStatLimitRateDPO {
+// /**
+// * 监测点ID合格率的变电站/装置/母线/线路序号
+// */
+// @MppMultiId
+// @TableField(value = "my_index")
+// @ApiModelProperty(value = "监测点ID合格率的变电站/装置/母线/线路序号")
+// private String lineId;
+//
+// /**
+// * 数据类型,’A’表示A相,’B’表示B相,’C’表示C相,’’M’表示ABC三项总和,T’表示总
+// */
+// @MppMultiId
+// @TableField(value = "phasic_type")
+// @ApiModelProperty(value = "数据类型,'A'表示A相,'B'表示B相,'C'表示C相,''M'表示ABC三项总和,T'表示总")
+// private String phasicType;
+//
+// /**
+// * 合格率时间
+// */
+// @MppMultiId
+// @TableField(value = "time_id")
+// @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+// @ApiModelProperty(value = "合格率时间")
+// private LocalDate time;
+//
+// /**
+// * 总计算次数
+// */
+// @TableField(value = "all_time")
+// @ApiModelProperty(value = "总计算次数")
+// private Integer allTime;
+//
+// /**
+// * 闪变越限次数
+// */
+// @TableField(value = "flicker_overtime")
+// @ApiModelProperty(value = "闪变越限次数")
+// private Integer flickerOvertime;
+//
+// /**
+// * 闪变总计算次数
+// */
+// @TableField(value = "flicker_all_time")
+// @ApiModelProperty(value = "闪变总计算次数")
+// private Integer flickerAllTime;
+//
+// /**
+// * 频率偏差越限次数
+// */
+// @TableField(value = "freq_dev_overtime")
+// @ApiModelProperty(value = "频率偏差越限次数")
+// private Integer freqDevOvertime;
+//
+// /**
+// * 电压偏差越限次数
+// */
+// @TableField(value = "voltage_dev_overtime")
+// @ApiModelProperty(value = "电压偏差越限次数")
+// private Integer voltageDevOvertime;
+//
+// /**
+// * 三相电压不平衡度越限次数
+// */
+// @TableField(value = "ubalance_overtime")
+// @ApiModelProperty(value = "三相电压不平衡度越限次数")
+// private Integer ubalanceOvertime;
+//
+// /**
+// * 电压谐波畸变率越限次数
+// */
+// @TableField(value = "uaberrance_overtime")
+// @ApiModelProperty(value = "电压谐波畸变率越限次数")
+// private Integer uaberranceOvertime;
+//
+// /**
+// * 负序电流限值次数
+// */
+// @TableField(value = "i_neg_overtime")
+// @ApiModelProperty(value = "负序电流限值次数")
+// private Integer iNegOvertime;
+//
+// /**
+// * 2次电压谐波含有率越限次数
+// */
+// @HarVoltage
+// @TableField(value = "uharm_2_overtime")
+// @ApiModelProperty(value = "2次电压谐波含有率越限次数")
+// private Integer uharm2Overtime;
+//
+// /**
+// * 3次电压谐波含有率越限次数
+// */
+// @HarVoltage
+// @TableField(value = "uharm_3_overtime")
+// @ApiModelProperty(value = "3次电压谐波含有率越限次数")
+// private Integer uharm3Overtime;
+//
+// /**
+// * 4次电压谐波含有率越限次数
+// */
+// @HarVoltage
+// @TableField(value = "uharm_4_overtime")
+// @ApiModelProperty(value = "4次电压谐波含有率越限次数")
+// private Integer uharm4Overtime;
+//
+// /**
+// * 5次电压谐波含有率越限次数
+// */
+// @HarVoltage
+// @TableField(value = "uharm_5_overtime")
+// @ApiModelProperty(value = "5次电压谐波含有率越限次数")
+// private Integer uharm5Overtime;
+//
+// /**
+// * 6次电压谐波含有率越限次数
+// */
+// @HarVoltage
+// @TableField(value = "uharm_6_overtime")
+// @ApiModelProperty(value = "6次电压谐波含有率越限次数")
+// private Integer uharm6Overtime;
+//
+// /**
+// * 7次电压谐波含有率越限次数
+// */
+// @HarVoltage
+// @TableField(value = "uharm_7_overtime")
+// @ApiModelProperty(value = "7次电压谐波含有率越限次数")
+// private Integer uharm7Overtime;
+//
+// /**
+// * 8次电压谐波含有率越限次数
+// */
+// @HarVoltage
+// @TableField(value = "uharm_8_overtime")
+// @ApiModelProperty(value = "8次电压谐波含有率越限次数")
+// private Integer uharm8Overtime;
+//
+// /**
+// * 9次电压谐波含有率越限次数
+// */
+// @HarVoltage
+// @TableField(value = "uharm_9_overtime")
+// @ApiModelProperty(value = "9次电压谐波含有率越限次数")
+// private Integer uharm9Overtime;
+//
+// /**
+// * 10次电压谐波含有率越限次数
+// */
+// @HarVoltage
+// @TableField(value = "uharm_10_overtime")
+// @ApiModelProperty(value = "10次电压谐波含有率越限次数")
+// private Integer uharm10Overtime;
+//
+// /**
+// * 11次电压谐波含有率越限次数
+// */
+// @HarVoltage
+// @TableField(value = "uharm_11_overtime")
+// @ApiModelProperty(value = "11次电压谐波含有率越限次数")
+// private Integer uharm11Overtime;
+//
+// /**
+// * 12次电压谐波含有率越限次数
+// */
+// @HarVoltage
+// @TableField(value = "uharm_12_overtime")
+// @ApiModelProperty(value = "12次电压谐波含有率越限次数")
+// private Integer uharm12Overtime;
+//
+// /**
+// * 13次电压谐波含有率越限次数
+// */
+// @HarVoltage
+// @TableField(value = "uharm_13_overtime")
+// @ApiModelProperty(value = "13次电压谐波含有率越限次数")
+// private Integer uharm13Overtime;
+//
+// /**
+// * 14次电压谐波含有率越限次数
+// */
+// @HarVoltage
+// @TableField(value = "uharm_14_overtime")
+// @ApiModelProperty(value = "14次电压谐波含有率越限次数")
+// private Integer uharm14Overtime;
+//
+// /**
+// * 15次电压谐波含有率越限次数
+// */
+// @HarVoltage
+// @TableField(value = "uharm_15_overtime")
+// @ApiModelProperty(value = "15次电压谐波含有率越限次数")
+// private Integer uharm15Overtime;
+//
+// /**
+// * 16次电压谐波含有率越限次数
+// */
+// @HarVoltage
+// @TableField(value = "uharm_16_overtime")
+// @ApiModelProperty(value = "16次电压谐波含有率越限次数")
+// private Integer uharm16Overtime;
+//
+// /**
+// * 17次电压谐波含有率越限次数
+// */
+// @HarVoltage
+// @TableField(value = "uharm_17_overtime")
+// @ApiModelProperty(value = "17次电压谐波含有率越限次数")
+// private Integer uharm17Overtime;
+//
+// /**
+// * 18次电压谐波含有率越限次数
+// */
+// @HarVoltage
+// @TableField(value = "uharm_18_overtime")
+// @ApiModelProperty(value = "18次电压谐波含有率越限次数")
+// private Integer uharm18Overtime;
+//
+// /**
+// * 19次电压谐波含有率越限次数
+// */
+// @HarVoltage
+// @TableField(value = "uharm_19_overtime")
+// @ApiModelProperty(value = "19次电压谐波含有率越限次数")
+// private Integer uharm19Overtime;
+//
+// /**
+// * 20次电压谐波含有率越限次数
+// */
+// @HarVoltage
+// @TableField(value = "uharm_20_overtime")
+// @ApiModelProperty(value = "20次电压谐波含有率越限次数")
+// private Integer uharm20Overtime;
+//
+// /**
+// * 21次电压谐波含有率越限次数
+// */
+// @HarVoltage
+// @TableField(value = "uharm_21_overtime")
+// @ApiModelProperty(value = "21次电压谐波含有率越限次数")
+// private Integer uharm21Overtime;
+//
+// /**
+// * 22次电压谐波含有率越限次数
+// */
+// @HarVoltage
+// @TableField(value = "uharm_22_overtime")
+// @ApiModelProperty(value = "22次电压谐波含有率越限次数")
+// private Integer uharm22Overtime;
+//
+// /**
+// * 23次电压谐波含有率越限次数
+// */
+// @HarVoltage
+// @TableField(value = "uharm_23_overtime")
+// @ApiModelProperty(value = "23次电压谐波含有率越限次数")
+// private Integer uharm23Overtime;
+//
+// /**
+// * 24次电压谐波含有率越限次数
+// */
+// @HarVoltage
+// @TableField(value = "uharm_24_overtime")
+// @ApiModelProperty(value = "24次电压谐波含有率越限次数")
+// private Integer uharm24Overtime;
+//
+// /**
+// * 25次电压谐波含有率越限次数
+// */
+// @HarVoltage
+// @TableField(value = "uharm_25_overtime")
+// @ApiModelProperty(value = "25次电压谐波含有率越限次数")
+// private Integer uharm25Overtime;
+//
+// /**
+// * 2次电流谐波幅值越限次数
+// */
+// @HarCurrent
+// @TableField(value = "iharm_2_overtime")
+// @ApiModelProperty(value = "2次电流谐波幅值越限次数")
+// private Integer iharm2Overtime;
+//
+// /**
+// * 3次电流谐波幅值越限次数
+// */
+// @HarCurrent
+// @TableField(value = "iharm_3_overtime")
+// @ApiModelProperty(value = "3次电流谐波幅值越限次数")
+// private Integer iharm3Overtime;
+//
+// /**
+// * 4次电流谐波幅值越限次数
+// */
+// @HarCurrent
+// @TableField(value = "iharm_4_overtime")
+// @ApiModelProperty(value = "4次电流谐波幅值越限次数")
+// private Integer iharm4Overtime;
+//
+// /**
+// * 5次电流谐波幅值越限次数
+// */
+// @HarCurrent
+// @TableField(value = "iharm_5_overtime")
+// @ApiModelProperty(value = "5次电流谐波幅值越限次数")
+// private Integer iharm5Overtime;
+//
+// /**
+// * 6次电流谐波幅值越限次数
+// */
+// @HarCurrent
+// @TableField(value = "iharm_6_overtime")
+// @ApiModelProperty(value = "6次电流谐波幅值越限次数")
+// private Integer iharm6Overtime;
+//
+// /**
+// * 7次电流谐波幅值越限次数
+// */
+// @HarCurrent
+// @TableField(value = "iharm_7_overtime")
+// @ApiModelProperty(value = "7次电流谐波幅值越限次数")
+// private Integer iharm7Overtime;
+//
+// /**
+// * 8次电流谐波幅值越限次数
+// */
+// @HarCurrent
+// @TableField(value = "iharm_8_overtime")
+// @ApiModelProperty(value = "8次电流谐波幅值越限次数")
+// private Integer iharm8Overtime;
+//
+// /**
+// * 9次电流谐波幅值越限次数
+// */
+// @HarCurrent
+// @TableField(value = "iharm_9_overtime")
+// @ApiModelProperty(value = "9次电流谐波幅值越限次数")
+// private Integer iharm9Overtime;
+//
+// /**
+// * 10次电流谐波幅值越限次数
+// */
+// @HarCurrent
+// @TableField(value = "iharm_10_overtime")
+// @ApiModelProperty(value = "10次电流谐波幅值越限次数")
+// private Integer iharm10Overtime;
+//
+// /**
+// * 11次电流谐波幅值越限次数
+// */
+// @HarCurrent
+// @TableField(value = "iharm_11_overtime")
+// @ApiModelProperty(value = "11次电流谐波幅值越限次数")
+// private Integer iharm11Overtime;
+//
+// /**
+// * 12次电流谐波幅值越限次数
+// */
+// @HarCurrent
+// @TableField(value = "iharm_12_overtime")
+// @ApiModelProperty(value = "12次电流谐波幅值越限次数")
+// private Integer iharm12Overtime;
+//
+// /**
+// * 13次电流谐波幅值越限次数
+// */
+// @HarCurrent
+// @TableField(value = "iharm_13_overtime")
+// @ApiModelProperty(value = "13次电流谐波幅值越限次数")
+// private Integer iharm13Overtime;
+//
+// /**
+// * 14次电流谐波幅值越限次数
+// */
+// @HarCurrent
+// @TableField(value = "iharm_14_overtime")
+// @ApiModelProperty(value = "14次电流谐波幅值越限次数")
+// private Integer iharm14Overtime;
+//
+// /**
+// * 15次电流谐波幅值越限次数
+// */
+// @HarCurrent
+// @TableField(value = "iharm_15_overtime")
+// @ApiModelProperty(value = "15次电流谐波幅值越限次数")
+// private Integer iharm15Overtime;
+//
+// /**
+// * 16次电流谐波幅值越限次数
+// */
+// @HarCurrent
+// @TableField(value = "iharm_16_overtime")
+// @ApiModelProperty(value = "16次电流谐波幅值越限次数")
+// private Integer iharm16Overtime;
+//
+// /**
+// * 17次电流谐波幅值越限次数
+// */
+// @HarCurrent
+// @TableField(value = "iharm_17_overtime")
+// @ApiModelProperty(value = "17次电流谐波幅值越限次数")
+// private Integer iharm17Overtime;
+//
+// /**
+// * 18次电流谐波幅值越限次数
+// */
+// @HarCurrent
+// @TableField(value = "iharm_18_overtime")
+// @ApiModelProperty(value = "18次电流谐波幅值越限次数")
+// private Integer iharm18Overtime;
+//
+// /**
+// * 19次电流谐波幅值越限次数
+// */
+// @HarCurrent
+// @TableField(value = "iharm_19_overtime")
+// @ApiModelProperty(value = "19次电流谐波幅值越限次数")
+// private Integer iharm19Overtime;
+//
+// /**
+// * 20次电流谐波幅值越限次数
+// */
+// @HarCurrent
+// @TableField(value = "iharm_20_overtime")
+// @ApiModelProperty(value = "20次电流谐波幅值越限次数")
+// private Integer iharm20Overtime;
+//
+// /**
+// * 21次电流谐波幅值越限次数
+// */
+// @HarCurrent
+// @TableField(value = "iharm_21_overtime")
+// @ApiModelProperty(value = "21次电流谐波幅值越限次数")
+// private Integer iharm21Overtime;
+//
+// /**
+// * 22次电流谐波幅值越限次数
+// */
+// @HarCurrent
+// @TableField(value = "iharm_22_overtime")
+// @ApiModelProperty(value = "22次电流谐波幅值越限次数")
+// private Integer iharm22Overtime;
+//
+// /**
+// * 23次电流谐波幅值越限次数
+// */
+// @HarCurrent
+// @TableField(value = "iharm_23_overtime")
+// @ApiModelProperty(value = "23次电流谐波幅值越限次数")
+// private Integer iharm23Overtime;
+//
+// /**
+// * 24次电流谐波幅值越限次数
+// */
+// @HarCurrent
+// @TableField(value = "iharm_24_overtime")
+// @ApiModelProperty(value = "24次电流谐波幅值越限次数")
+// private Integer iharm24Overtime;
+//
+// /**
+// * 25次电流谐波幅值越限次数
+// */
+// @HarCurrent
+// @TableField(value = "iharm_25_overtime")
+// @ApiModelProperty(value = "25次电流谐波幅值越限次数")
+// private Integer iharm25Overtime;
+//
+// /**
+// * 0.5次间谐波电压限值次数
+// */
+// @TableField(value = "inuharm_1_overtime")
+// @InterharVoltage
+// @ApiModelProperty(value = "0.5次间谐波电压限值次数")
+// private Integer inuharm1Overtime;
+//
+// /**
+// * 1.5次间谐波电压限值次数
+// */
+// @InterharVoltage
+// @TableField(value = "inuharm_2_overtime")
+// @ApiModelProperty(value = "1.5次间谐波电压限值次数")
+// private Integer inuharm2Overtime;
+//
+// /**
+// * 2.5次间谐波电压限值次数
+// */
+// @InterharVoltage
+// @TableField(value = "inuharm_3_overtime")
+// @ApiModelProperty(value = "2.5次间谐波电压限值次数")
+// private Integer inuharm3Overtime;
+//
+// /**
+// * 3.5次间谐波电压限值次数
+// */
+// @InterharVoltage
+// @TableField(value = "inuharm_4_overtime")
+// @ApiModelProperty(value = "3.5次间谐波电压限值次数")
+// private Integer inuharm4Overtime;
+//
+// /**
+// * 4.5次间谐波电压限值次数
+// */
+// @InterharVoltage
+// @TableField(value = "inuharm_5_overtime")
+// @ApiModelProperty(value = "4.5次间谐波电压限值次数")
+// private Integer inuharm5Overtime;
+//
+// /**
+// * 5.5次间谐波电压限值次数
+// */
+// @InterharVoltage
+// @TableField(value = "inuharm_6_overtime")
+// @ApiModelProperty(value = "5.5次间谐波电压限值次数")
+// private Integer inuharm6Overtime;
+//
+// /**
+// * 6.5次间谐波电压限值次数
+// */
+// @InterharVoltage
+// @TableField(value = "inuharm_7_overtime")
+// @ApiModelProperty(value = "6.5次间谐波电压限值次数")
+// private Integer inuharm7Overtime;
+//
+// /**
+// * 7.5次间谐波电压限值次数
+// */
+// @InterharVoltage
+// @TableField(value = "inuharm_8_overtime")
+// @ApiModelProperty(value = "7.5次间谐波电压限值次数")
+// private Integer inuharm8Overtime;
+//
+// /**
+// * 8.5次间谐波电压限值次数
+// */
+// @InterharVoltage
+// @TableField(value = "inuharm_9_overtime")
+// @ApiModelProperty(value = "8.5次间谐波电压限值次数")
+// private Integer inuharm9Overtime;
+//
+// /**
+// * 9.5次间谐波电压限值次数
+// */
+// @InterharVoltage
+// @TableField(value = "inuharm_10_overtime")
+// @ApiModelProperty(value = "9.5次间谐波电压限值次数")
+// private Integer inuharm10Overtime;
+//
+// /**
+// * 10.5次间谐波电压限值次数
+// */
+// @InterharVoltage
+// @TableField(value = "inuharm_11_overtime")
+// @ApiModelProperty(value = "10.5次间谐波电压限值次数")
+// private Integer inuharm11Overtime;
+//
+// /**
+// * 11.5次间谐波电压限值次数
+// */
+// @InterharVoltage
+// @TableField(value = "inuharm_12_overtime")
+// @ApiModelProperty(value = "11.5次间谐波电压限值次数")
+// private Integer inuharm12Overtime;
+//
+// /**
+// * 12.5次间谐波电压限值次数
+// */
+// @InterharVoltage
+// @TableField(value = "inuharm_13_overtime")
+// @ApiModelProperty(value = "12.5次间谐波电压限值次数")
+// private Integer inuharm13Overtime;
+//
+// /**
+// * 13.5次间谐波电压限值次数
+// */
+// @InterharVoltage
+// @TableField(value = "inuharm_14_overtime")
+// @ApiModelProperty(value = "13.5次间谐波电压限值次数")
+// private Integer inuharm14Overtime;
+//
+// /**
+// * 14.5次间谐波电压限值次数
+// */
+// @InterharVoltage
+// @TableField(value = "inuharm_15_overtime")
+// @ApiModelProperty(value = "14.5次间谐波电压限值次数")
+// private Integer inuharm15Overtime;
+//
+// /**
+// * 15.5次间谐波电压限值次数
+// */
+// @InterharVoltage
+// @TableField(value = "inuharm_16_overtime")
+// @ApiModelProperty(value = "15.5次间谐波电压限值次数")
+// private Integer inuharm16Overtime;
+//}
diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatLimitRateDetailDPO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatLimitRateDetailDPO.java
new file mode 100644
index 0000000..322bb3c
--- /dev/null
+++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatLimitRateDetailDPO.java
@@ -0,0 +1,592 @@
+//package com.njcn.csharmonic.pojo.po.day;
+//
+//import com.baomidou.mybatisplus.annotation.TableField;
+//import com.baomidou.mybatisplus.annotation.TableName;
+//import com.fasterxml.jackson.annotation.JsonFormat;
+//import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
+//
+//import io.swagger.annotations.ApiModelProperty;
+//import lombok.AllArgsConstructor;
+//import lombok.Data;
+//import lombok.NoArgsConstructor;
+//
+//import java.time.LocalDate;
+//
+//@Data
+//@AllArgsConstructor
+//@NoArgsConstructor
+//@TableName(value = "r_stat_limit_rate_detail_d")
+//public class RStatLimitRateDetailDPO {
+//
+// /**
+// * 合格率时间
+// */
+// @MppMultiId
+// @TableField(value = "time_id")
+// @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+// @ApiModelProperty(value = "合格率时间")
+// private LocalDate time;
+//
+// /**
+// * 监测点ID合格率的变电站/装置/母线/线路序号
+// */
+// @MppMultiId
+// @TableField(value = "my_index")
+// @ApiModelProperty(value = "监测点ID合格率的变电站/装置/母线/线路序号")
+// private String lineId;
+//
+//
+// /**
+// * 频率偏差越限数据
+// */
+// @TableField(value = "freq_dev_overtime")
+// @ApiModelProperty(value = "频率偏差越限数据")
+// private String freqDevOvertime;
+//
+// /**
+// * 电压偏差越限数据
+// */
+// @TableField(value = "voltage_dev_overtime")
+// @ApiModelProperty(value = "电压偏差越限数据")
+// private String voltageDevOvertime;
+//
+// /**
+// * 三相电压不平衡度越限数据
+// */
+// @TableField(value = "ubalance_overtime")
+// @ApiModelProperty(value = "三相电压不平衡度越限数据")
+// private String ubalanceOvertime;
+// /**
+// * 闪变越限数据
+// */
+// @TableField(value = "flicker_overtime")
+// @ApiModelProperty(value = "闪变越限数据")
+// private String flickerOvertime;
+//
+//
+// /**
+// * 电压谐波畸变率越限数据
+// */
+// @TableField(value = "uaberrance_overtime")
+// @ApiModelProperty(value = "电压谐波畸变率越限数据")
+// private String uaberranceOvertime;
+//
+// /**
+// * 负序电流限值数据
+// */
+// @TableField(value = "i_neg_overtime")
+// @ApiModelProperty(value = "负序电流限值数据")
+// private String iNegOvertime;
+//
+// /**
+// * 2次电压谐波含有率越限数据
+// */
+// @HarVoltage
+// @TableField(value = "uharm_2_overtime")
+// @ApiModelProperty(value = "2次电压谐波含有率越限数据")
+// private String uharm2Overtime;
+//
+// /**
+// * 3次电压谐波含有率越限数据
+// */
+// @HarVoltage
+// @TableField(value = "uharm_3_overtime")
+// @ApiModelProperty(value = "3次电压谐波含有率越限数据")
+// private String uharm3Overtime;
+//
+// /**
+// * 4次电压谐波含有率越限数据
+// */
+// @HarVoltage
+// @TableField(value = "uharm_4_overtime")
+// @ApiModelProperty(value = "4次电压谐波含有率越限数据")
+// private String uharm4Overtime;
+//
+// /**
+// * 5次电压谐波含有率越限数据
+// */
+// @HarVoltage
+// @TableField(value = "uharm_5_overtime")
+// @ApiModelProperty(value = "5次电压谐波含有率越限数据")
+// private String uharm5Overtime;
+//
+// /**
+// * 6次电压谐波含有率越限数据
+// */
+// @HarVoltage
+// @TableField(value = "uharm_6_overtime")
+// @ApiModelProperty(value = "6次电压谐波含有率越限数据")
+// private String uharm6Overtime;
+//
+// /**
+// * 7次电压谐波含有率越限数据
+// */
+// @HarVoltage
+// @TableField(value = "uharm_7_overtime")
+// @ApiModelProperty(value = "7次电压谐波含有率越限数据")
+// private String uharm7Overtime;
+//
+// /**
+// * 8次电压谐波含有率越限数据
+// */
+// @HarVoltage
+// @TableField(value = "uharm_8_overtime")
+// @ApiModelProperty(value = "8次电压谐波含有率越限数据")
+// private String uharm8Overtime;
+//
+// /**
+// * 9次电压谐波含有率越限数据
+// */
+// @HarVoltage
+// @TableField(value = "uharm_9_overtime")
+// @ApiModelProperty(value = "9次电压谐波含有率越限数据")
+// private String uharm9Overtime;
+//
+// /**
+// * 10次电压谐波含有率越限数据
+// */
+// @HarVoltage
+// @TableField(value = "uharm_10_overtime")
+// @ApiModelProperty(value = "10次电压谐波含有率越限数据")
+// private String uharm10Overtime;
+//
+// /**
+// * 11次电压谐波含有率越限数据
+// */
+// @HarVoltage
+// @TableField(value = "uharm_11_overtime")
+// @ApiModelProperty(value = "11次电压谐波含有率越限数据")
+// private String uharm11Overtime;
+//
+// /**
+// * 12次电压谐波含有率越限数据
+// */
+// @HarVoltage
+// @TableField(value = "uharm_12_overtime")
+// @ApiModelProperty(value = "12次电压谐波含有率越限数据")
+// private String uharm12Overtime;
+//
+// /**
+// * 13次电压谐波含有率越限数据
+// */
+// @HarVoltage
+// @TableField(value = "uharm_13_overtime")
+// @ApiModelProperty(value = "13次电压谐波含有率越限数据")
+// private String uharm13Overtime;
+//
+// /**
+// * 14次电压谐波含有率越限数据
+// */
+// @HarVoltage
+// @TableField(value = "uharm_14_overtime")
+// @ApiModelProperty(value = "14次电压谐波含有率越限数据")
+// private String uharm14Overtime;
+//
+// /**
+// * 15次电压谐波含有率越限数据
+// */
+// @HarVoltage
+// @TableField(value = "uharm_15_overtime")
+// @ApiModelProperty(value = "15次电压谐波含有率越限数据")
+// private String uharm15Overtime;
+//
+// /**
+// * 16次电压谐波含有率越限数据
+// */
+// @HarVoltage
+// @TableField(value = "uharm_16_overtime")
+// @ApiModelProperty(value = "16次电压谐波含有率越限数据")
+// private String uharm16Overtime;
+//
+// /**
+// * 17次电压谐波含有率越限数据
+// */
+// @HarVoltage
+// @TableField(value = "uharm_17_overtime")
+// @ApiModelProperty(value = "17次电压谐波含有率越限数据")
+// private String uharm17Overtime;
+//
+// /**
+// * 18次电压谐波含有率越限数据
+// */
+// @HarVoltage
+// @TableField(value = "uharm_18_overtime")
+// @ApiModelProperty(value = "18次电压谐波含有率越限数据")
+// private String uharm18Overtime;
+//
+// /**
+// * 19次电压谐波含有率越限数据
+// */
+// @HarVoltage
+// @TableField(value = "uharm_19_overtime")
+// @ApiModelProperty(value = "19次电压谐波含有率越限数据")
+// private String uharm19Overtime;
+//
+// /**
+// * 20次电压谐波含有率越限数据
+// */
+// @HarVoltage
+// @TableField(value = "uharm_20_overtime")
+// @ApiModelProperty(value = "20次电压谐波含有率越限数据")
+// private String uharm20Overtime;
+//
+// /**
+// * 21次电压谐波含有率越限数据
+// */
+// @HarVoltage
+// @TableField(value = "uharm_21_overtime")
+// @ApiModelProperty(value = "21次电压谐波含有率越限数据")
+// private String uharm21Overtime;
+//
+// /**
+// * 22次电压谐波含有率越限数据
+// */
+// @HarVoltage
+// @TableField(value = "uharm_22_overtime")
+// @ApiModelProperty(value = "22次电压谐波含有率越限数据")
+// private String uharm22Overtime;
+//
+// /**
+// * 23次电压谐波含有率越限数据
+// */
+// @HarVoltage
+// @TableField(value = "uharm_23_overtime")
+// @ApiModelProperty(value = "23次电压谐波含有率越限数据")
+// private String uharm23Overtime;
+//
+// /**
+// * 24次电压谐波含有率越限数据
+// */
+// @HarVoltage
+// @TableField(value = "uharm_24_overtime")
+// @ApiModelProperty(value = "24次电压谐波含有率越限数据")
+// private String uharm24Overtime;
+//
+// /**
+// * 25次电压谐波含有率越限数据
+// */
+// @HarVoltage
+// @TableField(value = "uharm_25_overtime")
+// @ApiModelProperty(value = "25次电压谐波含有率越限数据")
+// private String uharm25Overtime;
+//
+// /**
+// * 2次电流谐波幅值越限数据
+// */
+// @HarCurrent
+// @TableField(value = "iharm_2_overtime")
+// @ApiModelProperty(value = "2次电流谐波幅值越限数据")
+// private String iharm2Overtime;
+//
+// /**
+// * 3次电流谐波幅值越限数据
+// */
+// @HarCurrent
+// @TableField(value = "iharm_3_overtime")
+// @ApiModelProperty(value = "3次电流谐波幅值越限数据")
+// private String iharm3Overtime;
+//
+// /**
+// * 4次电流谐波幅值越限数据
+// */
+// @HarCurrent
+// @TableField(value = "iharm_4_overtime")
+// @ApiModelProperty(value = "4次电流谐波幅值越限数据")
+// private String iharm4Overtime;
+//
+// /**
+// * 5次电流谐波幅值越限数据
+// */
+// @HarCurrent
+// @TableField(value = "iharm_5_overtime")
+// @ApiModelProperty(value = "5次电流谐波幅值越限数据")
+// private String iharm5Overtime;
+//
+// /**
+// * 6次电流谐波幅值越限数据
+// */
+// @HarCurrent
+// @TableField(value = "iharm_6_overtime")
+// @ApiModelProperty(value = "6次电流谐波幅值越限数据")
+// private String iharm6Overtime;
+//
+// /**
+// * 7次电流谐波幅值越限数据
+// */
+// @HarCurrent
+// @TableField(value = "iharm_7_overtime")
+// @ApiModelProperty(value = "7次电流谐波幅值越限数据")
+// private String iharm7Overtime;
+//
+// /**
+// * 8次电流谐波幅值越限数据
+// */
+// @HarCurrent
+// @TableField(value = "iharm_8_overtime")
+// @ApiModelProperty(value = "8次电流谐波幅值越限数据")
+// private String iharm8Overtime;
+//
+// /**
+// * 9次电流谐波幅值越限数据
+// */
+// @HarCurrent
+// @TableField(value = "iharm_9_overtime")
+// @ApiModelProperty(value = "9次电流谐波幅值越限数据")
+// private String iharm9Overtime;
+//
+// /**
+// * 10次电流谐波幅值越限数据
+// */
+// @HarCurrent
+// @TableField(value = "iharm_10_overtime")
+// @ApiModelProperty(value = "10次电流谐波幅值越限数据")
+// private String iharm10Overtime;
+//
+// /**
+// * 11次电流谐波幅值越限数据
+// */
+// @HarCurrent
+// @TableField(value = "iharm_11_overtime")
+// @ApiModelProperty(value = "11次电流谐波幅值越限数据")
+// private String iharm11Overtime;
+//
+// /**
+// * 12次电流谐波幅值越限数据
+// */
+// @HarCurrent
+// @TableField(value = "iharm_12_overtime")
+// @ApiModelProperty(value = "12次电流谐波幅值越限数据")
+// private String iharm12Overtime;
+//
+// /**
+// * 13次电流谐波幅值越限数据
+// */
+// @HarCurrent
+// @TableField(value = "iharm_13_overtime")
+// @ApiModelProperty(value = "13次电流谐波幅值越限数据")
+// private String iharm13Overtime;
+//
+// /**
+// * 14次电流谐波幅值越限数据
+// */
+// @HarCurrent
+// @TableField(value = "iharm_14_overtime")
+// @ApiModelProperty(value = "14次电流谐波幅值越限数据")
+// private String iharm14Overtime;
+//
+// /**
+// * 15次电流谐波幅值越限数据
+// */
+// @HarCurrent
+// @TableField(value = "iharm_15_overtime")
+// @ApiModelProperty(value = "15次电流谐波幅值越限数据")
+// private String iharm15Overtime;
+//
+// /**
+// * 16次电流谐波幅值越限数据
+// */
+// @HarCurrent
+// @TableField(value = "iharm_16_overtime")
+// @ApiModelProperty(value = "16次电流谐波幅值越限数据")
+// private String iharm16Overtime;
+//
+// /**
+// * 17次电流谐波幅值越限数据
+// */
+// @HarCurrent
+// @TableField(value = "iharm_17_overtime")
+// @ApiModelProperty(value = "17次电流谐波幅值越限数据")
+// private String iharm17Overtime;
+//
+// /**
+// * 18次电流谐波幅值越限数据
+// */
+// @HarCurrent
+// @TableField(value = "iharm_18_overtime")
+// @ApiModelProperty(value = "18次电流谐波幅值越限数据")
+// private String iharm18Overtime;
+//
+// /**
+// * 19次电流谐波幅值越限数据
+// */
+// @HarCurrent
+// @TableField(value = "iharm_19_overtime")
+// @ApiModelProperty(value = "19次电流谐波幅值越限数据")
+// private String iharm19Overtime;
+//
+// /**
+// * 20次电流谐波幅值越限数据
+// */
+// @HarCurrent
+// @TableField(value = "iharm_20_overtime")
+// @ApiModelProperty(value = "20次电流谐波幅值越限数据")
+// private String iharm20Overtime;
+//
+// /**
+// * 21次电流谐波幅值越限数据
+// */
+// @HarCurrent
+// @TableField(value = "iharm_21_overtime")
+// @ApiModelProperty(value = "21次电流谐波幅值越限数据")
+// private String iharm21Overtime;
+//
+// /**
+// * 22次电流谐波幅值越限数据
+// */
+// @HarCurrent
+// @TableField(value = "iharm_22_overtime")
+// @ApiModelProperty(value = "22次电流谐波幅值越限数据")
+// private String iharm22Overtime;
+//
+// /**
+// * 23次电流谐波幅值越限数据
+// */
+// @HarCurrent
+// @TableField(value = "iharm_23_overtime")
+// @ApiModelProperty(value = "23次电流谐波幅值越限数据")
+// private String iharm23Overtime;
+//
+// /**
+// * 24次电流谐波幅值越限数据
+// */
+// @HarCurrent
+// @TableField(value = "iharm_24_overtime")
+// @ApiModelProperty(value = "24次电流谐波幅值越限数据")
+// private String iharm24Overtime;
+//
+// /**
+// * 25次电流谐波幅值越限数据
+// */
+// @HarCurrent
+// @TableField(value = "iharm_25_overtime")
+// @ApiModelProperty(value = "25次电流谐波幅值越限数据")
+// private String iharm25Overtime;
+//
+// /**
+// * 0.5次间谐波电压限值数据
+// */
+// @TableField(value = "inuharm_1_overtime")
+// @InterharVoltage
+// @ApiModelProperty(value = "0.5次间谐波电压限值数据")
+// private String inuharm1Overtime;
+//
+// /**
+// * 1.5次间谐波电压限值数据
+// */
+// @InterharVoltage
+// @TableField(value = "inuharm_2_overtime")
+// @ApiModelProperty(value = "1.5次间谐波电压限值数据")
+// private String inuharm2Overtime;
+//
+// /**
+// * 2.5次间谐波电压限值数据
+// */
+// @InterharVoltage
+// @TableField(value = "inuharm_3_overtime")
+// @ApiModelProperty(value = "2.5次间谐波电压限值数据")
+// private String inuharm3Overtime;
+//
+// /**
+// * 3.5次间谐波电压限值数据
+// */
+// @InterharVoltage
+// @TableField(value = "inuharm_4_overtime")
+// @ApiModelProperty(value = "3.5次间谐波电压限值数据")
+// private String inuharm4Overtime;
+//
+// /**
+// * 4.5次间谐波电压限值数据
+// */
+// @InterharVoltage
+// @TableField(value = "inuharm_5_overtime")
+// @ApiModelProperty(value = "4.5次间谐波电压限值数据")
+// private String inuharm5Overtime;
+//
+// /**
+// * 5.5次间谐波电压限值数据
+// */
+// @InterharVoltage
+// @TableField(value = "inuharm_6_overtime")
+// @ApiModelProperty(value = "5.5次间谐波电压限值数据")
+// private String inuharm6Overtime;
+//
+// /**
+// * 6.5次间谐波电压限值数据
+// */
+// @InterharVoltage
+// @TableField(value = "inuharm_7_overtime")
+// @ApiModelProperty(value = "6.5次间谐波电压限值数据")
+// private String inuharm7Overtime;
+//
+// /**
+// * 7.5次间谐波电压限值数据
+// */
+// @InterharVoltage
+// @TableField(value = "inuharm_8_overtime")
+// @ApiModelProperty(value = "7.5次间谐波电压限值数据")
+// private String inuharm8Overtime;
+//
+// /**
+// * 8.5次间谐波电压限值数据
+// */
+// @InterharVoltage
+// @TableField(value = "inuharm_9_overtime")
+// @ApiModelProperty(value = "8.5次间谐波电压限值数据")
+// private String inuharm9Overtime;
+//
+// /**
+// * 9.5次间谐波电压限值数据
+// */
+// @InterharVoltage
+// @TableField(value = "inuharm_10_overtime")
+// @ApiModelProperty(value = "9.5次间谐波电压限值数据")
+// private String inuharm10Overtime;
+//
+// /**
+// * 10.5次间谐波电压限值数据
+// */
+// @InterharVoltage
+// @TableField(value = "inuharm_11_overtime")
+// @ApiModelProperty(value = "10.5次间谐波电压限值数据")
+// private String inuharm11Overtime;
+//
+// /**
+// * 11.5次间谐波电压限值数据
+// */
+// @InterharVoltage
+// @TableField(value = "inuharm_12_overtime")
+// @ApiModelProperty(value = "11.5次间谐波电压限值数据")
+// private String inuharm12Overtime;
+//
+// /**
+// * 12.5次间谐波电压限值数据
+// */
+// @InterharVoltage
+// @TableField(value = "inuharm_13_overtime")
+// @ApiModelProperty(value = "12.5次间谐波电压限值数据")
+// private String inuharm13Overtime;
+//
+// /**
+// * 13.5次间谐波电压限值数据
+// */
+// @InterharVoltage
+// @TableField(value = "inuharm_14_overtime")
+// @ApiModelProperty(value = "13.5次间谐波电压限值数据")
+// private String inuharm14Overtime;
+//
+// /**
+// * 14.5次间谐波电压限值数据
+// */
+// @InterharVoltage
+// @TableField(value = "inuharm_15_overtime")
+// @ApiModelProperty(value = "14.5次间谐波电压限值数据")
+// private String inuharm15Overtime;
+//
+// /**
+// * 15.5次间谐波电压限值数据
+// */
+// @InterharVoltage
+// @TableField(value = "inuharm_16_overtime")
+// @ApiModelProperty(value = "15.5次间谐波电压限值数据")
+// private String inuharm16Overtime;
+//}
diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatLimitTargetDPO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatLimitTargetDPO.java
new file mode 100644
index 0000000..71709c9
--- /dev/null
+++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatLimitTargetDPO.java
@@ -0,0 +1,469 @@
+package com.njcn.csharmonic.pojo.po.day;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDate;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@TableName(value = "r_stat_limit_target_d")
+public class RStatLimitTargetDPO{
+ /**
+ * 监测点ID合格率的变电站/装置/母线/线路序号
+ */
+ @MppMultiId
+ @TableField(value = "my_index")
+ private String lineId;
+
+ /**
+ * 数据类型,’A’表示A相,’B’表示B相,’C’表示C相,’’M’表示ABC三项总和,T’表示总
+ */
+ @MppMultiId
+ @TableField(value = "phasic_type")
+ private String phasicType;
+
+ /**
+ * 合格率时间
+ */
+ @MppMultiId
+ @TableField(value = "time_id")
+ private LocalDate time;
+
+ /**
+ * 总计算次数
+ */
+ @TableField(value = "all_time")
+ private Integer allTime;
+
+ /**
+ * 闪变总计算次数
+ */
+ @TableField(value = "flicker_all_time")
+ private Integer flickerAllTime;
+
+ /**
+ * 闪变越限次数
+ */
+ @TableField(value = "flicker_overtime")
+ private Integer flickerOvertime;
+
+ /**
+ * 频率偏差越限次数
+ */
+ @TableField(value = "freq_dev_overtime")
+ private Integer freqDevOvertime;
+
+ /**
+ * 电压偏差越限次数
+ */
+ @TableField(value = "voltage_dev_overtime")
+ private Integer voltageDevOvertime;
+
+ /**
+ * 电压不平衡度越限次数
+ */
+ @TableField(value = "ubalance_overtime")
+ private Integer ubalanceOvertime;
+
+ /**
+ * 电压谐波畸变率越限次数
+ */
+ @TableField(value = "uaberrance_overtime")
+ private Integer uaberranceOvertime;
+
+ /**
+ * 负序电流限值次数
+ */
+ @TableField(value = "i_neg_overtime")
+ private Integer iNegOvertime;
+
+ /**
+ * 2次电压谐波含有率越限次数
+ */
+ @TableField(value = "uharm_2_overtime")
+ private Integer uharm2Overtime;
+
+ /**
+ * 3次电压谐波含有率越限次数
+ */
+ @TableField(value = "uharm_3_overtime")
+ private Integer uharm3Overtime;
+
+ /**
+ * 4次电压谐波含有率越限次数
+ */
+ @TableField(value = "uharm_4_overtime")
+ private Integer uharm4Overtime;
+
+ /**
+ * 5次电压谐波含有率越限次数
+ */
+ @TableField(value = "uharm_5_overtime")
+ private Integer uharm5Overtime;
+
+ /**
+ * 6次电压谐波含有率越限次数
+ */
+ @TableField(value = "uharm_6_overtime")
+ private Integer uharm6Overtime;
+
+ /**
+ * 7次电压谐波含有率越限次数
+ */
+ @TableField(value = "uharm_7_overtime")
+ private Integer uharm7Overtime;
+
+ /**
+ * 8次电压谐波含有率越限次数
+ */
+ @TableField(value = "uharm_8_overtime")
+ private Integer uharm8Overtime;
+
+ /**
+ * 9次电压谐波含有率越限次数
+ */
+ @TableField(value = "uharm_9_overtime")
+ private Integer uharm9Overtime;
+
+ /**
+ * 10次电压谐波含有率越限次数
+ */
+ @TableField(value = "uharm_10_overtime")
+ private Integer uharm10Overtime;
+
+ /**
+ * 11次电压谐波含有率越限次数
+ */
+ @TableField(value = "uharm_11_overtime")
+ private Integer uharm11Overtime;
+
+ /**
+ * 12次电压谐波含有率越限次数
+ */
+ @TableField(value = "uharm_12_overtime")
+ private Integer uharm12Overtime;
+
+ /**
+ * 13次电压谐波含有率越限次数
+ */
+ @TableField(value = "uharm_13_overtime")
+ private Integer uharm13Overtime;
+
+ /**
+ * 14次电压谐波含有率越限次数
+ */
+ @TableField(value = "uharm_14_overtime")
+ private Integer uharm14Overtime;
+
+ /**
+ * 15次电压谐波含有率越限次数
+ */
+ @TableField(value = "uharm_15_overtime")
+ private Integer uharm15Overtime;
+
+ /**
+ * 16次电压谐波含有率越限次数
+ */
+ @TableField(value = "uharm_16_overtime")
+ private Integer uharm16Overtime;
+
+ /**
+ * 17次电压谐波含有率越限次数
+ */
+ @TableField(value = "uharm_17_overtime")
+ private Integer uharm17Overtime;
+
+ /**
+ * 18次电压谐波含有率越限次数
+ */
+ @TableField(value = "uharm_18_overtime")
+ private Integer uharm18Overtime;
+
+ /**
+ * 19次电压谐波含有率越限次数
+ */
+ @TableField(value = "uharm_19_overtime")
+ private Integer uharm19Overtime;
+
+ /**
+ * 20次电压谐波含有率越限次数
+ */
+ @TableField(value = "uharm_20_overtime")
+ private Integer uharm20Overtime;
+
+ /**
+ * 21次电压谐波含有率越限次数
+ */
+ @TableField(value = "uharm_21_overtime")
+ private Integer uharm21Overtime;
+
+ /**
+ * 22次电压谐波含有率越限次数
+ */
+ @TableField(value = "uharm_22_overtime")
+ private Integer uharm22Overtime;
+
+ /**
+ * 23次电压谐波含有率越限次数
+ */
+ @TableField(value = "uharm_23_overtime")
+ private Integer uharm23Overtime;
+
+ /**
+ * 24次电压谐波含有率越限次数
+ */
+ @TableField(value = "uharm_24_overtime")
+ private Integer uharm24Overtime;
+
+ /**
+ * 25次电压谐波含有率越限次数
+ */
+ @TableField(value = "uharm_25_overtime")
+ private Integer uharm25Overtime;
+
+ /**
+ * 2次电流谐波幅值越限次数
+ */
+ @TableField(value = "iharm_2_overtime")
+ private Integer iharm2Overtime;
+
+ /**
+ * 3次电流谐波幅值越限次数
+ */
+ @TableField(value = "iharm_3_overtime")
+ private Integer iharm3Overtime;
+
+ /**
+ * 4次电流谐波幅值越限次数
+ */
+ @TableField(value = "iharm_4_overtime")
+ private Integer iharm4Overtime;
+
+ /**
+ * 5次电流谐波幅值越限次数
+ */
+ @TableField(value = "iharm_5_overtime")
+ private Integer iharm5Overtime;
+
+ /**
+ * 6次电流谐波幅值越限次数
+ */
+ @TableField(value = "iharm_6_overtime")
+ private Integer iharm6Overtime;
+
+ /**
+ * 7次电流谐波幅值越限次数
+ */
+ @TableField(value = "iharm_7_overtime")
+ private Integer iharm7Overtime;
+
+ /**
+ * 8次电流谐波幅值越限次数
+ */
+ @TableField(value = "iharm_8_overtime")
+ private Integer iharm8Overtime;
+
+ /**
+ * 9次电流谐波幅值越限次数
+ */
+ @TableField(value = "iharm_9_overtime")
+ private Integer iharm9Overtime;
+
+ /**
+ * 10次电流谐波幅值越限次数
+ */
+ @TableField(value = "iharm_10_overtime")
+ private Integer iharm10Overtime;
+
+ /**
+ * 11次电流谐波幅值越限次数
+ */
+ @TableField(value = "iharm_11_overtime")
+ private Integer iharm11Overtime;
+
+ /**
+ * 12次电流谐波幅值越限次数
+ */
+ @TableField(value = "iharm_12_overtime")
+ private Integer iharm12Overtime;
+
+ /**
+ * 13次电流谐波幅值越限次数
+ */
+ @TableField(value = "iharm_13_overtime")
+ private Integer iharm13Overtime;
+
+ /**
+ * 14次电流谐波幅值越限次数
+ */
+ @TableField(value = "iharm_14_overtime")
+ private Integer iharm14Overtime;
+
+ /**
+ * 15次电流谐波幅值越限次数
+ */
+ @TableField(value = "iharm_15_overtime")
+ private Integer iharm15Overtime;
+
+ /**
+ * 16次电流谐波幅值越限次数
+ */
+ @TableField(value = "iharm_16_overtime")
+ private Integer iharm16Overtime;
+
+ /**
+ * 17次电流谐波幅值越限次数
+ */
+ @TableField(value = "iharm_17_overtime")
+ private Integer iharm17Overtime;
+
+ /**
+ * 18次电流谐波幅值越限次数
+ */
+ @TableField(value = "iharm_18_overtime")
+ private Integer iharm18Overtime;
+
+ /**
+ * 19次电流谐波幅值越限次数
+ */
+ @TableField(value = "iharm_19_overtime")
+ private Integer iharm19Overtime;
+
+ /**
+ * 20次电流谐波幅值越限次数
+ */
+ @TableField(value = "iharm_20_overtime")
+ private Integer iharm20Overtime;
+
+ /**
+ * 21次电流谐波幅值越限次数
+ */
+ @TableField(value = "iharm_21_overtime")
+ private Integer iharm21Overtime;
+
+ /**
+ * 22次电流谐波幅值越限次数
+ */
+ @TableField(value = "iharm_22_overtime")
+ private Integer iharm22Overtime;
+
+ /**
+ * 23次电流谐波幅值越限次数
+ */
+ @TableField(value = "iharm_23_overtime")
+ private Integer iharm23Overtime;
+
+ /**
+ * 24次电流谐波幅值越限次数
+ */
+ @TableField(value = "iharm_24_overtime")
+ private Integer iharm24Overtime;
+
+ /**
+ * 25次电流谐波幅值越限次数
+ */
+ @TableField(value = "iharm_25_overtime")
+ private Integer iharm25Overtime;
+
+ /**
+ * 0.5次间谐波电压限值次数
+ */
+ @TableField(value = "inuharm_1_overtime")
+ private Integer inuharm1Overtime;
+
+ /**
+ * 1.5次间谐波电压限值次数
+ */
+ @TableField(value = "inuharm_2_overtime")
+ private Integer inuharm2Overtime;
+
+ /**
+ * 2.5次间谐波电压限值次数
+ */
+ @TableField(value = "inuharm_3_overtime")
+ private Integer inuharm3Overtime;
+
+ /**
+ * 3.5次间谐波电压限值次数
+ */
+ @TableField(value = "inuharm_4_overtime")
+ private Integer inuharm4Overtime;
+
+ /**
+ * 4.5次间谐波电压限值次数
+ */
+ @TableField(value = "inuharm_5_overtime")
+ private Integer inuharm5Overtime;
+
+ /**
+ * 5.5次间谐波电压限值次数
+ */
+ @TableField(value = "inuharm_6_overtime")
+ private Integer inuharm6Overtime;
+
+ /**
+ * 6.5次间谐波电压限值次数
+ */
+ @TableField(value = "inuharm_7_overtime")
+ private Integer inuharm7Overtime;
+
+ /**
+ * 7.5次间谐波电压限值次数
+ */
+ @TableField(value = "inuharm_8_overtime")
+ private Integer inuharm8Overtime;
+
+ /**
+ * 8.5次间谐波电压限值次数
+ */
+ @TableField(value = "inuharm_9_overtime")
+ private Integer inuharm9Overtime;
+
+ /**
+ * 9.5次间谐波电压限值次数
+ */
+ @TableField(value = "inuharm_10_overtime")
+ private Integer inuharm10Overtime;
+
+ /**
+ * 10.5次间谐波电压限值次数
+ */
+ @TableField(value = "inuharm_11_overtime")
+ private Integer inuharm11Overtime;
+
+ /**
+ * 11.5次间谐波电压限值次数
+ */
+ @TableField(value = "inuharm_12_overtime")
+ private Integer inuharm12Overtime;
+
+ /**
+ * 12.5次间谐波电压限值次数
+ */
+ @TableField(value = "inuharm_13_overtime")
+ private Integer inuharm13Overtime;
+
+ /**
+ * 13.5次间谐波电压限值次数
+ */
+ @TableField(value = "inuharm_14_overtime")
+ private Integer inuharm14Overtime;
+
+ /**
+ * 14.5次间谐波电压限值次数
+ */
+ @TableField(value = "inuharm_15_overtime")
+ private Integer inuharm15Overtime;
+
+ /**
+ * 15.5次间谐波电压限值次数
+ */
+ @TableField(value = "inuharm_16_overtime")
+ private Integer inuharm16Overtime;
+}
diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/report/ReportValue.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/report/ReportValue.java
new file mode 100644
index 0000000..be4debd
--- /dev/null
+++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/report/ReportValue.java
@@ -0,0 +1,75 @@
+package com.njcn.csharmonic.pojo.vo.report;
+
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @author wr
+ * @description
+ * @date 2023/4/10 15:36
+ */
+@NoArgsConstructor
+public class ReportValue implements Serializable {
+
+ private String phaseType; //A(AB)相,B(BC)相,C(CA)相,T总功
+ private Float fmaxValue; //最大值
+ private Float minValue; //最小值
+ private Float meanValue; //平均值
+ private Float cp95Value; //CP95值
+
+ public String getPhaseType() {
+ return phaseType;
+ }
+
+ public Float getFmaxValue() {
+ return fmaxValue;
+ }
+
+ public Float getMinValue() {
+ return minValue;
+ }
+
+ public Float getMeanValue() {
+ return meanValue;
+ }
+
+ public Float getCp95Value() {
+ return cp95Value;
+ }
+
+ public void setPhaseType(String phaseType) {
+ this.phaseType = phaseType;
+ }
+
+ public void setFmaxValue(Float fmaxValue) {
+ this.fmaxValue = transData(fmaxValue);
+ }
+
+ public void setMinValue(Float minValue) {
+ this.minValue = transData(minValue);
+ }
+
+ public void setMeanValue(Float meanValue) {
+ this.meanValue = transData(meanValue);
+ }
+
+ public void setCp95Value(Float cp95Value) {
+ this.cp95Value = transData(cp95Value);
+ }
+
+ public ReportValue(String phaseType, Float maxValue, Float minValue, Float meanValue, Float cp95Value) {
+ this.phaseType = phaseType;
+ this.fmaxValue = transData(maxValue);
+ this.minValue = transData(minValue);
+ this.meanValue = transData(meanValue);
+ this.cp95Value = transData(cp95Value);
+ }
+ private Float transData(Float f) {
+ if (f == null) {
+ return f;
+ }
+ float f1 = (float) (Math.round(f.floatValue() * 100)) / 100;
+ return new Float(f1);
+ }
+}
diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/utils/report/ClearPathUtil.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/utils/report/ClearPathUtil.java
new file mode 100644
index 0000000..5e06bb0
--- /dev/null
+++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/utils/report/ClearPathUtil.java
@@ -0,0 +1,142 @@
+package com.njcn.csharmonic.utils.report;
+
+/**
+ * @author hongawen
+ * @date: 2020/8/20 13:36
+ */
+public class ClearPathUtil {
+
+ /**
+ * 针对漏洞,新增的特殊字符替换的扫描方法
+ */
+ public static String cleanString(String str) {
+ if (str == null) {
+ return null;
+ }
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < str.length(); ++i) {
+ sb.append(cleanChar(str.charAt(i)));
+ }
+ return sb.toString();
+ }
+
+ private static char cleanChar(char ch) {
+
+ // 0 - 9
+ for (int i = 48; i < 58; ++i) {
+ if (ch == i) {
+ return (char) i;
+ }
+ }
+
+ // 'A' - 'Z'
+ for (int i = 65; i < 91; ++i) {
+ if (ch == i) {
+ return (char) i;
+ }
+ }
+
+ // 'a' - 'z'
+ for (int i = 97; i < 123; ++i) {
+ if (ch == i) {
+ return (char) i;
+ }
+ }
+
+ // other valid characters
+ switch (ch) {
+ case '/':
+ return '/';
+ case '.':
+ return '.';
+ case '-':
+ return '-';
+ case '_':
+ return '_';
+ case ',':
+ return ',';
+ case ' ':
+ return ' ';
+ case '!':
+ return '!';
+ case '@':
+ return '@';
+ case '#':
+ return '#';
+ case '$':
+ return '$';
+ case '%':
+ return '%';
+ case '^':
+ return '^';
+ case '&':
+ return '&';
+ case '*':
+ return '*';
+ case '(':
+ return '(';
+ case ')':
+ return ')';
+ case '+':
+ return '+';
+ case '=':
+ return '=';
+ case ':':
+ return ':';
+ case ';':
+ return ';';
+ case '?':
+ return '?';
+ case '"':
+ return '"';
+ case '<':
+ return '<';
+ case '>':
+ return '>';
+ case '`':
+ return '`';
+ case '\\':
+ return '/';
+ case 'I':
+ return 'I';
+ case 'Ⅱ':
+ return 'Ⅱ';
+ case 'Ⅲ':
+ return 'Ⅲ';
+ case 'Ⅳ':
+ return 'Ⅳ';
+ case 'Ⅴ':
+ return 'Ⅴ';
+ case 'Ⅵ':
+ return 'Ⅵ';
+ case 'Ⅶ':
+ return 'Ⅶ';
+ case 'Ⅷ':
+ return 'Ⅷ';
+ case 'Ⅸ':
+ return 'Ⅸ';
+
+ case 'V':
+ return 'V';
+ case 'X':
+ return 'X';
+ case 'Ⅹ':
+ return 'Ⅹ';
+ default:
+ if (isChineseChar(ch)) {
+ return ch;
+ }
+ return '%';
+ }
+ }
+
+ // 根据Unicode编码判断中文汉字和符号
+ private static boolean isChineseChar(char c) {
+ Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
+ return ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
+ || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B
+ || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS
+ || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION;
+ }
+
+}
diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/utils/report/CustomXWPFDocument.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/utils/report/CustomXWPFDocument.java
new file mode 100644
index 0000000..aee0232
--- /dev/null
+++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/utils/report/CustomXWPFDocument.java
@@ -0,0 +1,83 @@
+package com.njcn.csharmonic.utils.report;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.openxml4j.opc.OPCPackage;
+import org.apache.poi.xwpf.usermodel.XWPFDocument;
+import org.apache.poi.xwpf.usermodel.XWPFParagraph;
+import org.apache.xmlbeans.XmlException;
+import org.apache.xmlbeans.XmlToken;
+import org.openxmlformats.schemas.drawingml.x2006.main.CTNonVisualDrawingProps;
+import org.openxmlformats.schemas.drawingml.x2006.main.CTPositiveSize2D;
+import org.openxmlformats.schemas.drawingml.x2006.wordprocessingDrawing.CTInline;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+@Slf4j
+public class CustomXWPFDocument extends XWPFDocument {
+ // 日志记录
+ public CustomXWPFDocument(InputStream in) throws IOException {
+ super(in);
+ }
+
+ public CustomXWPFDocument() {
+ super();
+ }
+
+ public CustomXWPFDocument(OPCPackage pkg) throws IOException {
+ super(pkg);
+ }
+
+ /**
+ * @param id
+ * @param width
+ * 宽
+ * @param height
+ * 高
+ * @param paragraph
+ * 段落
+ */
+ public void createPicture(int id, int width, int height,String blipId, XWPFParagraph paragraph) {
+ final int EMU = 9525;
+ width *= EMU;
+ height *= EMU;
+// String blipId = getAllPictures().get(id).getPackageRelationship().getId();
+ CTInline inline = paragraph.createRun().getCTR().addNewDrawing().addNewInline();
+ String picXml = "" + ""
+ + " "
+ + " "
+ + " " + " "
+ + " " + " " + " "
+ + " "
+ + " " + " " + " "
+ + " " + " " + " "
+ + " " + " " + " " + " "
+ + " " + " " + " "
+ + " " + " " + "";
+
+ inline.addNewGraphic().addNewGraphicData();
+ XmlToken xmlToken = null;
+ try {
+ xmlToken = XmlToken.Factory.parse(picXml);
+ } catch (XmlException xe) {
+ log.error("生成报表发生异常,异常是"+xe.getMessage());
+ }
+ inline.set(xmlToken);
+
+ inline.setDistT(0);
+ inline.setDistB(0);
+ inline.setDistL(0);
+ inline.setDistR(0);
+
+ CTPositiveSize2D extent = inline.addNewExtent();
+ extent.setCx(width);
+ extent.setCy(height);
+
+ CTNonVisualDrawingProps docPr = inline.addNewDocPr();
+ docPr.setId(id);
+ docPr.setName("图片" + id);
+ docPr.setDescr("测试");
+ }
+}
diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/utils/report/FloatUtils.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/utils/report/FloatUtils.java
new file mode 100644
index 0000000..0e9a3b7
--- /dev/null
+++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/utils/report/FloatUtils.java
@@ -0,0 +1,28 @@
+package com.njcn.csharmonic.utils.report;
+
+import java.math.BigDecimal;
+
+/**
+ * @author hongawen(创建) -----denghuajun(移植使用)
+ * @Date: 2018/8/27 11:29
+ */
+public class FloatUtils {
+
+
+ /**
+ * 保留传入进来的float的两位小数,四舍五入的方式
+ *
+ * @param data Float参数
+ */
+ public static float get2Float(Float data) {
+ if (data == null || data.isNaN() || data.isInfinite()) {
+ return 0f;
+ }
+ int scale = 2;//设置位数
+ int roundingMode = 4;//表示四舍五入,可以选择其他舍值方式,例如去尾,等等.
+ BigDecimal bd = new BigDecimal(data);
+ bd = bd.setScale(scale, roundingMode);
+ data = bd.floatValue();
+ return data;
+ }
+}
diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/utils/report/PubUtils.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/utils/report/PubUtils.java
new file mode 100644
index 0000000..393dd75
--- /dev/null
+++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/utils/report/PubUtils.java
@@ -0,0 +1,224 @@
+package com.njcn.csharmonic.utils.report;
+
+import cn.hutool.core.util.ObjectUtil;
+import lombok.SneakyThrows;
+import lombok.extern.slf4j.Slf4j;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * @author wr
+ * @description
+ * @date 2023/4/10 17:39
+ */
+@Slf4j
+public class PubUtils {
+ public static boolean createFile(String destFileName) {
+ File file = new File(destFileName);
+ if (file.exists()) {
+ log.warn("创建单个文件" + destFileName + "失败,目标文件已存在!");
+ return false;
+ }
+ if (destFileName.endsWith(File.separator)) {
+ log.warn("创建单个文件" + destFileName + "失败,目标文件不能为目录!");
+ return false;
+ }
+ //判断目标文件所在的目录是否存在
+ if (!file.getParentFile().exists()) {
+ //如果目标文件所在的目录不存在,则创建父目录
+ log.warn("目标文件所在目录不存在,准备创建它!");
+ if (!file.getParentFile().mkdirs()) {
+ log.warn("创建目标文件所在目录失败!");
+ return false;
+ }
+ }
+ //创建目标文件
+ try {
+ if (file.createNewFile()) {
+ log.warn("创建单个文件" + destFileName + "成功!");
+ return true;
+ } else {
+ log.warn("创建单个文件" + destFileName + "失败!");
+ return false;
+ }
+ } catch (IOException e) {
+ log.warn("创建单个文件" + destFileName + "失败!" + e.getMessage());
+ return false;
+ }
+ }
+
+ /**
+ * 读取配置文件
+ *
+ * @param cl 类名字
+ * @param strPropertiesName 配置文件名称
+ */
+ public static Properties readProperties(ClassLoader cl, String strPropertiesName) {
+ Properties pros = new Properties();
+ InputStream in = null;
+ try {
+ in = cl.getResourceAsStream(strPropertiesName);
+ pros.load(in);
+ } catch (Exception e) {
+ log.error("读取配置文件失败失败:" + e.getMessage());
+ } finally {
+ if (in != null) {
+ PubUtils.safeClose(in, "安全关闭读取配置文件失败,异常为:");
+ }
+ }
+ return pros;
+ }
+
+ /**
+ * 安全关闭InputStream
+ *
+ * @param s
+ */
+ public static void safeClose(InputStream s, String strError) {
+ if (s != null) {
+ try {
+ s.close();
+ } catch (IOException e) {
+ log.error(strError + e.toString());
+ }
+ }
+ }
+
+ public static Double dataLimits(Double data) {
+ if (ObjectUtil.isNotNull(data)) {
+ return data > 100 ? 100 : data;
+ }
+ return data;
+ }
+
+ @SneakyThrows
+ public static List getIntervalTime(String startTime, String endTime) {
+ List times = new ArrayList<>();
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
+ Date start = sdf.parse(startTime);
+ Date end = sdf.parse(endTime);
+ // 同月
+ if (start.getTime() == end.getTime()) {
+ String time = startTime.substring(0, 7);
+ times.add(time);
+ } else if (start.getYear() == end.getYear()) {
+ // 同年
+ int startM = start.getMonth() + 1;
+ int endM = end.getMonth() + 1;
+ int temp = endM - startM;
+ for (int i = 0; i <= temp; i++) {
+ String time = start.getYear() + 1900 + "";
+ int month = startM + i;
+ if (month < 10) {
+ time = time + "-0" + month;
+ } else {
+ time = time + "-" + month;
+ }
+ times.add(time);
+ }
+ } else {
+ // 不同年!!!!这里忽略了年份之间跨年的情况
+ int startY = start.getYear() + 1900;
+ int startM = start.getMonth() + 1;
+ int endY = end.getYear() + 1900;
+ int endM = end.getMonth() + 1;
+ int tempS = 12 - startM;
+ // 连续的年份
+ if (endY - startY == 1) {
+ // 第一年的时间获取
+ for (int i = 0; i <= tempS; i++) {
+ int month = startM + i;
+ String time = startY + "-";
+ if (month < 10) {
+ time = time + "0" + month;
+ } else {
+ time = time + month;
+ }
+ times.add(time);
+ }
+ // 第二年的时间获取
+
+ for (int i = 1; i <= endM; i++) {
+ String time = endY + "-";
+ if (i < 10) {
+ time = time + "0" + i;
+ } else {
+ time = time + i;
+ }
+ times.add(time);
+ }
+ } else {
+ // 不连续的年份
+ // 第一年的时间获取
+ for (int i = 0; i <= tempS; i++) {
+ int month = startM + i;
+ String time = startY + "-";
+ if (month < 10) {
+ time = time + "0" + month;
+ } else {
+ time = time + month;
+ }
+ times.add(time);
+ }
+ int tempY = endY - startY;
+ // 中间年份的时间
+ for (int i = 1; i < tempY; i++) {
+ for (int j = 1; j <= 12; j++) {
+ String time = startY + i + "-";
+ if (j < 10) {
+ time = time + "0" + j;
+ } else {
+ time = time + j;
+ }
+ times.add(time);
+ }
+ }
+ // 最后一年的时间获取
+ for (int i = 1; i <= endM; i++) {
+ String time = endY + "-";
+ if (i < 10) {
+ time = time + "0" + i;
+ } else {
+ time = time + i;
+ }
+ times.add(time);
+ }
+ }
+
+ }
+ return times;
+ }
+
+ @SneakyThrows
+ public static List getIntervalDateTime(Integer startTime, int beginDay, Integer endTime, Integer dd) {
+ List list = new ArrayList<>();
+ Calendar calendar = Calendar.getInstance(Locale.CHINA);
+ calendar.set(startTime, endTime - 1, 1);
+ //年份
+ int year = calendar.get(Calendar.YEAR);
+ //月份
+ int month = calendar.get(Calendar.MONTH) + 1;
+ for (int i = beginDay; i <= dd; i++) {
+ String date = null;
+ if (month < 10 && i < 10) {
+ date = year + "-0" + month + "-0" + i;
+ }
+ if (month < 10 && i >= 10) {
+ date = year + "-0" + month + "-" + i;
+ }
+ if (month >= 10 && i < 10) {
+ date = year + "-" + month + "-0" + i;
+ }
+ if (month >= 10 && i >= 10) {
+ date = year + "-" + month + "-" + i;
+ }
+
+ list.add(date);
+ }
+ return list;
+ }
+}
diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/utils/report/PublicDataUtils.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/utils/report/PublicDataUtils.java
new file mode 100644
index 0000000..cd01e41
--- /dev/null
+++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/utils/report/PublicDataUtils.java
@@ -0,0 +1,30 @@
+package com.njcn.csharmonic.utils.report;
+
+/**
+ * 数据公共工具类
+ *
+ * @author qijian
+ * @version 1.0.0
+ * @createTime 2022/10/14 - 10:07
+ */
+public class PublicDataUtils {
+ /**
+ * 功能:下划线命名转驼峰命名
+ * 将下划线替换为空格,将字符串根据空格分割成数组,再将每个单词首字母大写
+ * @param s
+ * @return
+ */
+ public static String underCamel(String s)
+ {
+ String separator = "_";
+ String under="";
+ s = s.toLowerCase().replace(separator, " ");
+ String sarr[]=s.split(" ");
+ for(int i=0;i params, String fileName,List> tableList, HttpServletResponse response)
+ throws Exception {
+ path = ClearPathUtil.cleanString(path);
+ InputStream inStream = null;
+ CustomXWPFDocument doc = null;
+ //读取报告模板
+ try {
+ inStream = new ClassPathResource(path).getInputStream();;
+ doc = new CustomXWPFDocument(inStream);
+ if(CollUtil.isNotEmpty(tableList)){
+ this.replaceInTable(doc, params,tableList);
+ }else{
+ this.replaceInTable(doc, params);
+ }
+ // 替换表格里面的变量
+ this.replaceInPara(doc, params); // 替换文本里面的变量
+ } catch (IOException e) {
+ getError("获取报告模板异常,原因为:" + e);
+ } finally {
+ if (null != inStream) {
+ inStream.close();
+ }
+ }
+ try {
+ ServletOutputStream outputStream = response.getOutputStream();
+ response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
+ response.setContentType("application/octet-stream;charset=UTF-8");
+ doc.write(outputStream);
+ outputStream.close();
+ } catch (Exception e) {
+ getError("输出稳态报告异常,原因为:" + e);
+ } finally {
+ if (doc != null) {
+ doc.close();
+ }
+ }
+ }
+
+ public InputStream getReportFile(String path, Map params, List> tableList)
+ throws Exception {
+ path = ClearPathUtil.cleanString(path);
+ InputStream inStream = null,in = null;
+ CustomXWPFDocument doc = null;
+ //读取报告模板
+ try {
+ inStream = new ClassPathResource(path).getInputStream();
+ doc = new CustomXWPFDocument(inStream);
+ this.replaceInTable(doc,params,tableList);
+ this.replaceInPara(doc, params);
+ } catch (IOException e) {
+ getError("获取报告模板异常,原因为:" + e);
+ } finally {
+ if (null != inStream) {
+ inStream.close();
+ }
+ }
+ try {
+ //临时缓冲区
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ doc.write(out);
+ byte[] docByteAry = out.toByteArray();
+ in = new ByteArrayInputStream(docByteAry);
+ out.close();
+ } catch (Exception e) {
+ getError("输出稳态报告异常,原因为:" + e);
+ } finally {
+ if (doc != null) {
+ doc.close();
+ }
+ }
+ return in;
+ }
+
+
+
+ public String getReportFileUrl(String path,String fileName,List> tableList, Map params)
+ throws Exception {
+ path = ClearPathUtil.cleanString(path);
+ InputStream inStream = null,in = null;
+ CustomXWPFDocument doc = null;
+ //读取报告模板
+ try {
+ inStream = new ClassPathResource(path).getInputStream();;
+ doc = new CustomXWPFDocument(inStream);
+ if(CollUtil.isNotEmpty(tableList)){
+ this.replaceInTable(doc, params,tableList);
+ }else{
+ this.replaceInTable(doc, params);
+ }
+ this.replaceInPara(doc, params); // 替换文本里面的变量
+ //临时缓冲区
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ doc.write(out);
+ byte[] docByteAry = out.toByteArray();
+ in = new ByteArrayInputStream(docByteAry);
+ out.close();
+ } catch (IOException e) {
+ getError("获取报告模板异常,原因为:" + e);
+ } finally {
+ if (null != inStream) {
+ inStream.close();
+ }
+ if (doc != null) {
+ doc.close();
+ }
+ }
+ //上传文件服务器
+ return fileStorageUtil.uploadStreamSpecifyName(in, OssPath.ONLINE_REPORT, fileName);
+ }
+
+
+ private static void getError(String e) {
+ log.error(e);
+ }
+ /**
+ * 替换段落里面的变量
+ *
+ * @param doc 要替换的文档
+ * @param params 参数
+ */
+ private void replaceInPara(CustomXWPFDocument doc, Map params) {
+ Iterator iterator = doc.getParagraphsIterator();
+ List paragraphList = new ArrayList<>();
+ XWPFParagraph para;
+ while (iterator.hasNext()) {
+ para = iterator.next();
+ paragraphList.add(para);
+ }
+ processParagraphs(paragraphList, params, doc);
+ }
+
+ private void replaceInTable(CustomXWPFDocument doc, Map params) {
+ Iterator it = doc.getTablesIterator();
+ while (it.hasNext()) {
+ XWPFTable table = it.next();
+ List rows = table.getRows();
+ for (XWPFTableRow row : rows) {
+ List cells = row.getTableCells();
+ for (XWPFTableCell cell : cells) {
+ List paragraphListTable = cell.getParagraphs();
+ processParagraphs(paragraphListTable, params, doc);
+ }
+ }
+ }
+ }
+
+ public static void processParagraphs(List paragraphList, Map param,
+ CustomXWPFDocument doc) {
+ if (paragraphList != null && paragraphList.size() > 0) {
+ for (XWPFParagraph paragraph : paragraphList) {
+ List runs = paragraph.getRuns();
+ if (runs.size() > 0) {
+ for (XWPFRun run : runs) {
+ String bflag = "";
+ String text = run.getText(0);
+ if (text != null) {
+ boolean isSetText = false;
+ for (Entry entry : param.entrySet()) {
+ String key = entry.getKey();
+ if (text.indexOf(key) != -1) {
+ isSetText = true;
+ Object value = entry.getValue();
+ if (value instanceof String) {// 文本替换
+ text = text.replace(key, value.toString());
+ } else if (value instanceof Map) {// 图片替换
+ text = text.replace(key, "");
+ Map pic = (Map) value;
+ int width = Integer.parseInt(pic.get("width").toString());
+ int height = Integer.parseInt(pic.get("height").toString());
+ int picType = getPictureType(pic.get("type").toString());
+ byte[] byteArray = (byte[]) pic.get("content");
+ ByteArrayInputStream byteInputStream = new ByteArrayInputStream(byteArray);
+ try {
+ String s = doc.addPictureData(byteInputStream, picType);
+
+ doc.createPicture(doc.getAllPictures().size() - 1, width, height,
+ s,paragraph);
+ bflag = "break";
+ } catch (Exception e) {
+ getError("文本替换发生异常,异常是" + e.getMessage());
+ }
+ }
+ }
+ }
+ if (isSetText) {
+ run.setText(text, 0);
+ }
+ }
+ if (bflag == "break") {
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * 替换段落里面的变量
+ *
+ * @param para 要替换的段落
+ * @param params 参数
+ */
+ private void replaceInPara(XWPFParagraph para, Map params, CustomXWPFDocument doc) {
+ List runs;
+ Matcher matcher;
+ // if (this.matcher(para.getParagraphText()).find()) {
+ runs = para.getRuns();
+ int start = -1;
+ int end = -1;
+ String str = "";
+ for (int i = 0; i < runs.size(); i++) {
+ XWPFRun run = runs.get(i);
+ String runText = run.toString();
+ if ('$' == runText.charAt(0) && '{' == runText.charAt(1)) {
+ start = i;
+ }
+ if ((start != -1)) {
+ str += runText;
+ }
+ if ('}' == runText.charAt(runText.length() - 1)) {
+ if (start != -1) {
+ end = i;
+ break;
+ }
+ }
+ }
+
+ for (int i = start; i <= end; i++) {
+ para.removeRun(i);
+ i--;
+ end--;
+ }
+
+ for (Entry entry : params.entrySet()) {
+ String key = entry.getKey();
+ if (str.indexOf(key) != -1) {
+ Object value = entry.getValue();
+ if (value instanceof String) {
+ str = str.replace(key, value.toString());
+ para.createRun().setText(str, 0);
+ break;
+ } else if (value instanceof Map) {
+ str = str.replace(key, "");
+ Map pic = (Map) value;
+ int width = Integer.parseInt(pic.get("width").toString());
+ int height = Integer.parseInt(pic.get("height").toString());
+ int picType = getPictureType(pic.get("type").toString());
+ byte[] byteArray = (byte[]) pic.get("content");
+ ByteArrayInputStream byteInputStream = new ByteArrayInputStream(byteArray);
+ try {
+ // int ind = doc.addPicture(byteInputStream,picType);
+ // doc.createPicture(ind, width , height,para);
+ String s = doc.addPictureData(byteInputStream, picType);
+ doc.createPicture(doc.getAllPictures().size() - 1, width, height,s, para);
+ para.createRun().setText(str, 0);
+ break;
+ } catch (Exception e) {
+ getError("文件替换发生异常,异常是" + e.getMessage());
+ }
+ }
+ }
+ }
+ // }
+ }
+
+ /**
+ * 为表格插入数据,行数不够添加新行
+ *
+ * @param table 需要插入数据的表格
+ * @param tableList 插入数据集合
+ */
+ private static void insertTable(XWPFTable table, List tableList) {
+ //删除占位符行数
+ table.removeRow(1);
+ if (CollUtil.isNotEmpty(tableList)) {
+ // 创建行,根据需要插入的数据添加新行,不处理表头
+ for (int i = 0; i < tableList.size(); i++) {
+ XWPFTableRow row = table.createRow();
+ List cells = row.getTableCells();
+ for (int j = 0; j < cells.size(); j++) {
+ String s = tableList.get(i)[j];
+ XWPFTableCell cell = cells.get(j);
+ cell.removeParagraph(0);
+ XWPFParagraph paragraph = cell.addParagraph();
+ paragraph.setAlignment(ParagraphAlignment.CENTER);
+ // 在段落中添加文本
+ XWPFRun run = paragraph.createRun();
+ run.setText(s);
+ }
+ }
+ }
+ }
+
+ /**
+ * 替换表格里面的变量
+ *
+ * @param doc 要替换的文档
+ * @param tableList 存放数据顺序要与表格一致
+ * @param params 参数
+ */
+ private void replaceInTable(CustomXWPFDocument doc, Map params, List> tableList) {
+ Iterator iterator = doc.getTablesIterator();
+ XWPFTable table;
+ List rows;
+ List cells;
+ List paras;
+ Integer num=0;
+ while (iterator.hasNext()) {
+ table = iterator.next();
+ if (table.getRows().size() > 1) {
+ // 判断表格是需要替换还是需要插入,判断逻辑有$为替换,表格无$为插入
+ if (this.matcher(table.getText()).find()||this.matcherS(table.getText()).find()) {
+ rows = table.getRows();
+ for (XWPFTableRow row : rows) {
+ cells = row.getTableCells();
+ for (XWPFTableCell cell : cells) {
+ List paragraphListTable = cell.getParagraphs();
+ processParagraphs(paragraphListTable, params, doc);
+ }
+ }
+ }else {
+ if (CollUtil.isNotEmpty(tableList.get(num))){
+ insertTable(table, tableList.get(num)); // 插入数据
+ }
+ num++;
+ }
+ }
+ }
+ }
+
+ /**
+ * 正则匹配字符串
+ *
+ * @param str
+ * @return
+ */
+ private Matcher matcher(String str) {
+ Pattern pattern = Pattern.compile("\\$\\{(.+?)\\}", Pattern.CASE_INSENSITIVE);
+ Matcher matcher = pattern.matcher(str);
+ return matcher;
+ }
+ private Matcher matcherS(String str) {
+ Pattern pattern = Pattern.compile("\\$(.*?)\\$");
+ Matcher matcher = pattern.matcher(str);
+ return matcher;
+ }
+
+ /**
+ * 根据图片类型,取得对应的图片类型代码
+ *
+ * @param picType
+ * @return int
+ */
+ private static int getPictureType(String picType) {
+ int res = CustomXWPFDocument.PICTURE_TYPE_PICT;
+ if (picType != null) {
+ if (picType.equalsIgnoreCase("image/png")) {
+ res = CustomXWPFDocument.PICTURE_TYPE_PNG;
+ } else if (picType.equalsIgnoreCase("image/dib")) {
+ res = CustomXWPFDocument.PICTURE_TYPE_DIB;
+ } else if (picType.equalsIgnoreCase("image/emf")) {
+ res = CustomXWPFDocument.PICTURE_TYPE_EMF;
+ } else if (picType.equalsIgnoreCase("image/jpg") || picType.equalsIgnoreCase("image/jpeg")) {
+ res = CustomXWPFDocument.PICTURE_TYPE_JPEG;
+ } else if (picType.equalsIgnoreCase("image/wmf")) {
+ res = CustomXWPFDocument.PICTURE_TYPE_WMF;
+ }
+ }
+ return res;
+ }
+
+}
diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/WordExportModelController.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/WordExportModelController.java
index 648a9e7..fe3e9b5 100644
--- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/WordExportModelController.java
+++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/WordExportModelController.java
@@ -6,6 +6,7 @@ import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.util.ObjectUtil;
+
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.pojo.response.HttpResult;
@@ -13,19 +14,16 @@ import com.njcn.common.utils.HttpResultUtil;
import com.njcn.common.utils.PubUtils;
import com.njcn.csdevice.api.CsLineFeignClient;
import com.njcn.csdevice.pojo.vo.LineDetailDataVO;
+import com.njcn.csharmonic.pojo.dto.report.EnumPass;
+import com.njcn.csharmonic.pojo.dto.report.OverLimitInfo;
+import com.njcn.csharmonic.pojo.dto.report.Pass;
+import com.njcn.csharmonic.pojo.dto.report.ReportTarget;
+import com.njcn.csharmonic.pojo.param.report.ReportQueryParam;
+import com.njcn.csharmonic.pojo.vo.report.ReportValue;
import com.njcn.csharmonic.service.ReportService;
+import com.njcn.csharmonic.utils.report.WordUtil2;
import com.njcn.device.biz.pojo.po.Overlimit;
import com.njcn.device.biz.pojo.po.PqsDeviceUnit;
-import com.njcn.device.pms.api.MonitorClient;
-import com.njcn.device.pms.pojo.po.Monitor;
-import com.njcn.device.pq.api.DeviceUnitClient;
-import com.njcn.harmonic.pojo.param.ReportQueryParam;
-import com.njcn.harmonic.pojo.po.report.EnumPass;
-import com.njcn.harmonic.pojo.po.report.OverLimitInfo;
-import com.njcn.harmonic.pojo.po.report.Pass;
-import com.njcn.harmonic.pojo.po.report.ReportTarget;
-import com.njcn.harmonic.pojo.vo.ReportValue;
-import com.njcn.harmonic.utils.WordUtil2;
import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.api.ThemeFeignClient;
import com.njcn.system.enums.DicDataEnum;
@@ -83,11 +81,11 @@ public class WordExportModelController extends BaseController {
private final CsLineFeignClient csLineFeignClient;
- private final MonitorClient monitorClient;
+ //private final MonitorClient monitorClient;
private final DicDataFeignClient dicDataFeignClient;
private final ThemeFeignClient themeFeignClient;
private final ReportService reportService;
- private final DeviceUnitClient deviceUnitClient;
+ //private final DeviceUnitClient deviceUnitClient;
private final WordUtil2 wordUtil2;
/**
@@ -118,9 +116,9 @@ public class WordExportModelController extends BaseController {
@RequestPart(value ="file",required = false) MultipartFile file) throws IOException {
String methodDescribe = getMethodDescribe("exportWorld");
//获取监测点信息
- String bdname;
- Integer pttype;
- String areaName;
+ String bdname = "";
+ Integer pttype = 0;
+ String areaName = "";
String atype = "";
String btype = "";
String ctype = "";
@@ -137,7 +135,7 @@ public class WordExportModelController extends BaseController {
}
pttype = PubUtils.ptTypeName(lineDto.getPtType());
} else {
- List monitorList = monitorClient.getMonitorList(Collections.singletonList(lineIndex)).getData();
+ /* List monitorList = monitorClient.getMonitorList(Collections.singletonList(lineIndex)).getData();
if (ObjectUtil.isNull(monitorList)) {
throw new BusinessException(CommonResponseEnum.NO_DATA);
}
@@ -157,7 +155,7 @@ public class WordExportModelController extends BaseController {
//设备容量
lineDto.setDevCapacity(monitor.getPowerSupplyEqCapacity());
//电压等级
- lineDto.setScale(dicDataFeignClient.getDicDataById(monitor.getVoltageLevel()).getData().getName());
+ lineDto.setScale(dicDataFeignClient.getDicDataById(monitor.getVoltageLevel()).getData().getName());*/
}
if (pttype == 0) {
@@ -198,7 +196,8 @@ public class WordExportModelController extends BaseController {
if (type == 0) {
overLimit = csLineFeignClient.getOverLimitData(Stream.of(param.getLineId()).collect(Collectors.toList())).getData().get(0);
} else {
- overLimit = monitorClient.getOverLimitData(param.getLineId()).getData();
+ overLimit = csLineFeignClient.getOverLimitData(Stream.of(param.getLineId()).collect(Collectors.toList())).getData().get(0);
+
}
param.setCount(overLimitData.getCount());
overLimitData.setOverLimitRate(Arrays.asList(overLimit));
diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/mapper/mapping/ReportMapper.xml b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/mapper/mapping/ReportMapper.xml
index 02a8d9c..e89c59d 100644
--- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/mapper/mapping/ReportMapper.xml
+++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/mapper/mapping/ReportMapper.xml
@@ -1,7 +1,7 @@
-