Merge remote-tracking branch 'origin/master'

This commit is contained in:
贾同学
2025-12-09 09:00:34 +08:00
22 changed files with 2921 additions and 1220 deletions

View File

@@ -57,6 +57,11 @@
<version>1.0.0</version> <version>1.0.0</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency>
<groupId>com.njcn</groupId>
<artifactId>common-poi</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies> </dependencies>
<properties> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
//}

View File

@@ -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;
//}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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<String> eventvalue;
@ApiModelProperty(name = "pereventvalue")
private List<String> pereventvalue;
@ApiModelProperty(name = "persisttime")
private List<String> persisttime;
@ApiModelProperty(name = "sisttime")
private List<String> sisttime;
}

View File

@@ -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;
}

View File

@@ -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<EventDetail> detail;
@ApiModelProperty(name = "f47")
private String f47;
@ApiModelProperty(name = "itic")
private String itic;
@ApiModelProperty(name = "reason")
private List<ReasonsVO> reason;
@ApiModelProperty(name = "totalTimes")
private Integer totalTimes;
@ApiModelProperty(name = "types")
private List<TypesVO> types;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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<amount;i++){
run.addCarriageReturn();
}
}
/**
* 添加段落文本
* @param run 文本执行对象
* @param fontFamily 字体类型
* @param fontSize 字体大小
* @param backgroundColor 字体颜色
* @param bold 是否加粗
*/
public static void addParagraph(XWPFRun run,String fontFamily,Integer fontSize,String backgroundColor,String message,boolean bold){
run.setText(message);
run.setColor(backgroundColor);
run.setFontSize(fontSize);
run.setFontFamily(fontFamily);
run.setBold(bold);
}
/**
* 增加自定义标题样式。这里用的是stackoverflow的源码
*
* @param docxDocument 目标文档
* @param strStyleId 样式名称
* @param headingLevel 样式级别
*/
public static void addCustomHeadingStyle(XWPFDocument docxDocument, String strStyleId, int headingLevel) {
CTStyle ctStyle = CTStyle.Factory.newInstance();
ctStyle.setStyleId(strStyleId);
CTString styleName = CTString.Factory.newInstance();
styleName.setVal(strStyleId);
ctStyle.setName(styleName);
CTDecimalNumber indentNumber = CTDecimalNumber.Factory.newInstance();
indentNumber.setVal(BigInteger.valueOf(headingLevel));
// lower number > 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<data.length;i++){
XWPFRun run =paragraph.createRun();
run.setFontFamily("宋体");
run.setText(data[i]);
row.getCell(i).setParagraph(paragraph);
paragraph.removeRun(0);
}
}
/**
* 添加表头标题一行数据
* @param paragraph 段落对象
* @param row 行对象
* @param data 不定长度的数据
*/
public static void setExcelHeadContent(XWPFParagraph paragraph, XWPFTableRow row,String... data){
XWPFRun run= paragraph.createRun();
run.setFontFamily("宋体");
run.setBold(true);
run.setText(data[0]);
row.getCell(0).setParagraph(paragraph);
paragraph.removeRun(0);
for(int i=1;i<data.length;i++){
XWPFRun run1 =paragraph.createRun();
run1.setFontFamily("宋体");
run1.setBold(true);
run1.setText(data[i]);
row.addNewTableCell().setParagraph(paragraph);
paragraph.removeRun(0);
}
}
/**
* 获取当前的日期
* @return
*/
public static String getRightNow(){
Calendar rightNow = Calendar.getInstance();
Integer year = rightNow.get(Calendar.YEAR);
Integer month = rightNow.get(Calendar.MONTH)+1;
Integer day = rightNow.get(rightNow.DAY_OF_MONTH);
return year+""+month+""+day+"";
}
}

View File

@@ -6,19 +6,17 @@ import com.njcn.oss.utils.FileStorageUtil;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.poi.xwpf.usermodel.*; import org.apache.poi.xwpf.usermodel.*;
import org.apache.tomcat.util.http.fileupload.IOUtils;
import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.FileCopyUtils;
import javax.servlet.ServletOutputStream; import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayInputStream; import java.io.*;
import java.io.ByteArrayOutputStream; import java.util.*;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@@ -29,18 +27,25 @@ import java.util.regex.Pattern;
public class WordUtil2 { public class WordUtil2 {
private final ResourceLoader resourceLoader;
private final FileStorageUtil fileStorageUtil; private final FileStorageUtil fileStorageUtil;
public void getWord(String path, Map<String, Object> params, String fileName,List<List<String[]>> tableList, HttpServletResponse response) public void getWord(String path, Map<String, Object> params, String fileName,List<List<String[]>> tableList, HttpServletResponse response)
throws Exception { throws Exception {
byte[] docBytes = null;
path = ClearPathUtil.cleanString(path); path = ClearPathUtil.cleanString(path);
InputStream inStream = null; InputStream is = null;
CustomXWPFDocument doc = null; CustomXWPFDocument doc = null;
//读取报告模板 //读取报告模板
try { try {
inStream = new ClassPathResource(path).getInputStream();; Resource resource = resourceLoader.getResource("classpath:" + path);
doc = new CustomXWPFDocument(inStream); if (!resource.exists()) {
throw new FileNotFoundException("模板文件未找到: " + path);
}
is = resource.getInputStream();
doc = new CustomXWPFDocument(is);
if(CollUtil.isNotEmpty(tableList)){ if(CollUtil.isNotEmpty(tableList)){
this.replaceInTable(doc, params,tableList); this.replaceInTable(doc, params,tableList);
}else{ }else{
@@ -51,8 +56,8 @@ public class WordUtil2 {
} catch (IOException e) { } catch (IOException e) {
getError("获取报告模板异常,原因为:" + e); getError("获取报告模板异常,原因为:" + e);
} finally { } finally {
if (null != inStream) { if (null != is) {
inStream.close(); is.close();
} }
} }
try { 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<String, Object> params, List<List<String[]>> tableList) public InputStream getReportFile(String path, Map<String, Object> params, List<List<String[]>> tableList)
throws Exception { throws Exception {
path = ClearPathUtil.cleanString(path); path = ClearPathUtil.cleanString(path);

View File

@@ -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);
}
}

View File

@@ -1341,7 +1341,7 @@ public class WordExportModelController extends BaseController {
} }
wordUtil2.getWord(rtfPath, reportmap, fileName,null, response); wordUtil2.getWord(rtfPath, reportmap, fileName,null, response);
} catch (Exception e) { } catch (Exception e) {
log.error("获取报告发生异常,异常是" + e.getMessage()); log.error("获取报告发生异常,异常是:",e);
} }
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, reportFileUrl, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, reportFileUrl, methodDescribe);
} }

