Merge branch 'master' of E:\mn\pqs with conflicts.

This commit is contained in:
wurui
2023-02-13 09:33:18 +08:00
parent fd9edd3225
commit 2f16b68ba5
7 changed files with 317 additions and 251 deletions

11
pom.xml
View File

@@ -42,19 +42,19 @@
<properties> <properties>
<!--中间件目标地址--> <!--中间件目标地址-->
<!-- <middle.server.url>198.120.100.195</middle.server.url>--> <!-- <middle.server.url>198.120.100.195</middle.server.url>-->
<middle.server.url>192.168.1.31</middle.server.url> <middle.server.url>192.168.1.18</middle.server.url>
<!--微服务模块发布地址--> <!--微服务模块发布地址-->
<!-- <service.server.url>198.120.100.195</service.server.url>--> <!-- <service.server.url>198.120.100.195</service.server.url>-->
<service.server.url>192.168.1.111</service.server.url> <service.server.url>192.168.1.117</service.server.url>
<!--docker仓库地址--> <!--docker仓库地址-->
<docker.server.url>192.168.1.13</docker.server.url> <docker.server.url>192.168.1.18</docker.server.url>
<!--nacos的ip:port--> <!--nacos的ip:port-->
<nacos.url>${middle.server.url}:18848</nacos.url> <nacos.url>${middle.server.url}:18848</nacos.url>
<!--服务器发布内容为空--> <!--服务器发布内容为空-->
<nacos.namespace></nacos.namespace> <!-- <nacos.namespace></nacos.namespace>-->
<!-- <nacos.namespace>fd74182b-1fce-4dba-afa7-2623b0376205</nacos.namespace>--> <!-- <nacos.namespace>fd74182b-1fce-4dba-afa7-2623b0376205</nacos.namespace>-->
<!-- <nacos.namespace>ba3ba5d1-3480-4755-8b87-6b1fce16201c</nacos.namespace>--> <!-- <nacos.namespace>ba3ba5d1-3480-4755-8b87-6b1fce16201c</nacos.namespace>-->
<!-- <nacos.namespace>f6df4a49-39cb-4355-a8fd-8aeb0c537eb1</nacos.namespace>--> <nacos.namespace>a4165300-4f0e-4042-8a2a-e49ceba0644a</nacos.namespace>
<!--sentinel:port--> <!--sentinel:port-->
<!-- <sentinel.url>192.168.1.14:8080</sentinel.url>--> <!-- <sentinel.url>192.168.1.14:8080</sentinel.url>-->
<sentinel.url>${middle.server.url}:8080</sentinel.url> <sentinel.url>${middle.server.url}:8080</sentinel.url>
@@ -81,6 +81,7 @@
<mybatis.version>2.1.3</mybatis.version> <mybatis.version>2.1.3</mybatis.version>
<druid.version>1.2.5</druid.version> <druid.version>1.2.5</druid.version>
<mysql.version>8.0.19</mysql.version> <mysql.version>8.0.19</mysql.version>
<mariadb.version>2.4.0</mariadb.version>
<oracle.version>21.6.0.0</oracle.version> <oracle.version>21.6.0.0</oracle.version>
<orai18n.version>21.1.0.0</orai18n.version> <orai18n.version>21.1.0.0</orai18n.version>
<mybatis-plus.version>3.4.2</mybatis-plus.version> <mybatis-plus.version>3.4.2</mybatis-plus.version>

View File

@@ -19,18 +19,18 @@
</properties> </properties>
<dependencies> <dependencies>
<!-- <dependency>-->
<!-- <groupId>com.njcn</groupId>-->
<!-- <artifactId>pq-device-boot</artifactId>-->
<!-- <version>${project.version}</version>-->
<!-- </dependency>-->
<dependency> <dependency>
<groupId>com.njcn</groupId> <groupId>com.njcn</groupId>
<artifactId>pms-device-boot</artifactId> <artifactId>pq-device-boot</artifactId>
<version>${project.version}</version> <version>${project.version}</version>
</dependency> </dependency>
<!-- <dependency>-->
<!-- <groupId>com.njcn</groupId>-->
<!-- <artifactId>pms-device-boot</artifactId>-->
<!-- <version>${project.version}</version>-->
<!-- </dependency>-->
<dependency> <dependency>
<groupId>com.njcn</groupId> <groupId>com.njcn</groupId>
<artifactId>common-swagger</artifactId> <artifactId>common-swagger</artifactId>

View File

@@ -139,7 +139,7 @@ public class DeviceInfoParam implements Serializable {
@ApiModelProperty("时间范围标志 0.查询展示天 1.查询展示月") @ApiModelProperty("时间范围标志 0.查询展示天 1.查询展示月")
private Integer timeFlag; private Integer timeFlag;
@ApiModelProperty("报表统计类型 1.年 2.季 3.月 4.周 5.天") @ApiModelProperty("统计类型 1.年 2.季 3.月 4.周 5.天")
private String reportFlag; private String reportFlag;
} }

View File

@@ -77,11 +77,11 @@
<build> <build>
<finalName>eventboot</finalName> <finalName>eventboot</finalName>
<!-- <resources> <resources>
<resource> <resource>
<directory>src/main/java</directory> <directory>src/main/java</directory>
<includes> <includes>
<include>**/*.*</include> <include>**/*.ftl</include>
</includes> </includes>
<filtering>false</filtering> <filtering>false</filtering>
</resource> </resource>
@@ -92,9 +92,9 @@
<include>**/*.properties</include> <include>**/*.properties</include>
<include>**/*.yml</include> <include>**/*.yml</include>
</includes> </includes>
<filtering>false</filtering> <filtering>true</filtering>
</resource> </resource>
</resources>--> </resources>
<plugins> <plugins>
<plugin> <plugin>

View File

