From 4ee100a72b222575f5d5ffd2a21eb2124132cb40 Mon Sep 17 00:00:00 2001 From: cdf <857448963@qq.com> Date: Tue, 9 Dec 2025 08:57:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9A=82=E9=99=8D=E7=9B=91=E6=B5=8B=E7=82=B9?= =?UTF-8?q?=E6=8A=A5=E5=91=8A=E6=8E=A5=E5=8F=A3=E8=BF=81=E7=A7=BB=EF=BC=88?= =?UTF-8?q?=E5=90=8E=E7=BB=AD=E9=9C=80=E8=A6=81=E5=90=88=E5=B9=B6=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cs-harmonic/cs-harmonic-api/pom.xml | 5 + .../pojo/dto/eventReport/EventDetail.java | 112 ++ .../pojo/param/eventReport/ExportParam.java | 75 + .../param/eventReport/StatisticsParam.java | 36 + .../pojo/po/day/RStatLimitRateDPO.java | 614 -------- .../pojo/po/day/RStatLimitRateDetailDPO.java | 592 -------- .../pojo/vo/eventReport/DISDIPVO.java | 48 + .../pojo/vo/eventReport/IEC28VO.java | 47 + .../pojo/vo/eventReport/IEC411VO.java | 42 + .../pojo/vo/eventReport/ProbabilityVO.java | 33 + .../pojo/vo/eventReport/ReasonsVO.java | 31 + .../pojo/vo/eventReport/StatisticVO.java | 43 + .../pojo/vo/eventReport/TimeVO.java | 41 + .../pojo/vo/eventReport/TypesVO.java | 27 + .../utils/eventReport/WordUtils.java | 350 +++++ .../csharmonic/utils/report/WordUtil2.java | 46 +- .../EventMonitorReportController.java | 47 + .../controller/WordExportModelController.java | 2 +- .../event/EventMonitorReportService.java | 21 + .../service/event/EventReportService.java | 80 ++ .../event/EventMonitorReportServiceImpl.java | 592 ++++++++ .../impl/event/EventReportServiceImpl.java | 1257 +++++++++++++++++ 22 files changed, 2921 insertions(+), 1220 deletions(-) create mode 100644 cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/dto/eventReport/EventDetail.java create mode 100644 cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/param/eventReport/ExportParam.java create mode 100644 cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/param/eventReport/StatisticsParam.java delete mode 100644 cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatLimitRateDPO.java delete mode 100644 cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatLimitRateDetailDPO.java create mode 100644 cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/eventReport/DISDIPVO.java create mode 100644 cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/eventReport/IEC28VO.java create mode 100644 cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/eventReport/IEC411VO.java create mode 100644 cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/eventReport/ProbabilityVO.java create mode 100644 cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/eventReport/ReasonsVO.java create mode 100644 cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/eventReport/StatisticVO.java create mode 100644 cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/eventReport/TimeVO.java create mode 100644 cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/eventReport/TypesVO.java create mode 100644 cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/utils/eventReport/WordUtils.java create mode 100644 cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/EventMonitorReportController.java create mode 100644 cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/event/EventMonitorReportService.java create mode 100644 cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/event/EventReportService.java create mode 100644 cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/event/EventMonitorReportServiceImpl.java create mode 100644 cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/event/EventReportServiceImpl.java diff --git a/cs-harmonic/cs-harmonic-api/pom.xml b/cs-harmonic/cs-harmonic-api/pom.xml index 2473bef..e201c4e 100644 --- a/cs-harmonic/cs-harmonic-api/pom.xml +++ b/cs-harmonic/cs-harmonic-api/pom.xml @@ -57,6 +57,11 @@ 1.0.0 compile + + com.njcn + common-poi + ${project.version} + UTF-8 diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/dto/eventReport/EventDetail.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/dto/eventReport/EventDetail.java new file mode 100644 index 0000000..f836e4d --- /dev/null +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/dto/eventReport/EventDetail.java @@ -0,0 +1,112 @@ +package com.njcn.csharmonic.pojo.dto.eventReport; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.influxdb.annotation.Column; +import org.influxdb.annotation.Measurement; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * @author denghuajun + * @version 1.0.0 + * @date 2022年04月07日 08:59 + */ + +@Data +@Measurement(name = "pqs_eventdetail") +//@TableName("r_mp_event_detail") +public class EventDetail { + + @ApiModelProperty(name = "eventId",value ="暂态事件id") + private String eventId; + + @Column(name = "line_id") + private String lineId; + + @Column(name = "time") + @ApiModelProperty(value = "开始时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS",timezone = "GMT+8") + private LocalDateTime startTime; + + @Column(name = "event_describe") + @ApiModelProperty(value = "事件描述") + private String eventDescribe; + + @Column(name = "wave_type") + @ApiModelProperty(value = "统计类型") + private String eventType; + + @Column(name = "persist_time") + @ApiModelProperty(value = "持续时间,单位秒") + private Double duration; + + @Column(name = "event_value") + @ApiModelProperty(value = "特征幅值") + private Double featureAmplitude; + + @Column(name = "event_reason") + @ApiModelProperty(value = "暂降原因(Event_Reason)") + private String advanceReason; + + @Column(name = "event_type") + @ApiModelProperty(value = "暂降类型(Event_Type)") + private String advanceType; + + @Column(name = "eventass_index") + private String eventassIndex; + + @Column(name = "dq_time") + private Integer dqTime; + + @Column(name = "deal_time") + private String dealTime; + + @Column(name = "deal_flag") + private Integer dealFlag; + + @Column(name = "num") + private Integer num; + + @Column(name = "file_flag") + private Integer fileFlag; + + @Column(name = "first_time") + private String firstTime; + + @Column(name = "first_type") + private String firstType; + + @Column(name = "first_ms") + private Integer firstMs; + + @Column(name = "wave_name") + @ApiModelProperty(value = "波形路径") + private String wavePath; + + @Column(name = "energy") + private Double energy; + + @Column(name = "severity") + private Double severity; + + @Column(name = "sagsource") + private String sagSource; + + @Column(name = "create_time") + private String createTime; + + private String lineName; + + private BigDecimal lat; + + private BigDecimal lng; + + private String gdName; + + private String subName; + + +} diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/param/eventReport/ExportParam.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/param/eventReport/ExportParam.java new file mode 100644 index 0000000..ef025f7 --- /dev/null +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/param/eventReport/ExportParam.java @@ -0,0 +1,75 @@ +package com.njcn.csharmonic.pojo.param.eventReport; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author xxy + * @version 1.0.0 + * @date 2022年08月16日 19:37 + */ +@Data +public class ExportParam implements Serializable { + + @ApiModelProperty(name = "lineId",value = "监测点ID") + private String lineId; + + @ApiModelProperty(name = "searchBeginTime",value = "开始时间") + private String searchBeginTime; + + @ApiModelProperty(name = "searchEndTime",value = "结束时间") + private String searchEndTime; + + @ApiModelProperty(name = "lineName",value = "监测点名称") + private String lineName; + + @ApiModelProperty(name = "xq",value = "监测点详情",example = "true") + private boolean xq; + + @ApiModelProperty(name = "lb",value = "暂降事件列表",example = "true") + private boolean lb; + + @ApiModelProperty(name = "mdbg",value = "暂降密度表格",example = "false") + private boolean mdbg; + + @ApiModelProperty(name = "mdtx",value = "暂降密度图形",example = "false") + private boolean mdtx; + + @ApiModelProperty(name = "sjdITIC",value = "暂降时间点ITIC",example = "false") + private boolean sjdITIC; + + @ApiModelProperty(name = "sjdF47",value = "暂降时间点F47",example = "false") + private boolean sjdF47; + + @ApiModelProperty(name = "glfbfz",value = "概率分布暂降赋值",example = "false") + private boolean glfbfz; + + @ApiModelProperty(name = "glfbsj",value = "概率分布持续时间",example = "false") + private boolean glfbsj; + + @ApiModelProperty(name = "tjbg",value = "月份统计表格",example = "false") + private boolean tjbg; + + @ApiModelProperty(name = "tjtx",value = "月份统计图形",example = "false") + private boolean tjtx; + + @ApiModelProperty(name = "yybg",value = "暂降原因表格",example = "false") + private boolean yybg; + + @ApiModelProperty(name = "yytx",value = "暂降原因图形",example = "false") + private boolean yytx; + + @ApiModelProperty(name = "lxbg",value = "暂降类型表格",example = "false") + private boolean lxbg; + + @ApiModelProperty(name = "lxtx",value = "暂降类型图形",example = "false") + private boolean lxtx; + + @ApiModelProperty(name = "flag",value = "标识") + private Integer flag; + + @ApiModelProperty(name = "type",value = "系统区分(0:pq 1:pms)") + private Integer type; +} diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/param/eventReport/StatisticsParam.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/param/eventReport/StatisticsParam.java new file mode 100644 index 0000000..4a62cbe --- /dev/null +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/param/eventReport/StatisticsParam.java @@ -0,0 +1,36 @@ +package com.njcn.csharmonic.pojo.param.eventReport; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @author xxy + * @version 1.0.0 + * @date 2022年08月01日 15:35 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class StatisticsParam implements Serializable { + + @NotBlank(message = "没有监测点ID") + @ApiModelProperty(name = "lineIndex",value = "监测点ID") + private String lineIndex; + + @NotBlank(message = "没有开始时间") + @ApiModelProperty(name = "startTime",value = "开始时间") + private String startTime; + + @NotBlank(message = "没有结束时间") + @ApiModelProperty(name = "endTime",value = "结束时间") + private String endTime; + + @ApiModelProperty(name = "flag",value = "标识") + private Integer flag; + +} 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 deleted file mode 100644 index af5a516..0000000 --- a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatLimitRateDPO.java +++ /dev/null @@ -1,614 +0,0 @@ -//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 deleted file mode 100644 index 322bb3c..0000000 --- a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/po/day/RStatLimitRateDetailDPO.java +++ /dev/null @@ -1,592 +0,0 @@ -//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/vo/eventReport/DISDIPVO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/eventReport/DISDIPVO.java new file mode 100644 index 0000000..7891222 --- /dev/null +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/eventReport/DISDIPVO.java @@ -0,0 +1,48 @@ +package com.njcn.csharmonic.pojo.vo.eventReport; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * DISDIP表格 + * @author xxy + * @version 1.0.0 + * @date 2022年08月01日 15:46 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class DISDIPVO implements Serializable { + + @ApiModelProperty(name = "name",value = "剩余电压/持续时间") + private String name; + + @ApiModelProperty(name = "twentyMs",value = "20ms") + private String twentyMs; + + @ApiModelProperty(name = "oneHundredMs",value = "100ms") + private String oneHundredMs; + + @ApiModelProperty(name = "fiveHundredMs",value = "500ms") + private String fiveHundredMs; + + @ApiModelProperty(name = "oneS",value = "1s") + private String oneS; + + @ApiModelProperty(name = "threeS",value = "3s") + private String threeS; + + @ApiModelProperty(name = "twentyS",value = "20s") + private String twentyS; + + @ApiModelProperty(name = "sixtyS",value = "60s") + private String sixtyS; + + @ApiModelProperty(name = "oneEightyS",value = "180s") + private String oneEightyS; + +} diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/eventReport/IEC28VO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/eventReport/IEC28VO.java new file mode 100644 index 0000000..293cb20 --- /dev/null +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/eventReport/IEC28VO.java @@ -0,0 +1,47 @@ +package com.njcn.csharmonic.pojo.vo.eventReport; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * @author xxy + * @version 1.0.0 + * @date 2022年08月01日 16:09 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class IEC28VO implements Serializable { + + @ApiModelProperty(name = "name",value = "剩余电压/持续时间") + private String name; + + @ApiModelProperty(name = "q",value = "0.01~0.1s") + private String q; + + @ApiModelProperty(name = "w",value = "0.1~0.25s") + private String w; + + @ApiModelProperty(name = "e",value = "0.25~0.5s") + private String e; + + @ApiModelProperty(name = "r",value = "0.5~1s") + private String r; + + @ApiModelProperty(name = "t",value = "1~3s") + private String t; + + @ApiModelProperty(name = "y",value = "3~20s") + private String y; + + @ApiModelProperty(name = "u",value = "20~60s") + private String u; + + @ApiModelProperty(name = "i",value = "60~180s") + private String i; + +} diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/eventReport/IEC411VO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/eventReport/IEC411VO.java new file mode 100644 index 0000000..29dd920 --- /dev/null +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/eventReport/IEC411VO.java @@ -0,0 +1,42 @@ +package com.njcn.csharmonic.pojo.vo.eventReport; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * IEC411 + * @author xxy + * @version 1.0.0 + * @date 2022年08月01日 16:00 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class IEC411VO implements Serializable { + + @ApiModelProperty(name = "name",value = "剩余电压/持续时间") + private String name; + + @ApiModelProperty(name = "tenTwentyMs",value = "10~20ms") + private String tenTwentyMs; + + @ApiModelProperty(name = "twentyOneHundredMs",value = "20~100ms") + private String twentyOneHundredMs; + + @ApiModelProperty(name = "zeroPiontOneTwoS",value = "0.1~0.2s") + private String zeroPiontOneTwoS; + + @ApiModelProperty(name = "zeroPiontTwoFiveS",value = "0.2~0.5s") + private String zeroPiontTwoFiveS; + + @ApiModelProperty(name = "zeroPiontFive1S",value = "0.5~1s") + private String zeroPiontFive1S; + + @ApiModelProperty(name = "greater1S",value = ">1s") + private String greater1S; + +} diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/eventReport/ProbabilityVO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/eventReport/ProbabilityVO.java new file mode 100644 index 0000000..17d2451 --- /dev/null +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/eventReport/ProbabilityVO.java @@ -0,0 +1,33 @@ +package com.njcn.csharmonic.pojo.vo.eventReport; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + * @author xxy + * @version 1.0.0 + * @date 2022年08月03日 15:31 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ProbabilityVO implements Serializable { + + @ApiModelProperty(name = "eventvalue") + private List eventvalue; + + @ApiModelProperty(name = "pereventvalue") + private List pereventvalue; + + @ApiModelProperty(name = "persisttime") + private List persisttime; + + @ApiModelProperty(name = "sisttime") + private List sisttime; + +} diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/eventReport/ReasonsVO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/eventReport/ReasonsVO.java new file mode 100644 index 0000000..2fc97d6 --- /dev/null +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/eventReport/ReasonsVO.java @@ -0,0 +1,31 @@ +package com.njcn.csharmonic.pojo.vo.eventReport; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * @author xxy + * @version 1.0.0 + * @date 2022年08月03日 09:03 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ReasonsVO implements Serializable { + + @ApiModelProperty(name = "reason",value = "原因") + private String reason; + + @ApiModelProperty(name = "times",value = "次数") + private Integer times; + + @ApiModelProperty(name = "rate",value = "占比") + private String rate; + + + +} diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/eventReport/StatisticVO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/eventReport/StatisticVO.java new file mode 100644 index 0000000..2634809 --- /dev/null +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/eventReport/StatisticVO.java @@ -0,0 +1,43 @@ +package com.njcn.csharmonic.pojo.vo.eventReport; + +import com.njcn.csharmonic.pojo.dto.eventReport.EventDetail; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + * @author xxy + * @version 1.0.0 + * @date 2022年08月02日 16:01 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class StatisticVO implements Serializable { + + @ApiModelProperty(name = "cityName",value = "城市名称") + private String cityName; + + @ApiModelProperty(name = "detail") + private List detail; + + @ApiModelProperty(name = "f47") + private String f47; + + @ApiModelProperty(name = "itic") + private String itic; + + @ApiModelProperty(name = "reason") + private List reason; + + @ApiModelProperty(name = "totalTimes") + private Integer totalTimes; + + @ApiModelProperty(name = "types") + private List types; + +} diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/eventReport/TimeVO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/eventReport/TimeVO.java new file mode 100644 index 0000000..79943a6 --- /dev/null +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/eventReport/TimeVO.java @@ -0,0 +1,41 @@ +package com.njcn.csharmonic.pojo.vo.eventReport; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * @author xxy + * @version 1.0.0 + * @date 2022年08月02日 10:45 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class TimeVO implements Serializable { + + @ApiModelProperty(name = "amounts") + private String amounts; + + @ApiModelProperty(name = "handledTimes") + private String handledTimes; + + @ApiModelProperty(name = "days",value = "天数") + private String day; + + @ApiModelProperty(name = "month",value = "月份") + private String month; + + @ApiModelProperty(name = "times") + private String times; + + @ApiModelProperty(name = "year",value = "年份") + private String year; + + @ApiModelProperty(name = "fulltime",value = "时间全称") + private String fulltime; + +} diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/eventReport/TypesVO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/eventReport/TypesVO.java new file mode 100644 index 0000000..5d6c784 --- /dev/null +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/eventReport/TypesVO.java @@ -0,0 +1,27 @@ +package com.njcn.csharmonic.pojo.vo.eventReport; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * @author xxy + * @version 1.0.0 + * @date 2022年08月03日 09:07 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class TypesVO implements Serializable { + + @ApiModelProperty(name = "type",value = "类型") + private String type; + + @ApiModelProperty(name = "times",value = "次数") + private Integer times; + + +} diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/utils/eventReport/WordUtils.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/utils/eventReport/WordUtils.java new file mode 100644 index 0000000..fdac13a --- /dev/null +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/utils/eventReport/WordUtils.java @@ -0,0 +1,350 @@ +package com.njcn.csharmonic.utils.eventReport; + +import org.apache.poi.xwpf.model.XWPFHeaderFooterPolicy; +import org.apache.poi.xwpf.usermodel.*; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.*; + +import java.io.File; +import java.io.FileOutputStream; +import java.math.BigInteger; +import java.util.Calendar; + +public class WordUtils { + + + public static void main(String[] args)throws Exception { + + // 空白文档 + XWPFDocument document= new XWPFDocument(); + //把文档写进本地系统 + FileOutputStream out = new FileOutputStream(new File("create_table.docx")); + //设定标题格式 + setHeadingStyle(document); + //添加标题 + XWPFParagraph titleParagraph = document.createParagraph(); + setParagraphStyle(titleParagraph); + addLine(titleParagraph,11); + //设置段落居中 + titleParagraph.setAlignment(ParagraphAlignment.CENTER); + XWPFRun titleParagraphRun = titleParagraph.createRun(); + addParagraph(titleParagraphRun,"宋体",15,"000000","四川省供电公司",true); + + addLine(titleParagraph,3); + XWPFRun titleParagraphBigRun = titleParagraph.createRun(); + addParagraph(titleParagraphBigRun,"宋体",36,"000000","电压暂降事件分析报告",true); + addLine(titleParagraph,19); + + XWPFRun titleParagraphDateRun = titleParagraph.createRun(); + addParagraph(titleParagraphDateRun,"宋体",14,"000000","日期: 2018年1月3号",true); + titleParagraph.setPageBreak(true); + + + //段落 + XWPFParagraph statisticsParagraph = document.createParagraph(); + setParagraphStyle(statisticsParagraph); + //段前分页 + statisticsParagraph.setPageBreak(true); + statisticsParagraph.setAlignment(ParagraphAlignment.CENTER); + XWPFRun statisticsRun = statisticsParagraph.createRun(); + addParagraph(statisticsRun,"宋体",24,"000000","电压暂降事件分析报告",false); + + + + XWPFParagraph introductionParagraph= document.createParagraph(); + setParagraphStyle(introductionParagraph); + introductionParagraph.setStyle("标题 1"); + introductionParagraph.setAlignment(ParagraphAlignment.LEFT); + XWPFRun introductionRun = introductionParagraph.createRun(); + addParagraph(introductionRun,"宋体",15,"000000","1. 引言",true); + + XWPFParagraph introductionContentParagraph = document.createParagraph(); + // 首行缩进---段落 + setParagraphStyle(introductionContentParagraph); + introductionContentParagraph.setAlignment(ParagraphAlignment.LEFT); + introductionContentParagraph.setIndentationFirstLine(200); + XWPFRun introductionContentRun=introductionContentParagraph.createRun(); + addParagraph(introductionContentRun,"宋体",11,"000000","对所选中区间内电压暂降事件进行分析,能够直观清晰查看相应的暂降事件信息。",false); + + XWPFParagraph objectParagraph=document.createParagraph(); + setParagraphStyle(objectParagraph); + objectParagraph.setStyle("标题 1"); + objectParagraph.setAlignment(ParagraphAlignment.LEFT); + XWPFRun objectRun= objectParagraph.createRun(); + addParagraph(objectRun,"宋体",15,"000000","2. 报告分析对象:",true); + + XWPFParagraph objectContentParagraph = document.createParagraph(); + setParagraphStyle(objectContentParagraph); + objectContentParagraph.setAlignment(ParagraphAlignment.LEFT); + objectContentParagraph.setIndentationFirstLine(200); + XWPFRun objectContentRun = objectContentParagraph.createRun(); + addParagraph(objectContentRun,"宋体",11,"000000","成都供电公司—>锦江区变电站—>锦江2号。",false); + + XWPFParagraph timeParagraph = document.createParagraph(); + timeParagraph.setStyle("标题 1"); + timeParagraph.setAlignment(ParagraphAlignment.LEFT); + setParagraphStyle(timeParagraph); + XWPFRun timeRun = timeParagraph.createRun(); + addParagraph(timeRun,"宋体",15,"000000","3. 报告分析时间:",true); + + XWPFParagraph timeContentParagraph = document.createParagraph(); + setParagraphStyle(timeContentParagraph); + timeContentParagraph.setAlignment(ParagraphAlignment.LEFT); + timeContentParagraph.setIndentationFirstLine(200); + XWPFRun timeContentRun = timeContentParagraph.createRun(); + addParagraph(timeContentRun,"宋体",11,"000000","2017年12月21日至2017年12月30日。",false); + + + XWPFParagraph summaeParagraph = document.createParagraph(); + setParagraphStyle(summaeParagraph); + summaeParagraph.setStyle("标题 1"); + summaeParagraph.setAlignment(ParagraphAlignment.LEFT); + XWPFRun summaeRun = summaeParagraph.createRun(); + addParagraph(summaeRun,"宋体",15,"000000","4. 汇总信息:",true); + + + XWPFParagraph summaeTableParagraph = document.createParagraph(); + setParagraphStyle(summaeTableParagraph); + summaeTableParagraph.setStyle("标题 2"); + summaeTableParagraph.setAlignment(ParagraphAlignment.LEFT); + summaeTableParagraph.setIndentationFirstLine(200); + XWPFRun summaeTableRun = summaeTableParagraph.createRun(); + addParagraph(summaeTableRun,"宋体",11,"000000","4.1 表格",false); + + + //工作经历表格 + XWPFTable summaTable = document.createTable(); + + //列宽自动分割 + CTTblWidth summaTableWidth = summaTable.getCTTbl().addNewTblPr().addNewTblW(); + summaTableWidth.setType(STTblWidth.DXA); + summaTableWidth.setW(BigInteger.valueOf(9072)); + + //表格第一行 + XWPFTableRow summaTableRowOne = summaTable.getRow(0); + XWPFParagraph excelParagraph= document.createParagraph(); + setParagraphStyle(excelParagraph); + excelParagraph.setAlignment(ParagraphAlignment.CENTER); + excelParagraph.setVerticalAlignment(TextAlignment.CENTER); + setExcelHeadContent(excelParagraph,summaTableRowOne,"序号","暂降发生时刻","暂降幅值(%)","持续时间(ms)","暂降类型","暂降原因","严重度"); + + //表格第二行 + XWPFTableRow summaTableRowTwo = summaTable.createRow(); + setExcelContent(excelParagraph,summaTableRowTwo,"1","2017-11-24 14:26:56.490","9","20","未识别","未明","0.91"); + + //表格第三行 + XWPFTableRow summaTableRowThree = summaTable.createRow(); + setExcelContent(excelParagraph,summaTableRowThree,"2","2017-11-24 14:25:46.472","15","19","未识别","未明","0.85"); + + XWPFParagraph summaePicParagraph = document.createParagraph(); + summaePicParagraph.setStyle("标题 2"); + summaePicParagraph.setAlignment(ParagraphAlignment.LEFT); + summaePicParagraph.setIndentationFirstLine(200); + XWPFRun summaePicRun = summaePicParagraph.createRun(); + addParagraph(summaePicRun,"宋体",11,"000000","4.2 ITIC曲线",false); + + + CTSectPr sectPr = document.getDocument().getBody().addNewSectPr(); + XWPFHeaderFooterPolicy policy = new XWPFHeaderFooterPolicy(document, sectPr); + + //添加页眉 + CTP ctpHeader = CTP.Factory.newInstance(); + CTR ctrHeader = ctpHeader.addNewR(); + CTText ctHeader = ctrHeader.addNewT(); + String headerText = "Java POI create MS word file."; + ctHeader.setStringValue(headerText); + XWPFParagraph headerParagraph = new XWPFParagraph(ctpHeader, document); + //设置为右对齐 + headerParagraph.setAlignment(ParagraphAlignment.RIGHT); + XWPFParagraph[] parsHeader = new XWPFParagraph[1]; + parsHeader[0] = headerParagraph; + policy.createHeader(XWPFHeaderFooterPolicy.DEFAULT, parsHeader); + + + //添加页脚 + CTP ctpFooter = CTP.Factory.newInstance(); + CTR ctrFooter = ctpFooter.addNewR(); + CTText ctFooter = ctrFooter.addNewT(); + String footerText = "http://blog.csdn.net/zhouseawater"; + ctFooter.setStringValue(footerText); + XWPFParagraph footerParagraph = new XWPFParagraph(ctpFooter, document); + headerParagraph.setAlignment(ParagraphAlignment.CENTER); + XWPFParagraph[] parsFooter = new XWPFParagraph[1]; + parsFooter[0] = footerParagraph; + policy.createFooter(XWPFHeaderFooterPolicy.DEFAULT, parsFooter); + + document.write(out); + out.close(); + + } + + public static void setParagraphStyle(XWPFParagraph paragraph){ + paragraph.setSpacingBefore(100); + paragraph.setSpacingAfter(100); + } + + /** + * 返回指定格式的段落 居中型 + * @param document 文档对象 + */ + public static XWPFParagraph getCenterParagraph(XWPFDocument document){ + XWPFParagraph paragraph = document.createParagraph(); + setParagraphStyle(paragraph); + paragraph.setAlignment(ParagraphAlignment.CENTER); + paragraph.setVerticalAlignment(TextAlignment.CENTER); + return paragraph; + } + + /** + * 返回指定格式的段落 居左型 + * @param document 文档对象 + */ + public static XWPFParagraph getLeftParagraph(XWPFDocument document){ + XWPFParagraph paragraph = document.createParagraph(); + setParagraphStyle(paragraph); + paragraph.setAlignment(ParagraphAlignment.LEFT); + return paragraph; + } + + + + /** + * 添加换行符 + * @param paragraph 指定段落 + * @param amount 行数 + * */ + public static void addLine(XWPFParagraph paragraph,Integer amount){ + XWPFRun run = paragraph.createRun(); + run.setFontSize(11); + for(int i=0;i style is more prominent in the formats bar + ctStyle.setUiPriority(indentNumber); + + CTOnOff onoffnull = CTOnOff.Factory.newInstance(); + ctStyle.setUnhideWhenUsed(onoffnull); + + // style shows up in the formats bar + ctStyle.setQFormat(onoffnull); + + // style defines a heading of the given level + CTPPr ppr = CTPPr.Factory.newInstance(); + ppr.setOutlineLvl(indentNumber); + ctStyle.setPPr(ppr); + + XWPFStyle style = new XWPFStyle(ctStyle); + + // is a null op if already defined + XWPFStyles styles = docxDocument.createStyles(); + + style.setType(STStyleType.PARAGRAPH); + styles.addStyle(style); + + } + + /** + * 设置文档中标题格式 + * */ + public static void setHeadingStyle(XWPFDocument document){ + addCustomHeadingStyle(document, "标题 1", 1); + addCustomHeadingStyle(document, "标题 2", 2); + addCustomHeadingStyle(document, "标题 3", 3); + addCustomHeadingStyle(document, "标题 4", 4); + addCustomHeadingStyle(document, "标题 5", 5); + addCustomHeadingStyle(document, "标题 6", 6); + addCustomHeadingStyle(document, "标题 7", 7); + } + + /** + * 给表格添加一行数据 + * @param paragraph 段落对象 + * @param row 行对象 + * @param data 不定长度的数据 + */ + public static void setExcelContent(XWPFParagraph paragraph, XWPFTableRow row,String... data){ + for (int i=0;i params, String fileName,List> tableList, HttpServletResponse response) throws Exception { + byte[] docBytes = null; + path = ClearPathUtil.cleanString(path); - InputStream inStream = null; + InputStream is = null; CustomXWPFDocument doc = null; //读取报告模板 try { - inStream = new ClassPathResource(path).getInputStream();; - doc = new CustomXWPFDocument(inStream); + Resource resource = resourceLoader.getResource("classpath:" + path); + if (!resource.exists()) { + throw new FileNotFoundException("模板文件未找到: " + path); + } + is = resource.getInputStream(); + doc = new CustomXWPFDocument(is); if(CollUtil.isNotEmpty(tableList)){ this.replaceInTable(doc, params,tableList); }else{ @@ -51,8 +56,8 @@ public class WordUtil2 { } catch (IOException e) { getError("获取报告模板异常,原因为:" + e); } finally { - if (null != inStream) { - inStream.close(); + if (null != is) { + is.close(); } } try { @@ -70,6 +75,21 @@ public class WordUtil2 { } } + + + + // 辅助方法:字节数组转十六进制(便于打印排查) + private static String bytesToHex(byte[] bytes) { + StringBuilder sb = new StringBuilder(); + for (byte b : bytes) { + sb.append(String.format("%02X ", b)); + } + return sb.toString().trim(); + } + + + + public InputStream getReportFile(String path, Map params, List> tableList) throws Exception { path = ClearPathUtil.cleanString(path); diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/EventMonitorReportController.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/EventMonitorReportController.java new file mode 100644 index 0000000..3c2ea6e --- /dev/null +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/EventMonitorReportController.java @@ -0,0 +1,47 @@ +package com.njcn.csharmonic.controller; + +import cn.hutool.extra.template.TemplateException; +import com.njcn.common.pojo.annotation.OperateInfo; +import com.njcn.common.pojo.enums.common.LogEnum; +import com.njcn.csharmonic.pojo.param.eventReport.ExportParam; +import com.njcn.csharmonic.service.event.EventMonitorReportService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.openxml4j.exceptions.InvalidFormatException; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.text.ParseException; + +/** + * govern + * + * @author cdf + * @date 2025/12/6 + */ +@Slf4j +@Api(tags = "暂态报告") +@RestController +@RequestMapping("/eventReport") +@RequiredArgsConstructor +public class EventMonitorReportController { + + private final EventMonitorReportService eventMonitorReportService; + + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getLineExport") + @ApiOperation("监测点报告导出") + @ApiImplicitParam(name = "exportParam", value = "监测点报告导出参数", required = true) + public void getLineExport(@RequestBody @Validated ExportParam exportParam, HttpServletResponse response) throws IOException, InvalidFormatException, TemplateException, ParseException { + eventMonitorReportService.getLineExport(exportParam, response); + } +} 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 fe3e9b5..19ffe88 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 @@ -1341,7 +1341,7 @@ public class WordExportModelController extends BaseController { } wordUtil2.getWord(rtfPath, reportmap, fileName,null, response); } catch (Exception e) { - log.error("获取报告发生异常,异常是" + e.getMessage()); + log.error("获取报告发生异常,异常是:",e); } return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, reportFileUrl, methodDescribe); } diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/event/EventMonitorReportService.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/event/EventMonitorReportService.java new file mode 100644 index 0000000..792f6d1 --- /dev/null +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/event/EventMonitorReportService.java @@ -0,0 +1,21 @@ +package com.njcn.csharmonic.service.event; + +import cn.hutool.extra.template.TemplateException; +import com.njcn.csharmonic.pojo.param.eventReport.ExportParam; +import org.apache.poi.openxml4j.exceptions.InvalidFormatException; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.text.ParseException; + +/** + * govern + * + * @author cdf + * @date 2025/12/6 + */ +public interface EventMonitorReportService { + + void getLineExport(ExportParam exportParam, HttpServletResponse response) throws InvalidFormatException, IOException, TemplateException, ParseException; + +} diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/event/EventReportService.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/event/EventReportService.java new file mode 100644 index 0000000..a6dd87c --- /dev/null +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/event/EventReportService.java @@ -0,0 +1,80 @@ +package com.njcn.csharmonic.service.event; + +import com.njcn.csharmonic.pojo.dto.eventReport.EventDetail; +import com.njcn.csharmonic.pojo.param.eventReport.StatisticsParam; +import com.njcn.csharmonic.pojo.vo.eventReport.*; + +import com.njcn.system.pojo.po.DictData; + +import java.text.ParseException; +import java.util.List; + +/** + * <监测点报表> + * + * @author wr + * @createTime: 2023-02-10 + */ +public interface EventReportService { + + /** + *获取Disdip表格(监测点报表专用) + * @param info influxdb查询结果(pqs_eventdetail表) + * @return + */ + List eventDisdip(List info); + + /** + * 获取IEC411数据 + * @param info influxdb查询结果(pqs_eventdetail表) + * @return + */ + List IEC411(List info); + + /** + * 获取IEC28数据 + * @param info influxdb查询结果(pqs_eventdetail表) + * @return + */ + List IEC28(List info); + + /** + *暂降幅值概率分布 + * @param info2 influxdb查询结果(pqs_eventdetail表) + * @return + */ + ProbabilityVO getProbabilityDistribution(List info2); + + + /** + * 获取点状表格数据2.1 + * @param info 结果集 + * @param reasonData 暂降原因 + * @param typeData 暂降类型 + * @return + */ + List getPlot(List info, List reasonData, List typeData); + + /** + * 获取详细数据对象 + * @param info + * @param reasonData + * @param typeData + * @return + */ + StatisticVO getStatistic(List info,List reasonData,ListtypeData); + + /** + * 获取密度点图 + * @param info + * @return + */ + Integer[][] getCoords(List info); + + /** + * 获取时间列表 + * @param statisticsParam + * @return + */ + List getReasonTypeTime(StatisticsParam statisticsParam) throws ParseException; +} diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/event/EventMonitorReportServiceImpl.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/event/EventMonitorReportServiceImpl.java new file mode 100644 index 0000000..ed477fb --- /dev/null +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/event/EventMonitorReportServiceImpl.java @@ -0,0 +1,592 @@ +package com.njcn.csharmonic.service.impl.event; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.extra.template.TemplateException; +import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.csdevice.api.CsLineFeignClient; +import com.njcn.csdevice.pojo.vo.LineDetailDataVO; +import com.njcn.csharmonic.pojo.dto.eventReport.EventDetail; +import com.njcn.csharmonic.pojo.param.eventReport.ExportParam; +import com.njcn.csharmonic.pojo.param.eventReport.StatisticsParam; +import com.njcn.csharmonic.pojo.vo.eventReport.*; +import com.njcn.csharmonic.service.event.EventMonitorReportService; +import com.njcn.csharmonic.service.event.EventReportService; +import com.njcn.csharmonic.utils.eventReport.WordUtils; +import com.njcn.echarts.pojo.constant.PicCommonData; +import com.njcn.echarts.util.DrawPicUtil; +import com.njcn.system.api.DicDataFeignClient; +import com.njcn.system.enums.DicDataEnum; +import com.njcn.system.enums.DicDataTypeEnum; +import com.njcn.system.enums.EventResponseEnum; +import com.njcn.system.pojo.po.DictData; +import lombok.RequiredArgsConstructor; +import org.apache.poi.hssf.usermodel.HSSFCell; +import org.apache.poi.hssf.usermodel.HSSFCellStyle; +import org.apache.poi.openxml4j.exceptions.InvalidFormatException; +import org.apache.poi.util.Units; +import org.apache.poi.xwpf.usermodel.*; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblWidth; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTblWidth; +import org.springframework.stereotype.Service; + +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.math.RoundingMode; +import java.net.URLEncoder; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.stream.Collectors; + + +/** + * govern + * + * @author cdf + * @date 2025/12/6 + */ +@Service +@RequiredArgsConstructor +public class EventMonitorReportServiceImpl implements EventMonitorReportService { + + private final DicDataFeignClient dicDataFeignClient; + + private final DrawPicUtil drawPicUtil; + + private final EventReportService eventReportService; + + private final CsLineFeignClient csLineFeignClient; + + + /** + * 监测点导出word + * + * @param exportParam . + * @param response . + * @throws InvalidFormatException . + * @throws IOException . + */ + @Override + public void getLineExport(ExportParam exportParam, HttpServletResponse response) throws IOException, InvalidFormatException, TemplateException, ParseException { + //创建word文档(poi生成word) + XWPFDocument doc = new XWPFDocument(); //创建Word文件 + //设置标题样式 + WordUtils.setHeadingStyle(doc); + XWPFParagraph p = doc.createParagraph(); //新建一个段落 + //设置对齐 + p.setAlignment(ParagraphAlignment.CENTER); + p.setVerticalAlignment(TextAlignment.CENTER); + XWPFRun r = p.createRun();//创建段落文本 + r.addBreak(); + r.addBreak(); + r.addBreak(); + r.addBreak(); + r.addBreak(); + r.addBreak(); + r.setText("中国"); + r.setBold(true);//设置为粗体 + r.setFontSize(14);//字体大小 + r.addBreak(); + + p = doc.createParagraph(); //新建一个段落 + p.setAlignment(ParagraphAlignment.CENTER); + XWPFRun r1 = p.createRun();//创建段落文本 + r1.setText("电压暂降事件分析报告"); + r1.setBold(true);//设置为粗体 + r1.setFontSize(36);//字体大小 + r1.addBreak(); + r1.addBreak(); + r1.addBreak(); + r1.addBreak(); + r1.addBreak(); + r1.addBreak(); + r1.addBreak(); + + p = doc.createParagraph(); //新建一个段落 + p.setAlignment(ParagraphAlignment.CENTER); + XWPFRun r2 = p.createRun();//创建段落文本 + //获取当前时间 + Date date = new Date(); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy 年 MM 月 dd 日"); + String time = dateFormat.format(date); + + r2.setText("日期: " + time); + r2.setBold(true);//设置为粗体 + r2.setFontSize(14);//字体大小 + + r2.addBreak(); + r2.addBreak(); + r2.addBreak(); + + p = doc.createParagraph(); //新建一个段落 + p.setAlignment(ParagraphAlignment.CENTER); + XWPFRun r3 = p.createRun();//创建段落文本 + r3.setText("电压暂降事件区域报告"); + r3.setFontSize(24);//字体大小 + + p = doc.createParagraph(); //新建一个段落 + p.setAlignment(ParagraphAlignment.LEFT); + createTitle(doc, "1. 引言", "标题 1", 0, 15); + + p = doc.createParagraph(); //新建一个段落 + p.setAlignment(ParagraphAlignment.BOTH); + XWPFRun r5 = p.createRun();//创建段落文本 + r5.setText("对所选中区间内电压暂降事件进行分析,能够直观清晰查看响应的暂降事件信息。"); + r5.setFontSize(11);//字体大小 + + p = doc.createParagraph(); //新建一个段落 + p.setAlignment(ParagraphAlignment.LEFT); + createTitle(doc, "2. 报告分析对象", "标题 1", 0, 15); + + p = doc.createParagraph(); //新建一个段落 + p.setAlignment(ParagraphAlignment.BOTH); + XWPFRun r7 = p.createRun();//创建段落文本 + r7.setText(exportParam.getLineName()); + r7.setFontSize(11);//字体大小 + + p = doc.createParagraph(); //新建一个段落 + p.setAlignment(ParagraphAlignment.LEFT); + createTitle(doc, "3. 报告分析时间", "标题 1", 0, 15); + + p = doc.createParagraph(); //新建一个段落 + p.setAlignment(ParagraphAlignment.BOTH); + XWPFRun r9 = p.createRun();//创建段落文本 + r9.setText(exportParam.getSearchBeginTime() + " 至 " + exportParam.getSearchEndTime()); + r9.setFontSize(11);//字体大小 + + p = doc.createParagraph(); //新建一个段落 + p.setAlignment(ParagraphAlignment.LEFT); + createTitle(doc, "4. 总汇信息", "标题 1", 0, 15); + + //查询参数 + StatisticsParam param = new StatisticsParam(exportParam.getLineId(), exportParam.getSearchBeginTime(), exportParam.getSearchEndTime(), exportParam.getFlag()); + //获取暂降原因字典 + List reasonData = dicDataFeignClient.getDicDataByTypeName(DicDataTypeEnum.EVENT_REASON.getName()).getData(); + //获取暂降类型字典 + List typeData = dicDataFeignClient.getDicDataByTypeName(DicDataTypeEnum.EVENT_TYPE.getName()).getData(); + //influxdb查询结果(pqs_eventdetail表) + List info = info(param); + + //记录数 + int i = 1; + //1.监测点信息 + if (exportParam.isXq()) { + createTitle(doc, "4." + i + " 监测点信息", "标题 2", 200, 15); + XWPFTable table = createTable(doc); + XWPFParagraph centerParagraph = WordUtils.getCenterParagraph(doc); + if (exportParam.getType() == 0) { + HttpResult lineDetailData = csLineFeignClient.getLineDetailData(exportParam.getLineId()); + if (ObjectUtil.isNull(lineDetailData)) { + throw new BusinessException(CommonResponseEnum.NO_DATA); + } + insertRow(doc, table, centerParagraph, true, "项目", "描述"); + insertRow(doc, table, centerParagraph, false, "监测点名称", lineDetailData.getData().getLineName()); + insertRow(doc, table, centerParagraph, false, "电压等级", lineDetailData.getData().getScale()); + insertRow(doc, table, centerParagraph, false, "PT变比", lineDetailData.getData().getPt()); + insertRow(doc, table, centerParagraph, false, "CT变比", lineDetailData.getData().getCt()); + insertRow(doc, table, centerParagraph, false, "协议容量", lineDetailData.getData().getDealCapacity() + ""); + insertRow(doc, table, centerParagraph, false, "基准容量", lineDetailData.getData().getStandardCapacity() + ""); + insertRow(doc, table, centerParagraph, false, "设备容量", lineDetailData.getData().getDevCapacity() + ""); + insertRow(doc, table, centerParagraph, false, "最小短路容量", lineDetailData.getData().getShortCapacity() + ""); + insertRow(doc, table, centerParagraph, false, "接线方式", lineDetailData.getData().getPtType()); + } else { + /* HttpResult> monitorList = monitorClient.getMonitorList(Arrays.asList(exportParam.getLineId())); + if (ObjectUtil.isNull(monitorList)) { + throw new BusinessException(EventResponseEnum.NOT_FOUND); + } + insertRow(doc, table, centerParagraph, true, "项目", "描述"); + insertRow(doc, table, centerParagraph, false, "监测点名称", monitorList.getData().get(0).getName()); + insertRow(doc, table, centerParagraph, false, "电压等级", dicDataFeignClient.getDicDataById(monitorList.getData().get(0).getVoltageLevel()).getData().getName()); + insertRow(doc, table, centerParagraph, false, "PT变比", monitorList.getData().get(0).getPt1() + "/" + monitorList.getData().get(0).getPt2()); + insertRow(doc, table, centerParagraph, false, "CT变比", monitorList.getData().get(0).getCt1() + "/" + monitorList.getData().get(0).getCt2()); + insertRow(doc, table, centerParagraph, false, "协议容量", monitorList.getData().get(0).getUserAgreementCapacity() + ""); +// insertRow(doc, table, centerParagraph, false, "基准容量", monitorList.getData().get(0).getMinShortCircuitCapacity() + ""); + insertRow(doc, table, centerParagraph, false, "设备容量", monitorList.getData().get(0).getPowerSupplyEqCapacity() + ""); + insertRow(doc, table, centerParagraph, false, "最小短路容量", monitorList.getData().get(0).getMinShortCircuitCapacity() + ""); + insertRow(doc, table, centerParagraph, false, "接线方式", dicDataFeignClient.getDicDataById(monitorList.getData().get(0).getTerminalWiringMethod()).getData().getName()); + */ + } + i++; + } + //2.暂降事件暂降事件列表和暂降点图 + //2.1.判断列表和点图是否是要导出 + if (exportParam.isLb() || exportParam.isSjdF47() || exportParam.isSjdITIC()) { +// List plot = eventAnalysisService.getPlot(param); + List plot = eventReportService.getPlot(info, reasonData, typeData); + //暂降事件列表 + if (exportParam.isLb()) { + createTitle(doc, "4." + i + " 暂降事件列表", "标题 2", 200, 15); + XWPFTable table = createTable(doc); + XWPFParagraph centerParagraph = WordUtils.getCenterParagraph(doc); + insertRow(doc, table, centerParagraph, true, "序号", "暂降发生时刻", "暂降幅值(%)", "持续时间(s)", "暂降类型", "暂降原因", "严重度"); + for (int j = 0; j < plot.size(); j++) { + EventDetail eventDetail = plot.get(j); + String s = eventDetail.getStartTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS")); + + insertRow(doc, table, centerParagraph, false, j + 1 + "", s, BigDecimal.valueOf(eventDetail.getFeatureAmplitude() * 100).setScale(2, RoundingMode.HALF_UP).toString(), eventDetail.getDuration() + "", eventDetail.getAdvanceType(), eventDetail.getAdvanceReason(), eventDetail.getSeverity() + ""); + } + i++; + } + //暂降事件点图 + if (exportParam.isSjdF47() || exportParam.isSjdITIC()) { + ArrayList> ass = getAss(plot); + createTitle(doc, "4." + i + " 暂降事件点图", "标题 2", 200, 15); + int two = 1; + if (exportParam.isSjdITIC()) { + createTitle(doc, "4." + i + "." + two + " ITIC 曲线", "标题 3", 400, 15); + String itic = drawPicUtil.drawItic(ass); + createPic(doc, itic, "ITIC曲线"); + two++; + } + if (exportParam.isSjdF47()) { + createTitle(doc, "4." + i + "." + two + " F47 曲线", "标题 3", 400, 15); + String f47 = drawPicUtil.drawF47(ass); + createPic(doc, f47, "SEMI F47曲线"); + two++; + } + i++; + } + } + + + //3.暂降密度 + if (exportParam.isMdbg() || exportParam.isMdtx()) { + createTitle(doc, "4." + i + " 暂降密度", "标题 2", 200, 15); + int two = 1; + if (exportParam.isMdtx()) { + createTitle(doc, "4." + i + "." + two + " 暂降密度点图", "标题 3", 400, 15); + Integer[][] eventDensityData = eventReportService.getCoords(info); + String str = drawPicUtil.drawEventDensity(eventDensityData); + createPic(doc, str, "暂降密度图"); + two++; + } + if (exportParam.isMdbg()) { + XWPFParagraph centerParagraph = WordUtils.getCenterParagraph(doc); + createTitle(doc, "4." + i + "." + two + " DISDIP 表格:国际发配电联盟(UNIPEDE)", "标题 3", 400, 15); +// List eventDisdip = eventAnalysisService.eventDisdip(new StatisticsParam(exportParam.getLineId(), exportParam.getSearchBeginTime(), exportParam.getSearchEndTime(),exportParam.getFlag())); + List eventDisdip = eventReportService.eventDisdip(info); + + XWPFTable table1 = createTable(doc); + insertRow(doc, table1, centerParagraph, true, "剩余电压", "20ms", "100ms", "500ms", "1s", "3s", "20s", "60s", "180s"); + for (int j = 0; j < eventDisdip.size(); j++) { + DISDIPVO disdipvo = eventDisdip.get(j); + insertRow(doc, table1, centerParagraph, false, disdipvo.getName(), disdipvo.getTwentyMs(), disdipvo.getOneHundredMs(), disdipvo.getFiveHundredMs(), disdipvo.getOneS(), disdipvo.getThreeS(), disdipvo.getTwentyS(), disdipvo.getSixtyS(), disdipvo.getOneEightyS()); + } + two++; + createTitle(doc, "4." + i + "." + two + " IEC 61000-4-11:(用电终端的电压暂降抗度)", "标题 3", 400, 15); +// List iec411VOS = eventAnalysisService.IEC411(new StatisticsParam(exportParam.getLineId(), exportParam.getSearchBeginTime(), exportParam.getSearchEndTime(),exportParam.getFlag())); + List iec411VOS = eventReportService.IEC411(info); + XWPFTable table2 = createTable(doc); + insertRow(doc, table2, centerParagraph, true, "剩余电压", "10~20ms", "20~100ms", "0.1~0.2s", "0.2~0.5s", "0.5~1s", ">1s"); + for (int j = 0; j < iec411VOS.size(); j++) { + IEC411VO iec411VO = iec411VOS.get(j); + insertRow(doc, table2, centerParagraph, false, iec411VO.getName(), iec411VO.getTenTwentyMs(), iec411VO.getTwentyOneHundredMs(), iec411VO.getZeroPiontOneTwoS(), iec411VO.getZeroPiontTwoFiveS(), iec411VO.getZeroPiontFive1S(), iec411VO.getGreater1S()); + } + two++; + createTitle(doc, "4." + i + "." + two + " IEC 61000-2-8:(公共电网电压暂降测量统计)", "标题 3", 400, 15); +// List iec28VOS = eventAnalysisService.IEC28(new StatisticsParam(exportParam.getLineId(), exportParam.getSearchBeginTime(), exportParam.getSearchEndTime(),exportParam.getFlag())); + List iec28VOS = eventReportService.IEC28(info); + XWPFTable table3 = createTable(doc); + insertRow(doc, table3, centerParagraph, true, "剩余电压", "0.02~0.1s", "0.1~0.25s", "0.25~0.5s", "0.5s~1s", "1~3s", "3~20s", "20~60s", "60~180s"); + for (int j = 0; j < iec28VOS.size(); j++) { + IEC28VO iec28VO = iec28VOS.get(j); + insertRow(doc, table3, centerParagraph, false, iec28VO.getName(), iec28VO.getQ(), iec28VO.getW(), iec28VO.getE(), iec28VO.getR(), iec28VO.getT(), iec28VO.getY(), iec28VO.getU(), iec28VO.getI()); + } + two++; + } + i++; + } + //4.暂降幅值概率分布 + if (exportParam.isGlfbfz() || exportParam.isGlfbsj()) { + createTitle(doc, "4." + i + " 暂降幅值概率分布图", "标题 2", 200, 15); +// ProbabilityVO probabilityVO = eventAnalysisService.getProbabilityDistribution(new StatisticsParam(exportParam.getLineId(), exportParam.getSearchBeginTime(), exportParam.getSearchEndTime(),exportParam.getFlag())); + ProbabilityVO probabilityVO = eventReportService.getProbabilityDistribution(info); + int two = 1; + if (exportParam.isGlfbfz()) { + createTitle(doc, "4." + i + "." + two + " 暂降幅值的概率分函数", "标题 3", 400, 15); + List ybardata = probabilityVO.getPereventvalue(); + List ylinedata = probabilityVO.getEventvalue(); + String fz = drawPicUtil.drawEventAmplitude(ylinedata, ybardata); + createPic(doc, fz, "暂降幅值的概率分布函数"); + two++; + } + if (exportParam.isGlfbsj()) { + createTitle(doc, "4." + i + "." + two + " 持续时间的概率分函数", "标题 3", 400, 15); + List ybardata = probabilityVO.getPersisttime(); + List ylinedata = probabilityVO.getSisttime(); + String sj = drawPicUtil.drawPersistentTime(ylinedata, ybardata); + createPic(doc, sj, "持续时间的概率分布函数"); + two++; + } + i++; + } + + + //5.月份统计 + if (exportParam.isTjbg() || exportParam.isTjtx()) { + createTitle(doc, "4." + i + " 月份统计", "标题 2", 200, 15); + int two = 1; + List reasonTypeTime = eventReportService.getReasonTypeTime(param); + //暂时时间端按月查询不能查询 +// List reasonTypeTime = eventReportService.getReasonTypeTime(param,null); + if (exportParam.isTjtx()) { + createTitle(doc, "4." + i + "." + two + " 月份统计图", "标题 3", 400, 15); + List count = new ArrayList<>(); + List name = new ArrayList<>(); + if (exportParam.getFlag() == 0) { + for (TimeVO timeVO : reasonTypeTime) { + name.add(timeVO.getMonth() + ""); + count.add(Integer.parseInt(timeVO.getTimes())); + } + } else { + for (TimeVO timeVO : reasonTypeTime) { + name.add(timeVO.getDay() + ""); + count.add(Integer.parseInt(timeVO.getTimes())); + } + } + String yftj = drawPicUtil.drawMonth(name, count, reasonTypeTime.get(0).getYear(), exportParam.getFlag()); + createPic(doc, yftj, "月份统计图"); + two++; + } + if (exportParam.isTjbg()) { + XWPFParagraph centerParagraph = WordUtils.getCenterParagraph(doc); + createTitle(doc, "4." + i + "." + two + " 时间统计表格", "标题 3", 400, 15); + + XWPFTable table1 = createTable(doc); + if (exportParam.getFlag() == 0) { + insertRow(doc, table1, centerParagraph, true, "时间(月)", "电压暂降次数"); + } else { + insertRow(doc, table1, centerParagraph, true, "时间(天)", "电压暂降次数"); + } + if (exportParam.getFlag() == 0) { + for (int j = 0; j < reasonTypeTime.size(); j++) { + TimeVO timeVO = reasonTypeTime.get(j); + insertRow(doc, table1, centerParagraph, false, timeVO.getMonth(), timeVO.getTimes()); + } + } else { + for (int j = 0; j < reasonTypeTime.size(); j++) { + TimeVO timeVO = reasonTypeTime.get(j); + insertRow(doc, table1, centerParagraph, false,timeVO.getFulltime(), timeVO.getTimes()); + } + } + two++; + } + i++; + } + + + //6.原因统计 + //6.1整合提出查询语句 + Boolean fly = exportParam.isYybg() || exportParam.isYytx() || exportParam.isLxbg() || exportParam.isLxtx(); + if (fly) { + StatisticVO statistic = eventReportService.getStatistic(info, reasonData, typeData); + if (exportParam.isYybg() || exportParam.isYytx()) { + createTitle(doc, "4." + i + " 原因统计", "标题 2", 200, 15); +// StatisticVO statistic = eventAnalysisService.getStatistic(new StatisticsParam(exportParam.getLineId(), exportParam.getSearchBeginTime(), exportParam.getSearchEndTime(),exportParam.getFlag())); + int two = 1; + if (exportParam.isYytx()) { + createTitle(doc, "4." + i + "." + two + " 原因统计图", "标题 3", 400, 15); + List xdata = new ArrayList<>(); + List> reasonList = new ArrayList<>(); + + List reason = statistic.getReason(); + for (ReasonsVO reasonsVO : reason) { + Map map = new LinkedHashMap<>(); + map.put("value", reasonsVO.getTimes()); + map.put("name", reasonsVO.getReason()); + reasonList.add(map); + xdata.add(reasonsVO.getReason()); + } + String tr = drawPicUtil.drawReason(xdata, reasonList); + createPic(doc, tr, "暂降原因图"); + two++; + } + if (exportParam.isYybg()) { + XWPFParagraph centerParagraph = WordUtils.getCenterParagraph(doc); + createTitle(doc, "4." + i + "." + two + " 原因统计表格", "标题 3", 400, 15); + XWPFTable table1 = createTable(doc); + insertRow(doc, table1, centerParagraph, true, "暂降原因", "电压暂降次数"); + List reason = statistic.getReason(); + for (int j = 0; j < reason.size(); j++) { + ReasonsVO reasonsVO = reason.get(j); + insertRow(doc, table1, centerParagraph, false, reasonsVO.getReason(), reasonsVO.getTimes() + ""); + } + two++; + } + i++; + } + //7.类型统计 + if (exportParam.isLxbg() || exportParam.isLxtx()) { + createTitle(doc, "4." + i + " 类型统计", "标题 2", 200, 15); +// StatisticVO statistic = eventAnalysisService.getStatistic(new StatisticsParam(exportParam.getLineId(), exportParam.getSearchBeginTime(), exportParam.getSearchEndTime(),exportParam.getFlag())); + int two = 1; + if (exportParam.isLxtx()) { + createTitle(doc, "4." + i + "." + two + " 类型统计图", "标题 3", 400, 15); + List xdata = new ArrayList<>(); + List types = statistic.getTypes(); + + List> reasonList = new ArrayList<>(); + for (TypesVO type : types) { + Map map = new LinkedHashMap<>(); + map.put("value", type.getTimes()); + map.put("name", type.getType()); + reasonList.add(map); + xdata.add(type.getType()); + } + String tr = drawPicUtil.drawType(xdata, reasonList); + createPic(doc, tr, "暂降类型图"); + two++; + } + if (exportParam.isLxbg()) { + createTitle(doc, "4." + i + "." + two + " 类型统计表格", "标题 3", 400, 15); + XWPFParagraph centerParagraph = WordUtils.getCenterParagraph(doc); + XWPFTable table1 = createTable(doc); + insertRow(doc, table1, centerParagraph, true, "暂降原因", "电压暂降次数"); + List types = statistic.getTypes(); + for (int j = 0; j < types.size(); j++) { + TypesVO typesVO = types.get(j); + insertRow(doc, table1, centerParagraph, false, typesVO.getType(), typesVO.getTimes() + ""); + } + two++; + } + i++; + } + } + + + ServletOutputStream outputStream = response.getOutputStream(); + String fileName = URLEncoder.encode(exportParam.getLineName() + ".docx", "UTF-8"); + response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\""); + response.setContentType("application/octet-stream;charset=UTF-8"); + doc.write(outputStream); + outputStream.close(); + } + + + /** + * 创建标题 + * + * @param document 文档 + * @param message 标题内容 + * @param style 标题等级 + * @param line 缩进 + * @param fontSize 字体大小 + */ + public void createTitle(XWPFDocument document, String message, String style, int line, int fontSize) { + XWPFParagraph summaeTableParagraph = WordUtils.getLeftParagraph(document); + summaeTableParagraph.setStyle(style); + summaeTableParagraph.setIndentationFirstLine(line); + XWPFRun summaeTableRun = summaeTableParagraph.createRun(); + WordUtils.addParagraph(summaeTableRun, "宋体", fontSize, "000000", message, false); + } + + /** + * 表格插入行数据 + * + * @param document 文档 + * @param table 表格 + * @param head 是否是表头 + * @param values 数据内容 + */ + public static void insertRow(XWPFDocument document, XWPFTable table, XWPFParagraph excelParagraph, boolean head, + String... values) { + if (head) { + XWPFTableRow summaTableRowOne = table.getRow(0); + WordUtils.setExcelHeadContent(excelParagraph, summaTableRowOne, values); + } else { + XWPFTableRow summaTableRowOne = table.createRow(); + WordUtils.setExcelContent(excelParagraph, summaTableRowOne, values); + } + } + + /** + * 创建图片在word中 + * + * @param document 文档 + * @param image 图片base64 + * @param name 图片名 + * @throws IOException + * @throws InvalidFormatException + */ + public void createPic(XWPFDocument document, String image, String name) throws IOException, InvalidFormatException, InvalidFormatException { + XWPFParagraph picParagraph = WordUtils.getCenterParagraph(document); + XWPFRun createRun = picParagraph.createRun(); + if (image.contains(PicCommonData.PNG_PREFIX)) { + image = image.replace(PicCommonData.PNG_PREFIX, ""); + } + byte[] bytes = Base64.getDecoder().decode(image); + InputStream in = new ByteArrayInputStream(bytes); + createRun.addPicture(in, 5, name, Units.toEMU(410), Units.toEMU(170)); + } + + + /** + * 创建表格 + * + * @param document + * @return + */ + public XWPFTable createTable(XWPFDocument document) { + XWPFTable summaTable = document.createTable(); + // 列宽自动分割 + CTTblWidth summaTableWidth = summaTable.getCTTbl().addNewTblPr().addNewTblW(); + summaTableWidth.setType(STTblWidth.DXA); + summaTableWidth.setW(BigInteger.valueOf(8160)); + return summaTable; + } + + public void setCellStyle(HSSFCell cellname, String value, HSSFCellStyle style) { + cellname.setCellValue(value); + cellname.setCellStyle(style); + } + + /** + * 监测点暂降事件点图赋值 + * + * @param plot + * @return + */ + private ArrayList> getAss(List plot) { + //TODO 666 + ArrayList> list = new ArrayList<>(); + for (EventDetail eventDetail : plot) { + ArrayList doubles = new ArrayList<>(); + doubles.add(eventDetail.getDuration()); + doubles.add(Double.parseDouble(String.valueOf(eventDetail.getFeatureAmplitude() * 100))); + list.add(doubles); + } + return list; + } + + /** + * influxdb查询结果集 + * + * @param statisticsParam + * @return + */ + private List info(StatisticsParam statisticsParam) { + //获取事件类型 + List dictType = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_STATIS.getCode()).getData(); + List typeIds = dictType.stream().filter(x -> DicDataEnum.VOLTAGE_DIP.getCode().equals(x.getCode()) || DicDataEnum.SHORT_INTERRUPTIONS.getCode().equals(x.getCode())) + .map(DictData::getId).collect(Collectors.toList()); + //数据暂降查询 +/* List info = eventDetailService.list(new LambdaQueryWrapper() + .eq(RmpEventDetailPO::getMeasurementPointId, statisticsParam.getLineIndex()) + .in(RmpEventDetailPO::getEventType, typeIds) + .ge(StrUtil.isNotBlank(statisticsParam.getStartTime()), RmpEventDetailPO::getStartTime, DateUtil.beginOfDay(DateUtil.parse(statisticsParam.getStartTime()))) + .le(StrUtil.isNotBlank(statisticsParam.getEndTime()), RmpEventDetailPO::getStartTime, DateUtil.endOfDay(DateUtil.parse(statisticsParam.getEndTime()))) + );*/ + + return new ArrayList<>(); + } + +} diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/event/EventReportServiceImpl.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/event/EventReportServiceImpl.java new file mode 100644 index 0000000..562e3fa --- /dev/null +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/event/EventReportServiceImpl.java @@ -0,0 +1,1257 @@ +package com.njcn.csharmonic.service.impl.event; + + +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.njcn.csharmonic.pojo.dto.eventReport.EventDetail; +import com.njcn.csharmonic.pojo.param.eventReport.StatisticsParam; +import com.njcn.csharmonic.pojo.vo.eventReport.*; +import com.njcn.csharmonic.service.event.EventReportService; +import com.njcn.influx.utils.InfluxDbUtils; +import com.njcn.system.api.DicDataFeignClient; +import com.njcn.system.enums.DicDataEnum; +import com.njcn.system.enums.DicDataTypeEnum; +import com.njcn.system.pojo.po.DictData; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.influxdb.dto.QueryResult; +import org.springframework.stereotype.Service; + +import java.text.ParseException; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.time.temporal.ChronoUnit; +import java.util.*; +import java.util.stream.Collectors; + + +/** + * <功能描述> + * + * @author wr + * @createTime: 2023-02-10 + */ +@Service +@RequiredArgsConstructor +public class EventReportServiceImpl implements EventReportService { + + private final DicDataFeignClient dicDataFeignClient; + + @Override + public List eventDisdip(List info) { + List result = new ArrayList<>(); + int[][] arr = new int[5][8]; + for (int i = 0; i < 5; i++) { + for (int j = 0; j < 8; j++) { + arr[i][j] = 0; + } + } + for (int i = 0; i < info.size(); i++) { + Double eventvalue = info.get(i).getFeatureAmplitude(); + double persisttime = info.get(i).getDuration(); + if (eventvalue * 100 < 10) { + if (persisttime < 20) { + arr[4][0]++; + } else if (persisttime < 100) { + arr[4][1]++; + } else if (persisttime < 500) { + arr[4][2]++; + } else if (persisttime < 1000) { + arr[4][3]++; + } else if (persisttime < 3000) { + arr[4][4]++; + } else if (persisttime < 20000) { + arr[4][5]++; + } else if (persisttime < 60000) { + arr[4][6]++; + } else if (persisttime < 180000) { + arr[4][7]++; + } + } else if (eventvalue * 100 < 40) { + if (persisttime < 20) { + arr[3][0]++; + } else if (persisttime < 100) { + arr[3][1]++; + } else if (persisttime < 500) { + arr[3][2]++; + } else if (persisttime < 1000) { + arr[3][3]++; + } else if (persisttime < 3000) { + arr[3][4]++; + } else if (persisttime < 20000) { + arr[3][5]++; + } else if (persisttime < 60000) { + arr[3][6]++; + } else if (persisttime < 180000) { + arr[3][7]++; + } + } else if (eventvalue * 100 < 70) { + if (persisttime < 20) { + arr[2][0]++; + } else if (persisttime < 100) { + arr[2][1]++; + } else if (persisttime < 500) { + arr[2][2]++; + } else if (persisttime < 1000) { + arr[2][3]++; + } else if (persisttime < 3000) { + arr[2][4]++; + } else if (persisttime < 20000) { + arr[2][5]++; + } else if (persisttime < 60000) { + arr[2][6]++; + } else if (persisttime < 180000) { + arr[2][7]++; + } + } else if (eventvalue * 100 < 85) { + if (persisttime < 20) { + arr[1][0]++; + } else if (persisttime < 100) { + arr[1][1]++; + } else if (persisttime < 500) { + arr[1][2]++; + } else if (persisttime < 1000) { + arr[1][3]++; + } else if (persisttime < 3000) { + arr[1][4]++; + } else if (persisttime < 20000) { + arr[1][5]++; + } else if (persisttime < 60000) { + arr[1][6]++; + } else if (persisttime < 180000) { + arr[1][7]++; + } + } else if (eventvalue * 100 <= 90) { + if (persisttime < 20) { + arr[0][0]++; + } else if (persisttime < 100) { + arr[0][1]++; + } else if (persisttime < 500) { + arr[0][2]++; + } else if (persisttime < 1000) { + arr[0][3]++; + } else if (persisttime < 3000) { + arr[0][4]++; + } else if (persisttime < 20000) { + arr[0][5]++; + } else if (persisttime < 60000) { + arr[0][6]++; + } else if (persisttime < 180000) { + arr[0][7]++; + } + } + } + result.add(new DISDIPVO("90%", String.valueOf(arr[0][0]), String.valueOf(arr[0][1]), String.valueOf(arr[0][2]), String.valueOf(arr[0][3]), String.valueOf(arr[0][4]), String.valueOf(arr[0][5]), String.valueOf(arr[0][6]), String.valueOf(arr[0][7]))); + result.add(new DISDIPVO("85%", String.valueOf(arr[1][0]), String.valueOf(arr[1][1]), String.valueOf(arr[1][2]), String.valueOf(arr[1][3]), String.valueOf(arr[1][4]), String.valueOf(arr[1][5]), String.valueOf(arr[1][6]), String.valueOf(arr[1][7]))); + result.add(new DISDIPVO("70%", String.valueOf(arr[2][0]), String.valueOf(arr[2][1]), String.valueOf(arr[2][2]), String.valueOf(arr[2][3]), String.valueOf(arr[2][4]), String.valueOf(arr[2][5]), String.valueOf(arr[2][6]), String.valueOf(arr[2][7]))); + result.add(new DISDIPVO("40%", String.valueOf(arr[3][0]), String.valueOf(arr[3][1]), String.valueOf(arr[3][2]), String.valueOf(arr[3][3]), String.valueOf(arr[3][4]), String.valueOf(arr[3][5]), String.valueOf(arr[3][6]), String.valueOf(arr[3][7]))); + result.add(new DISDIPVO("10%", String.valueOf(arr[4][0]), String.valueOf(arr[4][1]), String.valueOf(arr[4][2]), String.valueOf(arr[4][3]), String.valueOf(arr[4][4]), String.valueOf(arr[4][5]), String.valueOf(arr[4][6]), String.valueOf(arr[4][7]))); + return result; + } + + @Override + public List IEC411(List info) { + List result = new ArrayList<>(); + int[][] arr = new int[3][6]; + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 6; j++) { + arr[i][j] = 0; + } + } + for (int i = 0; i < info.size(); i++) { + Double eventvalue = info.get(i).getFeatureAmplitude(); + double persisttime = info.get(i).getDuration(); + if (eventvalue * 100 < 1) { + if (persisttime < 20 && persisttime >= 10) { + arr[2][0]++; + } else if (persisttime < 100) { + arr[2][1]++; + } else if (persisttime < 200) { + arr[2][2]++; + } else if (persisttime < 400) { + arr[2][3]++; + } else if (persisttime < 1000) { + arr[2][4]++; + } else { + arr[2][5]++; + } + } else if (eventvalue * 100 < 40) { + if (persisttime < 20 && persisttime >= 10) { + arr[1][0]++; + } else if (persisttime < 100) { + arr[1][1]++; + } else if (persisttime < 200) { + arr[1][2]++; + } else if (persisttime < 400) { + arr[1][3]++; + } else if (persisttime < 1000) { + arr[1][4]++; + } else { + arr[1][5]++; + } + } else if (eventvalue * 100 <= 70) { + if (persisttime < 20 && persisttime >= 10) { + arr[0][0]++; + } else if (persisttime < 100) { + arr[0][1]++; + } else if (persisttime < 200) { + arr[0][2]++; + } else if (persisttime < 400) { + arr[0][3]++; + } else if (persisttime < 1000) { + arr[0][4]++; + } else { + arr[0][5]++; + } + } + } + result.add(new IEC411VO("40~70%", String.valueOf(arr[0][0]), String.valueOf(arr[0][1]), String.valueOf(arr[0][2]), String.valueOf(arr[0][3]), String.valueOf(arr[0][4]), String.valueOf(arr[0][5]))); + result.add(new IEC411VO("1~40%", String.valueOf(arr[1][0]), String.valueOf(arr[1][1]), String.valueOf(arr[1][2]), String.valueOf(arr[1][3]), String.valueOf(arr[1][4]), String.valueOf(arr[1][5]))); + result.add(new IEC411VO("<1%", String.valueOf(arr[2][0]), String.valueOf(arr[2][1]), String.valueOf(arr[2][2]), String.valueOf(arr[2][3]), String.valueOf(arr[2][4]), String.valueOf(arr[2][5]))); + return result; + } + + @Override + public List IEC28(List info) { + List result = new ArrayList<>(); + int[][] arr = new int[17][8]; + for (int i = 0; i < 17; i++) { + for (int j = 0; j < 8; j++) { + arr[i][j] = 0; + } + } + for (int i = 0; i < info.size(); i++) { + Double eventvalue = info.get(i).getFeatureAmplitude(); + double persisttime = info.get(i).getDuration(); + if (eventvalue * 100 < 1 && eventvalue * 100 >= 0) { + if (persisttime > 10 && persisttime <= 100) { + arr[16][0]++; + } else if (persisttime <= 250) { + arr[16][1]++; + } else if (persisttime <= 500) { + arr[16][2]++; + } else if (persisttime <= 1000) { + arr[16][3]++; + } else if (persisttime <= 3000) { + arr[16][4]++; + } else if (persisttime <= 20000) { + arr[16][5]++; + } else if (persisttime <= 60000) { + arr[16][6]++; + } else if (persisttime <= 180000) { + arr[16][7]++; + } + } else if (eventvalue * 100 < 10) { + if (persisttime > 10 && persisttime <= 100) { + arr[15][0]++; + } else if (persisttime <= 250) { + arr[15][1]++; + } else if (persisttime <= 500) { + arr[15][2]++; + } else if (persisttime <= 1000) { + arr[15][3]++; + } else if (persisttime <= 3000) { + arr[15][4]++; + } else if (persisttime <= 20000) { + arr[15][5]++; + } else if (persisttime <= 60000) { + arr[15][6]++; + } else if (persisttime <= 180000) { + arr[15][7]++; + } + } else if (eventvalue * 100 < 20) { + if (persisttime > 10 && persisttime <= 100) { + arr[14][0]++; + } else if (persisttime <= 250) { + arr[14][1]++; + } else if (persisttime <= 500) { + arr[14][2]++; + } else if (persisttime <= 1000) { + arr[14][3]++; + } else if (persisttime <= 3000) { + arr[14][4]++; + } else if (persisttime <= 20000) { + arr[14][5]++; + } else if (persisttime <= 60000) { + arr[14][6]++; + } else if (persisttime <= 180000) { + arr[14][7]++; + } + } else if (eventvalue * 100 < 30) { + if (persisttime > 10 && persisttime <= 100) { + arr[13][0]++; + } else if (persisttime <= 250) { + arr[13][1]++; + } else if (persisttime <= 500) { + arr[13][2]++; + } else if (persisttime <= 1000) { + arr[13][3]++; + } else if (persisttime <= 3000) { + arr[13][4]++; + } else if (persisttime <= 20000) { + arr[13][5]++; + } else if (persisttime <= 60000) { + arr[13][6]++; + } else if (persisttime <= 180000) { + arr[13][7]++; + } + } else if (eventvalue * 100 < 40) { + if (persisttime > 10 && persisttime <= 100) { + arr[12][0]++; + } else if (persisttime <= 250) { + arr[12][1]++; + } else if (persisttime <= 500) { + arr[12][2]++; + } else if (persisttime <= 1000) { + arr[12][3]++; + } else if (persisttime <= 3000) { + arr[12][4]++; + } else if (persisttime <= 20000) { + arr[12][5]++; + } else if (persisttime <= 60000) { + arr[12][6]++; + } else if (persisttime <= 180000) { + arr[12][7]++; + } + } else if (eventvalue * 100 < 50) { + if (persisttime > 10 && persisttime <= 100) { + arr[11][0]++; + } else if (persisttime <= 250) { + arr[11][1]++; + } else if (persisttime <= 500) { + arr[11][2]++; + } else if (persisttime <= 1000) { + arr[11][3]++; + } else if (persisttime <= 3000) { + arr[11][4]++; + } else if (persisttime <= 20000) { + arr[11][5]++; + } else if (persisttime <= 60000) { + arr[11][6]++; + } else if (persisttime <= 180000) { + arr[11][7]++; + } + } else if (eventvalue * 100 < 60) { + if (persisttime > 10 && persisttime <= 100) { + arr[10][0]++; + } else if (persisttime <= 250) { + arr[10][1]++; + } else if (persisttime <= 500) { + arr[10][2]++; + } else if (persisttime <= 1000) { + arr[10][3]++; + } else if (persisttime <= 3000) { + arr[10][4]++; + } else if (persisttime <= 20000) { + arr[10][5]++; + } else if (persisttime <= 60000) { + arr[10][6]++; + } else if (persisttime <= 180000) { + arr[10][7]++; + } + } else if (eventvalue * 100 < 70) { + if (persisttime > 10 && persisttime <= 100) { + arr[9][0]++; + } else if (persisttime <= 250) { + arr[9][1]++; + } else if (persisttime <= 500) { + arr[9][2]++; + } else if (persisttime <= 1000) { + arr[9][3]++; + } else if (persisttime <= 3000) { + arr[9][4]++; + } else if (persisttime <= 20000) { + arr[9][5]++; + } else if (persisttime <= 60000) { + arr[9][6]++; + } else if (persisttime <= 180000) { + arr[9][7]++; + } + } else if (eventvalue * 100 < 80) { + if (persisttime > 10 && persisttime <= 100) { + arr[8][0]++; + } else if (persisttime <= 250) { + arr[8][1]++; + } else if (persisttime <= 500) { + arr[8][2]++; + } else if (persisttime <= 1000) { + arr[8][3]++; + } else if (persisttime <= 3000) { + arr[8][4]++; + } else if (persisttime <= 20000) { + arr[8][5]++; + } else if (persisttime <= 60000) { + arr[8][6]++; + } else if (persisttime <= 180000) { + arr[8][7]++; + } + } else if (eventvalue * 100 <= 90) { + if (persisttime > 10 && persisttime <= 100) { + arr[7][0]++; + } else if (persisttime <= 250) { + arr[7][1]++; + } else if (persisttime <= 500) { + arr[7][2]++; + } else if (persisttime <= 1000) { + arr[7][3]++; + } else if (persisttime <= 3000) { + arr[7][4]++; + } else if (persisttime <= 20000) { + arr[7][5]++; + } else if (persisttime <= 60000) { + arr[7][6]++; + } else if (persisttime <= 180000) { + arr[7][7]++; + } + } else if (eventvalue * 100 < 120 && eventvalue * 100 >= 110) { + if (persisttime > 10 && persisttime <= 100) { + arr[6][0]++; + } else if (persisttime <= 250) { + arr[6][1]++; + } else if (persisttime <= 500) { + arr[6][2]++; + } else if (persisttime <= 1000) { + arr[6][3]++; + } else if (persisttime <= 3000) { + arr[6][4]++; + } else if (persisttime <= 20000) { + arr[6][5]++; + } else if (persisttime <= 60000) { + arr[6][6]++; + } else if (persisttime <= 180000) { + arr[6][7]++; + } + } else if (eventvalue * 100 < 130) { + if (persisttime > 10 && persisttime <= 100) { + arr[5][0]++; + } else if (persisttime <= 250) { + arr[5][1]++; + } else if (persisttime <= 500) { + arr[5][2]++; + } else if (persisttime <= 1000) { + arr[5][3]++; + } else if (persisttime <= 3000) { + arr[5][4]++; + } else if (persisttime <= 20000) { + arr[5][5]++; + } else if (persisttime <= 60000) { + arr[5][6]++; + } else if (persisttime <= 180000) { + arr[5][7]++; + } + } else if (eventvalue * 100 < 140) { + if (persisttime > 10 && persisttime <= 100) { + arr[4][0]++; + } else if (persisttime <= 250) { + arr[4][1]++; + } else if (persisttime <= 500) { + arr[4][2]++; + } else if (persisttime <= 1000) { + arr[4][3]++; + } else if (persisttime <= 3000) { + arr[4][4]++; + } else if (persisttime <= 20000) { + arr[4][5]++; + } else if (persisttime <= 60000) { + arr[4][6]++; + } else if (persisttime <= 180000) { + arr[4][7]++; + } + } else if (eventvalue * 100 < 150) { + if (persisttime > 10 && persisttime <= 100) { + arr[3][0]++; + } else if (persisttime <= 250) { + arr[3][1]++; + } else if (persisttime <= 500) { + arr[3][2]++; + } else if (persisttime <= 1000) { + arr[3][3]++; + } else if (persisttime <= 3000) { + arr[3][4]++; + } else if (persisttime <= 20000) { + arr[3][5]++; + } else if (persisttime <= 60000) { + arr[3][6]++; + } else if (persisttime <= 180000) { + arr[3][7]++; + } + } else if (eventvalue * 100 < 160) { + if (persisttime > 10 && persisttime <= 100) { + arr[2][0]++; + } else if (persisttime <= 250) { + arr[2][1]++; + } else if (persisttime <= 500) { + arr[2][2]++; + } else if (persisttime <= 1000) { + arr[2][3]++; + } else if (persisttime <= 3000) { + arr[2][4]++; + } else if (persisttime <= 20000) { + arr[2][5]++; + } else if (persisttime <= 60000) { + arr[2][6]++; + } else if (persisttime <= 180000) { + arr[2][7]++; + } + } else if (eventvalue * 100 < 170) { + if (persisttime > 10 && persisttime <= 100) { + arr[1][0]++; + } else if (persisttime <= 250) { + arr[1][1]++; + } else if (persisttime <= 500) { + arr[1][2]++; + } else if (persisttime <= 1000) { + arr[1][3]++; + } else if (persisttime <= 3000) { + arr[1][4]++; + } else if (persisttime <= 20000) { + arr[1][5]++; + } else if (persisttime <= 60000) { + arr[1][6]++; + } else if (persisttime <= 180000) { + arr[1][7]++; + } + } else if (eventvalue * 100 <= 180) { + if (persisttime > 10 && persisttime <= 100) { + arr[0][0]++; + } else if (persisttime <= 250) { + arr[0][1]++; + } else if (persisttime <= 500) { + arr[0][2]++; + } else if (persisttime <= 1000) { + arr[0][3]++; + } else if (persisttime <= 3000) { + arr[0][4]++; + } else if (persisttime <= 20000) { + arr[0][5]++; + } else if (persisttime <= 60000) { + arr[0][6]++; + } else if (persisttime <= 180000) { + arr[0][7]++; + } + } + } + result.add(new IEC28VO("180>U>=170", String.valueOf(arr[0][0]), String.valueOf(arr[0][1]), String.valueOf(arr[0][2]), String.valueOf(arr[0][3]), String.valueOf(arr[0][4]), String.valueOf(arr[0][5]), String.valueOf(arr[0][6]), String.valueOf(arr[0][7]))); + result.add(new IEC28VO("170>U>=160", String.valueOf(arr[1][0]), String.valueOf(arr[1][1]), String.valueOf(arr[1][2]), String.valueOf(arr[1][3]), String.valueOf(arr[1][4]), String.valueOf(arr[1][5]), String.valueOf(arr[1][6]), String.valueOf(arr[1][7]))); + result.add(new IEC28VO("160>U>=150", String.valueOf(arr[2][0]), String.valueOf(arr[2][1]), String.valueOf(arr[2][2]), String.valueOf(arr[2][3]), String.valueOf(arr[2][4]), String.valueOf(arr[2][5]), String.valueOf(arr[2][6]), String.valueOf(arr[2][7]))); + result.add(new IEC28VO("150>U>=140", String.valueOf(arr[3][0]), String.valueOf(arr[3][1]), String.valueOf(arr[3][2]), String.valueOf(arr[3][3]), String.valueOf(arr[3][4]), String.valueOf(arr[3][5]), String.valueOf(arr[3][6]), String.valueOf(arr[3][7]))); + result.add(new IEC28VO("140>U>=130", String.valueOf(arr[4][0]), String.valueOf(arr[4][1]), String.valueOf(arr[4][2]), String.valueOf(arr[4][3]), String.valueOf(arr[4][4]), String.valueOf(arr[4][5]), String.valueOf(arr[4][6]), String.valueOf(arr[4][7]))); + result.add(new IEC28VO("130>U>=120", String.valueOf(arr[5][0]), String.valueOf(arr[5][1]), String.valueOf(arr[5][2]), String.valueOf(arr[5][3]), String.valueOf(arr[5][4]), String.valueOf(arr[5][5]), String.valueOf(arr[5][6]), String.valueOf(arr[5][7]))); + result.add(new IEC28VO("120>U>=110", String.valueOf(arr[6][0]), String.valueOf(arr[6][1]), String.valueOf(arr[6][2]), String.valueOf(arr[6][3]), String.valueOf(arr[6][4]), String.valueOf(arr[6][5]), String.valueOf(arr[6][6]), String.valueOf(arr[6][7]))); + result.add(new IEC28VO("90>U>=80", String.valueOf(arr[7][0]), String.valueOf(arr[7][1]), String.valueOf(arr[7][2]), String.valueOf(arr[7][3]), String.valueOf(arr[7][4]), String.valueOf(arr[7][5]), String.valueOf(arr[7][6]), String.valueOf(arr[7][7]))); + result.add(new IEC28VO("80>U>=70", String.valueOf(arr[8][0]), String.valueOf(arr[8][1]), String.valueOf(arr[8][2]), String.valueOf(arr[8][3]), String.valueOf(arr[8][4]), String.valueOf(arr[8][5]), String.valueOf(arr[8][6]), String.valueOf(arr[8][7]))); + result.add(new IEC28VO("70>U>=60", String.valueOf(arr[9][0]), String.valueOf(arr[9][1]), String.valueOf(arr[9][2]), String.valueOf(arr[9][3]), String.valueOf(arr[9][4]), String.valueOf(arr[9][5]), String.valueOf(arr[9][6]), String.valueOf(arr[9][7]))); + result.add(new IEC28VO("60>U>=50", String.valueOf(arr[10][0]), String.valueOf(arr[10][1]), String.valueOf(arr[10][2]), String.valueOf(arr[10][3]), String.valueOf(arr[10][4]), String.valueOf(arr[10][5]), String.valueOf(arr[10][6]), String.valueOf(arr[10][7]))); + result.add(new IEC28VO("50>U>=40", String.valueOf(arr[11][0]), String.valueOf(arr[11][1]), String.valueOf(arr[11][2]), String.valueOf(arr[11][3]), String.valueOf(arr[11][4]), String.valueOf(arr[11][5]), String.valueOf(arr[11][6]), String.valueOf(arr[11][7]))); + result.add(new IEC28VO("40>U>=30", String.valueOf(arr[12][0]), String.valueOf(arr[12][1]), String.valueOf(arr[12][2]), String.valueOf(arr[12][3]), String.valueOf(arr[12][4]), String.valueOf(arr[12][5]), String.valueOf(arr[12][6]), String.valueOf(arr[12][7]))); + result.add(new IEC28VO("30>U>=20", String.valueOf(arr[13][0]), String.valueOf(arr[13][1]), String.valueOf(arr[13][2]), String.valueOf(arr[13][3]), String.valueOf(arr[13][4]), String.valueOf(arr[13][5]), String.valueOf(arr[13][6]), String.valueOf(arr[13][7]))); + result.add(new IEC28VO("20>U>=10", String.valueOf(arr[14][0]), String.valueOf(arr[14][1]), String.valueOf(arr[14][2]), String.valueOf(arr[14][3]), String.valueOf(arr[14][4]), String.valueOf(arr[14][5]), String.valueOf(arr[14][6]), String.valueOf(arr[14][7]))); + result.add(new IEC28VO("10>U>=1", String.valueOf(arr[15][0]), String.valueOf(arr[15][1]), String.valueOf(arr[15][2]), String.valueOf(arr[15][3]), String.valueOf(arr[15][4]), String.valueOf(arr[15][5]), String.valueOf(arr[15][6]), String.valueOf(arr[15][7]))); + result.add(new IEC28VO("1>U>=0", String.valueOf(arr[16][0]), String.valueOf(arr[16][1]), String.valueOf(arr[16][2]), String.valueOf(arr[16][3]), String.valueOf(arr[16][4]), String.valueOf(arr[16][5]), String.valueOf(arr[16][6]), String.valueOf(arr[16][7]))); + return result; + } + + @Override + public ProbabilityVO getProbabilityDistribution(List info2) { + ProbabilityVO result = new ProbabilityVO(); + List info = new ArrayList<>(); + + //总数 + Integer count = 0; + for (EventDetail eventDetail : info2) { + //过滤掉大于0.9的数据 + if (eventDetail.getFeatureAmplitude() <= 0.9) { + count++; + info.add(eventDetail); + } + } + //计数map + HashMap countMap = new HashMap<>(); + countMap.put("<10", 0); + countMap.put("<20", 0); + countMap.put("<30", 0); + countMap.put("<40", 0); + countMap.put("<50", 0); + countMap.put("<60", 0); + countMap.put("<70", 0); + countMap.put("<80", 0); + countMap.put("<90", 0); + //分段计数 + HashMap subsectionMap = new HashMap<>(); + subsectionMap.put("0~10", 0); + subsectionMap.put("10~20", 0); + subsectionMap.put("20~30", 0); + subsectionMap.put("30~40", 0); + subsectionMap.put("40~50", 0); + subsectionMap.put("50~60", 0); + subsectionMap.put("60~70", 0); + subsectionMap.put("70~80", 0); + subsectionMap.put("80~90", 0); + //求数量 + for (EventDetail eventDetail : info) { + if (eventDetail.getFeatureAmplitude() < 0.1) { + countMap.put("<10", (countMap.get("<10") + 1)); + } + if (eventDetail.getFeatureAmplitude() < 0.2) { + countMap.put("<20", (countMap.get("<20") + 1)); + } + if (eventDetail.getFeatureAmplitude() < 0.3) { + countMap.put("<30", (countMap.get("<30") + 1)); + } + if (eventDetail.getFeatureAmplitude() < 0.4) { + countMap.put("<40", (countMap.get("<40") + 1)); + } + if (eventDetail.getFeatureAmplitude() < 0.5) { + countMap.put("<50", (countMap.get("<50") + 1)); + } + if (eventDetail.getFeatureAmplitude() < 0.6) { + countMap.put("<60", (countMap.get("<60") + 1)); + } + if (eventDetail.getFeatureAmplitude() < 0.7) { + countMap.put("<70", (countMap.get("<70") + 1)); + } + if (eventDetail.getFeatureAmplitude() < 0.8) { + countMap.put("<80", (countMap.get("<80") + 1)); + } + if (eventDetail.getFeatureAmplitude() < 0.9) { + countMap.put("<90", (countMap.get("<90") + 1)); + } + } + //求每段数量 + for (EventDetail eventDetail : info) { + if (eventDetail.getFeatureAmplitude() < 0.1) { + subsectionMap.put("0~10", (subsectionMap.get("0~10") + 1)); + } else if (eventDetail.getFeatureAmplitude() > 0.1 && eventDetail.getFeatureAmplitude() < 0.2) { + subsectionMap.put("10~20", (subsectionMap.get("10~20") + 1)); + } else if (eventDetail.getFeatureAmplitude() > 0.2 && eventDetail.getFeatureAmplitude() < 0.3) { + subsectionMap.put("20~30", (subsectionMap.get("20~30") + 1)); + } else if (eventDetail.getFeatureAmplitude() > 0.3 && eventDetail.getFeatureAmplitude() < 0.4) { + subsectionMap.put("30~40", (subsectionMap.get("30~40") + 1)); + } else if (eventDetail.getFeatureAmplitude() > 0.4 && eventDetail.getFeatureAmplitude() < 0.5) { + subsectionMap.put("40~50", (subsectionMap.get("40~50") + 1)); + } else if (eventDetail.getFeatureAmplitude() > 0.5 && eventDetail.getFeatureAmplitude() < 0.6) { + subsectionMap.put("50~60", (subsectionMap.get("50~60") + 1)); + } else if (eventDetail.getFeatureAmplitude() > 0.6 && eventDetail.getFeatureAmplitude() < 0.7) { + subsectionMap.put("60~70", (subsectionMap.get("60~70") + 1)); + } else if (eventDetail.getFeatureAmplitude() > 0.7 && eventDetail.getFeatureAmplitude() < 0.8) { + subsectionMap.put("70~80", (subsectionMap.get("70~80") + 1)); + } else if (eventDetail.getFeatureAmplitude() > 0.8 && eventDetail.getFeatureAmplitude() < 0.9) { + subsectionMap.put("80~90", (subsectionMap.get("80~90") + 1)); + } + } + //求概率并求pereventvalue + List pereventvalue = new ArrayList<>(); + Set subsectionSet = subsectionMap.keySet(); + List strings1 = new ArrayList<>(); + strings1.add("0~10"); + strings1.add("10~20"); + strings1.add("20~30"); + strings1.add("30~40"); + strings1.add("40~50"); + strings1.add("50~60"); + strings1.add("60~70"); + strings1.add("70~80"); + strings1.add("80~90"); + for (int i = 0; i < strings1.size(); i++) { + for (String s : subsectionSet) { + if (strings1.get(i).equals(s)) { + if (subsectionMap.get(s) == 0) { + pereventvalue.add(".00"); + break; + } + if (subsectionMap.get(s) / count.doubleValue() == 1.0) { + pereventvalue.add("100.00"); + } else { + String s1 = String.format("%.4f", (subsectionMap.get(s) / count.doubleValue())); + pereventvalue.add(s1.substring(2, 4) + "." + s1.substring(4, 6)); + } + } + } + } + result.setPereventvalue(pereventvalue); + //求eventvalue + List eventvalue = new ArrayList<>(); + List strings = new ArrayList<>(); + strings.add("<10"); + strings.add("<20"); + strings.add("<30"); + strings.add("<40"); + strings.add("<50"); + strings.add("<60"); + strings.add("<70"); + strings.add("<80"); + strings.add("<90"); + Set countSet = countMap.keySet(); + //保证顺序 + for (int i = 0; i < strings.size(); i++) { + for (String s : countSet) { + if (strings.get(i).equals(s)) { + if (countMap.get(s) == 0) { + eventvalue.add(".00"); + break; + } + if (countMap.get(s) / count.floatValue() == 1.0) { + eventvalue.add("100.00"); + } else { + String s1 = String.format("%.4f", (countMap.get(s) / count.doubleValue())); + eventvalue.add(s1.substring(2, 4) + "." + s1.substring(4, 6)); + } + } + } + } + eventvalue.add("100.00"); + result.setEventvalue(eventvalue); + //时间 + HashMap timeMap = new HashMap<>(); + timeMap.put("<0.1", 0); + timeMap.put("<0.25", 0); + timeMap.put("<0.5", 0); + timeMap.put("<1", 0); + timeMap.put("<3", 0); + timeMap.put("<20", 0); + timeMap.put("<60", 0); + timeMap.put("<180", 0); + //求不同时间段的总数 + for (EventDetail eventDetail : info) { + Double persistTime = eventDetail.getDuration(); + if (persistTime / 1000 < 0.1) { + timeMap.put("<0.1", timeMap.get("<0.1") + 1); + } else if (persistTime / 1000 > 0.1 && persistTime / 1000 < 0.25) { + timeMap.put("<0.25", timeMap.get("<0.25") + 1); + } else if (persistTime / 1000 > 0.25 && persistTime / 1000 < 0.5) { + timeMap.put("<0.5", timeMap.get("<0.5") + 1); + } else if (persistTime / 1000 > 0.5 && persistTime / 1000 < 1) { + timeMap.put("<1", timeMap.get("<1") + 1); + } else if (persistTime / 1000 > 1 && persistTime / 1000 < 3) { + timeMap.put("<3", timeMap.get("<3") + 1); + } else if (persistTime / 1000 > 3 && persistTime / 1000 < 20) { + timeMap.put("<20", timeMap.get("<20") + 1); + } else if (persistTime / 1000 > 20 && persistTime / 1000 < 60) { + timeMap.put("<60", timeMap.get("<60") + 1); + } else if (persistTime / 1000 > 60 && persistTime / 1000 < 180) { + timeMap.put("<180", timeMap.get("<180") + 1); + } + } + List strings2 = new ArrayList<>(); + strings2.add("<0.1"); + strings2.add("<0.25"); + strings2.add("<0.5"); + strings2.add("<1"); + strings2.add("<3"); + strings2.add("<20"); + strings2.add("<60"); + strings2.add("<180"); + //求persisttime + List persisttime = new ArrayList<>(); + Set timeSet = timeMap.keySet(); + for (int i = 0; i < strings2.size(); i++) { + for (String s : timeSet) { + if (strings2.get(i).equals(s)) { + if (timeMap.get(s) == 0) { + persisttime.add(".00"); + break; + } + if (timeMap.get(s) / count.floatValue() == 1.0) { + persisttime.add("100.00"); + } else { + String s1 = String.format("%.4f", (timeMap.get(s) / count.doubleValue())); + persisttime.add(s1.substring(2, 4) + "." + s1.substring(4, 6)); + } + } + } + } + result.setPersisttime(persisttime); + + HashMap timeMap2 = new HashMap<>(); + timeMap2.put("<0.1", 0); + timeMap2.put("<0.25", 0); + timeMap2.put("<0.5", 0); + timeMap2.put("<1", 0); + timeMap2.put("<3", 0); + timeMap2.put("<20", 0); + timeMap2.put("<60", 0); + timeMap2.put("<180", 0); + //求sisttime + List sisttime = new ArrayList<>(); + for (EventDetail eventDetail : info) { + Double persistTime = eventDetail.getDuration(); + if (persistTime / 1000 < 0.1) { + timeMap2.put("<0.1", timeMap2.get("<0.1") + 1); + } + if (persistTime / 1000 < 0.25) { + timeMap2.put("<0.25", timeMap2.get("<0.25") + 1); + } + if (persistTime / 1000 < 0.5) { + timeMap2.put("<0.5", timeMap2.get("<0.5") + 1); + } + if (persistTime / 1000 < 1) { + timeMap2.put("<1", timeMap2.get("<1") + 1); + } + if (persistTime / 1000 < 3) { + timeMap2.put("<3", timeMap2.get("<3") + 1); + } + if (persistTime / 1000 < 20) { + timeMap2.put("<20", timeMap2.get("<20") + 1); + } + if (persistTime / 1000 < 60) { + timeMap2.put("<60", timeMap2.get("<60") + 1); + } + if (persistTime / 1000 < 180) { + timeMap2.put("<180", timeMap2.get("<180") + 1); + } + } + Set time2Set = timeMap2.keySet(); + for (int i = 0; i < strings2.size(); i++) { + for (String s : time2Set) { + if (strings2.get(i).equals(s)) { + if (timeMap2.get(s) == 0) { + sisttime.add(".00"); + break; + } + if (timeMap2.get(s) / count.floatValue() == 1.0) { + sisttime.add("100.00"); + } else { + String s1 = String.format("%.4f", (timeMap2.get(s) / count.doubleValue())); + sisttime.add(s1.substring(2, 4) + "." + s1.substring(4, 6)); + } + } + } + } + sisttime.add("100.00"); + result.setSisttime(sisttime); + return result; + } + + + /** + * 暂降事件点图 + * + * @author wr + */ + @Override + public List getPlot(List info, List reasonData, List typeData) { + //添加detail + for (EventDetail detail : info) { + for (DictData data : reasonData) { + if (data.getId().equals(detail.getAdvanceReason())) { + detail.setAdvanceReason(data.getName()); + } + } + for (DictData data : typeData) { + if (data.getId().equals(detail.getAdvanceType())) { + detail.setAdvanceType(data.getName()); + } + } + } + return info; + } + + @Override + public StatisticVO getStatistic(List info, List reasonData, List typeData) { + StatisticVO result = new StatisticVO(); + List list = new ArrayList<>(); + List reasonsVOS = new ArrayList<>(); + List typesVOS = new ArrayList<>(); + + HashMap reasonMap = new HashMap<>(); + HashMap typeMap = new HashMap<>(); + //添加detail + for (EventDetail detail : info) { + for (DictData data : reasonData) { + reasonMap.put(data.getName(), 0); + if (data.getId().equals(detail.getAdvanceReason())) { + detail.setAdvanceReason(data.getName()); + } + } + for (DictData data : typeData) { + typeMap.put(data.getName(), 0); + if (data.getId().equals(detail.getAdvanceType())) { + detail.setAdvanceType(data.getName()); + } + } + list.add(detail); + } + + //添加reason到map + for (EventDetail data : list) { + if (reasonMap.get(data.getAdvanceReason()) != null) { + reasonMap.put(data.getAdvanceReason(), reasonMap.get(data.getAdvanceReason()) + 1); + } + } + //添加type到map + for (EventDetail data : list) { + if (typeMap.get(data.getAdvanceType()) != null) { + typeMap.put(data.getAdvanceType(), typeMap.get(data.getAdvanceType()) + 1); + } + } + Set reasonKeyset = reasonMap.keySet(); + Set typeKeyset = typeMap.keySet(); + for (String s : reasonKeyset) { + reasonsVOS.add(new ReasonsVO(s, reasonMap.get(s), null)); + } + for (String s : typeKeyset) { + typesVOS.add(new TypesVO(s, typeMap.get(s))); + } + result.setTypes(typesVOS); + result.setReason(reasonsVOS); + return result; + } + + + @Override + public Integer[][] getCoords(List info) { + Integer[][] eventDensityData = new Integer[90][3]; + for (int i = 0; i < 10; i++) { +// eventDensityData[i] = new Integer[]{i % 10, i % 9, 0}; + for (int j = 0; j < 9; j++) { + eventDensityData[i * 9 + j] = new Integer[]{i, j % 9, 0}; + } + } + for (int i = 0; i < info.size(); i++) { + Integer index = null; + if (info.get(i).getFeatureAmplitude() >= 0 && info.get(i).getFeatureAmplitude() <= 0.1) { + if (info.get(i).getDuration() / 1000 > 0 && info.get(i).getDuration() / 1000 <= 0.020) { + index = 0; + } else if (info.get(i).getDuration() / 1000 <= 0.040 && info.get(i).getDuration() / 1000 > 0.020) { + index = 1; + } else if (info.get(i).getDuration() / 1000 <= 0.060 && info.get(i).getDuration() / 1000 > 0.040) { + index = 2; + } else if (info.get(i).getDuration() / 1000 <= 0.080 && info.get(i).getDuration() / 1000 > 0.060) { + index = 3; + } else if (info.get(i).getDuration() / 1000 <= 0.120 && info.get(i).getDuration() / 1000 > 0.080) { + index = 4; + } else if (info.get(i).getDuration() / 1000 > 0.120 && info.get(i).getDuration() / 1000 < 0.200) { + index = 5; + } else if (info.get(i).getDuration() / 1000 >= 0.200 && info.get(i).getDuration() / 1000 < 0.400) { + index = 6; + } else if (info.get(i).getDuration() / 1000 >= 0.400 && info.get(i).getDuration() / 1000 < 0.600) { + index = 7; + } else if (info.get(i).getDuration() / 1000 >= 0.600 && info.get(i).getDuration() / 1000 <= 1.200) { + index = 8; + } + } else if (info.get(i).getFeatureAmplitude() > 0.1 && info.get(i).getFeatureAmplitude() <= 0.2) { + if (info.get(i).getDuration() / 1000 > 0 && info.get(i).getDuration() / 1000 <= 0.020) { + index = 9; + } else if (info.get(i).getDuration() / 1000 <= 0.040 && info.get(i).getDuration() / 1000 > 0.020) { + index = 10; + } else if (info.get(i).getDuration() / 1000 <= 0.060 && info.get(i).getDuration() / 1000 > 0.040) { + index = 11; + } else if (info.get(i).getDuration() / 1000 <= 0.080 && info.get(i).getDuration() / 1000 > 0.060) { + index = 12; + } else if (info.get(i).getDuration() / 1000 <= 0.120 && info.get(i).getDuration() / 1000 > 0.080) { + index = 13; + } else if (info.get(i).getDuration() / 1000 > 0.120 && info.get(i).getDuration() / 1000 < 0.200) { + index = 14; + } else if (info.get(i).getDuration() / 1000 >= 0.200 && info.get(i).getDuration() / 1000 < 0.400) { + index = 15; + } else if (info.get(i).getDuration() / 1000 >= 0.400 && info.get(i).getDuration() / 1000 < 0.600) { + index = 16; + } else if (info.get(i).getDuration() / 1000 >= 0.600 && info.get(i).getDuration() / 1000 <= 1.200) { + index = 17; + } + } else if (info.get(i).getFeatureAmplitude() > 0.2 && info.get(i).getFeatureAmplitude() <= 0.3) { + if (info.get(i).getDuration() / 1000 > 0 && info.get(i).getDuration() / 1000 <= 0.020) { + index = 18; + } else if (info.get(i).getDuration() / 1000 <= 0.040 && info.get(i).getDuration() / 1000 > 0.020) { + index = 19; + } else if (info.get(i).getDuration() / 1000 <= 0.060 && info.get(i).getDuration() / 1000 > 0.040) { + index = 20; + } else if (info.get(i).getDuration() / 1000 <= 0.080 && info.get(i).getDuration() / 1000 > 0.060) { + index = 21; + } else if (info.get(i).getDuration() / 1000 <= 0.120 && info.get(i).getDuration() / 1000 > 0.080) { + index = 22; + } else if (info.get(i).getDuration() / 1000 > 0.120 && info.get(i).getDuration() / 1000 < 0.200) { + index = 23; + } else if (info.get(i).getDuration() / 1000 >= 0.200 && info.get(i).getDuration() / 1000 < 0.400) { + index = 24; + } else if (info.get(i).getDuration() / 1000 >= 0.400 && info.get(i).getDuration() / 1000 < 0.600) { + index = 25; + } else if (info.get(i).getDuration() / 1000 >= 0.600 && info.get(i).getDuration() / 1000 <= 1.200) { + index = 26; + } + } else if (info.get(i).getFeatureAmplitude() > 0.3 && info.get(i).getFeatureAmplitude() <= 0.4) { + if (info.get(i).getDuration() / 1000 > 0 && info.get(i).getDuration() / 1000 <= 0.020) { + index = 27; + } else if (info.get(i).getDuration() / 1000 <= 0.040 && info.get(i).getDuration() / 1000 > 0.020) { + index = 28; + } else if (info.get(i).getDuration() / 1000 <= 0.060 && info.get(i).getDuration() / 1000 > 0.040) { + index = 29; + } else if (info.get(i).getDuration() / 1000 <= 0.080 && info.get(i).getDuration() / 1000 > 0.060) { + index = 30; + } else if (info.get(i).getDuration() / 1000 <= 0.120 && info.get(i).getDuration() / 1000 > 0.080) { + index = 31; + } else if (info.get(i).getDuration() / 1000 > 0.120 && info.get(i).getDuration() / 1000 < 0.200) { + index = 32; + } else if (info.get(i).getDuration() / 1000 >= 0.200 && info.get(i).getDuration() / 1000 < 0.400) { + index = 33; + } else if (info.get(i).getDuration() / 1000 >= 0.400 && info.get(i).getDuration() / 1000 < 0.600) { + index = 34; + } else if (info.get(i).getDuration() / 1000 >= 0.600 && info.get(i).getDuration() / 1000 <= 1.200) { + index = 35; + } + } else if (info.get(i).getFeatureAmplitude() > 0.4 && info.get(i).getFeatureAmplitude() <= 0.5) { + if (info.get(i).getDuration() / 1000 > 0 && info.get(i).getDuration() / 1000 <= 0.020) { + index = 36; + } else if (info.get(i).getDuration() / 1000 <= 0.040 && info.get(i).getDuration() / 1000 > 0.020) { + index = 37; + } else if (info.get(i).getDuration() / 1000 <= 0.060 && info.get(i).getDuration() / 1000 > 0.040) { + index = 38; + } else if (info.get(i).getDuration() / 1000 <= 0.080 && info.get(i).getDuration() / 1000 > 0.060) { + index = 39; + } else if (info.get(i).getDuration() / 1000 <= 0.120 && info.get(i).getDuration() / 1000 > 0.080) { + index = 40; + } else if (info.get(i).getDuration() / 1000 > 0.120 && info.get(i).getDuration() / 1000 < 0.200) { + index = 41; + } else if (info.get(i).getDuration() / 1000 >= 0.200 && info.get(i).getDuration() / 1000 < 0.400) { + index = 42; + } else if (info.get(i).getDuration() / 1000 >= 0.400 && info.get(i).getDuration() / 1000 < 0.600) { + index = 43; + } else if (info.get(i).getDuration() / 1000 >= 0.600 && info.get(i).getDuration() / 1000 <= 1.200) { + index = 44; + } + } else if (info.get(i).getFeatureAmplitude() > 0.5 && info.get(i).getFeatureAmplitude() <= 0.6) { + if (info.get(i).getDuration() / 1000 > 0 && info.get(i).getDuration() / 1000 <= 0.020) { + index = 45; + } else if (info.get(i).getDuration() / 1000 <= 0.040 && info.get(i).getDuration() / 1000 > 0.020) { + index = 46; + } else if (info.get(i).getDuration() / 1000 <= 0.060 && info.get(i).getDuration() / 1000 > 0.040) { + index = 47; + } else if (info.get(i).getDuration() / 1000 <= 0.080 && info.get(i).getDuration() / 1000 > 0.060) { + index = 48; + } else if (info.get(i).getDuration() / 1000 <= 0.120 && info.get(i).getDuration() / 1000 > 0.080) { + index = 49; + } else if (info.get(i).getDuration() / 1000 > 0.120 && info.get(i).getDuration() / 1000 < 0.200) { + index = 50; + } else if (info.get(i).getDuration() / 1000 >= 0.200 && info.get(i).getDuration() / 1000 < 0.400) { + index = 51; + } else if (info.get(i).getDuration() / 1000 >= 0.400 && info.get(i).getDuration() / 1000 < 0.600) { + index = 52; + } else if (info.get(i).getDuration() / 1000 >= 0.600 && info.get(i).getDuration() / 1000 <= 1.200) { + index = 53; + } + } else if (info.get(i).getFeatureAmplitude() > 0.6 && info.get(i).getFeatureAmplitude() <= 0.7) { + if (info.get(i).getDuration() / 1000 > 0 && info.get(i).getDuration() / 1000 <= 0.020) { + index = 54; + } else if (info.get(i).getDuration() / 1000 <= 0.040 && info.get(i).getDuration() / 1000 > 0.020) { + index = 55; + } else if (info.get(i).getDuration() / 1000 <= 0.060 && info.get(i).getDuration() / 1000 > 0.040) { + index = 56; + } else if (info.get(i).getDuration() / 1000 <= 0.080 && info.get(i).getDuration() / 1000 > 0.060) { + index = 57; + } else if (info.get(i).getDuration() / 1000 <= 0.120 && info.get(i).getDuration() / 1000 > 0.080) { + index = 58; + } else if (info.get(i).getDuration() / 1000 > 0.120 && info.get(i).getDuration() / 1000 < 0.200) { + index = 59; + } else if (info.get(i).getDuration() / 1000 >= 0.200 && info.get(i).getDuration() / 1000 < 0.400) { + index = 60; + } else if (info.get(i).getDuration() / 1000 >= 0.400 && info.get(i).getDuration() / 1000 < 0.600) { + index = 61; + } else if (info.get(i).getDuration() / 1000 >= 0.600 && info.get(i).getDuration() / 1000 <= 1.200) { + index = 62; + } + } else if (info.get(i).getFeatureAmplitude() > 0.7 && info.get(i).getFeatureAmplitude() <= 0.8) { + if (info.get(i).getDuration() / 1000 > 0 && info.get(i).getDuration() / 1000 <= 0.020) { + index = 63; + } else if (info.get(i).getDuration() / 1000 <= 0.040 && info.get(i).getDuration() / 1000 > 0.020) { + index = 64; + } else if (info.get(i).getDuration() / 1000 <= 0.060 && info.get(i).getDuration() / 1000 > 0.040) { + index = 65; + } else if (info.get(i).getDuration() / 1000 <= 0.080 && info.get(i).getDuration() / 1000 > 0.060) { + index = 66; + } else if (info.get(i).getDuration() / 1000 <= 0.120 && info.get(i).getDuration() / 1000 > 0.080) { + index = 67; + } else if (info.get(i).getDuration() / 1000 > 0.120 && info.get(i).getDuration() / 1000 < 0.200) { + index = 68; + } else if (info.get(i).getDuration() / 1000 >= 0.200 && info.get(i).getDuration() / 1000 < 0.400) { + index = 69; + } else if (info.get(i).getDuration() / 1000 >= 0.400 && info.get(i).getDuration() / 1000 < 0.600) { + index = 70; + } else if (info.get(i).getDuration() / 1000 >= 0.600 && info.get(i).getDuration() / 1000 <= 1.200) { + index = 71; + } + } else if (info.get(i).getFeatureAmplitude() > 0.8 && info.get(i).getFeatureAmplitude() <= 0.9) { + if (info.get(i).getDuration() / 1000 > 0 && info.get(i).getDuration() / 1000 <= 0.020) { + index = 72; + } else if (info.get(i).getDuration() / 1000 <= 0.040 && info.get(i).getDuration() / 1000 > 0.020) { + index = 73; + } else if (info.get(i).getDuration() / 1000 <= 0.060 && info.get(i).getDuration() / 1000 > 0.040) { + index = 74; + } else if (info.get(i).getDuration() / 1000 <= 0.080 && info.get(i).getDuration() / 1000 > 0.060) { + index = 75; + } else if (info.get(i).getDuration() / 1000 <= 0.120 && info.get(i).getDuration() / 1000 > 0.080) { + index = 76; + } else if (info.get(i).getDuration() / 1000 > 0.120 && info.get(i).getDuration() / 1000 < 0.200) { + index = 77; + } else if (info.get(i).getDuration() / 1000 >= 0.200 && info.get(i).getDuration() / 1000 < 0.400) { + index = 78; + } else if (info.get(i).getDuration() / 1000 >= 0.400 && info.get(i).getDuration() / 1000 < 0.600) { + index = 79; + } else if (info.get(i).getDuration() / 1000 >= 0.600 && info.get(i).getDuration() / 1000 <= 1.200) { + index = 80; + } + } else { + if (info.get(i).getDuration() / 1000 > 0 && info.get(i).getDuration() / 1000 <= 0.020) { + index = 81; + } else if (info.get(i).getDuration() / 1000 <= 0.040 && info.get(i).getDuration() / 1000 > 0.020) { + index = 82; + } else if (info.get(i).getDuration() / 1000 <= 0.060 && info.get(i).getDuration() / 1000 > 0.040) { + index = 83; + } else if (info.get(i).getDuration() / 1000 <= 0.080 && info.get(i).getDuration() / 1000 > 0.060) { + index = 84; + } else if (info.get(i).getDuration() / 1000 <= 0.120 && info.get(i).getDuration() / 1000 > 0.080) { + index = 85; + } else if (info.get(i).getDuration() / 1000 > 0.120 && info.get(i).getDuration() / 1000 < 0.200) { + index = 86; + } else if (info.get(i).getDuration() / 1000 >= 0.200 && info.get(i).getDuration() / 1000 < 0.400) { + index = 87; + } else if (info.get(i).getDuration() / 1000 >= 0.400 && info.get(i).getDuration() / 1000 < 0.600) { + index = 88; + } else if (info.get(i).getDuration() / 1000 >= 0.600 && info.get(i).getDuration() / 1000 <= 1.200) { + index = 89; + } + } + if (Objects.nonNull(index)) { + Integer[] temNumber = eventDensityData[index]; + temNumber[2] = temNumber[2] + 1; + } + } + return eventDensityData; + } + + + /** + * 暂降原因类型和时间 + * + * @param statisticsParam + * @return + * @author xxy + */ + @Override + public List getReasonTypeTime(StatisticsParam statisticsParam) throws ParseException { + //获取暂降字典信息 + List data = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_STATIS.getCode()).getData(); + List typeList = data.stream().filter(it->it.getCode().equals(DicDataEnum.VOLTAGE_DIP.getCode()) || it.getCode().equals(DicDataEnum.SHORT_INTERRUPTIONS.getCode())).map(DictData::getId).collect(Collectors.toList()); + List list = new ArrayList<>(); + //参数 + StringBuilder builder1 = new StringBuilder(); + StringBuilder builder2 = new StringBuilder(); + QueryResult query = null; + //获取时间字符串 + String startTime = statisticsParam.getStartTime(); + String endTime = statisticsParam.getEndTime(); + Integer startDays = Integer.parseInt(startTime.substring(8, 10)); + Integer endDays = Integer.parseInt(endTime.substring(8, 10)); + Integer startMonth = Integer.parseInt(startTime.substring(5, 7)); + Integer endMonth = Integer.parseInt(endTime.substring(5, 7)); + Integer startYear = Integer.parseInt(startTime.substring(0, 4)); + Integer endYear = Integer.parseInt(endTime.substring(0, 4)); + /* if (statisticsParam.getFlag() == 0) { + while (startYear != endYear && startMonth != endMonth) { + builder1.delete(0, builder1.length()); + builder2.delete(0, builder2.length()); + builder1.append(startYear).append("-").append(startMonth).append("-").append(startDays); + if (startMonth + 1 == 13) { + builder2.append(startYear + 1).append("-").append(1).append("-").append(startDays); + } else { + builder2.append(startYear).append("-").append(startMonth + 1).append("-").append(startDays); + } + + List eventDetailList = eventDetailService.list(new LambdaQueryWrapper() + .eq(RmpEventDetailPO::getMeasurementPointId, statisticsParam.getLineIndex()) + .in(RmpEventDetailPO::getEventType,typeList) + .ge(StringUtils.isNotBlank(statisticsParam.getStartTime()), RmpEventDetailPO::getStartTime, DateUtil.beginOfDay(DateUtil.parse(statisticsParam.getStartTime()))) + .le(StringUtils.isNotBlank(statisticsParam.getEndTime()), RmpEventDetailPO::getStartTime, DateUtil.endOfDay(DateUtil.parse(statisticsParam.getEndTime()))) + ); + long count = eventDetailList.stream().filter(x -> typeList.contains(x.getEventType())).count(); + if (startMonth < 10) { + list.add(new TimeVO(null, null, "", "0" + startMonth.toString(), count + "", startYear.toString(), startYear.toString() + "-" + "0" + startMonth.toString())); + } else { + list.add(new TimeVO(null, null, "", startMonth.toString(), count + "", startYear.toString(), startYear.toString() + "-" + startMonth.toString())); + } + startMonth++; + if (startMonth == 13) { + startYear++; + startMonth = 1; + } + } + builder1.delete(0, builder1.length()); + builder2.delete(0, builder2.length()); + builder1.append(startYear).append("-").append(startMonth).append("-").append(startDays); + builder2.append(startYear).append("-").append(startMonth).append("-").append(endDays); +// query = MonitorQuery(new StatisticsParam(statisticsParam.getLineIndex(),builder1.toString(), builder2.toString(), statisticsParam.getFlag())); +// InfluxDBResultMapper influxDBResultMapper = new InfluxDBResultMapper(); +// List eventDetailList = influxDBResultMapper.toPOJO(query, EventDetail.class); +// long count1 = eventDetailList.stream().filter(x -> x.getWaveType() == 1).count(); + List eventDetailList = eventDetailService.list(new LambdaQueryWrapper() + .eq(RmpEventDetailPO::getMeasurementPointId, statisticsParam.getLineIndex()) + .in(RmpEventDetailPO::getEventType, typeList) + .ge(StringUtils.isNotBlank(statisticsParam.getStartTime()), RmpEventDetailPO::getStartTime, DateUtil.beginOfDay(DateUtil.parse(statisticsParam.getStartTime()))) + .le(StringUtils.isNotBlank(statisticsParam.getEndTime()), RmpEventDetailPO::getStartTime, DateUtil.endOfDay(DateUtil.parse(statisticsParam.getEndTime()))) + ); + long count1 = eventDetailList.stream().filter(x -> typeList.contains(x.getEventType())).count(); + if (startMonth < 10) { + list.add(new TimeVO(null, null, "", "0" + startMonth.toString(), count1 + "", startYear.toString(), startYear.toString() + "-" + "0" + startMonth.toString())); + } else { + list.add(new TimeVO(null, null, "", startMonth.toString(), count1 + "", startYear.toString(), startYear.toString() + "-" + startMonth.toString())); + } + return list; + } else { + + List eventDetailList = eventDetailService.list(new LambdaQueryWrapper() + .eq(RmpEventDetailPO::getMeasurementPointId, statisticsParam.getLineIndex()) + .in(RmpEventDetailPO::getEventType, typeList) + .ge(StringUtils.isNotBlank(statisticsParam.getStartTime()), RmpEventDetailPO::getStartTime, DateUtil.beginOfDay(DateUtil.parse(statisticsParam.getStartTime()))) + .le(StringUtils.isNotBlank(statisticsParam.getEndTime()), RmpEventDetailPO::getStartTime, DateUtil.endOfDay(DateUtil.parse(statisticsParam.getEndTime()))) + ); + + Map> map = eventDetailList.stream().filter(x -> typeList.contains(x.getEventType())) + .peek(t -> t.setFormatTime(t.getStartTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")))) + .collect(Collectors.groupingBy(RmpEventDetailPO::getFormatTime)); + Set keySet = map.keySet(); + LocalDate parse1 = LocalDate.parse(startTime); + LocalDate parse2 = LocalDate.parse(endTime); + while (!parse1.equals(parse2.plus(1, ChronoUnit.DAYS))) { + if (keySet.contains(parse1.toString())) { +// List eventDetailNews = map.get(parse1.toString()); + List eventDetailNews = map.get(parse1.toString()); + TimeVO timeVO = new TimeVO(); + timeVO.setTimes(eventDetailNews.size() + ""); + if (parse1.getDayOfMonth() < 10) { + timeVO.setDay("0" + parse1.getDayOfMonth() + ""); + } else { + timeVO.setDay(parse1.getDayOfMonth() + ""); + } + timeVO.setYear(parse1.getYear() + ""); + if (parse1.getMonthValue() < 10) { + timeVO.setMonth("0" + parse1.getMonthValue() + ""); + } else { + timeVO.setMonth(parse1.getMonthValue() + ""); + } + timeVO.setFulltime(parse1.toString()); + list.add(timeVO); + } else { + TimeVO timeVO = new TimeVO(); + timeVO.setTimes("0"); + if (parse1.getDayOfMonth() < 10) { + timeVO.setDay("0" + parse1.getDayOfMonth() + ""); + } else { + timeVO.setDay(parse1.getDayOfMonth() + ""); + } + timeVO.setYear(parse1.getYear() + ""); + if (parse1.getMonthValue() < 10) { + timeVO.setMonth("0" + parse1.getMonthValue() + ""); + } else { + timeVO.setMonth(parse1.getMonthValue() + ""); + } + timeVO.setFulltime(parse1.toString()); + list.add(timeVO); + } + parse1 = parse1.plus(1, ChronoUnit.DAYS); + } + return list; + }*/ + + return list; + } + +}