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 4ad49ef49..249543544 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 @@ -21,10 +21,10 @@ public class GridDiagramVO { private List gwInfo; @ApiModelProperty(name = "data", value = "总信息") - private Double data; + private List data; @ApiModelProperty(name = "gwData", value = "国网总信息") - private Double gwData; + private List gwData; @Data public static class LineStatistics { @ApiModelProperty(name = "orgId", value = "单位id") @@ -138,4 +138,32 @@ public class GridDiagramVO { @ApiModelProperty(name = "onLineRate", value = "数据在线率") private Float onLineRate; } + + @Data + public static class AreaData { + + @ApiModelProperty(name = "orgId", value = "单位id") + private String orgId; + + @ApiModelProperty(name = "orgName", value = "单位名称") + private String orgName; + + @ApiModelProperty(name = "lineNum", value = "监测点个数") + private Integer lineNum; + + @ApiModelProperty(name = "lineList", value = "监测点集合") + private List lineList; + + @ApiModelProperty(name = "alarm", value = "告警监测点个数") + private Integer alarm; + + @ApiModelProperty(name = "onLineNumList", value = "告警监测点信息") + private List alarmList; + + @ApiModelProperty(name = "subNum", value = "变电站个数") + private Integer subNum; + + @ApiModelProperty(name = "deviceNum", value = "终端个数") + private Integer deviceNum; + } } diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/DeptLineMapper.xml b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/DeptLineMapper.xml index b31b4e35c..ba309bfee 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/DeptLineMapper.xml +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/DeptLineMapper.xml @@ -110,6 +110,7 @@ inner join pq_substation sub on sub.id = substation.id where device.Dev_Model = 1 and point.state = 1 + and device.Run_Flag = 0 and device.Dev_Data_Type in #{item} diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/RmpEventDetailServiceImpl.java b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/RmpEventDetailServiceImpl.java index fb32da954..7432e32ad 100644 --- a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/RmpEventDetailServiceImpl.java +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/RmpEventDetailServiceImpl.java @@ -300,13 +300,12 @@ public class RmpEventDetailServiceImpl extends ServiceImpl lineAllIds = collect.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList()); List gwLineAllIds = collect.stream().filter(x->1==x.getIsUpToGrid()).map(LineDevGetDTO::getPointId).collect(Collectors.toList()); - - List list = this.list(new LambdaQueryWrapper() + List list1 = this.list(new LambdaQueryWrapper() .in(CollUtil.isNotEmpty(lineAllIds), RmpEventDetailPO::getMeasurementPointId, lineAllIds) - .in(CollUtil.isNotEmpty(param.getIds()), RmpEventDetailPO::getEventType, param.getIds()) .ge(StrUtil.isNotBlank(param.getStartTime()), RmpEventDetailPO::getStartTime, DateUtil.beginOfDay(DateUtil.parse(param.getStartTime()))) .le(StrUtil.isNotBlank(param.getEndTime()), RmpEventDetailPO::getStartTime, DateUtil.endOfDay(DateUtil.parse(param.getEndTime()))) ); + List list =list1.stream().filter(x->param.getIds().contains(x.getEventType())).collect(Collectors.toList()); Map deptLineMap = deptGetChildrenMoreDTOS.stream().collect(Collectors.toMap(DeptGetChildrenMoreDTO::getUnitId, Function.identity())); GridDiagramVO.LineStatistics lineStatistics; @@ -330,9 +329,8 @@ public class RmpEventDetailServiceImpl extends ServiceImpl gwLineAllIds, List list) { - List asGwDouble = list.stream() + private List setData(List gwLineAllIds, List list) { + List info=new ArrayList<>(); + long count90 = list.stream() .filter(x -> ObjectUtil.isNotNull(x.getSeverity())) .filter(x -> gwLineAllIds.contains(x.getMeasurementPointId())) - .map(RmpEventDetailPO::getSeverity).collect(Collectors.toList()); - if(CollUtil.isNotEmpty(asGwDouble)){ - return asGwDouble.stream().mapToDouble(Double::doubleValue).average().getAsDouble(); - }else{ - return 0.0; + .filter(x -> 0.9 < x.getFeatureAmplitude()) + .map(RmpEventDetailPO::getFeatureAmplitude).count(); + long count50 = list.stream() + .filter(x -> ObjectUtil.isNotNull(x.getSeverity())) + .filter(x -> gwLineAllIds.contains(x.getMeasurementPointId())) + .filter(x -> 0.5 < x.getFeatureAmplitude()) + .map(RmpEventDetailPO::getFeatureAmplitude).count(); + if(count90>0){ + info.add(NumberUtil.round(count90*100.0/list.size(),2).doubleValue()); + }else { + info.add(0.0); } + if(count50>0){ + info.add(NumberUtil.round(count50*100.0/list.size(),2).doubleValue()); + }else { + info.add(0.0); + } + return info; } /** diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/RStatLimitTargetVO.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/RStatLimitTargetVO.java new file mode 100644 index 000000000..dfb157fa2 --- /dev/null +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/RStatLimitTargetVO.java @@ -0,0 +1,59 @@ +package com.njcn.harmonic.pojo.vo; + + +import lombok.Data; + + +@Data +public class RStatLimitTargetVO { + /** + * 监测点ID合格率的变电站/装置/母线/线路序号 + */ + private String lineId; + + /** + * 频率偏差越限次数 + */ + private Integer flickerAllTime=0; + + /** + * 电压偏差越限次数 + */ + private Integer freqDevOvertime=0; + + /** + * 电压不平衡度越限次数 + */ + private Integer voltageDevOvertime=0; + + /** + * 闪变越限次数 + */ + private Integer ubalanceOvertime=0; + + /** + * 电压谐波畸变率越限次数 + */ + private Integer uaberranceOvertime=0; + + /** + * 负序电流限值次数 + */ + private Integer iNegOvertime=0; + + /** + * 电压谐波含有率越限次数 + */ + private Integer uharmOvertime=0; + + /** + * 电流谐波幅值越限次数 + */ + private Integer iharmOvertime=0; + + /** + * 间谐波电压限值次数 + */ + private Integer inuharmOvertime=0; + +} \ No newline at end of file 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 cf5273741..e216fbf1d 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 @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njcn.common.pojo.annotation.OperateInfo; import com.njcn.common.pojo.enums.common.LogEnum; import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.param.StatisticsBizBaseParam; import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.utils.HttpResultUtil; import com.njcn.device.pq.pojo.dto.PollutionGridDiagramDTO; @@ -11,7 +12,9 @@ import com.njcn.device.pq.pojo.param.DeviceInfoParam; import com.njcn.device.pq.pojo.param.GridDiagramParam; import com.njcn.device.pq.pojo.vo.GridDiagramVO; import com.njcn.harmonic.pojo.param.StatSubstationBizBaseParam; +import com.njcn.harmonic.pojo.vo.RStatLimitTargetVO; import com.njcn.harmonic.service.IRMpTargetWarnDService; +import com.njcn.harmonic.service.IRStatLimitTargetDService; import com.njcn.harmonic.service.PollutionSubstationService; import com.njcn.harmonic.service.majornetwork.RStatLimitService; import com.njcn.web.controller.BaseController; @@ -40,6 +43,9 @@ public class GridDiagramHarmController extends BaseController { private final IRMpTargetWarnDService irMpTargetWarnDService; private final PollutionSubstationService pollutionSubstationService; private final RStatLimitService rStatLimitService; + private final IRStatLimitTargetDService targetDService; + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) @PostMapping("/getSubLineGiveAnAlarm") @@ -84,4 +90,24 @@ public class GridDiagramHarmController extends BaseController { List gridDiagramDevData = rStatLimitService.getGridDiagramLineData(param); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, gridDiagramDevData, methodDescribe); } + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getGridDiagramAreaData") + @ApiOperation("区域基本信息(监测点,终端,变电站等)") + public HttpResult> getGridDiagramAreaData(@RequestBody DeviceInfoParam.BusinessParam param) { + String methodDescribe = getMethodDescribe("getGridDiagramAreaData"); + List gridDiagramDevData = rStatLimitService.getGridDiagramAreaData(param); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, gridDiagramDevData, methodDescribe); + } + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getGridDiagramAreaData") + @ApiOperation("监测点告警越线天数详细信息") + public HttpResult getGridDiagramAreaData(@RequestBody StatisticsBizBaseParam param) { + String methodDescribe = getMethodDescribe("getGridDiagramAreaData"); + RStatLimitTargetVO gridDiagramDevData = targetDService.getGridDiagramTargetData(param); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, gridDiagramDevData, methodDescribe); + } + + } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/RStatLimitTargetDMapper.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/RStatLimitTargetDMapper.java index 611fcbdd1..b48c18eae 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/RStatLimitTargetDMapper.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/RStatLimitTargetDMapper.java @@ -2,6 +2,7 @@ package com.njcn.harmonic.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO; +import com.njcn.harmonic.pojo.vo.RStatLimitTargetVO; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -59,4 +60,8 @@ public interface RStatLimitTargetDMapper extends BaseMapper List getSumTarget(@Param("ids") List ids, @Param("startTime") String startTime, @Param("endTime") String endTime); + + RStatLimitTargetVO getSumTargetDetails(@Param("ids") List ids, + @Param("startTime") String startTime, + @Param("endTime") String endTime); } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/RStatLimitTargetDMapper.xml b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/RStatLimitTargetDMapper.xml index 6893e57eb..aa1583f3b 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/RStatLimitTargetDMapper.xml +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/RStatLimitTargetDMapper.xml @@ -237,7 +237,7 @@ from ( SELECT my_index, - sum( all_time ) AS allCount + sum( all_time )+sum( flicker_all_time )AS allCount FROM r_stat_limit_target_d @@ -282,4 +282,93 @@ group by my_index + diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/IRStatLimitTargetDService.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/IRStatLimitTargetDService.java index 95e455a03..105f8e81a 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/IRStatLimitTargetDService.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/IRStatLimitTargetDService.java @@ -1,8 +1,10 @@ package com.njcn.harmonic.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.njcn.common.pojo.param.StatisticsBizBaseParam; import com.njcn.harmonic.pojo.param.StatSubstationBizBaseParam; import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO; +import com.njcn.harmonic.pojo.vo.RStatLimitTargetVO; import java.util.List; @@ -23,4 +25,11 @@ public interface IRStatLimitTargetDService extends IService */ List getLinesTarget(StatSubstationBizBaseParam param); + + /** + * 根据监测点查询一个月各指标越线超标天数 + * @param param + * @return + */ + RStatLimitTargetVO getGridDiagramTargetData(StatisticsBizBaseParam param); } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/RMpTargetWarnDServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/RMpTargetWarnDServiceImpl.java index d654e7dde..460a2ebcf 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/RMpTargetWarnDServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/RMpTargetWarnDServiceImpl.java @@ -2,19 +2,19 @@ package com.njcn.harmonic.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.njcn.device.biz.commApi.CommTerminalGeneralClient; import com.njcn.device.biz.pojo.dto.DeptGetSubStationDTO; -import com.njcn.device.biz.pojo.dto.LineDevGetDTO; import com.njcn.device.biz.pojo.dto.SubGetBase; import com.njcn.device.biz.pojo.param.DeptGetLineParam; +import com.njcn.device.pq.api.LineIntegrityClient; +import com.njcn.device.pq.pojo.po.RStatIntegrityD; import com.njcn.device.pq.pojo.vo.GridDiagramVO; import com.njcn.harmonic.mapper.RMpTargetWarnDMapper; import com.njcn.harmonic.pojo.param.StatSubstationBizBaseParam; import com.njcn.harmonic.pojo.po.RMpTargetWarnDPO; import com.njcn.harmonic.service.IRMpTargetWarnDService; +import com.njcn.harmonic.service.IRStatLimitTargetDService; import com.njcn.system.api.DicDataFeignClient; import com.njcn.system.enums.DicDataEnum; import com.njcn.system.enums.DicDataTypeEnum; @@ -46,7 +46,8 @@ public class RMpTargetWarnDServiceImpl extends ServiceImpl lineIDS = deptGetChildrenMoreDTOS.stream() .flatMap(x -> x.getStationIds().stream().flatMap(l -> l.getUnitChildrenList().stream())) .collect(Collectors.toList()); + //根据r_stat_limit_target_d来判断是否告警allTime flicker_overtime - - List list = this.list(new QueryWrapper() - .select("measurement_point_id,sum(is_warn) as isWarn") - .in(CollUtil.isNotEmpty(lineIDS), "measurement_point_id", lineIDS) - .ge(StrUtil.isNotBlank(param.getStartTime()), "data_date", DateUtil.beginOfDay(DateUtil.parse(param.getStartTime()))) - .le(StrUtil.isNotBlank(param.getEndTime()), "data_date", DateUtil.endOfDay(DateUtil.parse(param.getEndTime()))) - .groupBy("measurement_point_id") - ); + List integrityList =new ArrayList<>(); + //根据r_stat_limit_target_d来判断是否告警allTime flicker_overtime + List linesTarget=new ArrayList<>(); + if(CollUtil.isNotEmpty(lineIDS)){ + StatSubstationBizBaseParam baseParam=new StatSubstationBizBaseParam(); + baseParam.setIds(lineIDS); + baseParam.setStartTime(DateUtil.beginOfDay(DateUtil.parse(param.getStartTime())).toString()); + baseParam.setEndTime(DateUtil.endOfDay(DateUtil.parse(param.getEndTime())).toString()); + linesTarget.addAll(targetDService.getLinesTarget(baseParam)); + List integrityDS = lineIntegrityClient.getIntegrityByLineIds(lineIDS, + DateUtil.beginOfDay(DateUtil.parse(param.getStartTime())).toString(), + DateUtil.endOfDay(DateUtil.parse(param.getEndTime())).toString()).getData(); + integrityList.addAll(integrityDS.stream().filter(x->0==x.getIntegrityData()).map(RStatIntegrityD::getLineIndex).collect(Collectors.toList())); + } Map deptLineMap = deptGetChildrenMoreDTOS.stream().collect(Collectors.toMap(DeptGetSubStationDTO.Info::getUnitId, Function.identity())); @@ -99,7 +107,7 @@ public class RMpTargetWarnDServiceImpl extends ServiceImpl subBaseList = deptLineMap.get(datum.getId()).getStationIds(); List statisticsData = new ArrayList<>(); List gwStatisticsData = new ArrayList<>(); - getSubStationStatisticsData(statisticsData, gwStatisticsData, subBaseList, voltageIds, list); + getSubStationStatisticsData(statisticsData, gwStatisticsData, subBaseList, voltageIds, linesTarget,integrityList); lineStatistics.setData(statisticsData); gwLineStatistics.setData(gwStatisticsData); @@ -116,7 +124,8 @@ public class RMpTargetWarnDServiceImpl extends ServiceImpl gwStatisticsData, List subBaseList, List voltageIds, - List list + List list, + List integrityList ) { GridDiagramVO.StatisticsData data; for (String voltageId : voltageIds) { @@ -143,8 +152,10 @@ public class RMpTargetWarnDServiceImpl extends ServiceImpl collect = list.stream().filter(d -> line.contains(d.getMeasurementPointId())) - .filter(d -> d.getIsWarn() > 0).map(RMpTargetWarnDPO::getMeasurementPointId).collect(Collectors.toList()); + List collect=new ArrayList<>(); + collect.addAll(list.stream().filter(d -> line.contains(d)).collect(Collectors.toList())); + collect.addAll(integrityList.stream().filter(d -> line.contains(d)).collect(Collectors.toList())); + if (CollUtil.isNotEmpty(collect)) { num.getAndIncrement(); alarm.addAll(collect); @@ -152,7 +163,7 @@ public class RMpTargetWarnDServiceImpl extends ServiceImpl alarm = new ArrayList<>(); subBaseList.stream().forEach(x -> { List line = x.getUnitChildrenList(); - List alarmList = list.stream().filter(d -> line.contains(d.getMeasurementPointId())) - .filter(d -> d.getIsWarn() > 0).map(RMpTargetWarnDPO::getMeasurementPointId).collect(Collectors.toList()); + List alarmList=new ArrayList<>(); + alarmList.addAll(list.stream().filter(d -> line.contains(d)).collect(Collectors.toList())); + alarmList.addAll(integrityList.stream().filter(d -> line.contains(d)).collect(Collectors.toList())); if (CollUtil.isNotEmpty(alarmList)) { num.getAndIncrement(); - alarm.addAll(alarmList); + alarm.addAll(alarmList.stream().distinct().collect(Collectors.toList())); } }); data.setNumTwo(num.get()); data.setNumTwoList(alarm); statisticsData.add(data); + //国网监测点 data = new GridDiagramVO.StatisticsData(); data.setNumOne(subBaseList.stream() .filter(x -> 1 == x.getIsUpToGrid()) @@ -195,11 +208,12 @@ public class RMpTargetWarnDServiceImpl extends ServiceImpl gwAlarm = new ArrayList<>(); subBaseList.stream().filter(x -> 1 == x.getIsUpToGrid()).forEach(x -> { List line = x.getGwUnitChildrenList(); - List alarmList = list.stream().filter(d -> line.contains(d.getMeasurementPointId())) - .filter(d -> d.getIsWarn() > 0).map(RMpTargetWarnDPO::getMeasurementPointId).collect(Collectors.toList()); + List alarmList=new ArrayList<>(); + alarmList.addAll(list.stream().filter(d -> line.contains(d)).collect(Collectors.toList())); + alarmList.addAll(integrityList.stream().filter(d -> line.contains(d)).collect(Collectors.toList())); if (CollUtil.isNotEmpty(alarmList)) { gwNum.getAndIncrement(); - gwAlarm.addAll(alarmList); + gwAlarm.addAll(alarmList.stream().distinct().collect(Collectors.toList())); } }); data.setNumTwo(gwNum.get()); diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/RStatLimitTargetDServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/RStatLimitTargetDServiceImpl.java index 595861bb7..8d9f31f4a 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/RStatLimitTargetDServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/RStatLimitTargetDServiceImpl.java @@ -1,12 +1,16 @@ package com.njcn.harmonic.service.impl; +import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.njcn.common.pojo.param.StatisticsBizBaseParam; import com.njcn.harmonic.mapper.RStatLimitTargetDMapper; import com.njcn.harmonic.pojo.param.StatSubstationBizBaseParam; import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO; +import com.njcn.harmonic.pojo.vo.RStatLimitTargetVO; import com.njcn.harmonic.service.IRStatLimitTargetDService; import org.springframework.stereotype.Service; +import java.util.Arrays; import java.util.List; /** @@ -24,4 +28,11 @@ public class RStatLimitTargetDServiceImpl extends ServiceImpl getLinesTarget(StatSubstationBizBaseParam param) { return this.baseMapper.getLinesTarget(param.getIds(),param.getStartTime(),param.getEndTime()); } + + @Override + public RStatLimitTargetVO getGridDiagramTargetData(StatisticsBizBaseParam param) { + return this.baseMapper.getSumTargetDetails(Arrays.asList(param.getId()), + DateUtil.beginOfDay(DateUtil.parse(param.getStartTime())).toString(), + DateUtil.endOfDay(DateUtil.parse(param.getEndTime())).toString()); + } } 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 01d11207b..d6f79a2de 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 @@ -26,4 +26,11 @@ public interface RStatLimitService { List monitorIdsGetLimitTargetInfo(String date, List monitorIds); List getGridDiagramLineData(DeviceInfoParam.BusinessParam deviceInfoParam); + + /** + * 区域基本信息(监测点,终端,变电站等) + * @param param + * @return + */ + List getGridDiagramAreaData(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 d7f9c84c8..f41a581df 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 @@ -13,15 +13,14 @@ import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO; import com.njcn.device.pq.pojo.param.DeviceInfoParam; import com.njcn.device.pq.pojo.param.OnlineRateParam; import com.njcn.device.pq.pojo.po.RStatIntegrityD; -import com.njcn.device.pq.pojo.po.RStatOnlinerateD; import com.njcn.device.pq.pojo.vo.GridDiagramVO; import com.njcn.device.pq.pojo.vo.RStatOnlinerateVO; -import com.njcn.device.pq.pojo.vo.TerminalTree; import com.njcn.harmonic.mapper.RStatLimitRateDMapper; import com.njcn.harmonic.mapper.RStatLimitTargetDMapper; -import com.njcn.harmonic.mapper.RStatLimitTargetMapper; +import com.njcn.harmonic.pojo.param.StatSubstationBizBaseParam; import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO; import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO; +import com.njcn.harmonic.service.IRStatLimitTargetDService; import com.njcn.harmonic.service.majornetwork.RStatLimitService; import com.njcn.system.pojo.enums.StatisticsEnum; import lombok.RequiredArgsConstructor; @@ -31,7 +30,6 @@ import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; -import java.util.stream.Stream; /** * pqs @@ -47,6 +45,7 @@ public class RStatLimitServiceImpl implements RStatLimitService { private final RStatLimitTargetDMapper rStatLimitTargetDMapper; private final GeneralDeviceInfoClient generalDeviceInfoClient; private final LineIntegrityClient lineIntegrityClient; + private final IRStatLimitTargetDService targetDService; @Override public List monitorIdsGetLimitRateInfo(String date, List monitorIds) { @@ -137,6 +136,48 @@ public class RStatLimitServiceImpl implements RStatLimitService { return info; } + @Override + public List getGridDiagramAreaData(DeviceInfoParam.BusinessParam param) { + List info = new ArrayList<>(); + GridDiagramVO.AreaData areaData ; + List data = generalDeviceInfoClient.getPracticalRunDeviceInfo(param).getData(); + List integrityList; + List linesTarget; + for (GeneralDeviceDTO datum : data) { + areaData = new GridDiagramVO.AreaData(); + areaData.setOrgId(datum.getIndex()); + areaData.setOrgName(datum.getName()); + areaData.setLineNum(datum.getLineIndexes().size()); + areaData.setLineList(datum.getLineIndexes()); + areaData.setSubNum(datum.getSubIndexes().size()); + areaData.setDeviceNum(datum.getDeviceIndexes().size()); + if(CollUtil.isNotEmpty(datum.getLineIndexes())){ + integrityList =new ArrayList<>(); + //根据r_stat_limit_target_d来判断是否告警allTime flicker_overtime + StatSubstationBizBaseParam baseParam=new StatSubstationBizBaseParam(); + baseParam.setIds(datum.getLineIndexes()); + baseParam.setStartTime(DateUtil.beginOfDay(DateUtil.parse(param.getSearchBeginTime())).toString()); + baseParam.setEndTime(DateUtil.endOfDay(DateUtil.parse(param.getSearchEndTime())).toString()); + linesTarget=targetDService.getLinesTarget(baseParam); + List integrityDS = lineIntegrityClient.getIntegrityByLineIds(datum.getLineIndexes(), + DateUtil.beginOfDay(DateUtil.parse(param.getSearchBeginTime())).toString(), + DateUtil.endOfDay(DateUtil.parse(param.getSearchEndTime())).toString()).getData(); + integrityList.addAll(integrityDS.stream().filter(x->0==x.getIntegrityData()).map(RStatIntegrityD::getLineIndex).collect(Collectors.toList())); + List collect=new ArrayList<>(); + collect.addAll(linesTarget.stream().filter(d -> datum.getLineIndexes().contains(d)).collect(Collectors.toList())); + collect.addAll(integrityList.stream().filter(d -> datum.getLineIndexes().contains(d)).collect(Collectors.toList())); + List alarm = collect.stream().distinct().collect(Collectors.toList()); + areaData.setAlarm(alarm.size()); + areaData.setAlarmList(alarm); + }else { + areaData.setAlarm(0); + areaData.setAlarmList(new ArrayList<>()); + } + info.add(areaData); + } + 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());