@@ -137,7 +137,9 @@ public class ReportController extends BaseController {
@ApiOperation("监测点报告导出") @ApiOperation("监测点报告导出")
@ApiImplicitParam(name = "exportParam", value = "监测点报告导出参数", required = true) @ApiImplicitParam(name = "exportParam", value = "监测点报告导出参数", required = true)
public void getLineExport(@RequestBody @Validated ExportParam exportParam, HttpServletResponse response) throws IOException, InvalidFormatException, TemplateException, ParseException { public void getLineExport(@RequestBody @Validated ExportParam exportParam, HttpServletResponse response) throws IOException, InvalidFormatException, TemplateException, ParseException {
// @RequestParam(name = "lineIndex") String lineIndex,@RequestParam(name = "startTime") String startTime,@RequestParam(name = "endTime") String endTime,@RequestParam("flag")Integer flag reportService.getLineExport(exportParam,response);
// @RequestParam(name = "lineIndex") String lineIndex,@RequestParam(name = "startTime") String startTime,@RequestParam(name = "endTime") String endTime,@RequestParam("flag")Integer flag
// ExportParam exportParam = new ExportParam(); // ExportParam exportParam = new ExportParam();
// exportParam.setFlag(flag); // exportParam.setFlag(flag);
// exportParam.setXq(true); // exportParam.setXq(true);
@@ -169,7 +171,7 @@ public class ReportController extends BaseController {
// simpleDTO.setSort(0); // simpleDTO.setSort(0);
// simpleDTO.setCode("Power_Network"); // simpleDTO.setCode("Power_Network");
// exportParam.setStatisticalType(simpleDTO); // exportParam.setStatisticalType(simpleDTO);
reportService.getLineExport(exportParam,response);
} }
/** /**

View File

@@ -37,6 +37,7 @@ import com.njcn.event.pojo.po.EventDetailNew;
import com.njcn.event.pojo.po.Eventass; import com.njcn.event.pojo.po.Eventass;
import com.njcn.event.pojo.vo.*; import com.njcn.event.pojo.vo.*;
import com.njcn.event.service.majornetwork.EventAnalysisService; import com.njcn.event.service.majornetwork.EventAnalysisService;
import com.njcn.event.service.majornetwork.EventReportService;
import com.njcn.event.service.majornetwork.ReportService; import com.njcn.event.service.majornetwork.ReportService;
import com.njcn.event.utils.EchartsUtil; import com.njcn.event.utils.EchartsUtil;
import com.njcn.event.utils.FreemarkerUtil; import com.njcn.event.utils.FreemarkerUtil;
@@ -109,6 +110,7 @@ public class ReportServiceImpl implements ReportService {
private final RestTemplate restTemplate; private final RestTemplate restTemplate;
private final EventReportService eventReportService;
//调用暂降密度接口 //调用暂降密度接口
private final EventAnalysisService eventAnalysisService; private final EventAnalysisService eventAnalysisService;
@@ -1042,254 +1044,274 @@ public class ReportServiceImpl implements ReportService {
p.setAlignment(ParagraphAlignment.LEFT); p.setAlignment(ParagraphAlignment.LEFT);
createTitle(doc, "4. 总汇信息", "标题 1", 0, 15); 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; int i = 1;
//监测点信息 //1.监测点信息
if (exportParam.isXq()) { if (exportParam.isXq()){
createTitle(doc, "4." + i + " 监测点信息", "标题 2", 200, 15); createTitle(doc,"4."+i+" 监测点信息","标题 2",200,15);
XWPFTable table = createTable(doc); XWPFTable table = createTable(doc);
XWPFParagraph centerParagraph = WordUtils.getCenterParagraph(doc); XWPFParagraph centerParagraph = WordUtils.getCenterParagraph(doc);
HttpResult<LineDetailDataVO> lineDetailData = lineFeignClient.getLineDetailData(exportParam.getLineId()); HttpResult<LineDetailDataVO> lineDetailData = lineFeignClient.getLineDetailData(exportParam.getLineId());
if (ObjectUtil.isNull(lineDetailData)) { if (ObjectUtil.isNull(lineDetailData)){
throw new BusinessException(EventResponseEnum.NOT_FOUND); throw new BusinessException(EventResponseEnum.NOT_FOUND);
} }
insertRow(doc, table, centerParagraph, true, "项目", "描述"); insertRow(doc,table,centerParagraph,true,"项目","描述");
insertRow(doc, table, centerParagraph, false, "监测点名称", lineDetailData.getData().getLineName()); insertRow(doc,table,centerParagraph,false,"监测点名称",lineDetailData.getData().getLineName());
insertRow(doc, table, centerParagraph, false, "电压等级", lineDetailData.getData().getScale()); insertRow(doc,table,centerParagraph,false,"电压等级",lineDetailData.getData().getScale());
insertRow(doc, table, centerParagraph, false, "PT变比", lineDetailData.getData().getPt()); insertRow(doc,table,centerParagraph,false,"PT变比",lineDetailData.getData().getPt());
insertRow(doc, table, centerParagraph, false, "CT变比", lineDetailData.getData().getCt()); insertRow(doc,table,centerParagraph,false,"CT变比",lineDetailData.getData().getCt());
insertRow(doc, table, centerParagraph, false, "协议容量", lineDetailData.getData().getDealCapacity() + ""); insertRow(doc,table,centerParagraph,false,"协议容量",lineDetailData.getData().getDealCapacity()+"");
insertRow(doc, table, centerParagraph, false, "基准容量", lineDetailData.getData().getStandardCapacity() + ""); insertRow(doc,table,centerParagraph,false,"基准容量",lineDetailData.getData().getStandardCapacity()+"");
insertRow(doc, table, centerParagraph, false, "设备容量", lineDetailData.getData().getDevCapacity() + ""); insertRow(doc,table,centerParagraph,false,"设备容量",lineDetailData.getData().getDevCapacity()+"");
insertRow(doc, table, centerParagraph, false, "最小短路容量", lineDetailData.getData().getShortCapacity() + ""); insertRow(doc,table,centerParagraph,false,"最小短路容量",lineDetailData.getData().getShortCapacity()+"");
insertRow(doc, table, centerParagraph, false, "接线方式", lineDetailData.getData().getPtType()); insertRow(doc,table,centerParagraph,false,"接线方式",lineDetailData.getData().getPtType());
i++; i++;
} }
//暂降事件列表 //2.暂降事件暂降事件列表和暂降点图
if (exportParam.isLb()) { //2.1.判断列表和点图是否是要导出
createTitle(doc, "4." + i + " 暂降事件列表", "标题 2", 200, 15); if(exportParam.isLb()||exportParam.isSjdF47() || exportParam.isSjdITIC()){
XWPFTable table = createTable(doc); // List<EventDetail> plot = eventAnalysisService.getPlot(param);
XWPFParagraph centerParagraph = WordUtils.getCenterParagraph(doc); List<EventDetail> plot = eventReportService.getPlot(info,reasonData,typeData);
List<EventDetail> plot = eventAnalysisService.getPlot(new StatisticsParam(exportParam.getLineId(), exportParam.getSearchBeginTime(), exportParam.getSearchEndTime(), exportParam.getFlag())); //暂降事件列表
insertRow(doc, table, centerParagraph, true, "序号", "暂降发生时刻", "暂降赋值(%)", "持续时间(s)", "暂降类型", "暂降原因", "严重度"); if (exportParam.isLb()){
for (int j = 0; j < plot.size(); j++) { createTitle(doc,"4."+i+" 暂降事件列表","标题 2",200,15);
EventDetail eventDetail = plot.get(j); XWPFTable table = createTable(doc);
long l = eventDetail.getTimeId().toEpochMilli();
Date date1 = new Date(l);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
String s = simpleDateFormat.format(date1);
insertRow(doc, table, centerParagraph, false, j + 1 + "", s, eventDetail.getEventValue() + "", eventDetail.getPersistTime() / 1000.0 + "", eventDetail.getEventType(), eventDetail.getEventReason(), eventDetail.getSeverity() + "");
}
i++;
}
//暂降事件点图
if (exportParam.isSjdF47() || exportParam.isSjdITIC()) {
List<EventDetail> detailList = eventAnalysisService.getPlot(new StatisticsParam(exportParam.getLineId(), exportParam.getSearchBeginTime(), exportParam.getSearchEndTime(), exportParam.getFlag()));
createTitle(doc, "4." + i + " 暂降事件点图", "标题 2", 200, 15);
int two = 1;
if (exportParam.isSjdITIC()) {
createTitle(doc, "4." + i + "." + two + " ITIC 曲线", "标题 3", 400, 15);
ArrayList<List<Double>> list = new ArrayList<>();
for (EventDetail eventDetail : detailList) {
ArrayList<Double> doubles = new ArrayList<>();
doubles.add(Double.parseDouble(eventDetail.getPersistTime() / 1000 + ""));
doubles.add(Double.parseDouble(String.valueOf(eventDetail.getEventValue() * 100)));
list.add(doubles);
}
String itic = getITIC(list);
createPic(doc, itic, "ITIC曲线");
two++;
}
if (exportParam.isSjdF47()) {
createTitle(doc, "4." + i + "." + two + " F47 曲线", "标题 3", 400, 15);
ArrayList<List<Double>> list = new ArrayList<>();
for (EventDetail eventDetail : detailList) {
ArrayList<Double> doubles = new ArrayList<>();
doubles.add(Double.parseDouble(eventDetail.getPersistTime() / 1000 + ""));
doubles.add(Double.parseDouble(String.valueOf(eventDetail.getEventValue() * 100)));
list.add(doubles);
}
String f47 = getF47(list);
createPic(doc, f47, "SEMI F47曲线");
two++;
}
i++;
}
//暂降密度
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);
two++;
}
if (exportParam.isMdbg()) {
XWPFParagraph centerParagraph = WordUtils.getCenterParagraph(doc); XWPFParagraph centerParagraph = WordUtils.getCenterParagraph(doc);
createTitle(doc, "4." + i + "." + two + " DISDIP 表格:国际发配电联盟(UNIPEDE)", "标题 3", 400, 15); insertRow(doc,table,centerParagraph,true,"序号","暂降发生时刻","暂降赋值(%)","持续时间(s)","暂降类型","暂降原因","严重度");
List<DISDIPVO> eventDisdip = eventAnalysisService.eventDisdip(new StatisticsParam(exportParam.getLineId(), exportParam.getSearchBeginTime(), exportParam.getSearchEndTime(), exportParam.getFlag())); for (int j = 0; j < plot.size(); j++) {
EventDetail eventDetail = plot.get(j);
long l = eventDetail.getTimeId().toEpochMilli();
Date date1 = new Date(l);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
String s = simpleDateFormat.format(date1);
insertRow(doc,table,centerParagraph,false,j+1+"",s,eventDetail.getEventValue()+"",eventDetail.getPersistTime()/1000.0+"",eventDetail.getEventType(),eventDetail.getEventReason(),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 = getITIC(ass);
createPic(doc,itic,"ITIC曲线");
two++;
}
if (exportParam.isSjdF47()){
createTitle(doc,"4."+i+"."+two+" F47 曲线","标题 3",400,15);
String f47 = getF47(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);
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); XWPFTable table1 = createTable(doc);
insertRow(doc, table1, centerParagraph, true, "剩余电压", "20ms", "100ms", "500ms", "1s", "3s", "20s", "60s", "180s"); insertRow(doc,table1,centerParagraph,true,"剩余电压","20ms","100ms","500ms","1s","3s","20s","60s","180s");
for (int j = 0; j < eventDisdip.size(); j++) { for (int j = 0; j < eventDisdip.size(); j++) {
DISDIPVO disdipvo = eventDisdip.get(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()); insertRow(doc,table1,centerParagraph,false,disdipvo.getName(),disdipvo.getTwentyMs(),disdipvo.getOneHundredMs(),disdipvo.getFiveHundredMs(),disdipvo.getOneS(),disdipvo.getThreeS(),disdipvo.getTwentyS(),disdipvo.getSixtyS(),disdipvo.getOneEightyS());
} }
two++; two++;
createTitle(doc, "4." + i + "." + two + " IEC 61000-4-11:(用电终端的电压暂降抗度)", "标题 3", 400, 15); 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 = eventAnalysisService.IEC411(new StatisticsParam(exportParam.getLineId(), exportParam.getSearchBeginTime(), exportParam.getSearchEndTime(),exportParam.getFlag()));
List<IEC411VO> iec411VOS = eventReportService.IEC411(info);
XWPFTable table2 = createTable(doc); 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"); 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++) { for (int j = 0; j < iec411VOS.size(); j++) {
IEC411VO iec411VO = iec411VOS.get(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()); insertRow(doc,table2,centerParagraph,false,iec411VO.getName(),iec411VO.getTenTwentyMs(),iec411VO.getTwentyOneHundredMs(),iec411VO.getZeroPiontOneTwoS(),iec411VO.getZeroPiontTwoFiveS(),iec411VO.getZeroPiontFive1S(),iec411VO.getGreater1S());
} }
two++; two++;
createTitle(doc, "4." + i + "." + two + " IEC 61000-2-8:(公共电网电压暂降测量统计)", "标题 3", 400, 15); 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 = eventAnalysisService.IEC28(new StatisticsParam(exportParam.getLineId(), exportParam.getSearchBeginTime(), exportParam.getSearchEndTime(),exportParam.getFlag()));
List<IEC28VO> iec28VOS = eventReportService.IEC28(info);
XWPFTable table3 = createTable(doc); 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"); 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++) { for (int j = 0; j < iec28VOS.size(); j++) {
IEC28VO iec28VO = iec28VOS.get(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()); insertRow(doc,table3,centerParagraph,false,iec28VO.getName(),iec28VO.getQ(),iec28VO.getW(),iec28VO.getE(),iec28VO.getR(),iec28VO.getT(),iec28VO.getY(),iec28VO.getU(),iec28VO.getI());
} }
two++; two++;
} }
i++; i++;
} }
//暂降幅值概率分布 //4.暂降幅值概率分布
if (exportParam.isGlfbfz() || exportParam.isGlfbsj()) { if (exportParam.isGlfbfz() || exportParam.isGlfbsj()){
createTitle(doc, "4." + i + " 暂降幅值概率分布图", "标题 2", 200, 15); createTitle(doc,"4."+i+" 暂降幅值概率分布图","标题 2",200,15);
ProbabilityVO probabilityVO = eventAnalysisService.getProbabilityDistribution(new StatisticsParam(exportParam.getLineId(), exportParam.getSearchBeginTime(), exportParam.getSearchEndTime(), exportParam.getFlag())); // ProbabilityVO probabilityVO = eventAnalysisService.getProbabilityDistribution(new StatisticsParam(exportParam.getLineId(), exportParam.getSearchBeginTime(), exportParam.getSearchEndTime(),exportParam.getFlag()));
ProbabilityVO probabilityVO = eventReportService.getProbabilityDistribution(info);
int two = 1; int two = 1;
if (exportParam.isGlfbfz()) { if (exportParam.isGlfbfz()){
createTitle(doc, "4." + i + "." + two + " 暂降幅值的概率分函数", "标题 3", 400, 15); createTitle(doc,"4."+i+"."+two+" 暂降幅值的概率分函数","标题 3",400,15);
List<String> ybardata = probabilityVO.getPereventvalue(); List<String> ybardata = probabilityVO.getPereventvalue();
List<String> ylinedata = probabilityVO.getEventvalue(); List<String> ylinedata = probabilityVO.getEventvalue();
String fz = getFZ(ylinedata, ybardata); String fz = getFZ(ylinedata, ybardata);
createPic(doc, fz, "暂降幅值的概率分布函数"); createPic(doc,fz,"暂降幅值的概率分布函数");
two++; two++;
} }
if (exportParam.isGlfbsj()) { if (exportParam.isGlfbsj()){
createTitle(doc, "4." + i + "." + two + " 持续时间的概率分函数", "标题 3", 400, 15); createTitle(doc,"4."+i+"."+two+" 持续时间的概率分函数","标题 3",400,15);
List<String> ybardata = probabilityVO.getPersisttime(); List<String> ybardata = probabilityVO.getPersisttime();
List<String> ylinedata = probabilityVO.getSisttime(); List<String> ylinedata = probabilityVO.getSisttime();
String sj = getSJ(ylinedata, ybardata); String sj = getSJ(ylinedata, ybardata);
createPic(doc, sj, "持续时间的概率分布函数"); createPic(doc,sj,"持续时间的概率分布函数");
two++; two++;
} }
i++; i++;
} }
//月份统计
if (exportParam.isTjbg() || exportParam.isTjtx()) {
createTitle(doc, "4." + i + " 月份统计", "标题 2", 200, 15); //5.月份统计
if (exportParam.isTjbg() || exportParam.isTjtx()){
createTitle(doc,"4."+i+" 月份统计","标题 2",200,15);
int two = 1; int two = 1;
List<TimeVO> reasonTypeTime = eventAnalysisService.getReasonTypeTime(new StatisticsParam(exportParam.getLineId(), exportParam.getSearchBeginTime(), exportParam.getSearchEndTime(), exportParam.getFlag())); List<TimeVO> reasonTypeTime = eventAnalysisService.getReasonTypeTime(param);
if (exportParam.isTjtx()) { //暂时时间端按月查询不能查询
createTitle(doc, "4." + i + "." + two + " 月份统计图", "标题 3", 400, 15); // List<TimeVO> reasonTypeTime = eventReportService.getReasonTypeTime(param,null);
if (exportParam.isTjtx()){
createTitle(doc,"4."+i+"."+two+" 月份统计图","标题 3",400,15);
List<Integer> count = new ArrayList<>(); List<Integer> count = new ArrayList<>();
List<String> name = new ArrayList<>(); List<String> name = new ArrayList<>();
if (exportParam.getFlag() == 0) { if (exportParam.getFlag()==0){
for (TimeVO timeVO : reasonTypeTime) { for (TimeVO timeVO : reasonTypeTime) {
name.add(timeVO.getMonth() + ""); name.add(timeVO.getMonth()+"");
count.add(Integer.parseInt(timeVO.getTimes())); count.add(Integer.parseInt(timeVO.getTimes()));
} }
} else { }else {
for (TimeVO timeVO : reasonTypeTime) { for (TimeVO timeVO : reasonTypeTime) {
name.add(timeVO.getDay() + ""); name.add(timeVO.getDay()+"");
count.add(Integer.parseInt(timeVO.getTimes())); count.add(Integer.parseInt(timeVO.getTimes()));
} }
} }
String yftj = getYFTJ(name, count, reasonTypeTime.get(0).getYear(), exportParam.getFlag()); String yftj = getYFTJ(name, count, reasonTypeTime.get(0).getYear(),exportParam.getFlag());
createPic(doc, yftj, "月份统计图"); createPic(doc,yftj,"月份统计图");
two++; two++;
} }
if (exportParam.isTjbg()) { if (exportParam.isTjbg()){
XWPFParagraph centerParagraph = WordUtils.getCenterParagraph(doc); XWPFParagraph centerParagraph = WordUtils.getCenterParagraph(doc);
createTitle(doc, "4." + i + "." + two + " 时间统计表格", "标题 3", 400, 15); createTitle(doc,"4."+i+"."+two+" 时间统计表格","标题 3",400,15);
XWPFTable table1 = createTable(doc); XWPFTable table1 = createTable(doc);
if (exportParam.getFlag() == 0) { if (exportParam.getFlag() == 0){
insertRow(doc, table1, centerParagraph, true, "时间(月)", "电压暂降次数"); insertRow(doc,table1,centerParagraph,true,"时间(月)","电压暂降次数");
} else { }else {
insertRow(doc, table1, centerParagraph, true, "时间(天)", "电压暂降次数"); insertRow(doc,table1,centerParagraph,true,"时间(天)","电压暂降次数");
} }
if (exportParam.getFlag() == 0) { if (exportParam.getFlag()==0){
for (int j = 0; j < reasonTypeTime.size(); j++) { for (int j = 0; j < reasonTypeTime.size(); j++) {
TimeVO timeVO = reasonTypeTime.get(j); TimeVO timeVO = reasonTypeTime.get(j);
insertRow(doc, table1, centerParagraph, false, timeVO.getMonth(), timeVO.getTimes()); insertRow(doc,table1,centerParagraph,false,timeVO.getMonth(),timeVO.getTimes());
} }
} else { }else {
for (int j = 0; j < reasonTypeTime.size(); j++) { for (int j = 0; j < reasonTypeTime.size(); j++) {
TimeVO timeVO = reasonTypeTime.get(j); TimeVO timeVO = reasonTypeTime.get(j);
insertRow(doc, table1, centerParagraph, false, timeVO.getDay(), timeVO.getTimes()); insertRow(doc,table1,centerParagraph,false,timeVO.getDay(),timeVO.getTimes());
} }
} }
two++; two++;
} }
i++; i++;
} }
//原因统计
if (exportParam.isYybg() || exportParam.isYytx()) {
createTitle(doc, "4." + i + " 原因统计", "标题 2", 200, 15); //6.原因统计
StatisticVO statistic = eventAnalysisService.getStatistic(new StatisticsParam(exportParam.getLineId(), exportParam.getSearchBeginTime(), exportParam.getSearchEndTime(), exportParam.getFlag())); //6.1整合提出查询语句
int two = 1; Boolean fly=exportParam.isYybg() || exportParam.isYytx()||exportParam.isLxbg() || exportParam.isLxtx();
if (exportParam.isYytx()) { if(fly){
createTitle(doc, "4." + i + "." + two + " 原因统计图", "标题 3", 400, 15); StatisticVO statistic = eventReportService.getStatistic(info,reasonData,typeData);
List<String> xdata = new ArrayList<>(); if (exportParam.isYybg() || exportParam.isYytx()){
List<ReasonsVO> reason = statistic.getReason(); createTitle(doc,"4."+i+" 原因统计","标题 2",200,15);
for (ReasonsVO reasonsVO : reason) { // StatisticVO statistic = eventAnalysisService.getStatistic(new StatisticsParam(exportParam.getLineId(), exportParam.getSearchBeginTime(), exportParam.getSearchEndTime(),exportParam.getFlag()));
xdata.add(reasonsVO.getReason()); int two = 1;
} if (exportParam.isYytx()){
String tr = getR(xdata, reason, "bar9.ftl"); createTitle(doc,"4."+i+"."+two+" 原因统计图","标题 3",400,15);
createPic(doc, tr, "暂降原因图"); List<String> xdata = new ArrayList<>();
two++; List<ReasonsVO> reason = statistic.getReason();
} for (ReasonsVO reasonsVO : reason) {
if (exportParam.isYybg()) { xdata.add(reasonsVO.getReason());
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++;
}
//类型统计
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();
for (TypesVO type : types) {
if (type.getTimes() > 0) {
xdata.add(type.getType());
} }
String tr = getR(xdata, reason,"bar9.ftl");
createPic(doc,tr,"暂降原因图");
two++;
} }
String tr = getT(xdata, types, "bar8.ftl"); if (exportParam.isYybg()){
createPic(doc, tr, "暂降类型图"); XWPFParagraph centerParagraph = WordUtils.getCenterParagraph(doc);
two++; createTitle(doc,"4."+i+"."+two+" 原因统计表格","标题 3",400,15);
} XWPFTable table1 = createTable(doc);
if (exportParam.isLxbg()) { insertRow(doc,table1,centerParagraph,true,"暂降原因","电压暂降次数");
createTitle(doc, "4." + i + "." + two + " 类型统计表格", "标题 3", 400, 15); List<ReasonsVO> reason = statistic.getReason();
XWPFParagraph centerParagraph = WordUtils.getCenterParagraph(doc); for (int j = 0; j < reason.size(); j++) {
XWPFTable table1 = createTable(doc); ReasonsVO reasonsVO = reason.get(j);
insertRow(doc, table1, centerParagraph, true, "暂降原因", "电压暂降次数"); insertRow(doc,table1,centerParagraph,false,reasonsVO.getReason(),reasonsVO.getTimes()+"");
List<TypesVO> types = statistic.getTypes(); }
for (int j = 0; j < types.size(); j++) { two++;
TypesVO typesVO = types.get(j);
insertRow(doc, table1, centerParagraph, false, typesVO.getType(), typesVO.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();
for (TypesVO type : types) {
if (type.getTimes()>0){
xdata.add(type.getType());
}
}
String tr = getT(xdata, types, "bar8.ftl");
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++;
} }
i++;
} }
ServletOutputStream outputStream = response.getOutputStream(); ServletOutputStream outputStream = response.getOutputStream();
String fileName = URLEncoder.encode(exportParam.getLineName() + ".docx", "UTF-8"); String fileName = URLEncoder.encode(exportParam.getLineName() + ".docx", "UTF-8");
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\""); response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
@@ -1298,7 +1320,46 @@ public class ReportServiceImpl implements ReportService {
outputStream.close(); outputStream.close();
} }
public String getStr(String barName, Map<String, Object> map) throws TemplateException, IOException { /**
* 监测点暂降事件点图赋值
* @param plot
* @return
*/
private ArrayList<List<Double>> getAss(List<EventDetail> plot){
ArrayList<List<Double>> list = new ArrayList<>();
for (EventDetail eventDetail : plot) {
ArrayList<Double> doubles = new ArrayList<>();
doubles.add(Double.parseDouble(eventDetail.getPersistTime()/1000+""));
doubles.add(Double.parseDouble(String.valueOf(eventDetail.getEventValue()*100)));
list.add(doubles);
}
return list;
}
/**
* influxdb查询结果集
* @param statisticsParam
* @return
*/
private List<EventDetail> info (StatisticsParam statisticsParam){
//构建sql语句
StringBuffer stringResult=new StringBuffer();
stringResult.append(Param.SELECT).append(Param.EVENT_DETAIL).append(Param.WHERE)
.append("time >= '").append( DateUtil.beginOfDay(DateUtil.parse(statisticsParam.getStartTime()))+"'")
.append(" and time <= '").append(DateUtil.beginOfDay(DateUtil.parse(statisticsParam.getEndTime()))+"'")
.append(" and line_id = '").append(statisticsParam.getLineIndex()+"'")
.append(" and wave_type = 5 ").append(Param.TZ_ASIA_SHANGHAI);
//结果集映射到对象中
System.out.println(stringResult);
QueryResult query = influxDbUtils.query(stringResult.toString());
InfluxDBResultMapper influxDBResultMapper = new InfluxDBResultMapper();
return influxDBResultMapper.toPOJO(query, EventDetail.class);
}
public String getStr(String barName,Map<String,Object> map) throws TemplateException, IOException {
String s = FreemarkerUtil.generateString(barName, "com/njcn/event/template", map); String s = FreemarkerUtil.generateString(barName, "com/njcn/event/template", map);
return EchartsUtil.generateEchartsBase64(s, "8910"); return EchartsUtil.generateEchartsBase64(s, "8910");
} }
@@ -2496,7 +2557,7 @@ public class ReportServiceImpl implements ReportService {
p = doc.createParagraph();// 新建一个段落 p = doc.createParagraph();// 新建一个段落
p.setAlignment(ParagraphAlignment.CENTER); p.setAlignment(ParagraphAlignment.CENTER);
XWPFRun r1 = p.createRun();//创建段落文本 XWPFRun r1 = p.createRun();//创建段落文本
r1.setText("电压" + typeName + "事件区域报告"); r1.setText("电压"+typeName+"事件区域报告");
r1.setBold(true);//设置为粗体 r1.setBold(true);//设置为粗体
r1.setFontSize(36);//字体大小 r1.setFontSize(36);//字体大小
r1.addBreak(); r1.addBreak();
@@ -2528,7 +2589,7 @@ public class ReportServiceImpl implements ReportService {
p = doc.createParagraph();// 新建一个段落 p = doc.createParagraph();// 新建一个段落
p.setAlignment(ParagraphAlignment.CENTER); p.setAlignment(ParagraphAlignment.CENTER);
XWPFRun r3 = p.createRun();//创建段落文本 XWPFRun r3 = p.createRun();//创建段落文本
r3.setText("电压" + typeName + "事件区域报告"); r3.setText("电压"+typeName+"事件区域报告");
r3.setFontSize(24);//字体大小 r3.setFontSize(24);//字体大小
@@ -2539,7 +2600,7 @@ public class ReportServiceImpl implements ReportService {
p.setAlignment(ParagraphAlignment.BOTH); p.setAlignment(ParagraphAlignment.BOTH);
XWPFRun r5 = p.createRun();//创建段落文本 XWPFRun r5 = p.createRun();//创建段落文本
r5.setText(" 中国电网总共有" + size + "个监测点。中国电网在所选择时间段" + areaReportParam.getSearchBeginTime() + "" + areaReportParam.getSearchEndTime() + r5.setText(" 中国电网总共有" + size + "个监测点。中国电网在所选择时间段" + areaReportParam.getSearchBeginTime() + "" + areaReportParam.getSearchEndTime() +
"累计监测到" + typeName + "事件" + eventCount + "条,本报告按照监测点分布," + typeName + "事件统计," + typeName + "事件点图," + typeName + "热力图," + typeName + "密度图," + typeName + "概率分布图,事件关联统计," + typeName + "类型统计," + typeName + "原因统计等方面进行数据分析。"); "累计监测到"+typeName+"事件" + eventCount + "条,本报告按照监测点分布,"+typeName+"事件统计,"+typeName+"事件点图,"+typeName+"热力图,"+typeName+"密度图,"+typeName+"概率分布图,事件关联统计,"+typeName+"类型统计,"+typeName+"原因统计等方面进行数据分析。");
r5.setFontSize(11);//字体大小 r5.setFontSize(11);//字体大小
@@ -3178,17 +3239,17 @@ public class ReportServiceImpl implements ReportService {
oneCount5 = oneCount; oneCount5 = oneCount;
createTitle(doc, "4." + oneCount + " " + typeName + "事件列表", "标题 2", 200, 11); createTitle(doc, "4." + oneCount + " "+typeName+"事件列表", "标题 2", 200, 11);
p = doc.createParagraph();// 新建一个段落 p = doc.createParagraph();// 新建一个段落
p.setAlignment(ParagraphAlignment.BOTH); p.setAlignment(ParagraphAlignment.BOTH);
XWPFRun r12 = p.createRun();//创建段落文本 XWPFRun r12 = p.createRun();//创建段落文本
r12.setText(" 中国电网在所选择的分析时间段内累计监测" + typeName + "记录" + eventCount + "条," + topVoltageList.get(0) + "" + topVoltageList.get(1) + "" + typeName + "事件居多," + r12.setText(" 中国电网在所选择的分析时间段内累计监测"+typeName+"记录" + eventCount + "条," + topVoltageList.get(0) + "" + topVoltageList.get(1) + ""+typeName+"事件居多," +
"" + dayOfMonth + "" + table + "" + typeName + "事件居多,具体见下表(图)"); "" + dayOfMonth + "" + table + ""+typeName+"事件居多,具体见下表(图)");
r12.setFontSize(11);//字体大小 r12.setFontSize(11);//字体大小
createTitle(doc, "4." + oneCount + "." + twoCount + " " + typeName + "事件表格", "标题 3", 400, 11); createTitle(doc, "4." + oneCount + "." + twoCount + " "+typeName+"事件表格", "标题 3", 400, 11);
twoCount2 = twoCount; twoCount2 = twoCount;
@@ -3197,7 +3258,7 @@ public class ReportServiceImpl implements ReportService {
XWPFParagraph monitorInfoExcelParagraph = WordUtils.getCenterParagraph(doc); XWPFParagraph monitorInfoExcelParagraph = WordUtils.getCenterParagraph(doc);
// 表格第一行 // 表格第一行
insertRow(doc, monitorInfo, monitorInfoExcelParagraph, true, "区域", "电压" + typeName + "次数"); insertRow(doc, monitorInfo, monitorInfoExcelParagraph, true, "区域", "电压"+typeName+"次数");
//塞入数据 //塞入数据
@@ -3210,7 +3271,7 @@ public class ReportServiceImpl implements ReportService {
XWPFParagraph monitorInfoExcelParagraph1 = WordUtils.getCenterParagraph(doc); XWPFParagraph monitorInfoExcelParagraph1 = WordUtils.getCenterParagraph(doc);
// 表格第一行 // 表格第一行
insertRow(doc, monitorInfo1, monitorInfoExcelParagraph1, true, "电压等级", "电压" + typeName + "次数"); insertRow(doc, monitorInfo1, monitorInfoExcelParagraph1, true, "电压等级", "电压"+typeName+"次数");
//塞入数据 //塞入数据
@@ -3223,7 +3284,7 @@ public class ReportServiceImpl implements ReportService {
XWPFParagraph monitorInfoExcelParagraph2 = WordUtils.getCenterParagraph(doc); XWPFParagraph monitorInfoExcelParagraph2 = WordUtils.getCenterParagraph(doc);
// 表格第一行 // 表格第一行
insertRow(doc, monitorInfo2, monitorInfoExcelParagraph2, true, "" + table + "", "电压" + typeName + "次数"); insertRow(doc, monitorInfo2, monitorInfoExcelParagraph2, true, "" + table + "", "电压"+typeName+"次数");
//塞入数据 //塞入数据
@@ -3782,7 +3843,7 @@ public class ReportServiceImpl implements ReportService {
*/ */
if (areaReportParam.isEventCountTable()) { if (areaReportParam.isEventCountTable()) {
twoCount2++; twoCount2++;
createTitle(doc, "4." + oneCount5 + "." + twoCount2 + " " + typeName + "事件图形", "标题 3", 400, 11); createTitle(doc, "4." + oneCount5 + "." + twoCount2 + " "+typeName+"事件图形", "标题 3", 400, 11);
//创建部门与监测点次数的map集合 //创建部门与监测点次数的map集合
@@ -3807,7 +3868,7 @@ public class ReportServiceImpl implements ReportService {
} }
String qytj = getQYTJ(xdata, ydata); String qytj = getQYTJ(xdata, ydata);
createPic(doc, qytj, "" + typeName + "事件图形"); createPic(doc, qytj, ""+typeName+"事件图形");
//月份统计 //月份统计
@@ -3828,7 +3889,8 @@ public class ReportServiceImpl implements ReportService {
tableList.add(table); tableList.add(table);
String yftj = getYFTJ1(xdata1, ydata1, ydata2, year, tableList); String yftj = getYFTJ1(xdata1, ydata1, ydata2, year, tableList);
createPic(doc, yftj, "" + typeName + "事件图形"); createPic(doc, yftj, ""+typeName+"事件图形");
//创建部门与监测点次数的map集合 //创建部门与监测点次数的map集合
@@ -3852,7 +3914,7 @@ public class ReportServiceImpl implements ReportService {
ydata3.add(Integer.parseInt(reportCountParam.getCount())); ydata3.add(Integer.parseInt(reportCountParam.getCount()));
} }
String dydj = getDYDJ(xdata3, ydata3); String dydj = getDYDJ(xdata3, ydata3);
createPic(doc, dydj, "" + typeName + "事件图形"); createPic(doc, dydj, ""+typeName+"事件图形");
/** /**
@@ -3864,17 +3926,17 @@ public class ReportServiceImpl implements ReportService {
int twoCount = 1; int twoCount = 1;
createTitle(doc, "4." + oneCount + " " + typeName + "事件列表", "标题 2", 200, 11); createTitle(doc, "4." + oneCount + " "+typeName+"事件列表", "标题 2", 200, 11);
p = doc.createParagraph();// 新建一个段落 p = doc.createParagraph();// 新建一个段落
p.setAlignment(ParagraphAlignment.BOTH); p.setAlignment(ParagraphAlignment.BOTH);
XWPFRun r12 = p.createRun();//创建段落文本 XWPFRun r12 = p.createRun();//创建段落文本
r12.setText(" 中国电网在所选择的分析时间段内累计监测" + typeName + "记录" + eventCount + "条," + topVoltageList.get(0) + "" + topVoltageList.get(1) + "" + typeName + "事件居多," + r12.setText(" 中国电网在所选择的分析时间段内累计监测"+typeName+"记录" + eventCount + "条," + topVoltageList.get(0) + "" + topVoltageList.get(1) + ""+typeName+"事件居多," +
"" + dayOfMonth + "" + table + "" + typeName + "事件居多,具体见下表(图)"); "" + dayOfMonth + "" + table + ""+typeName+"事件居多,具体见下表(图)");
r12.setFontSize(11);//字体大小 r12.setFontSize(11);//字体大小
createTitle(doc, "4." + oneCount + "." + twoCount + " " + typeName + "事件图形", "标题 3", 400, 11); createTitle(doc, "4." + oneCount + "." + twoCount + " "+typeName+"事件图形", "标题 3", 400, 11);
//创建部门与监测点次数的map集合 //创建部门与监测点次数的map集合
@@ -3899,7 +3961,7 @@ public class ReportServiceImpl implements ReportService {
} }
String qytj = getQYTJ(xdata, ydata); String qytj = getQYTJ(xdata, ydata);
createPic(doc, qytj, "" + typeName + "事件图形"); createPic(doc, qytj, ""+typeName+"事件图形");
//月份统计 //月份统计
@@ -3920,7 +3982,8 @@ public class ReportServiceImpl implements ReportService {
tableList.add(table); tableList.add(table);
String yftj = getYFTJ1(xdata1, ydata1, ydata2, year, tableList); String yftj = getYFTJ1(xdata1, ydata1, ydata2, year, tableList);
createPic(doc, yftj, "" + typeName + "事件图形"); createPic(doc, yftj, ""+typeName+"事件图形");
//创建部门与监测点次数的map集合 //创建部门与监测点次数的map集合
@@ -3946,7 +4009,7 @@ public class ReportServiceImpl implements ReportService {
String dydj = getDYDJ(xdata3, ydata3); String dydj = getDYDJ(xdata3, ydata3);
createPic(doc, dydj, "" + typeName + "事件图形"); createPic(doc, dydj, ""+typeName+"事件图形");
//序号计数进行++ //序号计数进行++
@@ -5337,13 +5400,13 @@ public class ReportServiceImpl implements ReportService {
//同步给暂降密度图 //同步给暂降密度图
oneCount4 = oneCount; oneCount4 = oneCount;
createTitle(doc, "4." + oneCount + " " + typeName + "密度", "标题 2", 200, 11); createTitle(doc, "4." + oneCount + " "+typeName+"密度", "标题 2", 200, 11);
p = doc.createParagraph();// 新建一个段落 p = doc.createParagraph();// 新建一个段落
p.setAlignment(ParagraphAlignment.BOTH); p.setAlignment(ParagraphAlignment.BOTH);
XWPFRun r12 = p.createRun();//创建段落文本 XWPFRun r12 = p.createRun();//创建段落文本
r12.setText(" " + typeName + "密度统计可以从幅值和持续时间两个维度直接地反映" + typeName + "事件发生情况,主要反应事件的发生次数," + r12.setText(" "+typeName+"密度统计可以从幅值和持续时间两个维度直接地反映"+typeName+"事件发生情况,主要反应事件的发生次数," +
"中国电网在所选择的分析时间内" + typeName + "事件主要集中在幅值为" + resultList.get(0) + ",持续时间为" + resultList.get(2) + "[根据 IEC 61000-2-8:(公共电网电压" + typeName + "测量统计)算出" + typeName + "事件发生最多的区间],具体见表(图):"); "中国电网在所选择的分析时间内"+typeName+"事件主要集中在幅值为" + resultList.get(0) + ",持续时间为" + resultList.get(2) + "[根据 IEC 61000-2-8:(公共电网电压"+typeName+"测量统计)算出"+typeName+"事件发生最多的区间],具体见表(图):");
r12.setFontSize(11);//字体大小 r12.setFontSize(11);//字体大小
@@ -5367,7 +5430,7 @@ public class ReportServiceImpl implements ReportService {
twoCount++; twoCount++;
createTitle(doc, "4." + oneCount + "." + twoCount + " IEC 61000-4-11:(用电终端的电压" + typeName + "抗度)", "标题 3", 400, 11); createTitle(doc, "4." + oneCount + "." + twoCount + " IEC 61000-4-11:(用电终端的电压"+typeName+"抗度)", "标题 3", 400, 11);
//第二张表 //第二张表
XWPFTable monitorInfo1 = createTable(doc); XWPFTable monitorInfo1 = createTable(doc);
@@ -5386,7 +5449,7 @@ public class ReportServiceImpl implements ReportService {
twoCount++; twoCount++;
createTitle(doc, "4." + oneCount + "." + twoCount + " IEC 61000-2-8:(公共电网电压" + typeName + "测量统计)", "标题 3", 400, 11); createTitle(doc, "4." + oneCount + "." + twoCount + " IEC 61000-2-8:(公共电网电压"+typeName+"测量统计)", "标题 3", 400, 11);
//第二张表 //第二张表
XWPFTable monitorInfo2 = createTable(doc); XWPFTable monitorInfo2 = createTable(doc);
@@ -6789,24 +6852,24 @@ public class ReportServiceImpl implements ReportService {
twoCount1++; twoCount1++;
//如果幅值图存在与幅值的序号保持同步 //如果幅值图存在与幅值的序号保持同步
createTitle(doc, "4." + oneCount4 + "." + twoCount1 + " " + typeName + "密度图", "标题 3", 400, 11); createTitle(doc, "4." + oneCount4 + "." + twoCount1 + " "+typeName+"密度图", "标题 3", 400, 11);
//代码 //代码
} else { } else {
int twoCount = 1; int twoCount = 1;
createTitle(doc, "4." + oneCount + " " + typeName + "密度", "标题 2", 200, 11); createTitle(doc, "4." + oneCount + " "+typeName+"密度", "标题 2", 200, 11);
p = doc.createParagraph();// 新建一个段落 p = doc.createParagraph();// 新建一个段落
p.setAlignment(ParagraphAlignment.BOTH); p.setAlignment(ParagraphAlignment.BOTH);
XWPFRun r12 = p.createRun();//创建段落文本 XWPFRun r12 = p.createRun();//创建段落文本
r12.setText(" " + typeName + "密度统计可以从幅值和持续时间两个维度直接地反映" + typeName + "事件发生情况,主要反应事件的发生次数," + r12.setText(" "+typeName+"密度统计可以从幅值和持续时间两个维度直接地反映"+typeName+"事件发生情况,主要反应事件的发生次数," +
"中国电网在所选择的分析时间内" + typeName + "事件主要集中在幅值为" + resultList.get(0) + ",持续时间为" + resultList.get(2) + "[根据 IEC 61000-2-8:(公共电网电压" + typeName + "测量统计)算出" + typeName + "事件发生最多的区间],具体见表(图):"); "中国电网在所选择的分析时间内"+typeName+"事件主要集中在幅值为" + resultList.get(0) + ",持续时间为" + resultList.get(2) + "[根据 IEC 61000-2-8:(公共电网电压"+typeName+"测量统计)算出"+typeName+"事件发生最多的区间],具体见表(图):");
r12.setFontSize(11);//字体大小 r12.setFontSize(11);//字体大小
createTitle(doc, "4." + oneCount + "." + twoCount + " " + typeName + "密度图", "标题 3", 400, 11); createTitle(doc, "4." + oneCount + "." + twoCount + " "+typeName+"密度图", "标题 3", 400, 11);
//代码 //代码
@@ -6866,12 +6929,12 @@ public class ReportServiceImpl implements ReportService {
oneCount3 = oneCount; oneCount3 = oneCount;
createTitle(doc, "4." + oneCount3 + " " + typeName + "事件点图", "标题 2", 200, 11); createTitle(doc, "4." + oneCount3 + " "+typeName+"事件点图", "标题 2", 200, 11);
p = doc.createParagraph();// 新建一个段落 p = doc.createParagraph();// 新建一个段落
p.setAlignment(ParagraphAlignment.BOTH); p.setAlignment(ParagraphAlignment.BOTH);
XWPFRun r12 = p.createRun();//创建段落文本 XWPFRun r12 = p.createRun();//创建段落文本
r12.setText(" " + typeName + "事件点图统计分成ITIC曲线和F47曲线展示。"); r12.setText(" "+typeName+"事件点图统计分成ITIC曲线和F47曲线展示。");
r12.setFontSize(11);//字体大小 r12.setFontSize(11);//字体大小
@@ -6880,7 +6943,7 @@ public class ReportServiceImpl implements ReportService {
p = doc.createParagraph();// 新建一个段落 p = doc.createParagraph();// 新建一个段落
p.setAlignment(ParagraphAlignment.BOTH); p.setAlignment(ParagraphAlignment.BOTH);
XWPFRun r13 = p.createRun();//创建段落文本 XWPFRun r13 = p.createRun();//创建段落文本
r13.setText(" ITIC曲线中可容忍" + typeName + "记录为:" + result.get(0) + "条;不可容忍" + typeName + "记录为:" + result.get(1) + "条,具体见下表(图):"); r13.setText(" ITIC曲线中可容忍"+typeName+"记录为:" + result.get(0) + "条;不可容忍"+typeName+"记录为:" + result.get(1) + "条,具体见下表(图):");
r13.setFontSize(11);//字体大小 r13.setFontSize(11);//字体大小
@@ -6950,7 +7013,7 @@ public class ReportServiceImpl implements ReportService {
p = doc.createParagraph();// 新建一个段落 p = doc.createParagraph();// 新建一个段落
p.setAlignment(ParagraphAlignment.BOTH); p.setAlignment(ParagraphAlignment.BOTH);
XWPFRun r13 = p.createRun();//创建段落文本 XWPFRun r13 = p.createRun();//创建段落文本
r13.setText(" F47曲线中可容忍" + typeName + "记录为:" + result.get(0) + "条;不可容忍" + typeName + "记录为:" + result.get(1) + "条,具体见下表(图):"); r13.setText(" F47曲线中可容忍"+typeName+"记录为:" + result.get(0) + "条;不可容忍"+typeName+"记录为:" + result.get(1) + "条,具体见下表(图):");
r13.setFontSize(11);//字体大小 r13.setFontSize(11);//字体大小
@@ -6966,12 +7029,12 @@ public class ReportServiceImpl implements ReportService {
oneCount3 = oneCount; oneCount3 = oneCount;
createTitle(doc, "4." + oneCount + " " + typeName + "事件点图", "标题 2", 200, 11); createTitle(doc, "4." + oneCount + " "+typeName+"事件点图", "标题 2", 200, 11);
p = doc.createParagraph();// 新建一个段落 p = doc.createParagraph();// 新建一个段落
p.setAlignment(ParagraphAlignment.BOTH); p.setAlignment(ParagraphAlignment.BOTH);
XWPFRun r12 = p.createRun();//创建段落文本 XWPFRun r12 = p.createRun();//创建段落文本
r12.setText(" " + typeName + "事件点图统计分成ITIC曲线和F47曲线展示。"); r12.setText(" "+typeName+"事件点图统计分成ITIC曲线和F47曲线展示。");
r12.setFontSize(11);//字体大小 r12.setFontSize(11);//字体大小
@@ -6980,7 +7043,7 @@ public class ReportServiceImpl implements ReportService {
p = doc.createParagraph();// 新建一个段落 p = doc.createParagraph();// 新建一个段落
p.setAlignment(ParagraphAlignment.BOTH); p.setAlignment(ParagraphAlignment.BOTH);
XWPFRun r13 = p.createRun();//创建段落文本 XWPFRun r13 = p.createRun();//创建段落文本
r13.setText(" F47曲线中可容忍" + typeName + "降记录为:" + result.get(0) + "条;不可容忍" + typeName + "记录为:" + result.get(1) + "条,具体见下表(图):"); r13.setText(" F47曲线中可容忍"+typeName+"降记录为:" + result.get(0) + "条;不可容忍"+typeName+"记录为:" + result.get(1) + "条,具体见下表(图):");
r13.setFontSize(11);//字体大小 r13.setFontSize(11);//字体大小
@@ -7102,23 +7165,23 @@ public class ReportServiceImpl implements ReportService {
oneCount2 = oneCount; oneCount2 = oneCount;
createTitle(doc, "4." + oneCount2 + " " + typeName + "幅值概率分布图", "标题 2", 200, 11); createTitle(doc, "4." + oneCount2 + " "+typeName+"幅值概率分布图", "标题 2", 200, 11);
p = doc.createParagraph();// 新建一个段落 p = doc.createParagraph();// 新建一个段落
p.setAlignment(ParagraphAlignment.BOTH); p.setAlignment(ParagraphAlignment.BOTH);
XWPFRun r12 = p.createRun();//创建段落文本 XWPFRun r12 = p.createRun();//创建段落文本
r12.setText(" " + typeName + "概率分布图分成" + typeName + "幅值概率分布和持续时间概率分布图,中国电网在所选择的分析时间内" + typeName + "事件从幅值概率分布统计主要集中在幅值为" + amplitudeResult.get(0) + "~" + amplitudeResult.get(1) + "之间," + r12.setText(" "+typeName+"概率分布图分成"+typeName+"幅值概率分布和持续时间概率分布图,中国电网在所选择的分析时间内"+typeName+"事件从幅值概率分布统计主要集中在幅值为" + amplitudeResult.get(0) + "~" + amplitudeResult.get(1) + "之间," +
"从持续时间统计主要集中在持续时间为" + amplitudeResult1.get(0) + "~" + amplitudeResult1.get(1) + "[持续时间排序,选择" + typeName + "记录发生最多的区域],如下表(图):"); "从持续时间统计主要集中在持续时间为" + amplitudeResult1.get(0) + "~" + amplitudeResult1.get(1) + "[持续时间排序,选择"+typeName+"记录发生最多的区域],如下表(图):");
r12.setFontSize(11);//字体大小 r12.setFontSize(11);//字体大小
createTitle(doc, "4." + oneCount + "." + twoCount + " " + typeName + "幅值的概率分布函数", "标题 3", 400, 11); createTitle(doc, "4." + oneCount + "." + twoCount + " "+typeName+"幅值的概率分布函数", "标题 3", 400, 11);
List<String> ybardata = probabilityDistributionArea.getPereventvalue(); List<String> ybardata = probabilityDistributionArea.getPereventvalue();
List<String> ylinedata = probabilityDistributionArea.getEventvalue(); List<String> ylinedata = probabilityDistributionArea.getEventvalue();
String fz = getFZ(ylinedata, ybardata); String fz = getFZ(ylinedata, ybardata);
createPic(doc, fz, "" + typeName + "幅值的概率分布函数"); createPic(doc, fz, ""+typeName+"幅值的概率分布函数");
//序号计数进行++ //序号计数进行++
@@ -7248,13 +7311,13 @@ public class ReportServiceImpl implements ReportService {
} else { } else {
createTitle(doc, "4." + oneCount2 + " " + typeName + "幅值概率分布图", "标题 2", 200, 11); createTitle(doc, "4." + oneCount2 + " "+typeName+"幅值概率分布图", "标题 2", 200, 11);
p = doc.createParagraph();// 新建一个段落 p = doc.createParagraph();// 新建一个段落
p.setAlignment(ParagraphAlignment.BOTH); p.setAlignment(ParagraphAlignment.BOTH);
XWPFRun r12 = p.createRun();//创建段落文本 XWPFRun r12 = p.createRun();//创建段落文本
r12.setText(" " + typeName + "概率分布图分成" + typeName + "幅值概率分布和持续时间概率分布图,中国电网在所选择的分析时间内" + typeName + "事件从幅值概率分布统计主要集中在幅值为" + amplitudeResult.get(0) + "~" + amplitudeResult.get(1) + "之间," + r12.setText(" "+typeName+"概率分布图分成"+typeName+"幅值概率分布和持续时间概率分布图,中国电网在所选择的分析时间内"+typeName+"事件从幅值概率分布统计主要集中在幅值为" + amplitudeResult.get(0) + "~" + amplitudeResult.get(1) + "之间," +
"从持续时间统计主要集中在持续时间为" + amplitudeResult1.get(0) + "~" + amplitudeResult1.get(1) + "[持续时间排序,选择" + typeName + "记录发生最多的区域],如下表(图):"); "从持续时间统计主要集中在持续时间为" + amplitudeResult1.get(0) + "~" + amplitudeResult1.get(1) + "[持续时间排序,选择"+typeName+"记录发生最多的区域],如下表(图):");
r12.setFontSize(11);//字体大小 r12.setFontSize(11);//字体大小
@@ -7361,7 +7424,7 @@ public class ReportServiceImpl implements ReportService {
p.setAlignment(ParagraphAlignment.BOTH); p.setAlignment(ParagraphAlignment.BOTH);
XWPFRun r12 = p.createRun();//创建段落文本 XWPFRun r12 = p.createRun();//创建段落文本
//归一化需要高级算法,先字符串代替 //归一化需要高级算法,先字符串代替
r12.setText(" 中国电网在所选择的分析时间段内累计监测" + typeName + "记录" + resultCount.get("count") + "条,归一化统计后共" + resultCount1 + "[此为归一化后的暂态事件结果]条,,具体如下图所示:"); r12.setText(" 中国电网在所选择的分析时间段内累计监测"+typeName+"记录" + resultCount.get("count") + "条,归一化统计后共" + resultCount1 + "[此为归一化后的暂态事件结果]条,,具体如下图所示:");
r12.setFontSize(11);//字体大小 r12.setFontSize(11);//字体大小
@@ -7519,7 +7582,7 @@ public class ReportServiceImpl implements ReportService {
XWPFParagraph monitorInfoExcelParagraph = WordUtils.getCenterParagraph(doc); XWPFParagraph monitorInfoExcelParagraph = WordUtils.getCenterParagraph(doc);
// 表格第一行 // 表格第一行
insertRow(doc, monitorInfo, monitorInfoExcelParagraph, true, "暂态类型", "电压" + typeName + "次数"); insertRow(doc, monitorInfo, monitorInfoExcelParagraph, true, "暂态类型", "电压"+typeName+"次数");
//塞入数据 //塞入数据
@@ -7672,7 +7735,7 @@ public class ReportServiceImpl implements ReportService {
String tr = getR(xdata, reason, "bar9.ftl"); String tr = getR(xdata, reason, "bar9.ftl");
createPic(doc, tr, "" + typeName + "原因图"); createPic(doc, tr, ""+typeName+"原因图");
} else { } else {
@@ -7711,7 +7774,7 @@ public class ReportServiceImpl implements ReportService {
String tr = getR(xdata, reason, "bar9.ftl"); String tr = getR(xdata, reason, "bar9.ftl");
createPic(doc, tr, "" + typeName + "原因图"); createPic(doc, tr, ""+typeName+"原因图");
//序号计数进行++ //序号计数进行++
oneCount++; oneCount++;
@@ -7852,7 +7915,7 @@ public class ReportServiceImpl implements ReportService {
XWPFParagraph monitorInfoExcelParagraph = WordUtils.getCenterParagraph(doc); XWPFParagraph monitorInfoExcelParagraph = WordUtils.getCenterParagraph(doc);
// 表格第一行 // 表格第一行
insertRow(doc, monitorInfo, monitorInfoExcelParagraph, true, "暂态类型", "电压" + typeName + "次数"); insertRow(doc, monitorInfo, monitorInfoExcelParagraph, true, "暂态类型", "电压"+typeName+"次数");
//塞入数据 //塞入数据
@@ -8002,7 +8065,7 @@ public class ReportServiceImpl implements ReportService {
} }
String tr = getT(xdata, types, "bar8.ftl"); String tr = getT(xdata, types, "bar8.ftl");
createPic(doc, tr, "" + typeName + "类型图"); createPic(doc, tr, ""+typeName+"类型图");
} else { } else {
//创建表题计数 //创建表题计数
@@ -8037,7 +8100,7 @@ public class ReportServiceImpl implements ReportService {
} }
String tr = getT(xdata, types, "bar8.ftl"); String tr = getT(xdata, types, "bar8.ftl");
createPic(doc, tr, "" + typeName + "类型图"); createPic(doc, tr, ""+typeName+"类型图");
//序号计数进行++ //序号计数进行++
oneCount++; oneCount++;

View File

@@ -3,12 +3,11 @@ package com.njcn.event.service.majornetwork;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.device.pq.pojo.param.DeviceInfoParam; import com.njcn.device.pq.pojo.param.DeviceInfoParam;
import com.njcn.event.pojo.param.*; import com.njcn.event.pojo.param.*;
import com.njcn.event.pojo.vo.DetailVO; import com.njcn.event.pojo.po.EventDetail;
import com.njcn.event.pojo.vo.GeneralVO; import com.njcn.event.pojo.vo.*;
import com.njcn.event.pojo.vo.ReasonsVO;
import com.njcn.event.pojo.vo.WaveTypeVO;
import freemarker.template.TemplateException; import freemarker.template.TemplateException;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.influxdb.dto.QueryResult;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
@@ -58,4 +57,5 @@ public interface ReportService {
void getAreaReport(AreaReportParam areaReportParam, HttpServletResponse response) throws Exception; void getAreaReport(AreaReportParam areaReportParam, HttpServletResponse response) throws Exception;
} }