From fd9edd3225355d2ad035a7817a825df5cb2ebe6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=A8=E6=9C=A8c?= <857448963@qq.com> Date: Fri, 10 Feb 2023 16:40:43 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/test/java/DataTest.java | 25 +- .../param/TerminalOnlineRateDataParam.java | 8 +- .../pq/pojo/po/TerminalOnlineRateData.java | 4 +- .../com/njcn/device/pq/pojo/vo/DeviceVO.java | 2 +- .../njcn/device/pq/mapper/DeviceMapper.java | 7 + .../mapper/TerminalOnlineRateDataMapper.java | 6 +- .../mapping/TerminalOnlineRateDataMapper.xml | 31 +- .../device/pq/service/OperationService.java | 22 + .../pq/service/impl/OperationServiceImpl.java | 79 ++ .../TerminalOnlineRateDataServiceImpl.java | 64 +- .../device/pq/utils/DataStatisticsUtil.java | 40 +- .../majornetwork/ReportController.java | 2 +- .../Impl/EventAnalysisServiceImpl.java | 9 +- .../Impl/EventDetailServiceImpl.java | 7 +- .../majornetwork/Impl/ReportServiceImpl.java | 735 +++++++++--------- .../Impl/TransientServiceImpl.java | 25 +- pqs-gateway/src/main/resources/bootstrap.yml | 17 +- .../njcn/system/mapper/mapping/AreaMapper.xml | 4 +- 18 files changed, 568 insertions(+), 519 deletions(-) create mode 100644 pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/OperationService.java create mode 100644 pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/OperationServiceImpl.java diff --git a/pqs-common/common-influxdb/src/test/java/DataTest.java b/pqs-common/common-influxdb/src/test/java/DataTest.java index ef7be3776..a8fa6f1d1 100644 --- a/pqs-common/common-influxdb/src/test/java/DataTest.java +++ b/pqs-common/common-influxdb/src/test/java/DataTest.java @@ -61,21 +61,9 @@ public class DataTest { } public static void main(String[] args) { - InfluxDbUtils influxDBUtil = new InfluxDbUtils("admin", "njcnpqs", "http://192.168.1.18:8086", "PQSBASE", ""); - String sql = "select * from pqs_eventdetail limit 10"; - //获取暂降事件 - QueryResult result = influxDBUtil.query(sql); - InfluxDBResultMapper influxDBResultMapper = new InfluxDBResultMapper(); - List eventDetailList = influxDBResultMapper.toPOJO(result, EventDetail.class); - String bodyStr = PubUtils.obj2json(eventDetailList.get(0)); - //对结果进行转换 - EventDetail o = PubUtils.json2obj(bodyStr, EventDetail.class); - Instant timeId = o.getTimeId(); - System.out.println(timeId); + InfluxDbUtils influxDBUtil = new InfluxDbUtils("admin", "123456", "http://192.168.1.18:8086", "pqsbase_sjzx", ""); - - System.out.println(1); - //select(influxDBUtil); + insert(influxDBUtil); } public static void deleteDB(InfluxDbUtils influxDBUtil) { @@ -85,13 +73,14 @@ public class DataTest { //单条数据插入 public static void insert(InfluxDbUtils influxDBUtil) { Map tags = new HashMap<>(); - long time = Long.parseLong("1654239603000"); - tags.put("dev_id", "6d53a38cc630675dbe7a179c44d9dc3c"); + long time = Long.parseLong("1675958400000"); + tags.put("dev_id", "57d121d45a26f3cc1d7b6ba541f895c0"); Map fields = new HashMap<>(); // fields.put("due",1440); // fields.put("real",1200); - fields.put("onlinemin", 1123); - fields.put("offlinemin", 377); + fields.put("online_min", 0); + fields.put("offline_min", 1440); + fields.put("online_rate", 0.0000); influxDBUtil.insert("pqs_onlinerate", tags, fields, time, TimeUnit.MILLISECONDS); // long time = Long.parseLong("1655135328135"); // Map tags = new HashMap<>(); diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/param/TerminalOnlineRateDataParam.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/param/TerminalOnlineRateDataParam.java index 611fb44bc..538e309e4 100644 --- a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/param/TerminalOnlineRateDataParam.java +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/param/TerminalOnlineRateDataParam.java @@ -18,15 +18,13 @@ import lombok.NoArgsConstructor; @EqualsAndHashCode(callSuper = true) public class TerminalOnlineRateDataParam extends DeviceInfoParam.BusinessParam{ - // 监测点合格率 -// @ApiModelProperty(name = "devicePassRate",value = "终端在线率合格率") -// private Integer devicePassRate; + /** * 字段表监测点等级 */ - @ApiModelProperty(name = "algoDescribe",value = "字段表监测点等级,0:极重要 1:重要 2:普通 3:不重要") - private Integer algoDescribe; + @ApiModelProperty(name = "lineGrade",value = "字段表监测点等级,0:极重要 1:重要 2:普通 3:不重要") + private String lineGrade; } diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/TerminalOnlineRateData.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/TerminalOnlineRateData.java index b9a93eb9c..3cd94114f 100644 --- a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/TerminalOnlineRateData.java +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/TerminalOnlineRateData.java @@ -26,13 +26,13 @@ public class TerminalOnlineRateData implements Serializable { /** * 终端id */ - @Column(name = "dev_id") + @Column(name = "dev_id",tag = true) private String devId; /** * 终端在线率 */ @Column(name = "online_rate") - private Double onlineRate; + private Double onlineRate = 3.14159; } diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/DeviceVO.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/DeviceVO.java index 29e169f53..2df28db20 100644 --- a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/DeviceVO.java +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/DeviceVO.java @@ -106,7 +106,7 @@ public class DeviceVO implements Serializable { /** * 设备sim卡号 */ - @ApiModelProperty(name = "contract",value = "装置sim卡") + @ApiModelProperty(name = "sim",value = "装置sim卡") private String sim; @ApiModelProperty(name = "sort",value = "排序",required = true) diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/DeviceMapper.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/DeviceMapper.java index b062ef520..10bd0a7d3 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/DeviceMapper.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/DeviceMapper.java @@ -49,4 +49,11 @@ public interface DeviceMapper extends BaseMapper { * @return 结果 */ List getRunManageDevList(@Param("list") List list, @Param("comFlag")List comFlag, @Param("runFlag")List runFlag); + + /** + * 获取指定等级的装置 + * @author cdf + * @date 2023/2/10 + */ + List getDevByGrade(@Param("devId")List devIds,@Param("lineGrade") String lineGrade); } diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/TerminalOnlineRateDataMapper.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/TerminalOnlineRateDataMapper.java index 415e16299..be1852276 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/TerminalOnlineRateDataMapper.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/TerminalOnlineRateDataMapper.java @@ -24,12 +24,10 @@ public interface TerminalOnlineRateDataMapper extends BaseMapper getDevice(@Param("devGrade")List devGrade, - @Param("searchBeginTime") String searchBeginTime, - @Param("searchEndTime") String searchEndTime); + List getDevice(@Param("devIds")List devIds, @Param("lineGrade")String lineGrade); /** * 根据供电公司索引获取出省会的信息 * @param gdIndexes 供电公司索引 diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/TerminalOnlineRateDataMapper.xml b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/TerminalOnlineRateDataMapper.xml index a4ee78d9e..e0b19ea76 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/TerminalOnlineRateDataMapper.xml +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/TerminalOnlineRateDataMapper.xml @@ -36,8 +36,7 @@ pdevice.Com_Flag AS comFlag, sddManufacturer.`Name` AS manufacturer, pdevice.Update_Time AS updateTime, - sddLineGrade.`Name` AS lineGrade, - sddLineGrade.Algo_Describe as algoDescribe + max(sddLineGrade.Algo_Describe) as algoDescribe FROM pq_line AS device LEFT JOIN pq_line AS voltage ON device.id = voltage.pid @@ -49,19 +48,23 @@ WHERE device.`Level` = 4 AND device.id in - - #{item.id} + + #{item} - AND sddLineGrade.Algo_Describe in - - #{item.algoDescribe} - - - and date_format(device.update_Time,'%y%m%d') >= date_format(#{searchBeginTime},'%y%m%d') - - - and date_format(device.update_Time,'%y%m%d') <= date_format(#{searchEndTime},'%y%m%d') + + AND pld.line_grade = #{lineGrade} + group by + device.id, + device.pid, + device.`Name`, + device.`Level`, + device.Sort, + pdevice.ip, + pdevice.Com_Flag, + sddManufacturer.`Name`, + pdevice.Update_Time + @@ -185,4 +188,4 @@ and date_format(line.update_Time,'%y%m%d') <= date_format(#{searchEndTime},'%y%m%d') - \ No newline at end of file + diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/OperationService.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/OperationService.java new file mode 100644 index 000000000..25d976132 --- /dev/null +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/OperationService.java @@ -0,0 +1,22 @@ +package com.njcn.device.pq.service; + +import com.njcn.device.pq.pojo.vo.LineDistributionVO; + +import java.util.List; + +/** + * pqs + * 运维中心 + * @author cdf + * @date 2023/2/9 + */ +public interface OperationService { + + + /** + * 获取监测点分布 + * @author cdf + * @date 2023/2/9 + */ + List getLineDistribution(String lineGrade); +} diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/OperationServiceImpl.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/OperationServiceImpl.java new file mode 100644 index 000000000..463244191 --- /dev/null +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/OperationServiceImpl.java @@ -0,0 +1,79 @@ +package com.njcn.device.pq.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.common.utils.HttpResultUtil; +import com.njcn.common.utils.LogUtil; +import com.njcn.device.pq.pojo.param.DeviceInfoParam; +import com.njcn.device.pq.pojo.vo.LineDistributionVO; +import com.njcn.device.pq.service.OperationService; +import com.njcn.user.api.DeptFeignClient; +import com.njcn.user.pojo.dto.DeptDTO; +import com.njcn.web.utils.RequestUtil; +import com.njcn.web.utils.WebUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.util.stream.Collectors; + +/** + * pqs + * + * @author cdf + * @date 2023/2/9 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class OperationServiceImpl implements OperationService { + + private final DeptFeignClient deptFeignClient; + + + /** + * 获取监测点分布 + * @author cdf + * @date 2023/2/9 + */ + @Override + public List getLineDistribution(String lineGrade) { + String deptIndex = RequestUtil.getDeptIndex(); + //初始化部门筛选条件 + List deptType = WebUtil.filterDeptType(); + //获取包括当前部门的后代所有部门信息 + List deptInfos = deptFeignClient.getDeptDescendantIndexes(deptIndex, deptType).getData(); + List directDeptInfos = deptInfos.stream() + .filter(deptDTO -> deptDTO.getPid().equals(deptIndex)).sorted(Comparator.comparing(DeptDTO::getSort)) + .collect(Collectors.toList()); + if (CollectionUtil.isEmpty(directDeptInfos)) { + //没有直接子部门,获取当前部门所有信息 + List dept = deptInfos.stream() + .filter(deptDTO -> deptDTO.getId().equals(deptIndex)) + .collect(Collectors.toList()); + + } else { + for (DeptDTO deptDTO : directDeptInfos) { + //筛选上级部门pids包含该id的所有部门 + List descendantDeptDTO = deptInfos.stream() + .filter(d -> d.getPids().contains(deptDTO.getId())) + .collect(Collectors.toList()); + //形成需要查询监测点的部门索引 + List indexes = descendantDeptDTO.stream() + .map(DeptDTO::getId) + .distinct() + .collect(Collectors.toList()); + indexes.add(deptDTO.getId()); + } + } + + return null; + + } +} diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/TerminalOnlineRateDataServiceImpl.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/TerminalOnlineRateDataServiceImpl.java index ddc9cd741..1e07f00bf 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/TerminalOnlineRateDataServiceImpl.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/TerminalOnlineRateDataServiceImpl.java @@ -59,8 +59,6 @@ public class TerminalOnlineRateDataServiceImpl implements TerminalOnlineRateData @Override public List getOnlineRateData(TerminalOnlineRateDataParam terminalOnlineRateDataParam) { - // TODO 部门id StatisticsEnum -// terminalOnlineRateDataParam.setDeptIndex(RequestUtil.getDeptIndex()); // 获取所有数据 List generalDeviceDTOList = generalDeviceService.getDeviceInfo(terminalOnlineRateDataParam, Stream.of(0).collect(Collectors.toList()), Stream.of(1).collect(Collectors.toList())); @@ -89,49 +87,41 @@ public class TerminalOnlineRateDataServiceImpl implements TerminalOnlineRateData // 创建实体类 TerminalOnlineRateDataVO terminalOnlineRateDataVO = new TerminalOnlineRateDataVO(); - // 通过供电公司索引查询省会 - List proList = terminalOnlineRateDataMapper.getProvinceList(generalDeviceDTO.getGdIndexes(),terminalOnlineRateDataParam.getSearchBeginTime(), terminalOnlineRateDataParam.getSearchEndTime()); - - // 通过供电公司索引查询供电公司信息 - List gdList = terminalOnlineRateDataMapper.getGdList(generalDeviceDTO.getGdIndexes(),terminalOnlineRateDataParam.getSearchBeginTime(), terminalOnlineRateDataParam.getSearchEndTime()); - - // 通过供电站索引查询供电站信息 - List subList = terminalOnlineRateDataMapper.getSubList(generalDeviceDTO.getSubIndexes(),terminalOnlineRateDataParam.getSearchBeginTime(), terminalOnlineRateDataParam.getSearchEndTime()); - - // 通过终端的索引查询索引的等级和id - List deviceLevelAndId = terminalOnlineRateDataMapper.getDeviceLevelData(generalDeviceDTO.getDeviceIndexes()); // 通过部分终端等级信息查询终端信息 - List deviceList = terminalOnlineRateDataMapper.getDevice(deviceLevelAndId,terminalOnlineRateDataParam.getSearchBeginTime(), terminalOnlineRateDataParam.getSearchEndTime()); + List deviceList = terminalOnlineRateDataMapper.getDevice(generalDeviceDTO.getDeviceIndexes(),terminalOnlineRateDataParam.getLineGrade()); - - // 判断前端出入的终端等级 - if (terminalOnlineRateDataParam.getAlgoDescribe()!=null) { - switch (terminalOnlineRateDataParam.getAlgoDescribe()) { - case 0: - deviceList = deviceList.stream().filter(dev -> dev.getAlgoDescribe() != null && dev.getAlgoDescribe() == 0).collect(Collectors.toList()); - break; - case 1: - deviceList = deviceList.stream().filter(dev -> dev.getAlgoDescribe() != null && dev.getAlgoDescribe() == 1).collect(Collectors.toList()); - break; - case 2: - deviceList = deviceList.stream().filter(dev -> dev.getAlgoDescribe() != null && dev.getAlgoDescribe() == 2).collect(Collectors.toList()); - break; - case 3: - deviceList = deviceList.stream().filter(dev -> dev.getAlgoDescribe() != null && dev.getAlgoDescribe() == 3).collect(Collectors.toList()); - break; - default: - break; - } + if(CollectionUtil.isEmpty(deviceList)){ + continue; } + + List devIds = deviceList.stream().map(TerminalOnlineRateDataVO::getId).collect(Collectors.toList()); + // 通过工具类得到查询influxdb的条件(相当于mysql中的in) - StringBuilder devForInfluxdb = InfluxDBCommUtils.assToInfluxParam(generalDeviceDTO.getDeviceIndexes()); - // 通过监测点id集合查询influxdb监测点数据完整性 + StringBuilder devForInfluxdb = InfluxDBCommUtils.assToInfluxParamDev(devIds); + // 通过装置id List terminalOnlineRateData = getPercentageOfOnlineRate(terminalOnlineRateDataParam.getSearchBeginTime(), terminalOnlineRateDataParam.getSearchEndTime(), devForInfluxdb); // 处理终端在线率 DataStatisticsUtil.getTerminalOnlineRateData(terminalOnlineRateData,deviceList); + + List subIds = deviceList.stream().map(TerminalOnlineRateDataVO::getPid).collect(Collectors.toList()); + + + // 通过供电站索引查询供电站信息 + List subList = terminalOnlineRateDataMapper.getSubList(subIds,terminalOnlineRateDataParam.getSearchBeginTime(), terminalOnlineRateDataParam.getSearchEndTime()); + + List gdIds = subList.stream().map(TerminalOnlineRateDataVO::getPid).collect(Collectors.toList()); + // 通过供电公司索引查询供电公司信息 + List gdList = terminalOnlineRateDataMapper.getGdList(gdIds,terminalOnlineRateDataParam.getSearchBeginTime(), terminalOnlineRateDataParam.getSearchEndTime()); + + List proIds = gdList.stream().map(TerminalOnlineRateDataVO::getPid).collect(Collectors.toList()); + + // 通过供电公司索引查询省会 + List proList = terminalOnlineRateDataMapper.getProvinceList(proIds,terminalOnlineRateDataParam.getSearchBeginTime(), terminalOnlineRateDataParam.getSearchEndTime()); + + //处理变电站 dealChildrenData(subList, deviceList, false); //处理供电公司 @@ -219,12 +209,10 @@ public class TerminalOnlineRateDataServiceImpl implements TerminalOnlineRateData .append(InfluxDBPublicParam.END_TIME) .append("'"); //sql语句 - String sql = "SELECT time,dev_id,online_rate FROM pqs_onlinerate WHERE " + queryCriteria + " group by dev_id " + InfluxDBPublicParam.TIME_ZONE; + String sql = "SELECT mean(online_rate) as online_rate FROM pqs_onlinerate WHERE " + queryCriteria + " group by dev_id " + InfluxDBPublicParam.TIME_ZONE; // 结果集 QueryResult results = influxDbUtils.query(sql); - System.out.println(results); - // 结果集映射到对象中 InfluxDBResultMapper resultMapper = new InfluxDBResultMapper(); // 返回结果 diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/utils/DataStatisticsUtil.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/utils/DataStatisticsUtil.java index 1afaa253c..85a89ad79 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/utils/DataStatisticsUtil.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/utils/DataStatisticsUtil.java @@ -121,43 +121,19 @@ public class DataStatisticsUtil { if (CollectionUtil.isNotEmpty(terminalOnlineRateData)) { // 根据监测点id分类 - Map> groupByDevId = terminalOnlineRateData.stream().collect(Collectors.groupingBy(TerminalOnlineRateData::getDevId)); - // 新建集合处理数据 - List terminalOnlineRateDataArrayList = new ArrayList<>(); - // 获取map中的key(监测点id集合) - Set devIds = groupByDevId.keySet(); - - for (String devId : devIds) { - // 创建对象处理数据 - TerminalOnlineRateData onlineRateData = new TerminalOnlineRateData(); - - double onlineRate = 0.0; - - // 取出值 - List devOnlineRateData = groupByDevId.get(devId); - int size = devOnlineRateData.size(); - for (TerminalOnlineRateData devOnlineRate : devOnlineRateData) { - onlineRate += devOnlineRate.getOnlineRate(); - } - // 求出监测点数据完整性 - double deviceOnlineRateDouble = onlineRate / size; - String deviceOnlineRateString = String.format("%.2f", deviceOnlineRateDouble); - onlineRateData.setOnlineRate(Double.parseDouble(deviceOnlineRateString)); - onlineRateData.setDevId(devId); - terminalOnlineRateDataArrayList.add(onlineRateData); - } deviceList = deviceList.stream().peek(onlineRateDataVO -> { - for (TerminalOnlineRateData onlineRateData : terminalOnlineRateDataArrayList) { + boolean flag = false; + for (TerminalOnlineRateData onlineRateData : terminalOnlineRateData) { if (onlineRateDataVO.getId().equals(onlineRateData.getDevId())) { - if (onlineRateData.getOnlineRate() != null) { - onlineRateDataVO.setOnlineRate(onlineRateData.getOnlineRate()); - } else { - // 为空则给对应的监测点的监测点合设置为魔数 - onlineRateDataVO.setOnlineRate(3.14159); - } + flag = true; + onlineRateDataVO.setOnlineRate(onlineRateData.getOnlineRate()); + break; } } + if(!flag){ + onlineRateDataVO.setOnlineRate(3.14159); + } }).collect(Collectors.toList()); } else { deviceList = deviceList.stream().peek(onlineRateDataVO -> onlineRateDataVO.setOnlineRate(3.14159)).collect(Collectors.toList()); diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/controller/majornetwork/ReportController.java b/pqs-event/event-boot/src/main/java/com/njcn/event/controller/majornetwork/ReportController.java index 05b15f430..1f453707d 100644 --- a/pqs-event/event-boot/src/main/java/com/njcn/event/controller/majornetwork/ReportController.java +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/controller/majornetwork/ReportController.java @@ -86,7 +86,7 @@ public class ReportController extends BaseController { @OperateInfo(info = LogEnum.BUSINESS_COMMON) @PostMapping("/getContinueTime") - @ApiOperation("详细时间列表") + @ApiOperation("详细事件列表") @ApiImplicitParam(name = "businessParam", value = "详细时间列表参数", required = true) public HttpResult> getContinueTime(@RequestBody @Validated WaveTypeParam businessParam){ String methodDescribe = getMethodDescribe("getContinueTime"); diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/EventAnalysisServiceImpl.java b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/EventAnalysisServiceImpl.java index 08938eaab..69f4a4f51 100644 --- a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/EventAnalysisServiceImpl.java +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/EventAnalysisServiceImpl.java @@ -1503,8 +1503,7 @@ public class EventAnalysisServiceImpl implements EventAnalysisService { } } Page page = new Page<>(); - long total = new BigDecimal(resultTotal.getResults().get(0).getSeries().get(0).getValues().get(0).get(1).toString()).longValue(); - page.setTotal(total); + page.setTotal(eventDetailList.size()); page.setRecords(eventDetailList); page.setCurrent(eventBaseParam.getPageNum()); page.setSize(eventBaseParam.getPageSize()); @@ -1601,9 +1600,7 @@ public class EventAnalysisServiceImpl implements EventAnalysisService { //抛出异常,当前暂态原因为空 throw new BusinessException(EventResponseEnum.EVENT_REASON_NOT_FOUND); } - } - for (WaveTypeVO eventDetail : eventDetailList) { if (eventDetail.getEventType() != null) { for (DictData dictData : eventTypeList) { //将字典数据id与VO中属性eventType对应的字符串进行比较 @@ -1617,8 +1614,10 @@ public class EventAnalysisServiceImpl implements EventAnalysisService { throw new BusinessException(EventResponseEnum.EVENT_TYPE_NOT_FOUND); } } + + Page page = new Page<>(); - long total = new BigDecimal(resultTotal.getResults().get(0).getSeries().get(0).getValues().get(0).get(1).toString()).longValue(); + long total = eventDetailList.size(); page.setTotal(total); page.setRecords(eventDetailList); page.setCurrent(eventBaseParam.getPageNum()); diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/EventDetailServiceImpl.java b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/EventDetailServiceImpl.java index 74d7b063b..55440b8c7 100644 --- a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/EventDetailServiceImpl.java +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/EventDetailServiceImpl.java @@ -84,18 +84,15 @@ public class EventDetailServiceImpl implements EventDetailService { stringBuilder.append("wave_type ='").append(waveType.get(i)).append("' "); } } - stringBuilder.append(") order by time desc"); - stringBuilder.append(" tz('Asia/Shanghai')"); + stringBuilder.append(") order by time desc tz('Asia/Shanghai"); //sql语句 String sql = "SELECT * FROM pqs_eventdetail WHERE " + stringBuilder; - System.out.println("sql------------->>>"+sql); + //结果集 QueryResult result = influxDbUtils.query(sql); //结果集映射到对象中 InfluxDBResultMapper influxDBResultMapper = new InfluxDBResultMapper(); List eventDetailList = influxDBResultMapper.toPOJO(result, EventDetail.class); - - return eventDetailList; } diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/ReportServiceImpl.java b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/ReportServiceImpl.java index 1cf60e4f8..7d6f6489c 100644 --- a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/ReportServiceImpl.java +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/ReportServiceImpl.java @@ -23,6 +23,7 @@ import com.njcn.common.pojo.exception.BusinessException; import com.njcn.common.pojo.response.HttpResult; import com.njcn.device.pq.api.GeneralDeviceInfoClient; import com.njcn.device.pq.api.LineFeignClient; +import com.njcn.device.pq.enums.DeviceResponseEnum; import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO; import com.njcn.device.pq.pojo.param.DeviceInfoParam; import com.njcn.device.pq.pojo.param.LineBaseQueryParam; @@ -111,14 +112,14 @@ public class ReportServiceImpl implements ReportService { //调用暂降密度接口 private final EventAnalysisService eventAnalysisService; - public List getED(DeviceInfoParam.BusinessParam businessParam){ + public List getED(DeviceInfoParam.BusinessParam businessParam) { List info = new ArrayList<>(); QueryResult queryResult = new QueryResult(); List ids = new ArrayList<>(); List deviceDTOList = generalDeviceInfoClient.getPracticalAllDeviceInfo(businessParam).getData(); List> collect = deviceDTOList.stream().map(x -> x.getLineIndexes()).collect(Collectors.toList()); collect.stream().forEach(a -> a.forEach(x -> ids.add(x))); - StringBuilder stringBuilder = new StringBuilder(Param.SELECT+Param.EVENT_DETAIL); + StringBuilder stringBuilder = new StringBuilder(Param.SELECT + Param.EVENT_DETAIL); stringBuilder.append(Param.WHERE); for (String id : ids) { stringBuilder.append("line_id = '").append(id + "' ").append("or "); @@ -128,17 +129,19 @@ public class ReportServiceImpl implements ReportService { //结果集映射到对象中 InfluxDBResultMapper influxDBResultMapper = new InfluxDBResultMapper(); List eventDetailList = influxDBResultMapper.toPOJO(queryResult, EventDetail.class); - eventDetailList.stream().forEach(a -> {info.add(a);}); + eventDetailList.stream().forEach(a -> { + info.add(a); + }); return info; } - public List getED2(DeviceInfoParam.BusinessParam businessParam){ + public List getED2(DeviceInfoParam.BusinessParam businessParam) { List info = new ArrayList<>(); QueryResult queryResult = new QueryResult(); List deviceDTOList = generalDeviceInfoClient.getPracticalAllDeviceInfo(businessParam).getData(); for (GeneralDeviceDTO dto : deviceDTOList) { - StringBuilder stringBuilder = new StringBuilder(Param.SELECT+Param.EVENT_DETAIL); - if (dto.getLineIndexes().size()>0){ + StringBuilder stringBuilder = new StringBuilder(Param.SELECT + Param.EVENT_DETAIL); + if (dto.getLineIndexes().size() > 0) { stringBuilder.append(Param.WHERE); dto.getLineIndexes().stream().forEach(line -> { stringBuilder.append("line_id = '").append(line + "' ").append("or "); @@ -148,7 +151,9 @@ public class ReportServiceImpl implements ReportService { //结果集映射到对象中 InfluxDBResultMapperCn influxDBResultMapper = new InfluxDBResultMapperCn(); List eventDetailList = influxDBResultMapper.toPOJO(queryResult, EventDetailNew.class); - eventDetailList.stream().forEach(a -> {info.add(a);}); + eventDetailList.stream().forEach(a -> { + info.add(a); + }); } } return info; @@ -250,7 +255,7 @@ public class ReportServiceImpl implements ReportService { for (GeneralDeviceDTO dto : data) { list.add(new GeneralVO(dto.getName(), 0, 0, 0, 0, 0)); queryResult = null; - StringBuilder stringBuilder = new StringBuilder(Param.SELECT+Param.EVENT_DETAIL); + StringBuilder stringBuilder = new StringBuilder(Param.SELECT + Param.EVENT_DETAIL); List lineIndexes = dto.getLineIndexes(); if (lineIndexes.size() > 0) { stringBuilder.append(Param.WHERE); @@ -278,8 +283,8 @@ public class ReportServiceImpl implements ReportService { long count2 = map.get(s).stream().filter(x -> x.getWaveType() == 2).count(); long count3 = map.get(s).stream().filter(x -> x.getWaveType() == 3).count(); generalVO.setSagsCount((int) count1); - generalVO.setUpCount((int)count2); - generalVO.setBreakCount((int)count3); + generalVO.setUpCount((int) count2); + generalVO.setBreakCount((int) count3); // map.get(s).stream().forEach(res -> { // Integer waveType = res.getWaveType(); // switch (waveType) { @@ -323,26 +328,28 @@ public class ReportServiceImpl implements ReportService { public List getSeverity(DeviceInfoParam.BusinessParam businessParam) { List result = new ArrayList<>(); List info = getED2(businessParam); - List idlist = new ArrayList<>(); - //根据严重度进行排序并取前二十个数据 - info.sort(((o1, o2) -> o1.getSeverity().compareTo(o2.getSeverity()))); - Collections.reverse(info); - List details = info.subList(0, 20); - //遍历集合得到id集合 - for (EventDetailNew detail : details) { - idlist.add(detail.getLineId()); - } - //得到对应的监测点信息 - HttpResult> AreaInfo = lineFeignClient.getBaseLineAreaInfo(idlist); - List data = AreaInfo.getData(); - //遍历集合比较id得到最终数据 - for (EventDetailNew detail : details) { - WaveTypeVO waveTypeVO = new WaveTypeVO(); - for (AreaLineInfoVO vo : data) { - if (detail.getLineId().equals(vo.getLineId())) { - BeanUtils.copyProperties(detail, waveTypeVO); - BeanUtils.copyProperties(vo, waveTypeVO); - result.add(waveTypeVO); + if (CollectionUtil.isNotEmpty(info)) { + List idlist = new ArrayList<>(); + //根据严重度进行排序并取前二十个数据 + info.sort(((o1, o2) -> o1.getSeverity().compareTo(o2.getSeverity()))); + Collections.reverse(info); + List details = info.subList(0, 20); + //遍历集合得到id集合 + for (EventDetailNew detail : details) { + idlist.add(detail.getLineId()); + } + //得到对应的监测点信息 + HttpResult> AreaInfo = lineFeignClient.getBaseLineAreaInfo(idlist); + List data = AreaInfo.getData(); + //遍历集合比较id得到最终数据 + for (EventDetailNew detail : details) { + WaveTypeVO waveTypeVO = new WaveTypeVO(); + for (AreaLineInfoVO vo : data) { + if (detail.getLineId().equals(vo.getLineId())) { + BeanUtils.copyProperties(detail, waveTypeVO); + BeanUtils.copyProperties(vo, waveTypeVO); + result.add(waveTypeVO); + } } } } @@ -411,46 +418,42 @@ public class ReportServiceImpl implements ReportService { public Page getContinueTime(WaveTypeParam waveTypeParam) { List result = new ArrayList<>(); List count = getED2(waveTypeParam); - StringBuilder stringBuilder = new StringBuilder(Param.SELECT+Param.EVENT_DETAIL+Param.WHERE+" 1=1 "); + StringBuilder stringBuilder = new StringBuilder(Param.SELECT + Param.EVENT_DETAIL + Param.WHERE + " "); List deviceDTOList = generalDeviceInfoClient.getPracticalAllDeviceInfo(waveTypeParam).getData(); - String substring = ""; - for (GeneralDeviceDTO dto : deviceDTOList) { - if (dto.getLineIndexes().size()>0){ - stringBuilder.append(" or "); - dto.getLineIndexes().stream().forEach(line -> { - stringBuilder.append("line_id = '").append(line + "' ").append("or "); - }); - stringBuilder.delete(stringBuilder.length()-3,stringBuilder.length()+1); - } + List lineIds = deviceDTOList.stream().flatMap(list -> list.getLineIndexes().stream()).collect(Collectors.toList()); + if (CollectionUtil.isEmpty(lineIds)) { + throw new BusinessException(DeviceResponseEnum.DEPT_LINE_EMPTY); } + StringBuilder lineSting = InfluxDBCommUtils.assToInfluxParam(lineIds); Integer s = (waveTypeParam.getPageNum() - 1) * waveTypeParam.getPageSize(); - substring = stringBuilder.toString() + "limit "+waveTypeParam.getPageSize()+" offset "+s+ Param.TZ_ASIA_SHANGHAI; - QueryResult query = influxDbUtils.query(substring); + stringBuilder.append(lineSting).append("limit ").append(waveTypeParam.getPageSize() + " offset " + s + Param.TZ_ASIA_SHANGHAI); + QueryResult query = influxDbUtils.query(stringBuilder.toString()); InfluxDBResultMapperCn influxDBResultMapper = new InfluxDBResultMapperCn(); List info = influxDBResultMapper.toPOJO(query, EventDetailNew.class); - //id集合 - ArrayList idlist = new ArrayList<>(); - for (EventDetailNew eventDetail : info) { - DetailVO vo = new DetailVO(); - BeanUtils.copyProperties(eventDetail, vo); - result.add(vo); - idlist.add(eventDetail.getLineId()); - } - HttpResult> AreaInfo = lineFeignClient.getBaseLineAreaInfo(idlist); - List data = AreaInfo.getData(); - for (DetailVO detailVO : result) { - for (AreaLineInfoVO vo : data) { - if (vo.getLineId().equals(detailVO.getLineId())) { - BeanUtils.copyProperties(vo, detailVO); + if (CollectionUtil.isNotEmpty(info)) { + ArrayList idlist = new ArrayList<>(); + for (EventDetailNew eventDetail : info) { + DetailVO vo = new DetailVO(); + BeanUtils.copyProperties(eventDetail, vo); + result.add(vo); + idlist.add(eventDetail.getLineId()); + } + HttpResult> AreaInfo = lineFeignClient.getBaseLineAreaInfo(idlist); + List data = AreaInfo.getData(); + for (DetailVO detailVO : result) { + for (AreaLineInfoVO vo : data) { + if (vo.getLineId().equals(detailVO.getLineId())) { + BeanUtils.copyProperties(vo, detailVO); + } } } - } - HttpResult> reason = dicDataFeignClient.getDicDataByTypeName(DicDataTypeEnum.EVENT_TYPE.getName()); - List type = reason.getData(); - for (DetailVO detailVO : result) { - for (DictData dictData : type) { - if (dictData.getId().equals(detailVO.getEventType())) { - detailVO.setEventType(dictData.getName()); + HttpResult> reason = dicDataFeignClient.getDicDataByTypeName(DicDataTypeEnum.EVENT_TYPE.getName()); + List type = reason.getData(); + for (DetailVO detailVO : result) { + for (DictData dictData : type) { + if (dictData.getId().equals(detailVO.getEventType())) { + detailVO.setEventType(dictData.getName()); + } } } } @@ -472,20 +475,20 @@ public class ReportServiceImpl implements ReportService { public Page getSagTimes(WaveTypeParam waveTypeParam) { List result = new ArrayList<>(); List count = getED2(waveTypeParam); - StringBuilder stringBuilder = new StringBuilder(Param.SELECT+Param.EVENT_DETAIL+Param.WHERE+" 1=1 "); + StringBuilder stringBuilder = new StringBuilder(Param.SELECT + Param.EVENT_DETAIL + Param.WHERE + " 1=1 "); List deviceDTOList = generalDeviceInfoClient.getPracticalAllDeviceInfo(waveTypeParam).getData(); String substring = ""; for (GeneralDeviceDTO dto : deviceDTOList) { - if (dto.getLineIndexes().size()>0){ + if (dto.getLineIndexes().size() > 0) { stringBuilder.append(" or "); dto.getLineIndexes().stream().forEach(line -> { stringBuilder.append("line_id = '").append(line + "' ").append("or "); }); - stringBuilder.delete(stringBuilder.length()-3,stringBuilder.length()+1); + stringBuilder.delete(stringBuilder.length() - 3, stringBuilder.length() + 1); } } Integer i = (waveTypeParam.getPageNum() - 1) * waveTypeParam.getPageSize(); - substring = stringBuilder.toString() + "limit "+waveTypeParam.getPageSize()+" offset "+i+ Param.TZ_ASIA_SHANGHAI; + substring = stringBuilder.toString() + "limit " + waveTypeParam.getPageSize() + " offset " + i + Param.TZ_ASIA_SHANGHAI; QueryResult query = influxDbUtils.query(substring); InfluxDBResultMapperCn influxDBResultMapper = new InfluxDBResultMapperCn(); List info = influxDBResultMapper.toPOJO(query, EventDetailNew.class); @@ -539,20 +542,20 @@ public class ReportServiceImpl implements ReportService { public Page getUpTimes(WaveTypeParam waveTypeParam) { List result = new ArrayList<>(); List count = getED2(waveTypeParam); - StringBuilder stringBuilder = new StringBuilder(Param.SELECT+Param.EVENT_DETAIL+Param.WHERE+" 1=1 "); + StringBuilder stringBuilder = new StringBuilder(Param.SELECT + Param.EVENT_DETAIL + Param.WHERE + " 1=1 "); List deviceDTOList = generalDeviceInfoClient.getPracticalAllDeviceInfo(waveTypeParam).getData(); String substring = ""; for (GeneralDeviceDTO dto : deviceDTOList) { - if (dto.getLineIndexes().size()>0){ + if (dto.getLineIndexes().size() > 0) { stringBuilder.append(" or "); dto.getLineIndexes().stream().forEach(line -> { stringBuilder.append("line_id = '").append(line + "' ").append("or "); }); - stringBuilder.delete(stringBuilder.length()-3,stringBuilder.length()+1); + stringBuilder.delete(stringBuilder.length() - 3, stringBuilder.length() + 1); } } Integer i = (waveTypeParam.getPageNum() - 1) * waveTypeParam.getPageSize(); - substring = stringBuilder.toString() + "limit "+waveTypeParam.getPageSize()+" offset "+i+ Param.TZ_ASIA_SHANGHAI; + substring = stringBuilder.toString() + "limit " + waveTypeParam.getPageSize() + " offset " + i + Param.TZ_ASIA_SHANGHAI; QueryResult query = influxDbUtils.query(substring); InfluxDBResultMapperCn influxDBResultMapper = new InfluxDBResultMapperCn(); List info = influxDBResultMapper.toPOJO(query, EventDetailNew.class); @@ -606,20 +609,20 @@ public class ReportServiceImpl implements ReportService { public Page getBreakTimes(WaveTypeParam waveTypeParam) { List result = new ArrayList<>(); List count = getED2(waveTypeParam); - StringBuilder stringBuilder = new StringBuilder(Param.SELECT+Param.EVENT_DETAIL+Param.WHERE+" 1=1 "); + StringBuilder stringBuilder = new StringBuilder(Param.SELECT + Param.EVENT_DETAIL + Param.WHERE + " 1=1 "); List deviceDTOList = generalDeviceInfoClient.getPracticalAllDeviceInfo(waveTypeParam).getData(); String substring = ""; for (GeneralDeviceDTO dto : deviceDTOList) { - if (dto.getLineIndexes().size()>0){ + if (dto.getLineIndexes().size() > 0) { stringBuilder.append(" or "); dto.getLineIndexes().stream().forEach(line -> { stringBuilder.append("line_id = '").append(line + "' ").append("or "); }); - stringBuilder.delete(stringBuilder.length()-3,stringBuilder.length()+1); + stringBuilder.delete(stringBuilder.length() - 3, stringBuilder.length() + 1); } } Integer i = (waveTypeParam.getPageNum() - 1) * waveTypeParam.getPageSize(); - substring = stringBuilder.toString() + "limit "+waveTypeParam.getPageSize()+" offset "+i+ Param.TZ_ASIA_SHANGHAI; + substring = stringBuilder.toString() + "limit " + waveTypeParam.getPageSize() + " offset " + i + Param.TZ_ASIA_SHANGHAI; QueryResult query = influxDbUtils.query(substring); InfluxDBResultMapperCn influxDBResultMapper = new InfluxDBResultMapperCn(); List info = influxDBResultMapper.toPOJO(query, EventDetailNew.class); @@ -679,19 +682,19 @@ public class ReportServiceImpl implements ReportService { HSSFWorkbook sheets = new HSSFWorkbook(); sheets.createSheet("sheet1"); HSSFSheet sheetAt = sheets.getSheetAt(0); - sheetAt.setColumnWidth(0,24*256); - sheetAt.setColumnWidth(1,9*256); - sheetAt.setColumnWidth(2,9*256); - sheetAt.setColumnWidth(3,9*256); - sheetAt.setColumnWidth(4,9*256); - sheetAt.setColumnWidth(5,9*256); - sheetAt.addMergedRegion(new CellRangeAddress(0,0,0,5)); - sheetAt.addMergedRegion(new CellRangeAddress(1,1,0,5)); - sheetAt.addMergedRegion(new CellRangeAddress(2,3,0,0)); - sheetAt.addMergedRegion(new CellRangeAddress(2,2,1,2)); - sheetAt.addMergedRegion(new CellRangeAddress(2,3,3,3)); - sheetAt.addMergedRegion(new CellRangeAddress(2,3,4,4)); - sheetAt.addMergedRegion(new CellRangeAddress(2,3,5,5)); + sheetAt.setColumnWidth(0, 24 * 256); + sheetAt.setColumnWidth(1, 9 * 256); + sheetAt.setColumnWidth(2, 9 * 256); + sheetAt.setColumnWidth(3, 9 * 256); + sheetAt.setColumnWidth(4, 9 * 256); + sheetAt.setColumnWidth(5, 9 * 256); + sheetAt.addMergedRegion(new CellRangeAddress(0, 0, 0, 5)); + sheetAt.addMergedRegion(new CellRangeAddress(1, 1, 0, 5)); + sheetAt.addMergedRegion(new CellRangeAddress(2, 3, 0, 0)); + sheetAt.addMergedRegion(new CellRangeAddress(2, 2, 1, 2)); + sheetAt.addMergedRegion(new CellRangeAddress(2, 3, 3, 3)); + sheetAt.addMergedRegion(new CellRangeAddress(2, 3, 4, 4)); + sheetAt.addMergedRegion(new CellRangeAddress(2, 3, 5, 5)); HSSFRow title = sheetAt.createRow(0); HSSFRow row1 = sheetAt.createRow(1); @@ -712,23 +715,23 @@ public class ReportServiceImpl implements ReportService { cellStylearea.setFont(font); HSSFCell titleCell = title.createCell(0); - setCellStyle(titleCell,"暂态统计",cellStyle); + setCellStyle(titleCell, "暂态统计", cellStyle); HSSFCell r1Cell0 = row1.createCell(0); - setCellStyle(r1Cell0,"按区域统计",cellStyle); + setCellStyle(r1Cell0, "按区域统计", cellStyle); HSSFCell r2Cell0 = row2.createCell(0); - setCellStyle(r2Cell0,"区域",cellStyle); + setCellStyle(r2Cell0, "区域", cellStyle); HSSFCell r2Cell1 = row2.createCell(1); - setCellStyle(r2Cell1,"监测点数量",cellStyle); + setCellStyle(r2Cell1, "监测点数量", cellStyle); HSSFCell r2Cell3 = row2.createCell(3); - setCellStyle(r2Cell3,"暂降次数",cellStyle); + setCellStyle(r2Cell3, "暂降次数", cellStyle); HSSFCell r2Cell4 = row2.createCell(4); - setCellStyle(r2Cell4,"中断次数",cellStyle); + setCellStyle(r2Cell4, "中断次数", cellStyle); HSSFCell r2Cell5 = row2.createCell(5); - setCellStyle(r2Cell5,"暂升次数",cellStyle); + setCellStyle(r2Cell5, "暂升次数", cellStyle); HSSFCell r3Cell1 = row3.createCell(1); - setCellStyle(r3Cell1,"在线",cellStyle); + setCellStyle(r3Cell1, "在线", cellStyle); HSSFCell r3Cell2 = row3.createCell(2); - setCellStyle(r3Cell2,"离线",cellStyle); + setCellStyle(r3Cell2, "离线", cellStyle); int titleSize = 4; HSSFCellStyle bodyStyle = sheets.createCellStyle(); bodyStyle.setAlignment(HorizontalAlignment.CENTER); @@ -789,33 +792,33 @@ public class ReportServiceImpl implements ReportService { } titleSize = titleSize + GereralList.size(); - sheetAt.addMergedRegion(new CellRangeAddress(titleSize,titleSize,0,5)); - sheetAt.addMergedRegion(new CellRangeAddress(titleSize+1,titleSize+2,0,0)); - sheetAt.addMergedRegion(new CellRangeAddress(titleSize+1,titleSize+1,1,2)); - sheetAt.addMergedRegion(new CellRangeAddress(titleSize+1,titleSize+2,3,3)); - sheetAt.addMergedRegion(new CellRangeAddress(titleSize+1,titleSize+2,4,4)); - sheetAt.addMergedRegion(new CellRangeAddress(titleSize+1,titleSize+2,5,5)); + sheetAt.addMergedRegion(new CellRangeAddress(titleSize, titleSize, 0, 5)); + sheetAt.addMergedRegion(new CellRangeAddress(titleSize + 1, titleSize + 2, 0, 0)); + sheetAt.addMergedRegion(new CellRangeAddress(titleSize + 1, titleSize + 1, 1, 2)); + sheetAt.addMergedRegion(new CellRangeAddress(titleSize + 1, titleSize + 2, 3, 3)); + sheetAt.addMergedRegion(new CellRangeAddress(titleSize + 1, titleSize + 2, 4, 4)); + sheetAt.addMergedRegion(new CellRangeAddress(titleSize + 1, titleSize + 2, 5, 5)); HSSFRow rown = sheetAt.createRow(titleSize); HSSFRow row1v = sheetAt.createRow(titleSize + 1); HSSFRow row2v = sheetAt.createRow(titleSize + 2); HSSFCell cellvt = rown.createCell(0); - setCellStyle(cellvt,"按电压等级统计",cellStyle); + setCellStyle(cellvt, "按电压等级统计", cellStyle); HSSFCell v1cell0 = row1v.createCell(0); - setCellStyle(v1cell0,"电压等级",cellStyle); + setCellStyle(v1cell0, "电压等级", cellStyle); HSSFCell v1cell1 = row1v.createCell(1); - setCellStyle(v1cell1,"监测点数量",cellStyle); + setCellStyle(v1cell1, "监测点数量", cellStyle); HSSFCell v2cell1 = row2v.createCell(1); - setCellStyle(v2cell1,"在线",cellStyle); + setCellStyle(v2cell1, "在线", cellStyle); HSSFCell v2cell2 = row2v.createCell(2); - setCellStyle(v2cell2,"离线",cellStyle); + setCellStyle(v2cell2, "离线", cellStyle); HSSFCell v1cell3 = row1v.createCell(3); HSSFCell v1cell4 = row1v.createCell(4); HSSFCell v1cell5 = row1v.createCell(5); - setCellStyle(v1cell3,"暂降次数",cellStyle); - setCellStyle(v1cell4,"中断次数",cellStyle); - setCellStyle(v1cell5,"暂升次数",cellStyle); + setCellStyle(v1cell3, "暂降次数", cellStyle); + setCellStyle(v1cell4, "中断次数", cellStyle); + setCellStyle(v1cell5, "暂升次数", cellStyle); titleSize = titleSize + 3; for (int i = 0; i < VoltageList.size(); i++) { GeneralVO vo = VoltageList.get(i); @@ -852,37 +855,37 @@ public class ReportServiceImpl implements ReportService { } HashMap map1 = new HashMap<>(); - map1.put("onlineData",JSONArray.fromObject(online).toString()); - map1.put("offlineData",JSONArray.fromObject(offline).toString()); - map1.put("xname","(区域)"); - map1.put("subtext","区域统计"); - map1.put("area",JSONArray.fromObject(xdata).toString()); + map1.put("onlineData", JSONArray.fromObject(online).toString()); + map1.put("offlineData", JSONArray.fromObject(offline).toString()); + map1.put("xname", "(区域)"); + map1.put("subtext", "区域统计"); + map1.put("area", JSONArray.fromObject(xdata).toString()); String str1 = getStr("bar.ftl", map1); HashMap map2 = new HashMap<>(); - map2.put("onlineData",JSONArray.fromObject(online2).toString()); - map2.put("offlineData",JSONArray.fromObject(offline2).toString()); - map2.put("xname","(电压等级)"); - map2.put("subtext","电压等级统计"); - map2.put("area",JSONArray.fromObject(xdata2).toString()); + map2.put("onlineData", JSONArray.fromObject(online2).toString()); + map2.put("offlineData", JSONArray.fromObject(offline2).toString()); + map2.put("xname", "(电压等级)"); + map2.put("subtext", "电压等级统计"); + map2.put("area", JSONArray.fromObject(xdata2).toString()); String str2 = getStr("bar.ftl", map2); HashMap map3 = new HashMap<>(); - map3.put("xname","(区域)"); - map3.put("subtext","区域等级"); - map3.put("area",JSONArray.fromObject(xdata).toString()); - map3.put("sag",JSONArray.fromObject(sag1).toString()); - map3.put("break",JSONArray.fromObject(break1).toString()); - map3.put("up",JSONArray.fromObject(up1).toString()); + map3.put("xname", "(区域)"); + map3.put("subtext", "区域等级"); + map3.put("area", JSONArray.fromObject(xdata).toString()); + map3.put("sag", JSONArray.fromObject(sag1).toString()); + map3.put("break", JSONArray.fromObject(break1).toString()); + map3.put("up", JSONArray.fromObject(up1).toString()); String str3 = getStr("bar2.ftl", map3); HashMap map4 = new HashMap<>(); - map4.put("xname","(电压等级)"); - map4.put("subtext","电压等级统计"); - map4.put("area",JSONArray.fromObject(xdata2).toString()); - map4.put("sag",JSONArray.fromObject(sag2).toString()); - map4.put("break",JSONArray.fromObject(break2).toString()); - map4.put("up",JSONArray.fromObject(up2).toString()); + map4.put("xname", "(电压等级)"); + map4.put("subtext", "电压等级统计"); + map4.put("area", JSONArray.fromObject(xdata2).toString()); + map4.put("sag", JSONArray.fromObject(sag2).toString()); + map4.put("break", JSONArray.fromObject(break2).toString()); + map4.put("up", JSONArray.fromObject(up2).toString()); String str4 = getStr("bar2.ftl", map4); HSSFPatriarch drawingPatriarch = sheetAt.createDrawingPatriarch(); @@ -914,12 +917,12 @@ public class ReportServiceImpl implements ReportService { throw new RuntimeException(e); } - drawingPatriarch.createPicture(anchor,sheets.addPicture(bytes1,HSSFWorkbook.PICTURE_TYPE_JPEG)); - drawingPatriarch.createPicture(anchor1,sheets.addPicture(bytes2,HSSFWorkbook.PICTURE_TYPE_JPEG)); - drawingPatriarch.createPicture(anchor2,sheets.addPicture(bytes3,HSSFWorkbook.PICTURE_TYPE_JPEG)); - drawingPatriarch.createPicture(anchor3,sheets.addPicture(bytes4,HSSFWorkbook.PICTURE_TYPE_JPEG)); + drawingPatriarch.createPicture(anchor, sheets.addPicture(bytes1, HSSFWorkbook.PICTURE_TYPE_JPEG)); + drawingPatriarch.createPicture(anchor1, sheets.addPicture(bytes2, HSSFWorkbook.PICTURE_TYPE_JPEG)); + drawingPatriarch.createPicture(anchor2, sheets.addPicture(bytes3, HSSFWorkbook.PICTURE_TYPE_JPEG)); + drawingPatriarch.createPicture(anchor3, sheets.addPicture(bytes4, HSSFWorkbook.PICTURE_TYPE_JPEG)); - PoiUtil.exportFileByWorkbook(sheets,"电压暂降周报.xlsx",response); + PoiUtil.exportFileByWorkbook(sheets, "电压暂降周报.xlsx", response); } /** @@ -943,9 +946,9 @@ public class ReportServiceImpl implements ReportService { * 监测点导出word * * @param exportParam . - * @param response . + * @param response . * @throws InvalidFormatException . - * @throws IOException . + * @throws IOException . */ @Override public void getLineExport(ExportParam exportParam, HttpServletResponse response) throws IOException, InvalidFormatException, TemplateException, ParseException { @@ -991,7 +994,7 @@ public class ReportServiceImpl implements ReportService { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy 年 MM 月 dd 日"); String time = dateFormat.format(date); - r2.setText("日期: " + time); + r2.setText("日期: " + time); r2.setBold(true);//设置为粗体 r2.setFontSize(14);//字体大小 @@ -1007,7 +1010,7 @@ public class ReportServiceImpl implements ReportService { p = doc.createParagraph(); //新建一个段落 p.setAlignment(ParagraphAlignment.LEFT); - createTitle(doc,"1. 引言","标题 1",0,15); + createTitle(doc, "1. 引言", "标题 1", 0, 15); p = doc.createParagraph(); //新建一个段落 p.setAlignment(ParagraphAlignment.BOTH); @@ -1017,7 +1020,7 @@ public class ReportServiceImpl implements ReportService { p = doc.createParagraph(); //新建一个段落 p.setAlignment(ParagraphAlignment.LEFT); - createTitle(doc,"2. 报告分析对象","标题 1",0,15); + createTitle(doc, "2. 报告分析对象", "标题 1", 0, 15); p = doc.createParagraph(); //新建一个段落 p.setAlignment(ParagraphAlignment.BOTH); @@ -1027,197 +1030,197 @@ public class ReportServiceImpl implements ReportService { p = doc.createParagraph(); //新建一个段落 p.setAlignment(ParagraphAlignment.LEFT); - createTitle(doc,"3. 报告分析时间","标题 1",0,15); + createTitle(doc, "3. 报告分析时间", "标题 1", 0, 15); p = doc.createParagraph(); //新建一个段落 p.setAlignment(ParagraphAlignment.BOTH); XWPFRun r9 = p.createRun();//创建段落文本 - r9.setText(exportParam.getSearchBeginTime()+" 至 "+exportParam.getSearchEndTime()); + r9.setText(exportParam.getSearchBeginTime() + " 至 " + exportParam.getSearchEndTime()); r9.setFontSize(11);//字体大小 p = doc.createParagraph(); //新建一个段落 p.setAlignment(ParagraphAlignment.LEFT); - createTitle(doc,"4. 总汇信息","标题 1",0,15); + createTitle(doc, "4. 总汇信息", "标题 1", 0, 15); //记录数 int i = 1; //监测点信息 - if (exportParam.isXq()){ - createTitle(doc,"4."+i+" 监测点信息","标题 2",200,15); + if (exportParam.isXq()) { + createTitle(doc, "4." + i + " 监测点信息", "标题 2", 200, 15); XWPFTable table = createTable(doc); XWPFParagraph centerParagraph = WordUtils.getCenterParagraph(doc); HttpResult lineDetailData = lineFeignClient.getLineDetailData(exportParam.getLineId()); - if (ObjectUtil.isNull(lineDetailData)){ + if (ObjectUtil.isNull(lineDetailData)) { throw new BusinessException(EventResponseEnum.NOT_FOUND); } - 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()); + 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()); i++; } //暂降事件列表 - if (exportParam.isLb()){ - createTitle(doc,"4."+i+" 暂降事件列表","标题 2",200,15); + if (exportParam.isLb()) { + createTitle(doc, "4." + i + " 暂降事件列表", "标题 2", 200, 15); XWPFTable table = createTable(doc); XWPFParagraph centerParagraph = WordUtils.getCenterParagraph(doc); - List plot = eventAnalysisService.getPlot(new StatisticsParam(exportParam.getLineId(), exportParam.getSearchBeginTime(), exportParam.getSearchEndTime(),exportParam.getFlag())); - insertRow(doc,table,centerParagraph,true,"序号","暂降发生时刻","暂降赋值(%)","持续时间(s)","暂降类型","暂降原因","严重度"); + List plot = eventAnalysisService.getPlot(new StatisticsParam(exportParam.getLineId(), exportParam.getSearchBeginTime(), exportParam.getSearchEndTime(), exportParam.getFlag())); + insertRow(doc, table, centerParagraph, true, "序号", "暂降发生时刻", "暂降赋值(%)", "持续时间(s)", "暂降类型", "暂降原因", "严重度"); 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()+""); + 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 detailList = eventAnalysisService.getPlot(new StatisticsParam(exportParam.getLineId(), exportParam.getSearchBeginTime(), exportParam.getSearchEndTime(),exportParam.getFlag())); - createTitle(doc,"4."+i+" 暂降事件点图","标题 2",200,15); + if (exportParam.isSjdF47() || exportParam.isSjdITIC()) { + List 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); + if (exportParam.isSjdITIC()) { + createTitle(doc, "4." + i + "." + two + " ITIC 曲线", "标题 3", 400, 15); ArrayList> list = new ArrayList<>(); for (EventDetail eventDetail : detailList) { ArrayList doubles = new ArrayList<>(); - doubles.add(Double.parseDouble(eventDetail.getPersistTime()/1000+"")); - doubles.add(Double.parseDouble(String.valueOf(eventDetail.getEventValue()*100))); + 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曲线"); + createPic(doc, itic, "ITIC曲线"); two++; } - if (exportParam.isSjdF47()){ - createTitle(doc,"4."+i+"."+two+" F47 曲线","标题 3",400,15); + if (exportParam.isSjdF47()) { + createTitle(doc, "4." + i + "." + two + " F47 曲线", "标题 3", 400, 15); ArrayList> list = new ArrayList<>(); for (EventDetail eventDetail : detailList) { ArrayList doubles = new ArrayList<>(); - doubles.add(Double.parseDouble(eventDetail.getPersistTime()/1000+"")); - doubles.add(Double.parseDouble(String.valueOf(eventDetail.getEventValue()*100))); + 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曲线"); + createPic(doc, f47, "SEMI F47曲线"); two++; } i++; } //暂降密度 - if (exportParam.isMdbg() || exportParam.isMdtx()){ - createTitle(doc,"4."+i+" 暂降密度","标题 2",200,15); + 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); + if (exportParam.isMdtx()) { + createTitle(doc, "4." + i + "." + two + " 暂降密度点图", "标题 3", 400, 15); two++; } - if (exportParam.isMdbg()){ + if (exportParam.isMdbg()) { XWPFParagraph centerParagraph = WordUtils.getCenterParagraph(doc); - createTitle(doc,"4."+i+"."+two+" DISDIP 表格:国际发配电联盟(UNIPEDE)","标题 3",400,15); - List eventDisdip = eventAnalysisService.eventDisdip(new StatisticsParam(exportParam.getLineId(), exportParam.getSearchBeginTime(), exportParam.getSearchEndTime(),exportParam.getFlag())); + createTitle(doc, "4." + i + "." + two + " DISDIP 表格:国际发配电联盟(UNIPEDE)", "标题 3", 400, 15); + List eventDisdip = eventAnalysisService.eventDisdip(new StatisticsParam(exportParam.getLineId(), exportParam.getSearchBeginTime(), exportParam.getSearchEndTime(), exportParam.getFlag())); 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++) { 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++; - createTitle(doc,"4."+i+"."+two+" IEC 61000-4-11:(用电终端的电压暂降抗度)","标题 3",400,15); - List iec411VOS = eventAnalysisService.IEC411(new StatisticsParam(exportParam.getLineId(), exportParam.getSearchBeginTime(), exportParam.getSearchEndTime(),exportParam.getFlag())); + createTitle(doc, "4." + i + "." + two + " IEC 61000-4-11:(用电终端的电压暂降抗度)", "标题 3", 400, 15); + List iec411VOS = eventAnalysisService.IEC411(new StatisticsParam(exportParam.getLineId(), exportParam.getSearchBeginTime(), exportParam.getSearchEndTime(), exportParam.getFlag())); 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++) { 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++; - createTitle(doc,"4."+i+"."+two+" IEC 61000-2-8:(公共电网电压暂降测量统计)","标题 3",400,15); - List iec28VOS = eventAnalysisService.IEC28(new StatisticsParam(exportParam.getLineId(), exportParam.getSearchBeginTime(), exportParam.getSearchEndTime(),exportParam.getFlag())); + createTitle(doc, "4." + i + "." + two + " IEC 61000-2-8:(公共电网电压暂降测量统计)", "标题 3", 400, 15); + List iec28VOS = eventAnalysisService.IEC28(new StatisticsParam(exportParam.getLineId(), exportParam.getSearchBeginTime(), exportParam.getSearchEndTime(), exportParam.getFlag())); 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++) { 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++; } i++; } //暂降幅值概率分布 - 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())); + 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())); int two = 1; - if (exportParam.isGlfbfz()){ - createTitle(doc,"4."+i+"."+two+" 暂降幅值的概率分函数","标题 3",400,15); + if (exportParam.isGlfbfz()) { + createTitle(doc, "4." + i + "." + two + " 暂降幅值的概率分函数", "标题 3", 400, 15); List ybardata = probabilityVO.getPereventvalue(); List ylinedata = probabilityVO.getEventvalue(); String fz = getFZ(ylinedata, ybardata); - createPic(doc,fz,"暂降幅值的概率分布函数"); + createPic(doc, fz, "暂降幅值的概率分布函数"); two++; } - if (exportParam.isGlfbsj()){ - createTitle(doc,"4."+i+"."+two+" 持续时间的概率分函数","标题 3",400,15); + if (exportParam.isGlfbsj()) { + createTitle(doc, "4." + i + "." + two + " 持续时间的概率分函数", "标题 3", 400, 15); List ybardata = probabilityVO.getPersisttime(); List ylinedata = probabilityVO.getSisttime(); String sj = getSJ(ylinedata, ybardata); - createPic(doc,sj,"持续时间的概率分布函数"); + createPic(doc, sj, "持续时间的概率分布函数"); two++; } i++; } //月份统计 - if (exportParam.isTjbg() || exportParam.isTjtx()){ - createTitle(doc,"4."+i+" 月份统计","标题 2",200,15); + if (exportParam.isTjbg() || exportParam.isTjtx()) { + createTitle(doc, "4." + i + " 月份统计", "标题 2", 200, 15); int two = 1; - List reasonTypeTime = eventAnalysisService.getReasonTypeTime(new StatisticsParam(exportParam.getLineId(), exportParam.getSearchBeginTime(), exportParam.getSearchEndTime(),exportParam.getFlag())); - if (exportParam.isTjtx()){ - createTitle(doc,"4."+i+"."+two+" 月份统计图","标题 3",400,15); + List reasonTypeTime = eventAnalysisService.getReasonTypeTime(new StatisticsParam(exportParam.getLineId(), exportParam.getSearchBeginTime(), exportParam.getSearchEndTime(), exportParam.getFlag())); + if (exportParam.isTjtx()) { + createTitle(doc, "4." + i + "." + two + " 月份统计图", "标题 3", 400, 15); List count = new ArrayList<>(); List name = new ArrayList<>(); - if (exportParam.getFlag()==0){ + if (exportParam.getFlag() == 0) { for (TimeVO timeVO : reasonTypeTime) { - name.add(timeVO.getMonth()+""); + name.add(timeVO.getMonth() + ""); count.add(Integer.parseInt(timeVO.getTimes())); } - }else { + } else { for (TimeVO timeVO : reasonTypeTime) { - name.add(timeVO.getDay()+""); + name.add(timeVO.getDay() + ""); count.add(Integer.parseInt(timeVO.getTimes())); } } - String yftj = getYFTJ(name, count, reasonTypeTime.get(0).getYear(),exportParam.getFlag()); - createPic(doc,yftj,"月份统计图"); + String yftj = getYFTJ(name, count, reasonTypeTime.get(0).getYear(), exportParam.getFlag()); + createPic(doc, yftj, "月份统计图"); two++; } - if (exportParam.isTjbg()){ + if (exportParam.isTjbg()) { 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); - if (exportParam.getFlag() == 0){ - insertRow(doc,table1,centerParagraph,true,"时间(月)","电压暂降次数"); - }else { - insertRow(doc,table1,centerParagraph,true,"时间(天)","电压暂降次数"); + if (exportParam.getFlag() == 0) { + insertRow(doc, table1, centerParagraph, true, "时间(月)", "电压暂降次数"); + } else { + insertRow(doc, table1, centerParagraph, true, "时间(天)", "电压暂降次数"); } - if (exportParam.getFlag()==0){ + 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()); + insertRow(doc, table1, centerParagraph, false, timeVO.getMonth(), timeVO.getTimes()); } - }else { + } else { for (int j = 0; j < reasonTypeTime.size(); 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++; @@ -1225,62 +1228,62 @@ public class ReportServiceImpl implements ReportService { i++; } //原因统计 - 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())); + 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); + if (exportParam.isYytx()) { + createTitle(doc, "4." + i + "." + two + " 原因统计图", "标题 3", 400, 15); List xdata = new ArrayList<>(); List reason = statistic.getReason(); for (ReasonsVO reasonsVO : reason) { xdata.add(reasonsVO.getReason()); } - String tr = getR(xdata, reason,"bar9.ftl"); - createPic(doc,tr,"暂降原因图"); + String tr = getR(xdata, reason, "bar9.ftl"); + createPic(doc, tr, "暂降原因图"); two++; } - if (exportParam.isYybg()){ + if (exportParam.isYybg()) { 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); - insertRow(doc,table1,centerParagraph,true,"暂降原因","电压暂降次数"); + insertRow(doc, table1, centerParagraph, true, "暂降原因", "电压暂降次数"); List reason = statistic.getReason(); for (int j = 0; j < reason.size(); j++) { ReasonsVO reasonsVO = reason.get(j); - insertRow(doc,table1,centerParagraph,false,reasonsVO.getReason(),reasonsVO.getTimes()+""); + 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())); + 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); + if (exportParam.isLxtx()) { + createTitle(doc, "4." + i + "." + two + " 类型统计图", "标题 3", 400, 15); List xdata = new ArrayList<>(); List types = statistic.getTypes(); for (TypesVO type : types) { - if (type.getTimes()>0){ + if (type.getTimes() > 0) { xdata.add(type.getType()); } } String tr = getT(xdata, types, "bar8.ftl"); - createPic(doc,tr,"暂降类型图"); + createPic(doc, tr, "暂降类型图"); two++; } - if (exportParam.isLxbg()){ - createTitle(doc,"4."+i+"."+two+" 类型统计表格","标题 3",400,15); + 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,"暂降原因","电压暂降次数"); + insertRow(doc, table1, centerParagraph, true, "暂降原因", "电压暂降次数"); List types = statistic.getTypes(); for (int j = 0; j < types.size(); j++) { TypesVO typesVO = types.get(j); - insertRow(doc,table1,centerParagraph,false,typesVO.getType(),typesVO.getTimes()+""); + insertRow(doc, table1, centerParagraph, false, typesVO.getType(), typesVO.getTimes() + ""); } two++; } @@ -1288,71 +1291,72 @@ public class ReportServiceImpl implements ReportService { } 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.setContentType("application/octet-stream;charset=UTF-8"); doc.write(outputStream); outputStream.close(); } - public String getStr(String barName,Map map) throws TemplateException, IOException { + + public String getStr(String barName, Map map) throws TemplateException, IOException { String s = FreemarkerUtil.generateString(barName, "com/njcn/event/template", map); - return EchartsUtil.generateEchartsBase64(s,"8910"); + return EchartsUtil.generateEchartsBase64(s, "8910"); } - public String getPicName(JSONObject jsonObject){ + public String getPicName(JSONObject jsonObject) { ResponseEntity forEntity = restTemplate.getForEntity("http://192.168.1.13:8910?opt={1}&width={2}&height={3}", HttpResult.class, jsonObject.toString(), 714, 300); return forEntity.getBody().getData().toString(); } - public String getR(List xname,List map2,String barname) throws TemplateException, IOException { + public String getR(List xname, List map2, String barname) throws TemplateException, IOException { HashMap map = new HashMap<>(); - map.put("typeArray",JSONArray.fromObject(xname).toString()); - map.put("valueArray",map2); + map.put("typeArray", JSONArray.fromObject(xname).toString()); + map.put("valueArray", map2); String str = getStr(barname, map); return str; } - public String getT(List xname,List map2,String barname) throws TemplateException, IOException { + public String getT(List xname, List map2, String barname) throws TemplateException, IOException { HashMap map = new HashMap<>(); - map.put("typeArray",JSONArray.fromObject(xname).toString()); - map.put("valueArray",map2); + map.put("typeArray", JSONArray.fromObject(xname).toString()); + map.put("valueArray", map2); String str = getStr(barname, map); return str; } - public String getYFTJ(List xname, List times,String year,Integer flag) throws TemplateException, IOException { + public String getYFTJ(List xname, List times, String year, Integer flag) throws TemplateException, IOException { HashMap map = new HashMap<>(); - xname.set(0,xname.get(0)+"\n"+"("+year+")"); - if (flag==0){ - map.put("text","月份统计"); - map.put("xname","月份"); - }else { - map.put("text","天数统计"); - map.put("xname","天数"); + xname.set(0, xname.get(0) + "\n" + "(" + year + ")"); + if (flag == 0) { + map.put("text", "月份统计"); + map.put("xname", "月份"); + } else { + map.put("text", "天数统计"); + map.put("xname", "天数"); } - map.put("months",JSONArray.fromObject(xname).toString()); - map.put("handle",JSONArray.fromObject(times).toString()); + map.put("months", JSONArray.fromObject(xname).toString()); + map.put("handle", JSONArray.fromObject(times).toString()); String str = getStr("bar7.ftl", map); return str; } - public String getFZ(List eventvalue,List pereventvalue) throws TemplateException, IOException { + public String getFZ(List eventvalue, List pereventvalue) throws TemplateException, IOException { HashMap map = new HashMap<>(); - map.put("eventValue",JSONArray.fromObject(eventvalue).toString()); - map.put("pereventValue",JSONArray.fromObject(pereventvalue).toString()); + map.put("eventValue", JSONArray.fromObject(eventvalue).toString()); + map.put("pereventValue", JSONArray.fromObject(pereventvalue).toString()); String str = getStr("bar5.ftl", map); return str; } - public String getSJ(List sisttime,List persisttime) throws TemplateException, IOException { + public String getSJ(List sisttime, List persisttime) throws TemplateException, IOException { HashMap map = new HashMap<>(); - map.put("sisttime",JSONArray.fromObject(sisttime).toString()); - map.put("persisttime",JSONArray.fromObject(persisttime).toString()); + map.put("sisttime", JSONArray.fromObject(sisttime).toString()); + map.put("persisttime", JSONArray.fromObject(persisttime).toString()); String str = getStr("bar6.ftl", map); return str; } - public JSONObject getBar1(List xdata,List ydata,String tl,String title,String xname,String yname){ + public JSONObject getBar1(List xdata, List ydata, String tl, String title, String xname, String yname) { //初始化option GsonOption option = new GsonOption(); //设置标头 @@ -1380,7 +1384,7 @@ public class ReportServiceImpl implements ReportService { bar.setType(SeriesType.bar); bar.data(ydata.toArray()); bar.barMaxWidth(30); - setPosition(bar,"top","#FF7E50"); + setPosition(bar, "top", "#FF7E50"); option.series(bar); ValueAxis valueAxis = new ValueAxis(); @@ -1399,43 +1403,43 @@ public class ReportServiceImpl implements ReportService { for (int i = 0; i < xbardata.size(); i++) { List list = xbardata.get(i); //是否超过上限 - if (list.get(0)<=0.03){ + if (list.get(0) <= 0.03) { int line = 230 - 30000 * list.get(0).intValue(); - if (list.get(1)>line){ + if (list.get(1) > line) { pointno.add(list); - }else { + } else { point.add(list); } - }else if (list.get(0)<=0.02){ - if (list.get(1)>120){ + } else if (list.get(0) <= 0.02) { + if (list.get(1) > 120) { pointno.add(list); - }else { + } else { point.add(list); } - }else if (list.get(0)<=0.5){ - if (list.get(1)>120 || list.get(1)<70){ + } else if (list.get(0) <= 0.5) { + if (list.get(1) > 120 || list.get(1) < 70) { pointno.add(list); - }else { + } else { point.add(list); } - }else if (list.get(0)<=10){ - if (list.get(1)>110 || list.get(1)<80){ + } else if (list.get(0) <= 10) { + if (list.get(1) > 110 || list.get(1) < 80) { pointno.add(list); - }else { + } else { point.add(list); } - }else { - if (list.get(1)>110 || list.get(1)<90){ + } else { + if (list.get(1) > 110 || list.get(1) < 90) { pointno.add(list); - }else { + } else { point.add(list); } } } HashMap map = new HashMap<>(); - map.put("point",JSONArray.fromObject(point).toString()); - map.put("pointno",JSONArray.fromObject(pointno).toString()); + map.put("point", JSONArray.fromObject(point).toString()); + map.put("pointno", JSONArray.fromObject(pointno).toString()); String str = getStr("bar3.ftl", map); return str; } @@ -1462,7 +1466,7 @@ public class ReportServiceImpl implements ReportService { double max = 0.0; for (int i = 0; i < part.length; i++) { - if (part[i][1]>max){ + if (part[i][1] > max) { max = part[i][1]; } } @@ -1471,45 +1475,44 @@ public class ReportServiceImpl implements ReportService { for (int i = 0; i < xbardata.size(); i++) { List list = xbardata.get(i); //是否超过上限 - if (list.get(0)<0.05){ + if (list.get(0) < 0.05) { pointno.add(list); - }else if (list.get(0)<0.2){ - if (list.get(1)>50){ + } else if (list.get(0) < 0.2) { + if (list.get(1) > 50) { point.add(list); - }else { + } else { pointno.add(list); } - }else if (list.get(0)<0.5){ - if (list.get(1)>70){ + } else if (list.get(0) < 0.5) { + if (list.get(1) > 70) { point.add(list); - }else { + } else { pointno.add(list); } - }else { - if (list.get(1)>80){ + } else { + if (list.get(1) > 80) { point.add(list); - }else { + } else { pointno.add(list); } } } HashMap map = new HashMap<>(); - map.put("zdz",max); - map.put("bjx",JSONArray.fromObject(part).toString()); - map.put("point",JSONArray.fromObject(point).toString()); - map.put("pointno",JSONArray.fromObject(pointno).toString()); + map.put("zdz", max); + map.put("bjx", JSONArray.fromObject(part).toString()); + map.put("point", JSONArray.fromObject(point).toString()); + map.put("pointno", JSONArray.fromObject(pointno).toString()); String str = getStr("bar4.ftl", map); return str; } /** - * * @param bar * @param position 位置 - * @param color 颜色 + * @param color 颜色 */ - public void setPosition(Bar bar,String position,String color){ + public void setPosition(Bar bar, String position, String color) { //设置标签 Label label = new Label(); label.show(true); @@ -1577,7 +1580,7 @@ public class ReportServiceImpl implements ReportService { return summaTable; } - public void setCellStyle(HSSFCell cellname,String value,HSSFCellStyle style){ + public void setCellStyle(HSSFCell cellname, String value, HSSFCellStyle style) { cellname.setCellValue(value); cellname.setCellStyle(style); } @@ -2493,7 +2496,7 @@ public class ReportServiceImpl implements ReportService { p = doc.createParagraph();// 新建一个段落 p.setAlignment(ParagraphAlignment.CENTER); XWPFRun r1 = p.createRun();//创建段落文本 - r1.setText("电压"+typeName+"事件区域报告"); + r1.setText("电压" + typeName + "事件区域报告"); r1.setBold(true);//设置为粗体 r1.setFontSize(36);//字体大小 r1.addBreak(); @@ -2525,7 +2528,7 @@ public class ReportServiceImpl implements ReportService { p = doc.createParagraph();// 新建一个段落 p.setAlignment(ParagraphAlignment.CENTER); XWPFRun r3 = p.createRun();//创建段落文本 - r3.setText("电压"+typeName+"事件区域报告"); + r3.setText("电压" + typeName + "事件区域报告"); r3.setFontSize(24);//字体大小 @@ -2536,7 +2539,7 @@ public class ReportServiceImpl implements ReportService { p.setAlignment(ParagraphAlignment.BOTH); XWPFRun r5 = p.createRun();//创建段落文本 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);//字体大小 @@ -3175,17 +3178,17 @@ public class ReportServiceImpl implements ReportService { oneCount5 = oneCount; - createTitle(doc, "4." + oneCount + " "+typeName+"事件列表", "标题 2", 200, 11); + createTitle(doc, "4." + oneCount + " " + typeName + "事件列表", "标题 2", 200, 11); p = doc.createParagraph();// 新建一个段落 p.setAlignment(ParagraphAlignment.BOTH); XWPFRun r12 = p.createRun();//创建段落文本 - r12.setText(" 中国电网在所选择的分析时间段内累计监测"+typeName+"记录" + eventCount + "条," + topVoltageList.get(0) + "、" + topVoltageList.get(1) + ""+typeName+"事件居多," + - "第" + dayOfMonth + "" + table + ""+typeName+"事件居多,具体见下表(图):"); + r12.setText(" 中国电网在所选择的分析时间段内累计监测" + typeName + "记录" + eventCount + "条," + topVoltageList.get(0) + "、" + topVoltageList.get(1) + "" + typeName + "事件居多," + + "第" + dayOfMonth + "" + table + "" + typeName + "事件居多,具体见下表(图):"); r12.setFontSize(11);//字体大小 - createTitle(doc, "4." + oneCount + "." + twoCount + " "+typeName+"事件表格", "标题 3", 400, 11); + createTitle(doc, "4." + oneCount + "." + twoCount + " " + typeName + "事件表格", "标题 3", 400, 11); twoCount2 = twoCount; @@ -3194,7 +3197,7 @@ public class ReportServiceImpl implements ReportService { XWPFParagraph monitorInfoExcelParagraph = WordUtils.getCenterParagraph(doc); // 表格第一行 - insertRow(doc, monitorInfo, monitorInfoExcelParagraph, true, "区域", "电压"+typeName+"次数"); + insertRow(doc, monitorInfo, monitorInfoExcelParagraph, true, "区域", "电压" + typeName + "次数"); //塞入数据 @@ -3207,7 +3210,7 @@ public class ReportServiceImpl implements ReportService { XWPFParagraph monitorInfoExcelParagraph1 = WordUtils.getCenterParagraph(doc); // 表格第一行 - insertRow(doc, monitorInfo1, monitorInfoExcelParagraph1, true, "电压等级", "电压"+typeName+"次数"); + insertRow(doc, monitorInfo1, monitorInfoExcelParagraph1, true, "电压等级", "电压" + typeName + "次数"); //塞入数据 @@ -3220,7 +3223,7 @@ public class ReportServiceImpl implements ReportService { XWPFParagraph monitorInfoExcelParagraph2 = WordUtils.getCenterParagraph(doc); // 表格第一行 - insertRow(doc, monitorInfo2, monitorInfoExcelParagraph2, true, "" + table + "", "电压"+typeName+"次数"); + insertRow(doc, monitorInfo2, monitorInfoExcelParagraph2, true, "" + table + "", "电压" + typeName + "次数"); //塞入数据 @@ -3779,7 +3782,7 @@ public class ReportServiceImpl implements ReportService { */ if (areaReportParam.isEventCountTable()) { twoCount2++; - createTitle(doc, "4." + oneCount5 + "." + twoCount2 + " "+typeName+"事件图形", "标题 3", 400, 11); + createTitle(doc, "4." + oneCount5 + "." + twoCount2 + " " + typeName + "事件图形", "标题 3", 400, 11); //创建部门与监测点次数的map集合 @@ -3804,7 +3807,7 @@ public class ReportServiceImpl implements ReportService { } String qytj = getQYTJ(xdata, ydata); - createPic(doc, qytj, ""+typeName+"事件图形"); + createPic(doc, qytj, "" + typeName + "事件图形"); //月份统计 @@ -3825,8 +3828,7 @@ public class ReportServiceImpl implements ReportService { tableList.add(table); String yftj = getYFTJ1(xdata1, ydata1, ydata2, year, tableList); - createPic(doc, yftj, ""+typeName+"事件图形"); - + createPic(doc, yftj, "" + typeName + "事件图形"); //创建部门与监测点次数的map集合 @@ -3850,7 +3852,7 @@ public class ReportServiceImpl implements ReportService { ydata3.add(Integer.parseInt(reportCountParam.getCount())); } String dydj = getDYDJ(xdata3, ydata3); - createPic(doc, dydj, ""+typeName+"事件图形"); + createPic(doc, dydj, "" + typeName + "事件图形"); /** @@ -3862,17 +3864,17 @@ public class ReportServiceImpl implements ReportService { int twoCount = 1; - createTitle(doc, "4." + oneCount + " "+typeName+"事件列表", "标题 2", 200, 11); + createTitle(doc, "4." + oneCount + " " + typeName + "事件列表", "标题 2", 200, 11); p = doc.createParagraph();// 新建一个段落 p.setAlignment(ParagraphAlignment.BOTH); XWPFRun r12 = p.createRun();//创建段落文本 - r12.setText(" 中国电网在所选择的分析时间段内累计监测"+typeName+"记录" + eventCount + "条," + topVoltageList.get(0) + "、" + topVoltageList.get(1) + ""+typeName+"事件居多," + - "第" + dayOfMonth + "" + table + ""+typeName+"事件居多,具体见下表(图):"); + r12.setText(" 中国电网在所选择的分析时间段内累计监测" + typeName + "记录" + eventCount + "条," + topVoltageList.get(0) + "、" + topVoltageList.get(1) + "" + typeName + "事件居多," + + "第" + dayOfMonth + "" + table + "" + typeName + "事件居多,具体见下表(图):"); r12.setFontSize(11);//字体大小 - createTitle(doc, "4." + oneCount + "." + twoCount + " "+typeName+"事件图形", "标题 3", 400, 11); + createTitle(doc, "4." + oneCount + "." + twoCount + " " + typeName + "事件图形", "标题 3", 400, 11); //创建部门与监测点次数的map集合 @@ -3897,7 +3899,7 @@ public class ReportServiceImpl implements ReportService { } String qytj = getQYTJ(xdata, ydata); - createPic(doc, qytj, ""+typeName+"事件图形"); + createPic(doc, qytj, "" + typeName + "事件图形"); //月份统计 @@ -3918,8 +3920,7 @@ public class ReportServiceImpl implements ReportService { tableList.add(table); String yftj = getYFTJ1(xdata1, ydata1, ydata2, year, tableList); - createPic(doc, yftj, ""+typeName+"事件图形"); - + createPic(doc, yftj, "" + typeName + "事件图形"); //创建部门与监测点次数的map集合 @@ -3945,7 +3946,7 @@ public class ReportServiceImpl implements ReportService { String dydj = getDYDJ(xdata3, ydata3); - createPic(doc, dydj, ""+typeName+"事件图形"); + createPic(doc, dydj, "" + typeName + "事件图形"); //序号计数进行++ @@ -5336,13 +5337,13 @@ public class ReportServiceImpl implements ReportService { //同步给暂降密度图 oneCount4 = oneCount; - createTitle(doc, "4." + oneCount + " "+typeName+"密度", "标题 2", 200, 11); + createTitle(doc, "4." + oneCount + " " + typeName + "密度", "标题 2", 200, 11); p = doc.createParagraph();// 新建一个段落 p.setAlignment(ParagraphAlignment.BOTH); XWPFRun r12 = p.createRun();//创建段落文本 - r12.setText(" "+typeName+"密度统计可以从幅值和持续时间两个维度直接地反映"+typeName+"事件发生情况,主要反应事件的发生次数," + - "中国电网在所选择的分析时间内"+typeName+"事件主要集中在幅值为" + resultList.get(0) + ",持续时间为" + resultList.get(2) + "[根据 IEC 61000-2-8:(公共电网电压"+typeName+"测量统计)算出"+typeName+"事件发生最多的区间],具体见表(图):"); + r12.setText(" " + typeName + "密度统计可以从幅值和持续时间两个维度直接地反映" + typeName + "事件发生情况,主要反应事件的发生次数," + + "中国电网在所选择的分析时间内" + typeName + "事件主要集中在幅值为" + resultList.get(0) + ",持续时间为" + resultList.get(2) + "[根据 IEC 61000-2-8:(公共电网电压" + typeName + "测量统计)算出" + typeName + "事件发生最多的区间],具体见表(图):"); r12.setFontSize(11);//字体大小 @@ -5366,7 +5367,7 @@ public class ReportServiceImpl implements ReportService { 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); @@ -5385,7 +5386,7 @@ public class ReportServiceImpl implements ReportService { 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); @@ -6788,24 +6789,24 @@ public class ReportServiceImpl implements ReportService { twoCount1++; //如果幅值图存在与幅值的序号保持同步 - createTitle(doc, "4." + oneCount4 + "." + twoCount1 + " "+typeName+"密度图", "标题 3", 400, 11); + createTitle(doc, "4." + oneCount4 + "." + twoCount1 + " " + typeName + "密度图", "标题 3", 400, 11); //代码 } else { int twoCount = 1; - createTitle(doc, "4." + oneCount + " "+typeName+"密度", "标题 2", 200, 11); + createTitle(doc, "4." + oneCount + " " + typeName + "密度", "标题 2", 200, 11); p = doc.createParagraph();// 新建一个段落 p.setAlignment(ParagraphAlignment.BOTH); XWPFRun r12 = p.createRun();//创建段落文本 - r12.setText(" "+typeName+"密度统计可以从幅值和持续时间两个维度直接地反映"+typeName+"事件发生情况,主要反应事件的发生次数," + - "中国电网在所选择的分析时间内"+typeName+"事件主要集中在幅值为" + resultList.get(0) + ",持续时间为" + resultList.get(2) + "[根据 IEC 61000-2-8:(公共电网电压"+typeName+"测量统计)算出"+typeName+"事件发生最多的区间],具体见表(图):"); + r12.setText(" " + typeName + "密度统计可以从幅值和持续时间两个维度直接地反映" + typeName + "事件发生情况,主要反应事件的发生次数," + + "中国电网在所选择的分析时间内" + typeName + "事件主要集中在幅值为" + resultList.get(0) + ",持续时间为" + resultList.get(2) + "[根据 IEC 61000-2-8:(公共电网电压" + typeName + "测量统计)算出" + typeName + "事件发生最多的区间],具体见表(图):"); r12.setFontSize(11);//字体大小 - createTitle(doc, "4." + oneCount + "." + twoCount + " "+typeName+"密度图", "标题 3", 400, 11); + createTitle(doc, "4." + oneCount + "." + twoCount + " " + typeName + "密度图", "标题 3", 400, 11); //代码 @@ -6865,12 +6866,12 @@ public class ReportServiceImpl implements ReportService { oneCount3 = oneCount; - createTitle(doc, "4." + oneCount3 + " "+typeName+"事件点图", "标题 2", 200, 11); + createTitle(doc, "4." + oneCount3 + " " + typeName + "事件点图", "标题 2", 200, 11); p = doc.createParagraph();// 新建一个段落 p.setAlignment(ParagraphAlignment.BOTH); XWPFRun r12 = p.createRun();//创建段落文本 - r12.setText(" "+typeName+"事件点图统计分成ITIC曲线和F47曲线展示。"); + r12.setText(" " + typeName + "事件点图统计分成ITIC曲线和F47曲线展示。"); r12.setFontSize(11);//字体大小 @@ -6879,7 +6880,7 @@ public class ReportServiceImpl implements ReportService { p = doc.createParagraph();// 新建一个段落 p.setAlignment(ParagraphAlignment.BOTH); 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);//字体大小 @@ -6949,7 +6950,7 @@ public class ReportServiceImpl implements ReportService { p = doc.createParagraph();// 新建一个段落 p.setAlignment(ParagraphAlignment.BOTH); 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);//字体大小 @@ -6965,12 +6966,12 @@ public class ReportServiceImpl implements ReportService { oneCount3 = oneCount; - createTitle(doc, "4." + oneCount + " "+typeName+"事件点图", "标题 2", 200, 11); + createTitle(doc, "4." + oneCount + " " + typeName + "事件点图", "标题 2", 200, 11); p = doc.createParagraph();// 新建一个段落 p.setAlignment(ParagraphAlignment.BOTH); XWPFRun r12 = p.createRun();//创建段落文本 - r12.setText(" "+typeName+"事件点图统计分成ITIC曲线和F47曲线展示。"); + r12.setText(" " + typeName + "事件点图统计分成ITIC曲线和F47曲线展示。"); r12.setFontSize(11);//字体大小 @@ -6979,7 +6980,7 @@ public class ReportServiceImpl implements ReportService { p = doc.createParagraph();// 新建一个段落 p.setAlignment(ParagraphAlignment.BOTH); 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);//字体大小 @@ -7101,23 +7102,23 @@ public class ReportServiceImpl implements ReportService { oneCount2 = oneCount; - createTitle(doc, "4." + oneCount2 + " "+typeName+"幅值概率分布图", "标题 2", 200, 11); + createTitle(doc, "4." + oneCount2 + " " + typeName + "幅值概率分布图", "标题 2", 200, 11); p = doc.createParagraph();// 新建一个段落 p.setAlignment(ParagraphAlignment.BOTH); XWPFRun r12 = p.createRun();//创建段落文本 - r12.setText(" "+typeName+"概率分布图分成"+typeName+"幅值概率分布和持续时间概率分布图,中国电网在所选择的分析时间内"+typeName+"事件从幅值概率分布统计主要集中在幅值为" + amplitudeResult.get(0) + "~" + amplitudeResult.get(1) + "之间," + - "从持续时间统计主要集中在持续时间为" + amplitudeResult1.get(0) + "~" + amplitudeResult1.get(1) + "[持续时间排序,选择"+typeName+"记录发生最多的区域],如下表(图):"); + r12.setText(" " + typeName + "概率分布图分成" + typeName + "幅值概率分布和持续时间概率分布图,中国电网在所选择的分析时间内" + typeName + "事件从幅值概率分布统计主要集中在幅值为" + amplitudeResult.get(0) + "~" + amplitudeResult.get(1) + "之间," + + "从持续时间统计主要集中在持续时间为" + amplitudeResult1.get(0) + "~" + amplitudeResult1.get(1) + "[持续时间排序,选择" + typeName + "记录发生最多的区域],如下表(图):"); r12.setFontSize(11);//字体大小 - createTitle(doc, "4." + oneCount + "." + twoCount + " "+typeName+"幅值的概率分布函数", "标题 3", 400, 11); + createTitle(doc, "4." + oneCount + "." + twoCount + " " + typeName + "幅值的概率分布函数", "标题 3", 400, 11); List ybardata = probabilityDistributionArea.getPereventvalue(); List ylinedata = probabilityDistributionArea.getEventvalue(); String fz = getFZ(ylinedata, ybardata); - createPic(doc, fz, ""+typeName+"幅值的概率分布函数"); + createPic(doc, fz, "" + typeName + "幅值的概率分布函数"); //序号计数进行++ @@ -7247,13 +7248,13 @@ public class ReportServiceImpl implements ReportService { } else { - createTitle(doc, "4." + oneCount2 + " "+typeName+"幅值概率分布图", "标题 2", 200, 11); + createTitle(doc, "4." + oneCount2 + " " + typeName + "幅值概率分布图", "标题 2", 200, 11); p = doc.createParagraph();// 新建一个段落 p.setAlignment(ParagraphAlignment.BOTH); XWPFRun r12 = p.createRun();//创建段落文本 - r12.setText(" "+typeName+"概率分布图分成"+typeName+"幅值概率分布和持续时间概率分布图,中国电网在所选择的分析时间内"+typeName+"事件从幅值概率分布统计主要集中在幅值为" + amplitudeResult.get(0) + "~" + amplitudeResult.get(1) + "之间," + - "从持续时间统计主要集中在持续时间为" + amplitudeResult1.get(0) + "~" + amplitudeResult1.get(1) + "[持续时间排序,选择"+typeName+"记录发生最多的区域],如下表(图):"); + r12.setText(" " + typeName + "概率分布图分成" + typeName + "幅值概率分布和持续时间概率分布图,中国电网在所选择的分析时间内" + typeName + "事件从幅值概率分布统计主要集中在幅值为" + amplitudeResult.get(0) + "~" + amplitudeResult.get(1) + "之间," + + "从持续时间统计主要集中在持续时间为" + amplitudeResult1.get(0) + "~" + amplitudeResult1.get(1) + "[持续时间排序,选择" + typeName + "记录发生最多的区域],如下表(图):"); r12.setFontSize(11);//字体大小 @@ -7360,7 +7361,7 @@ public class ReportServiceImpl implements ReportService { p.setAlignment(ParagraphAlignment.BOTH); XWPFRun r12 = p.createRun();//创建段落文本 //归一化需要高级算法,先字符串代替 - r12.setText(" 中国电网在所选择的分析时间段内累计监测"+typeName+"记录" + resultCount.get("count") + "条,归一化统计后共" + resultCount1 + "[此为归一化后的暂态事件结果]条,,具体如下图所示:"); + r12.setText(" 中国电网在所选择的分析时间段内累计监测" + typeName + "记录" + resultCount.get("count") + "条,归一化统计后共" + resultCount1 + "[此为归一化后的暂态事件结果]条,,具体如下图所示:"); r12.setFontSize(11);//字体大小 @@ -7518,7 +7519,7 @@ public class ReportServiceImpl implements ReportService { XWPFParagraph monitorInfoExcelParagraph = WordUtils.getCenterParagraph(doc); // 表格第一行 - insertRow(doc, monitorInfo, monitorInfoExcelParagraph, true, "暂态类型", "电压"+typeName+"次数"); + insertRow(doc, monitorInfo, monitorInfoExcelParagraph, true, "暂态类型", "电压" + typeName + "次数"); //塞入数据 @@ -7671,7 +7672,7 @@ public class ReportServiceImpl implements ReportService { String tr = getR(xdata, reason, "bar9.ftl"); - createPic(doc, tr, ""+typeName+"原因图"); + createPic(doc, tr, "" + typeName + "原因图"); } else { @@ -7710,7 +7711,7 @@ public class ReportServiceImpl implements ReportService { String tr = getR(xdata, reason, "bar9.ftl"); - createPic(doc, tr, ""+typeName+"原因图"); + createPic(doc, tr, "" + typeName + "原因图"); //序号计数进行++ oneCount++; @@ -7851,7 +7852,7 @@ public class ReportServiceImpl implements ReportService { XWPFParagraph monitorInfoExcelParagraph = WordUtils.getCenterParagraph(doc); // 表格第一行 - insertRow(doc, monitorInfo, monitorInfoExcelParagraph, true, "暂态类型", "电压"+typeName+"次数"); + insertRow(doc, monitorInfo, monitorInfoExcelParagraph, true, "暂态类型", "电压" + typeName + "次数"); //塞入数据 @@ -8001,7 +8002,7 @@ public class ReportServiceImpl implements ReportService { } String tr = getT(xdata, types, "bar8.ftl"); - createPic(doc, tr, ""+typeName+"类型图"); + createPic(doc, tr, "" + typeName + "类型图"); } else { //创建表题计数 @@ -8036,7 +8037,7 @@ public class ReportServiceImpl implements ReportService { } String tr = getT(xdata, types, "bar8.ftl"); - createPic(doc, tr, ""+typeName+"类型图"); + createPic(doc, tr, "" + typeName + "类型图"); //序号计数进行++ oneCount++; @@ -8052,12 +8053,12 @@ public class ReportServiceImpl implements ReportService { */ - createTitle(doc, "4." + oneCount + " "+typeName+"热力图", "标题 2", 200, 11); + createTitle(doc, "4." + oneCount + " " + typeName + "热力图", "标题 2", 200, 11); p = doc.createParagraph();// 新建一个段落 p.setAlignment(ParagraphAlignment.BOTH); XWPFRun r12 = p.createRun();//创建段落文本 - r12.setText(" 中国网在所选择的分析时间段内累计监测"+typeName+"记录" + eventCount + "条,使用颜色将地图上按照"+typeName+"记录发生频率进行描绘,所形成的热力具体见下图:"); + r12.setText(" 中国网在所选择的分析时间段内累计监测" + typeName + "记录" + eventCount + "条,使用颜色将地图上按照" + typeName + "记录发生频率进行描绘,所形成的热力具体见下图:"); r12.setFontSize(11);//字体大小 //所有的表结果装入集合 diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/TransientServiceImpl.java b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/TransientServiceImpl.java index 84a5dea02..f9bf06cee 100644 --- a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/TransientServiceImpl.java +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/TransientServiceImpl.java @@ -45,6 +45,7 @@ import java.time.LocalDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; @@ -85,25 +86,18 @@ public class TransientServiceImpl implements TransientService { List deviceList = generalDeviceInfoClient.getPracticalRunDeviceInfo(transientParam).getData(); if (!CollectionUtils.isEmpty(deviceList)) { //获取按终端分类的监测点索引集合 - List> LineIndexes = deviceList.stream().map(GeneralDeviceDTO::getLineIndexes).collect(Collectors.toList()); - List lineList = new ArrayList<>(); - for (int i = 0; i < LineIndexes.size(); i++) { - List lineIds = LineIndexes.get(i); - for (int a = 0; a < lineIds.size(); a++) { - lineList.add(lineIds.get(a)); - } - } - if (!CollectionUtils.isEmpty(lineList)) { + List LineIndexes = deviceList.stream().flatMap(list->list.getLineIndexes().stream()).collect(Collectors.toList()); + + if (!CollectionUtils.isEmpty(LineIndexes)) { //influxDB查询待分页数据总量 - List data = eventDetailService.getEventDetail(lineList, transientParam.getSearchBeginTime(), transientParam.getSearchEndTime(),transientParam.getWaveType()); + /* List data = eventDetailService.getEventDetail(LineIndexes, transientParam.getSearchBeginTime(), transientParam.getSearchEndTime(),transientParam.getWaveType()); page.setTotal(data.size()); //分页总页数 int pages = (int) Math.ceil(data.size() * 1.0 / transientParam.getPageSize()); - page.setPages(pages); + page.setPages(pages);*/ //influxDB分页查询 - List eventDetailData = eventDetailService.getEventDetailLimit(lineList, transientParam.getSearchBeginTime(), transientParam.getSearchEndTime(), transientParam.getPageSize(), transientParam.getPageNum(),transientParam.getWaveType()); - // List> partition = Lists.partition(eventDetailData, transientParam.getPageSize()); - // List detailList = partition.get(transientParam.getPageNum() - 1); + List eventDetailData = eventDetailService.getEventDetailLimit(LineIndexes, transientParam.getSearchBeginTime(), transientParam.getSearchEndTime(), transientParam.getPageSize(), transientParam.getPageNum(),transientParam.getWaveType()); + if (!CollectionUtils.isEmpty(eventDetailData)) { List lineIds = eventDetailData.stream().map(EventDetail::getLineId).collect(Collectors.toList()); lineIds = lineIds.stream().distinct().collect(Collectors.toList()); @@ -118,9 +112,6 @@ public class TransientServiceImpl implements TransientService { Instant timeId = eventDetail.getTimeId(); ZoneId zoneId = ZoneId.systemDefault(); LocalDateTime localDateTime = LocalDateTime.ofInstant(timeId, zoneId); - // //Instant转换long毫秒值 - // long milli = localDateTime.atZone(zoneId).toInstant().toEpochMilli(); - // System.out.println("milli==:" + milli); DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); String format = dateTimeFormatter.format(localDateTime); diff --git a/pqs-gateway/src/main/resources/bootstrap.yml b/pqs-gateway/src/main/resources/bootstrap.yml index 3cf1f8e3d..bc0529b32 100644 --- a/pqs-gateway/src/main/resources/bootstrap.yml +++ b/pqs-gateway/src/main/resources/bootstrap.yml @@ -141,14 +141,15 @@ whitelist: - /*/v2/api-docs - /favicon.ico - /system-boot/theme/getTheme -# - /device-boot/** -# - /system-boot/** -# - /harmonic-boot/** -# - /energy-boot/** -# - /event-boot/** -# - /quality-boot/** -# - /harmonic-prepare/** -# - /process-boot/** + + - /device-boot/** + - /system-boot/** + - /harmonic-boot/** + - /energy-boot/** + - /event-boot/** + - /quality-boot/** + - /harmonic-prepare/** + - /process-boot/** mqtt: diff --git a/pqs-system/system-boot/src/main/java/com/njcn/system/mapper/mapping/AreaMapper.xml b/pqs-system/system-boot/src/main/java/com/njcn/system/mapper/mapping/AreaMapper.xml index dd41352b0..8de95975c 100644 --- a/pqs-system/system-boot/src/main/java/com/njcn/system/mapper/mapping/AreaMapper.xml +++ b/pqs-system/system-boot/src/main/java/com/njcn/system/mapper/mapping/AreaMapper.xml @@ -63,8 +63,8 @@ sys_area.lng lng, sys_area.lat lat FROM sys_area sys_area - WHERE sys_area.id = #{id} - or sys_area.pid = #{id} + WHERE (sys_area.id = #{id} + or sys_area.pid = #{id}) and sys_area.type = #{type} AND sys_area.state = #{state}