View File

@@ -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;
}

View File

@@ -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<DISDIPVO> eventDisdip(List<EventDetail> info);
/**
* 获取IEC411数据
* @param info influxdb查询结果pqs_eventdetail表
* @return
*/
List<IEC411VO> IEC411(List<EventDetail> info);
/**
* 获取IEC28数据
* @param info influxdb查询结果pqs_eventdetail表
* @return
*/
List<IEC28VO> IEC28(List<EventDetail> info);
/**
*暂降幅值概率分布
* @param info2 influxdb查询结果pqs_eventdetail表
* @return
*/
ProbabilityVO getProbabilityDistribution(List<EventDetail> info2);
/**
* 获取点状表格数据2.1
* @param info 结果集
* @param reasonData 暂降原因
* @param typeData 暂降类型
* @return
*/
List<EventDetail> getPlot(List<EventDetail> info, List<DictData> reasonData, List<DictData> typeData);
/**
* 获取详细数据对象
* @param info
* @param reasonData
* @param typeData
* @return
*/
StatisticVO getStatistic(List<EventDetail> info,List<DictData> reasonData,List<DictData>typeData);
/**
* 获取密度点图
* @param info
* @return
*/
Integer[][] getCoords(List<EventDetail> info);
/**
* 获取时间列表
* @param statisticsParam
* @return
*/
List<TimeVO> getReasonTypeTime(StatisticsParam statisticsParam) throws ParseException;
}

View File

@@ -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<DictData> reasonData = dicDataFeignClient.getDicDataByTypeName(DicDataTypeEnum.EVENT_REASON.getName()).getData();
//获取暂降类型字典
List<DictData> typeData = dicDataFeignClient.getDicDataByTypeName(DicDataTypeEnum.EVENT_TYPE.getName()).getData();
//influxdb查询结果pqs_eventdetail表
List<EventDetail> 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<LineDetailDataVO> 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<List<Monitor>> 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<EventDetail> plot = eventAnalysisService.getPlot(param);
List<EventDetail> 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<List<Double>> 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<DISDIPVO> eventDisdip = eventAnalysisService.eventDisdip(new StatisticsParam(exportParam.getLineId(), exportParam.getSearchBeginTime(), exportParam.getSearchEndTime(),exportParam.getFlag()));
List<DISDIPVO> 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<IEC411VO> iec411VOS = eventAnalysisService.IEC411(new StatisticsParam(exportParam.getLineId(), exportParam.getSearchBeginTime(), exportParam.getSearchEndTime(),exportParam.getFlag()));
List<IEC411VO> 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<IEC28VO> iec28VOS = eventAnalysisService.IEC28(new StatisticsParam(exportParam.getLineId(), exportParam.getSearchBeginTime(), exportParam.getSearchEndTime(),exportParam.getFlag()));
List<IEC28VO> 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<String> ybardata = probabilityVO.getPereventvalue();
List<String> 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<String> ybardata = probabilityVO.getPersisttime();
List<String> 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<TimeVO> reasonTypeTime = eventReportService.getReasonTypeTime(param);
//暂时时间端按月查询不能查询
// List<TimeVO> reasonTypeTime = eventReportService.getReasonTypeTime(param,null);
if (exportParam.isTjtx()) {
createTitle(doc, "4." + i + "." + two + " 月份统计图", "标题 3", 400, 15);
List<Integer> count = new ArrayList<>();
List<String> 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<String> xdata = new ArrayList<>();
List<Map<String, Object>> reasonList = new ArrayList<>();
List<ReasonsVO> reason = statistic.getReason();
for (ReasonsVO reasonsVO : reason) {
Map<String, Object> 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<ReasonsVO> 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<String> xdata = new ArrayList<>();
List<TypesVO> types = statistic.getTypes();
List<Map<String, Object>> reasonList = new ArrayList<>();
for (TypesVO type : types) {
Map<String, Object> 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<TypesVO> 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<List<Double>> getAss(List<EventDetail> plot) {
//TODO 666
ArrayList<List<Double>> list = new ArrayList<>();
for (EventDetail eventDetail : plot) {
ArrayList<Double> 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<EventDetail> info(StatisticsParam statisticsParam) {
//获取事件类型
List<DictData> dictType = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_STATIS.getCode()).getData();
List<String> 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<RmpEventDetailPO> info = eventDetailService.list(new LambdaQueryWrapper<RmpEventDetailPO>()
.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<>();
}
}