From aca86e6b5773f3a145377cfd89941e578abdea96 Mon Sep 17 00:00:00 2001 From: wr <1754607820@qq.com> Date: Mon, 3 Jun 2024 19:01:17 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=85=A8=E6=99=AF=E5=B1=95=E7=A4=BA=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=EF=BC=8C=E8=B0=83=E6=95=B4=E7=9B=91=E6=B5=8B=E5=9F=BA?= =?UTF-8?q?=E6=9C=AC=E4=BF=A1=E6=81=AF=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../njcn/device/pq/pojo/po/LineDetail.java | 7 +- .../device/pq/pojo/vo/GridDiagramProVO.java | 41 +++++++ .../njcn/device/pq/pojo/vo/GridDiagramVO.java | 16 +++ .../pq/controller/GridDiagramController.java | 13 +++ .../device/pq/mapper/LineDetailMapper.java | 9 ++ .../pq/mapper/mapping/LineDetailMapper.xml | 29 +++++ .../device/pq/service/GridDiagramService.java | 9 +- .../service/impl/GridDiagramServiceImpl.java | 105 ++++++++++++++---- .../controller/GridDiagramHarmController.java | 8 ++ .../majornetwork/RStatLimitService.java | 7 ++ .../impl/RStatLimitServiceImpl.java | 66 +++++++++++ 11 files changed, 283 insertions(+), 27 deletions(-) create mode 100644 pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/GridDiagramProVO.java diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/LineDetail.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/LineDetail.java index a00780f0d..939c709f3 100644 --- a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/LineDetail.java +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/LineDetail.java @@ -1,7 +1,7 @@ package com.njcn.device.pq.pojo.po; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; -import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -180,4 +180,9 @@ public class LineDetail{ */ private Integer runFlag; + /** + * 通讯状态 + */ + @TableField(exist = false) + private Integer comFlag; } diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/GridDiagramProVO.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/GridDiagramProVO.java new file mode 100644 index 000000000..6d419db84 --- /dev/null +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/GridDiagramProVO.java @@ -0,0 +1,41 @@ +package com.njcn.device.pq.pojo.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author wr + * @description + * @date 2024/6/3 13:52 + */ +@Data +public class GridDiagramProVO { + + @ApiModelProperty(name = "num", value = "冀北公司") + private List
data; + + + @ApiModelProperty(name = "num", value = "报送国网") + private List
gwData; + + @Data + public static class Details { + @ApiModelProperty(name = "num", value = "监测点个数") + private Integer num; + + @ApiModelProperty(name = "numList", value = "监测点集合") + private List numList; + + @ApiModelProperty(name = "onLineNum", value = "在线监测点数") + private Integer onLineNum; + + @ApiModelProperty(name = "onLineNumList", value = "在线监测点集合") + private List onLineNumList; + + @ApiModelProperty(name = "integrityRate", value = "数据完整率") + private Float integrityRate; + } + +} diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/GridDiagramVO.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/GridDiagramVO.java index 09ca7e8fa..7300f3e62 100644 --- a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/GridDiagramVO.java +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/GridDiagramVO.java @@ -182,4 +182,20 @@ public class GridDiagramVO { private Integer onDevice; } + @Data + public static class RunData { + // 合格/告警 在线/离线 数据完整性≥90% / <90% 电能质量指标未超标/超标 + @ApiModelProperty(name = "lineNumOne", value = "监测点个数") + private Integer lineNumOne; + + @ApiModelProperty(name = "lineListOne", value = "监测点集合") + private List lineListOne; + + @ApiModelProperty(name = "lineNumTwo", value = "监测点个数") + private Integer lineNumTwo; + + @ApiModelProperty(name = "lineListTwo", value = "监测点集合") + private List lineListTwo; + + } } diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/GridDiagramController.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/GridDiagramController.java index b1833303b..9cea376e0 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/GridDiagramController.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/GridDiagramController.java @@ -9,6 +9,7 @@ import com.njcn.common.utils.HttpResultUtil; import com.njcn.device.pq.pojo.param.GridDiagramParam; import com.njcn.device.pq.pojo.po.RStatIntegrityD; import com.njcn.device.pq.pojo.po.RStatOnlinerateD; +import com.njcn.device.pq.pojo.vo.GridDiagramProVO; import com.njcn.device.pq.pojo.vo.GridDiagramVO; import com.njcn.device.pq.service.GridDiagramService; import com.njcn.web.controller.BaseController; @@ -93,6 +94,18 @@ public class GridDiagramController extends BaseController { Map gridDiagramDevTendency = gridDiagramService.getGridDiagramDevTendency(param,6); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, gridDiagramDevTendency, methodDescribe); } + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getGridDiagramStatistics") + @ApiOperation("监测点指标统计") + public HttpResult getGridDiagramStatistics(@RequestBody StatisticsBizBaseParam param){ + String methodDescribe = getMethodDescribe("getGridDiagramStatistics"); + GridDiagramProVO gridDiagramDevTendency = gridDiagramService.getGridDiagramStatistics(param); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, gridDiagramDevTendency, methodDescribe); + } + + + //---------------------------------------------------市级--------------------------------------- @OperateInfo(info = LogEnum.BUSINESS_COMMON) diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/LineDetailMapper.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/LineDetailMapper.java index 22fe4f799..b4e46adbf 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/LineDetailMapper.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/LineDetailMapper.java @@ -53,4 +53,13 @@ public interface LineDetailMapper extends BaseMapper { LineDevGetDTO getMonitorDetail(@Param("monitorId")String monitorId); void updateLineRunFlag(@Param("id")String lineId, @Param("runFlag")Integer status); + + + /** + * 根据监测点信息获取监测点详情(关联终端和母线) + * 获取指定条件的监测点信息 + * @param Ids 监测点集合 + * @return 结果 + */ + List getLineDetailByIds(@Param("ids") List Ids); } diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/LineDetailMapper.xml b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/LineDetailMapper.xml index df79d18db..628ffd6cf 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/LineDetailMapper.xml +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/LineDetailMapper.xml @@ -60,6 +60,35 @@ inner join pq_line_detail b on a.id=b.id where a.id = #{monitorId} + update pq_line_detail diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/GridDiagramService.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/GridDiagramService.java index 94bcb2ec9..26a46d590 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/GridDiagramService.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/GridDiagramService.java @@ -5,6 +5,7 @@ import com.njcn.common.pojo.param.StatisticsBizBaseParam; import com.njcn.device.pq.pojo.param.GridDiagramParam; import com.njcn.device.pq.pojo.po.RStatIntegrityD; import com.njcn.device.pq.pojo.po.RStatOnlinerateD; +import com.njcn.device.pq.pojo.vo.GridDiagramProVO; import com.njcn.device.pq.pojo.vo.GridDiagramVO; import java.util.List; @@ -59,8 +60,12 @@ public interface GridDiagramService { List getGridDiagramDevDataList(GridDiagramParam param); - - + /** + * 监测点指标统计 + * @param param + * @return + */ + GridDiagramProVO getGridDiagramStatistics(StatisticsBizBaseParam param); //---------------------------------------------------市级--------------------------------------- /** diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/GridDiagramServiceImpl.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/GridDiagramServiceImpl.java index de1bd9c53..02ceb13ad 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/GridDiagramServiceImpl.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/GridDiagramServiceImpl.java @@ -5,6 +5,7 @@ import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -13,25 +14,23 @@ import com.njcn.common.pojo.param.StatisticsBizBaseParam; import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; import com.njcn.device.biz.pojo.dto.LineDevGetDTO; import com.njcn.device.biz.pojo.param.DeptGetLineParam; +import com.njcn.device.pq.mapper.LineDetailMapper; import com.njcn.device.pq.mapper.RStatIntegrityDMapper; import com.njcn.device.pq.mapper.RStatOnlinerateDMapper; import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO; import com.njcn.device.pq.pojo.param.GridDiagramParam; +import com.njcn.device.pq.pojo.param.LineBaseQueryParam; import com.njcn.device.pq.pojo.param.OnlineRateParam; -import com.njcn.device.pq.pojo.po.Device; -import com.njcn.device.pq.pojo.po.Line; -import com.njcn.device.pq.pojo.po.RStatIntegrityD; -import com.njcn.device.pq.pojo.po.RStatOnlinerateD; +import com.njcn.device.pq.pojo.po.*; +import com.njcn.device.pq.pojo.vo.GridDiagramProVO; import com.njcn.device.pq.pojo.vo.GridDiagramVO; -import com.njcn.device.pq.service.CommTerminalService; -import com.njcn.device.pq.service.GridDiagramService; -import com.njcn.device.pq.service.IDeviceService; -import com.njcn.device.pq.service.LineService; +import com.njcn.device.pq.service.*; import com.njcn.system.api.DicDataFeignClient; import com.njcn.system.enums.DicDataEnum; import com.njcn.system.enums.DicDataTypeEnum; import com.njcn.system.pojo.po.DictData; import com.njcn.user.api.DeptFeignClient; +import com.njcn.user.pojo.dto.DeptDTO; import com.njcn.user.pojo.po.Dept; import java.time.ZoneId; @@ -40,6 +39,7 @@ import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; +import com.njcn.web.utils.WebUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -63,6 +63,8 @@ public class GridDiagramServiceImpl implements GridDiagramService { private final IDeviceService deviceService; private final GeneralDeviceService generalDeviceService; private final LineService lineService; + private final DeptLineService deptLineService; + private final LineDetailMapper lineDetailMapper; @Override public GridDiagramVO getGridDiagramMonitor(GridDiagramParam param) { @@ -188,7 +190,7 @@ public class GridDiagramServiceImpl implements GridDiagramService { //监测点集合 List lineIds = lineBaseList.stream().filter(x -> value.equals(x.getVoltageLevel())).filter(x -> 1 == x.getIsUpToGrid()).map(LineDevGetDTO::getPointId).distinct().collect(Collectors.toList()); List onLineNumIds = lineBaseList.stream().filter(x -> value.equals(x.getVoltageLevel()) && 1 == x.getComFlag()) - .filter(x->1 == x.getIsUpToGrid()) + .filter(x -> 1 == x.getIsUpToGrid()) .map(LineDevGetDTO::getPointId).distinct().collect(Collectors.toList()); //终端id集合 List devIds = lineBaseList.stream().filter(x -> value.equals(x.getVoltageLevel())).filter(x -> 1 == x.getIsUpToGrid()).map(LineDevGetDTO::getDevId).distinct().collect(Collectors.toList()); @@ -212,7 +214,7 @@ public class GridDiagramServiceImpl implements GridDiagramService { if (CollUtil.isNotEmpty(integrityDS)) { double realTime = integrityDS.stream().mapToDouble(RStatIntegrityD::getRealTime).sum(); double dueTime = integrityDS.stream().mapToDouble(RStatIntegrityD::getDueTime).sum(); - lineStatisticsData.setIntegrityRate(Math.min(NumberUtil.round(realTime * 100 / dueTime, 2).floatValue(),100)); + lineStatisticsData.setIntegrityRate(Math.min(NumberUtil.round(realTime * 100 / dueTime, 2).floatValue(), 100)); } else { lineStatisticsData.setIntegrityRate(0.0f); } @@ -221,7 +223,7 @@ public class GridDiagramServiceImpl implements GridDiagramService { if (CollUtil.isNotEmpty(onlineRateDS)) { double onlineTime = onlineRateDS.stream().mapToDouble(RStatOnlinerateD::getOnlineMin).sum(); double offlineTime = onlineRateDS.stream().mapToDouble(RStatOnlinerateD::getOfflineMin).sum(); - lineStatisticsData.setOnLineRate(Math.min(NumberUtil.round(onlineTime * 100.0 / (onlineTime + offlineTime), 2).floatValue(),100)); + lineStatisticsData.setOnLineRate(Math.min(NumberUtil.round(onlineTime * 100.0 / (onlineTime + offlineTime), 2).floatValue(), 100)); } else { lineStatisticsData.setOnLineRate(0.0f); } @@ -347,7 +349,7 @@ public class GridDiagramServiceImpl implements GridDiagramService { if (CollUtil.isNotEmpty(onlineRateDS)) { double onlineTime = onlineRateDS.stream().mapToDouble(RStatOnlinerateD::getOnlineMin).sum(); double offlineTime = onlineRateDS.stream().mapToDouble(RStatOnlinerateD::getOfflineMin).sum(); - data.setOnlineEvaluate(Math.min(NumberUtil.round(onlineTime * 100.0 / (onlineTime + offlineTime), 2).doubleValue(),100)); + data.setOnlineEvaluate(Math.min(NumberUtil.round(onlineTime * 100.0 / (onlineTime + offlineTime), 2).doubleValue(), 100)); } else { data.setOnlineEvaluate(0.0); } @@ -358,12 +360,12 @@ public class GridDiagramServiceImpl implements GridDiagramService { @Override public List getGridDiagramDevDataList(GridDiagramParam param) { - List info=new ArrayList<>(); + List info = new ArrayList<>(); List generalDeviceDTOList = generalDeviceService.getDeviceInfoAsDept(param.getDeviceInfoParam(), null, Stream.of(1).collect(Collectors.toList())); List devIds = generalDeviceDTOList.stream().flatMap(x -> x.getDeviceIndexes().stream()).collect(Collectors.toList()); //终端信息 - List devList =new ArrayList<>(); - if(CollUtil.isNotEmpty(devIds)){ + List devList = new ArrayList<>(); + if (CollUtil.isNotEmpty(devIds)) { devList = deviceService.list(new LambdaQueryWrapper().in(CollUtil.isNotEmpty(devIds), Device::getId, devIds)); } GridDiagramVO.DevData data; @@ -375,7 +377,7 @@ public class GridDiagramServiceImpl implements GridDiagramService { for (int i = 0; i < 3; i++) { int finalI = i; List devices = devList.stream() - .filter(x->dto.getDeviceIndexes().contains(x.getId())) + .filter(x -> dto.getDeviceIndexes().contains(x.getId())) .filter(x -> finalI == x.getRunFlag()) .map(Device::getId).distinct().collect(Collectors.toList()); list.add(String.valueOf(devices.size())); @@ -386,7 +388,7 @@ public class GridDiagramServiceImpl implements GridDiagramService { list.add(String.valueOf(3.14159)); } } - data=new GridDiagramVO.DevData(); + data = new GridDiagramVO.DevData(); data.setOrgId(dto.getIndex()); data.setOrgName(dto.getName()); data.setRunNum(Long.valueOf(list.get(0))); @@ -398,14 +400,69 @@ public class GridDiagramServiceImpl implements GridDiagramService { return info; } + @Override + public GridDiagramProVO getGridDiagramStatistics(StatisticsBizBaseParam param) { + GridDiagramProVO vo = new GridDiagramProVO(); + // 获取包括当前部门的后代所有部门信息 + List deptIds = deptFeignClient.getDepSonIdtByDeptId(param.getId()).getData(); + // 根据部门ids集合查询是否绑定监测点 部门和监测点关联关系中间表:pq_dept_line 可以一对多 + List deptLines = deptLineService.selectDeptBindLines(deptIds); + List lineIds = deptLines.stream().map(DeptLine::getLineId).collect(Collectors.toList()); + List lines = lineDetailMapper.getLineDetailByIds(lineIds); + LineBaseQueryParam baseQueryParam = new LineBaseQueryParam(); + baseQueryParam.setStartTime(param.getStartTime()); + baseQueryParam.setEndTime(param.getEndTime()); + //开始组装总信息 + List data = new ArrayList<>(); + data.add(add(lines, baseQueryParam, null, 0)); + data.add(add(lines, baseQueryParam, null, 1)); + //开始组装国网信息 + List gwData = new ArrayList<>(); + gwData.add(add(lines, baseQueryParam, 1, 0)); + vo.setData(data); + vo.setGwData(gwData); + + return vo; + } + + private GridDiagramProVO.Details add(List lines, + LineBaseQueryParam baseQueryParam, + Integer gwType, + Integer powerFlag) { + GridDiagramProVO.Details details = new GridDiagramProVO.Details(); + Stream stream = lines.stream(); + Stream stream2 = lines.stream(); + if (gwType != null) { + stream = stream.filter(x -> x.getMonitorFlag() == gwType); + stream2 = stream2.filter(x -> x.getMonitorFlag() == gwType); + } + if (powerFlag != null) { + stream = stream.filter(x -> x.getPowerFlag() == powerFlag); + stream2 = stream2.filter(x -> x.getPowerFlag() == powerFlag); + } + //总监测点 + List ids = stream.map(LineDetail::getId).collect(Collectors.toList()); + //在线监测点 + List onIds = stream2.filter(x -> x.getComFlag() == 1) + .map(LineDetail::getId) + .collect(Collectors.toList()); + details.setNum(ids.size()); + details.setNumList(ids); + details.setOnLineNum(onIds.size()); + details.setOnLineNumList(onIds); + baseQueryParam.setLineIds(ids); + details.setIntegrityRate(integrityDMapper.selectTotalIntegrityByLineIds(baseQueryParam)); + return details; + } + @Override public List getGridDiagramCityDev(GridDiagramParam param) { List generalDeviceDTOList = generalDeviceService.getDeviceInfoAsDept(param.getDeviceInfoParam(), null, Stream.of(1).collect(Collectors.toList())); List devIds = generalDeviceDTOList.stream().flatMap(x -> x.getDeviceIndexes().stream()).collect(Collectors.toList()); //终端信息 - List devList =new ArrayList<>(); - if(CollUtil.isNotEmpty(devIds)){ - devList = deviceService.list(new LambdaQueryWrapper().in(CollUtil.isNotEmpty(devIds), Device::getId, devIds)); + List devList = new ArrayList<>(); + if (CollUtil.isNotEmpty(devIds)) { + devList = deviceService.list(new LambdaQueryWrapper().in(CollUtil.isNotEmpty(devIds), Device::getId, devIds)); } OnlineRateParam onlineRateParam = new OnlineRateParam(); onlineRateParam.setStartTime(param.getSearchBeginTime()); @@ -477,13 +534,13 @@ public class GridDiagramServiceImpl implements GridDiagramService { statisticsData.add(data); data = new GridDiagramVO.StatisticsData(); data.setNumOne(lineBaseList.stream() - .filter(x -> 1==x.getIsUpToGrid()).map(LineDevGetDTO::getDevId).distinct().count()); + .filter(x -> 1 == x.getIsUpToGrid()).map(LineDevGetDTO::getDevId).distinct().count()); data.setNumOneList(lineBaseList.stream() - .filter(x -> 1==x.getIsUpToGrid()).map(LineDevGetDTO::getPointId).distinct().collect(Collectors.toList())); + .filter(x -> 1 == x.getIsUpToGrid()).map(LineDevGetDTO::getPointId).distinct().collect(Collectors.toList())); data.setNumTwo(lineBaseList.stream() - .filter(x -> 1 == x.getComFlag()&&1==x.getIsUpToGrid()).map(LineDevGetDTO::getDevId).distinct().count()); + .filter(x -> 1 == x.getComFlag() && 1 == x.getIsUpToGrid()).map(LineDevGetDTO::getDevId).distinct().count()); data.setNumTwoList(lineBaseList.stream() - .filter(x -> 1 == x.getComFlag()&&1==x.getIsUpToGrid()).map(LineDevGetDTO::getPointId).distinct().collect(Collectors.toList())); + .filter(x -> 1 == x.getComFlag() && 1 == x.getIsUpToGrid()).map(LineDevGetDTO::getPointId).distinct().collect(Collectors.toList())); gwStatisticsData.add(data); } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/GridDiagramHarmController.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/GridDiagramHarmController.java index a5740a1ab..4a766cb05 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/GridDiagramHarmController.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/GridDiagramHarmController.java @@ -99,6 +99,14 @@ public class GridDiagramHarmController extends BaseController { List gridDiagramDevData = rStatLimitService.getGridDiagramAreaData(param); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, gridDiagramDevData, methodDescribe); } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getGridDiagramRunData") + @ApiOperation("监测运行统计") + public HttpResult> getGridDiagramRunData(@RequestBody DeviceInfoParam.BusinessParam param) { + String methodDescribe = getMethodDescribe("getGridDiagramRunData"); + List gridDiagramDevData = rStatLimitService.getGridDiagramRunData(param); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, gridDiagramDevData, methodDescribe); + } @OperateInfo(info = LogEnum.BUSINESS_COMMON) @PostMapping("/getGridDiagramTargetData") diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/RStatLimitService.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/RStatLimitService.java index d6f79a2de..865ba0a2e 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/RStatLimitService.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/RStatLimitService.java @@ -33,4 +33,11 @@ public interface RStatLimitService { * @return */ List getGridDiagramAreaData(DeviceInfoParam.BusinessParam param); + + /** + * + * @param param + * @return + */ + List getGridDiagramRunData(DeviceInfoParam.BusinessParam param); } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/impl/RStatLimitServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/impl/RStatLimitServiceImpl.java index 5c35f3a0a..67b1acd94 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/impl/RStatLimitServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/impl/RStatLimitServiceImpl.java @@ -228,6 +228,72 @@ public class RStatLimitServiceImpl implements RStatLimitService { return info; } + @Override + public List getGridDiagramRunData(DeviceInfoParam.BusinessParam param) { + + List info = new ArrayList<>(); + //监测点总数 + List data = generalDeviceInfoClient.getPracticalRunDeviceInfo(param).getData(); + List line = data.stream().flatMap(x -> x.getLineIndexes().stream()).distinct().collect(Collectors.toList()); + //在线 + param.setComFlagStatus(1); + List onData = generalDeviceInfoClient.getPracticalRunDeviceInfo(param).getData(); + List online = onData.stream().flatMap(x -> x.getLineIndexes().stream()).distinct().collect(Collectors.toList()); + + StatSubstationBizBaseParam baseParam=new StatSubstationBizBaseParam(); + baseParam.setIds(line); + baseParam.setStartTime(DateUtil.beginOfDay(DateUtil.parse(param.getSearchBeginTime())).toString()); + baseParam.setEndTime(DateUtil.endOfDay(DateUtil.parse(param.getSearchEndTime())).toString()); + List linesTarget=targetDService.getLinesTarget(baseParam); + List integrityDS = lineIntegrityClient.getIntegrityByLineIds(line, + DateUtil.beginOfDay(DateUtil.parse(param.getSearchBeginTime())).toString(), + DateUtil.endOfDay(DateUtil.parse(param.getSearchEndTime())).toString()).getData(); + List integrityDS0 = integrityDS.stream().filter(x -> 0 == x.getIntegrityData()).map(RStatIntegrityD::getLineIndex).collect(Collectors.toList()); + + //在线-离线 + GridDiagramVO.RunData runData=new GridDiagramVO.RunData(); + List Offline = line.stream().filter(x -> !online.contains(x)).distinct().collect(Collectors.toList()); + runData.setLineNumOne(online.size()); + runData.setLineListOne(online); + runData.setLineNumTwo(Offline.size()); + runData.setLineListTwo(Offline); + info.add(runData); + + //合格-告警 + GridDiagramVO.RunData alarmData=new GridDiagramVO.RunData(); + List lineAlarm = new ArrayList<>(); + lineAlarm.addAll(linesTarget.stream().filter(d -> line.contains(d)).collect(Collectors.toList())); + lineAlarm.addAll(integrityDS0.stream().filter(d -> line.contains(d)).collect(Collectors.toList())); + List alarm = lineAlarm.stream().distinct().collect(Collectors.toList()); + List us = line.stream().filter(x -> !alarm.contains(x)).distinct().collect(Collectors.toList()); + alarmData.setLineNumOne(us.size()); + alarmData.setLineListOne(us); + alarmData.setLineNumTwo(alarm.size()); + alarmData.setLineListTwo(alarm); + info.add(alarmData); + + //数据完整性≥90% - <90% + GridDiagramVO.RunData integrityData=new GridDiagramVO.RunData(); + List integrityDS90 = integrityDS.stream().filter(x -> 0.9 <= x.getIntegrityData()).map(RStatIntegrityD::getLineIndex).collect(Collectors.toList()); + List integrity = line.stream().filter(x -> !integrityDS90.contains(x)).distinct().collect(Collectors.toList()); + integrityData.setLineNumOne(integrityDS90.size()); + integrityData.setLineListOne(integrityDS90); + integrityData.setLineNumTwo(integrity.size()); + integrityData.setLineListTwo(integrity); + info.add(integrityData); + + + //电能质量指标未超标-超标 + GridDiagramVO.RunData targetData=new GridDiagramVO.RunData(); + List integrityS = line.stream().filter(x -> !linesTarget.contains(x)).distinct().collect(Collectors.toList()); + targetData.setLineNumOne(integrityS.size()); + integrityData.setLineListOne(integrityS); + targetData.setLineNumTwo(linesTarget.size()); + integrityData.setLineListTwo(linesTarget); + info.add(targetData); + return info; + } + private void onLineAndIntegrity(List lineIds, List onIntegrityByIds, List devIds, List onlineRateByDevIds,List limitTargetList, GridDiagramVO.LineData lineData) { //监测完整率 List integrityDS = onIntegrityByIds.stream().filter(x -> lineIds.contains(x.getLineIndex())).collect(Collectors.toList());