From 2f98232cfa071b25cab89b50930f5b964c264bb7 Mon Sep 17 00:00:00 2001 From: zhuxinyu <1799009482@qq.com> Date: Thu, 27 Apr 2023 17:07:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8C=BA=E5=9F=9F=E6=9A=82=E6=80=81=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../njcn/event/pojo/param/TransientParam.java | 6 + .../majornetwork/ReportController.java | 2 +- .../distribution/PwRmpEventDetailMapper.java | 19 ++ .../mapping/PwRmpEventDetailMapper.xml | 88 +++++++++ .../majornetwork/Impl/ReportServiceImpl.java | 5 +- .../Impl/TransientServiceImpl.java | 180 ++++++++++-------- 6 files changed, 217 insertions(+), 83 deletions(-) diff --git a/pqs-event/event-api/src/main/java/com/njcn/event/pojo/param/TransientParam.java b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/param/TransientParam.java index c14c3cd60..ca3c642cd 100644 --- a/pqs-event/event-api/src/main/java/com/njcn/event/pojo/param/TransientParam.java +++ b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/param/TransientParam.java @@ -31,16 +31,19 @@ public class TransientParam extends DeviceInfoParam.BusinessParam { @ApiModelProperty("暂态幅值最大值") private BigDecimal eventValueMax; + @ApiModelProperty("暂态幅值最小值") private BigDecimal eventValueMin; @ApiModelProperty("持续时间最大值") private Integer persistMax; + @ApiModelProperty("持续时间最小值") private Integer persistMin; @ApiModelProperty("严重度最大值") private BigDecimal severityMax; + @ApiModelProperty("严重度最小值") private BigDecimal severityMin; @@ -55,5 +58,8 @@ public class TransientParam extends DeviceInfoParam.BusinessParam { @ApiModelProperty("波形文件") private Integer fileFlag; + + @ApiModelProperty("搜索值") + private String searchValue; } 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 91e9f8f84..04b39cb4f 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 @@ -77,7 +77,7 @@ public class ReportController extends BaseController { @OperateInfo(info = LogEnum.BUSINESS_COMMON) @PostMapping("/getReason") @ApiOperation("暂态原因统计表") - @ApiImplicitParam(name = "businessParam", value = "暂态严重度参数", required = true) + @ApiImplicitParam(name = "businessParam", value = "暂态原因统计表参数", required = true) public HttpResult> getReason(@RequestBody @Validated DeviceInfoParam.BusinessParam businessParam) { String methodDescribe = getMethodDescribe("getSeverity"); List page = reportService.getReason(businessParam); diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/distribution/PwRmpEventDetailMapper.java b/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/distribution/PwRmpEventDetailMapper.java index d118f874e..c161a1daf 100644 --- a/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/distribution/PwRmpEventDetailMapper.java +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/distribution/PwRmpEventDetailMapper.java @@ -1,10 +1,14 @@ package com.njcn.event.mapper.distribution; +import cn.hutool.core.date.DateTime; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njcn.event.pojo.param.UniversalFrontEndParam; +import com.njcn.event.pojo.po.EventDetailNew; import com.njcn.event.pojo.po.RmpEventDetailPO; import org.apache.ibatis.annotations.Param; +import java.math.BigDecimal; import java.util.List; /** @@ -56,4 +60,19 @@ public interface PwRmpEventDetailMapper extends BaseMapper { @Param("startTime") String startTime, @Param("endTime") String endTime); + Page selectByIdAndValue(Page page, + @Param("list") List lineList, + @Param("beginTime") DateTime beginOfDay, + @Param("endTime") DateTime endOfDay, + @Param("waveType") List waveType, + @Param("eventReason") List eventReason, + @Param("eventType") List eventType, + @Param("eventValueMin") BigDecimal eventValueMin, + @Param("eventValueMax") BigDecimal eventValueMax, + @Param("persistMin") Integer persistMin, + @Param("persistMax") Integer persistMax, + @Param("severityMin") BigDecimal severityMin, + @Param("severityMax") BigDecimal severityMax, + @Param("fileFlag") Integer fileFlag, + @Param("searchValue") String searchValue); } diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/distribution/mapping/PwRmpEventDetailMapper.xml b/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/distribution/mapping/PwRmpEventDetailMapper.xml index ffcdec2e5..6a299b694 100644 --- a/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/distribution/mapping/PwRmpEventDetailMapper.xml +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/mapper/distribution/mapping/PwRmpEventDetailMapper.xml @@ -94,4 +94,92 @@ AND DATE_FORMAT(start_time, '%Y-%m') <= #{endTime} + \ No newline at end of file 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 3ec0ff180..98db44ae0 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 @@ -420,8 +420,9 @@ public class ReportServiceImpl implements ReportService { if (count.get(s) == info.size()) { result.add(new ReasonsVO(s, info.size(), "100")); } else { - String s1 = String.format("%.4f", (count.get(s).doubleValue() / info.size())); - result.add(new ReasonsVO(s, count.get(s), s1.substring(2, 4) + "." + s1.substring(4, 6))); + String s2 = BigDecimal.valueOf((double) count.get(s) * 100 / info.size()).setScale(2, RoundingMode.HALF_UP).toString(); +// String s1 = String.format("%.4f", (count.get(s).doubleValue() / info.size())); + result.add(new ReasonsVO(s, count.get(s), s2)); } } } 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 c172c5c14..eab4b6712 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 @@ -53,6 +53,7 @@ import org.springframework.util.CollectionUtils; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.math.BigDecimal; +import java.math.RoundingMode; import java.text.DecimalFormat; import java.time.Instant; import java.time.LocalDateTime; @@ -249,7 +250,6 @@ public class TransientServiceImpl implements TransientService { waveDataDTO.setPt(monitorVO.getPt1() / monitorVO.getPt2()); waveDataDTO.setCt(monitorVO.getCt1() / monitorVO.getCt2()); return waveDataDTO; - } @@ -293,90 +293,110 @@ public class TransientServiceImpl implements TransientService { Page page = new Page<>(); page.setSize(transientParam.getPageSize()); page.setCurrent(transientParam.getPageNum()); - - //按部门分类的实际运行终端综合信息 + // 按部门分类的实际运行终端综合信息 List generalDeviceDTOList = generalDeviceInfoClient.getPracticalRunDeviceInfo(transientParam).getData(); if (!CollectionUtils.isEmpty(generalDeviceDTOList)) { - //获取按终端分类的监测点索引集合 + if (Objects.nonNull(transientParam.getEventValueMin())) { + transientParam.setEventValueMin(transientParam.getEventValueMin().divide(new BigDecimal(100), 2, BigDecimal.ROUND_UP)); + } + if (Objects.nonNull(transientParam.getEventValueMax())) { + transientParam.setEventValueMax(transientParam.getEventValueMax().divide(new BigDecimal(100), 2, BigDecimal.ROUND_UP)); + } + // 获取按终端分类的监测点索引集合 List lineList = generalDeviceDTOList.stream().flatMap(dto -> dto.getLineIndexes().stream()).collect(Collectors.toList()); - if(CollUtil.isNotEmpty(lineList)){ - LambdaQueryWrapper wrapper = new LambdaQueryWrapper() - .in(RmpEventDetailPO::getMeasurementPointId, lineList) - .ge(StringUtils.isNotBlank(transientParam.getSearchBeginTime()), RmpEventDetailPO::getStartTime, DateUtil.beginOfDay(DateUtil.parse(transientParam.getSearchBeginTime()))) - .le(StringUtils.isNotBlank(transientParam.getSearchEndTime()), RmpEventDetailPO::getStartTime, DateUtil.endOfDay(DateUtil.parse(transientParam.getSearchEndTime()))) - //事件 - .in(CollUtil.isNotEmpty(transientParam.getWaveType()), RmpEventDetailPO::getEventType, transientParam.getWaveType()) - .in(CollUtil.isNotEmpty(transientParam.getEventReason()), RmpEventDetailPO::getAdvanceReason, transientParam.getEventReason()) - .in(CollUtil.isNotEmpty(transientParam.getEventType()), RmpEventDetailPO::getAdvanceType, transientParam.getEventType()) - .orderByDesc(RmpEventDetailPO::getStartTime); - //暂态幅值 - if (Objects.nonNull(transientParam.getEventValueMin())) { - wrapper.ge(RmpEventDetailPO::getFeatureAmplitude, transientParam.getEventValueMin().divide(new BigDecimal(100), 2, BigDecimal.ROUND_UP)); - } - if (Objects.nonNull(transientParam.getEventValueMax())) { - wrapper.le(RmpEventDetailPO::getFeatureAmplitude, transientParam.getEventValueMax().divide(new BigDecimal(100), 2, BigDecimal.ROUND_UP)); - } - if (Objects.nonNull(transientParam.getPersistMin()) && Objects.nonNull(transientParam.getSeverityMax())) { - wrapper.ge(RmpEventDetailPO::getDuration, transientParam.getPersistMin()).le(RmpEventDetailPO::getDuration, transientParam.getPersistMax()); - } - //严重度 - if (Objects.nonNull(transientParam.getSeverityMin()) && Objects.nonNull(transientParam.getSeverityMax())) { - wrapper.ge(RmpEventDetailPO::getSeverity, transientParam.getSeverityMin()).le(Objects.nonNull(transientParam.getSeverityMax()), RmpEventDetailPO::getSeverity, transientParam.getSeverityMax()); - } - //波形文件 - if (Objects.nonNull(transientParam.getFileFlag())) { - wrapper.eq(Objects.nonNull(transientParam.getFileFlag()), RmpEventDetailPO::getFileFlag, transientParam.getFileFlag()); - } - // Page pageInfo = eventDetailService.page(new Page<>(transientParam.getPageNum(), transientParam.getPageSize()),wrapper); - Page pageInfo = pwRmpEventDetailMapper.selectPage(new Page<>(transientParam.getPageNum(), transientParam.getPageSize()), wrapper); + if (CollUtil.isNotEmpty(lineList)) { + page = pwRmpEventDetailMapper.selectByIdAndValue( + page, + lineList, + DateUtil.beginOfDay(DateUtil.parse(transientParam.getSearchBeginTime())), + DateUtil.endOfDay(DateUtil.parse(transientParam.getSearchEndTime())), + transientParam.getWaveType(), + transientParam.getEventReason(), + transientParam.getEventType(), + transientParam.getEventValueMin(), + transientParam.getEventValueMax(), + transientParam.getPersistMin(), + transientParam.getPersistMax(), + transientParam.getSeverityMin(), + transientParam.getSeverityMax(), + transientParam.getFileFlag(), + transientParam.getSearchValue() + ); - List eventDetailData=BeanUtil.copyToList(pageInfo.getRecords(),EventDetailNew.class); - page= BeanUtil.copyProperties(pageInfo,Page.class); - - if (CollUtil.isNotEmpty(eventDetailData)) { - List lineIds = eventDetailData.stream().map(EventDetailNew::getLineId).distinct().collect(Collectors.toList()); - List r = lineFeignClient.getBaseLineAreaInfo(lineIds).getData(); - List reasonList = dicDataFeignClient.getDicDataByTypeName(DicDataTypeEnum.EVENT_REASON.getName()).getData(); - List typeList = dicDataFeignClient.getDicDataByTypeName(DicDataTypeEnum.EVENT_TYPE.getName()).getData(); - - for (EventDetailNew eventDetail : eventDetailData) { - for (AreaLineInfoVO areaLineInfoVO : r) { - if (eventDetail.getLineId().equals(areaLineInfoVO.getLineId())) { - eventDetail.setLineId(areaLineInfoVO.getLineId()); - eventDetail.setLineName(areaLineInfoVO.getLineName()); - eventDetail.setGdName(areaLineInfoVO.getGdName()); - eventDetail.setSubName(areaLineInfoVO.getSubName()); - eventDetail.setIp(areaLineInfoVO.getIp()); - eventDetail.setScale(areaLineInfoVO.getVoltageScale()); - eventDetail.setIp(areaLineInfoVO.getIp()); - break; - } - } - - if(StrUtil.isNotBlank(eventDetail.getAdvanceReason())) { - for (DictData dictData : reasonList) { - if (eventDetail.getAdvanceReason().equals(dictData.getId())) { - eventDetail.setAdvanceReason(dictData.getName()); - break; - } - } - } - - if(StrUtil.isNotBlank(eventDetail.getAdvanceType())) { - for (DictData dictData : typeList) { - if (eventDetail.getAdvanceType().equals(dictData.getId())) { - eventDetail.setAdvanceType(dictData.getName()); - break; - } - } - } - } - - - //当前页数据 - page.setRecords(eventDetailData); - } +// LambdaQueryWrapper wrapper = new LambdaQueryWrapper() +// .in(RmpEventDetailPO::getMeasurementPointId, lineList) +// .ge(StringUtils.isNotBlank(transientParam.getSearchBeginTime()), RmpEventDetailPO::getStartTime, DateUtil.beginOfDay(DateUtil.parse(transientParam.getSearchBeginTime()))) +// .le(StringUtils.isNotBlank(transientParam.getSearchEndTime()), RmpEventDetailPO::getStartTime, DateUtil.endOfDay(DateUtil.parse(transientParam.getSearchEndTime()))) +// // 事件 +// .in(CollUtil.isNotEmpty(transientParam.getWaveType()), RmpEventDetailPO::getEventType, transientParam.getWaveType()) +// .in(CollUtil.isNotEmpty(transientParam.getEventReason()), RmpEventDetailPO::getAdvanceReason, transientParam.getEventReason()) +// .in(CollUtil.isNotEmpty(transientParam.getEventType()), RmpEventDetailPO::getAdvanceType, transientParam.getEventType()) +// .orderByDesc(RmpEventDetailPO::getStartTime); +// //暂态幅值 +// if (Objects.nonNull(transientParam.getEventValueMin())) { +// wrapper.ge(RmpEventDetailPO::getFeatureAmplitude, transientParam.getEventValueMin().divide(new BigDecimal(100), 2, BigDecimal.ROUND_UP)); +// } +// if (Objects.nonNull(transientParam.getEventValueMax())) { +// wrapper.le(RmpEventDetailPO::getFeatureAmplitude, transientParam.getEventValueMax().divide(new BigDecimal(100), 2, BigDecimal.ROUND_UP)); +// } +// if (Objects.nonNull(transientParam.getPersistMin()) && Objects.nonNull(transientParam.getSeverityMax())) { +// wrapper.ge(RmpEventDetailPO::getDuration, transientParam.getPersistMin()).le(RmpEventDetailPO::getDuration, transientParam.getPersistMax()); +// } +// //严重度 +// if (Objects.nonNull(transientParam.getSeverityMin()) && Objects.nonNull(transientParam.getSeverityMax())) { +// wrapper.ge(RmpEventDetailPO::getSeverity, transientParam.getSeverityMin()).le(Objects.nonNull(transientParam.getSeverityMax()), RmpEventDetailPO::getSeverity, transientParam.getSeverityMax()); +// } +// //波形文件 +// if (Objects.nonNull(transientParam.getFileFlag())) { +// wrapper.eq(Objects.nonNull(transientParam.getFileFlag()), RmpEventDetailPO::getFileFlag, transientParam.getFileFlag()); +// } +// // Page pageInfo = eventDetailService.page(new Page<>(transientParam.getPageNum(), transientParam.getPageSize()),wrapper); +// Page pageInfo = pwRmpEventDetailMapper.selectPage(new Page<>(transientParam.getPageNum(), transientParam.getPageSize()), wrapper); +// List eventDetailData=BeanUtil.copyToList(pageInfo.getRecords(),EventDetailNew.class); +// page= BeanUtil.copyProperties(pageInfo,Page.class); +// if (CollUtil.isNotEmpty(eventDetailData)) { +// List lineIds = eventDetailData.stream().map(EventDetailNew::getLineId).distinct().collect(Collectors.toList()); +// List r = lineFeignClient.getBaseLineAreaInfo(lineIds).getData(); +// List reasonList = dicDataFeignClient.getDicDataByTypeName(DicDataTypeEnum.EVENT_REASON.getName()).getData(); +// List typeList = dicDataFeignClient.getDicDataByTypeName(DicDataTypeEnum.EVENT_TYPE.getName()).getData(); +// for (EventDetailNew eventDetail : eventDetailData) { +// DecimalFormat df = new DecimalFormat("#0.000"); +// eventDetail.setSeverity(Double.parseDouble(df.format(eventDetail.getSeverity()))); +// for (AreaLineInfoVO areaLineInfoVO : r) { +// if (eventDetail.getLineId().equals(areaLineInfoVO.getLineId())) { +// eventDetail.setLineId(areaLineInfoVO.getLineId()); +// eventDetail.setLineName(areaLineInfoVO.getLineName()); +// eventDetail.setGdName(areaLineInfoVO.getGdName()); +// eventDetail.setSubName(areaLineInfoVO.getSubName()); +// eventDetail.setIp(areaLineInfoVO.getIp()); +// eventDetail.setScale(areaLineInfoVO.getVoltageScale()); +// eventDetail.setIp(areaLineInfoVO.getIp()); +// break; +// } +// } +// +// if(StrUtil.isNotBlank(eventDetail.getAdvanceReason())) { +// for (DictData dictData : reasonList) { +// if (eventDetail.getAdvanceReason().equals(dictData.getId())) { +// eventDetail.setAdvanceReason(dictData.getName()); +// break; +// } +// } +// } +// +// if(StrUtil.isNotBlank(eventDetail.getAdvanceType())) { +// for (DictData dictData : typeList) { +// if (eventDetail.getAdvanceType().equals(dictData.getId())) { +// eventDetail.setAdvanceType(dictData.getName()); +// break; +// } +// } +// } +// } +// //当前页数据 +// page.setRecords(eventDetailData); +// } }