1.冀北电网一张图-暂态水平调整

This commit is contained in:
wr
2024-05-21 13:53:41 +08:00
parent 8722274de9
commit e2b84c275e
12 changed files with 344 additions and 43 deletions

View File

@@ -21,10 +21,10 @@ public class GridDiagramVO {
private List<?> gwInfo; private List<?> gwInfo;
@ApiModelProperty(name = "data", value = "总信息") @ApiModelProperty(name = "data", value = "总信息")
private Double data; private List<Double> data;
@ApiModelProperty(name = "gwData", value = "国网总信息") @ApiModelProperty(name = "gwData", value = "国网总信息")
private Double gwData; private List<Double> gwData;
@Data @Data
public static class LineStatistics { public static class LineStatistics {
@ApiModelProperty(name = "orgId", value = "单位id") @ApiModelProperty(name = "orgId", value = "单位id")
@@ -138,4 +138,32 @@ public class GridDiagramVO {
@ApiModelProperty(name = "onLineRate", value = "数据在线率") @ApiModelProperty(name = "onLineRate", value = "数据在线率")
private Float onLineRate; 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<String> lineList;
@ApiModelProperty(name = "alarm", value = "告警监测点个数")
private Integer alarm;
@ApiModelProperty(name = "onLineNumList", value = "告警监测点信息")
private List<String> alarmList;
@ApiModelProperty(name = "subNum", value = "变电站个数")
private Integer subNum;
@ApiModelProperty(name = "deviceNum", value = "终端个数")
private Integer deviceNum;
}
} }

View File

@@ -110,6 +110,7 @@
inner join pq_substation sub on sub.id = substation.id inner join pq_substation sub on sub.id = substation.id
where device.Dev_Model = 1 where device.Dev_Model = 1
and point.state = 1 and point.state = 1
and device.Run_Flag = 0
and device.Dev_Data_Type in and device.Dev_Data_Type in
<foreach collection="list" item="item" open="(" close=")" separator=","> <foreach collection="list" item="item" open="(" close=")" separator=",">
#{item} #{item}

View File

@@ -300,13 +300,12 @@ public class RmpEventDetailServiceImpl extends ServiceImpl<RmpEventDetailMapper,
List<String> lineAllIds = collect.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList()); List<String> lineAllIds = collect.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
List<String> gwLineAllIds = collect.stream().filter(x->1==x.getIsUpToGrid()).map(LineDevGetDTO::getPointId).collect(Collectors.toList()); List<String> gwLineAllIds = collect.stream().filter(x->1==x.getIsUpToGrid()).map(LineDevGetDTO::getPointId).collect(Collectors.toList());
List<RmpEventDetailPO> list1 = this.list(new LambdaQueryWrapper<RmpEventDetailPO>()
List<RmpEventDetailPO> list = this.list(new LambdaQueryWrapper<RmpEventDetailPO>()
.in(CollUtil.isNotEmpty(lineAllIds), RmpEventDetailPO::getMeasurementPointId, lineAllIds) .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()))) .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()))) .le(StrUtil.isNotBlank(param.getEndTime()), RmpEventDetailPO::getStartTime, DateUtil.endOfDay(DateUtil.parse(param.getEndTime())))
); );
List<RmpEventDetailPO> list =list1.stream().filter(x->param.getIds().contains(x.getEventType())).collect(Collectors.toList());
Map<String, DeptGetChildrenMoreDTO> deptLineMap = deptGetChildrenMoreDTOS.stream().collect(Collectors.toMap(DeptGetChildrenMoreDTO::getUnitId, Function.identity())); Map<String, DeptGetChildrenMoreDTO> deptLineMap = deptGetChildrenMoreDTOS.stream().collect(Collectors.toMap(DeptGetChildrenMoreDTO::getUnitId, Function.identity()));
GridDiagramVO.LineStatistics lineStatistics; GridDiagramVO.LineStatistics lineStatistics;
@@ -330,9 +329,8 @@ public class RmpEventDetailServiceImpl extends ServiceImpl<RmpEventDetailMapper,
gwInfo.add(gwLineStatistics); gwInfo.add(gwLineStatistics);
} }
} }
gridDiagramVO.setData(setData(gridDiagramVO, lineAllIds, list)); gridDiagramVO.setData(setData(lineAllIds, list1));
gridDiagramVO.setGwData(setData(gridDiagramVO, gwLineAllIds, list)); gridDiagramVO.setGwData(setData(gwLineAllIds, list1));
setData(gridDiagramVO, gwLineAllIds, list);
gridDiagramVO.setInfo(info); gridDiagramVO.setInfo(info);
gridDiagramVO.setGwInfo(gwInfo); gridDiagramVO.setGwInfo(gwInfo);
return gridDiagramVO; return gridDiagramVO;
@@ -395,16 +393,29 @@ public class RmpEventDetailServiceImpl extends ServiceImpl<RmpEventDetailMapper,
} }
private Double setData(GridDiagramVO gridDiagramVO, List<String> gwLineAllIds, List<RmpEventDetailPO> list) { private List<Double> setData(List<String> gwLineAllIds, List<RmpEventDetailPO> list) {
List<Double> asGwDouble = list.stream() List<Double> info=new ArrayList<>();
long count90 = list.stream()
.filter(x -> ObjectUtil.isNotNull(x.getSeverity())) .filter(x -> ObjectUtil.isNotNull(x.getSeverity()))
.filter(x -> gwLineAllIds.contains(x.getMeasurementPointId())) .filter(x -> gwLineAllIds.contains(x.getMeasurementPointId()))
.map(RmpEventDetailPO::getSeverity).collect(Collectors.toList()); .filter(x -> 0.9 < x.getFeatureAmplitude())
if(CollUtil.isNotEmpty(asGwDouble)){ .map(RmpEventDetailPO::getFeatureAmplitude).count();
return asGwDouble.stream().mapToDouble(Double::doubleValue).average().getAsDouble(); long count50 = list.stream()
}else{ .filter(x -> ObjectUtil.isNotNull(x.getSeverity()))
return 0.0; .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;
} }
/** /**

View File

@@ -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;
}

View File

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.common.pojo.annotation.OperateInfo; import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.enums.common.LogEnum; import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum; 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.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil; import com.njcn.common.utils.HttpResultUtil;
import com.njcn.device.pq.pojo.dto.PollutionGridDiagramDTO; 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.param.GridDiagramParam;
import com.njcn.device.pq.pojo.vo.GridDiagramVO; import com.njcn.device.pq.pojo.vo.GridDiagramVO;
import com.njcn.harmonic.pojo.param.StatSubstationBizBaseParam; 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.IRMpTargetWarnDService;
import com.njcn.harmonic.service.IRStatLimitTargetDService;
import com.njcn.harmonic.service.PollutionSubstationService; import com.njcn.harmonic.service.PollutionSubstationService;
import com.njcn.harmonic.service.majornetwork.RStatLimitService; import com.njcn.harmonic.service.majornetwork.RStatLimitService;
import com.njcn.web.controller.BaseController; import com.njcn.web.controller.BaseController;
@@ -40,6 +43,9 @@ public class GridDiagramHarmController extends BaseController {
private final IRMpTargetWarnDService irMpTargetWarnDService; private final IRMpTargetWarnDService irMpTargetWarnDService;
private final PollutionSubstationService pollutionSubstationService; private final PollutionSubstationService pollutionSubstationService;
private final RStatLimitService rStatLimitService; private final RStatLimitService rStatLimitService;
private final IRStatLimitTargetDService targetDService;
@OperateInfo(info = LogEnum.BUSINESS_COMMON) @OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/getSubLineGiveAnAlarm") @PostMapping("/getSubLineGiveAnAlarm")
@@ -84,4 +90,24 @@ public class GridDiagramHarmController extends BaseController {
List<GridDiagramVO.LineData> gridDiagramDevData = rStatLimitService.getGridDiagramLineData(param); List<GridDiagramVO.LineData> gridDiagramDevData = rStatLimitService.getGridDiagramLineData(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, gridDiagramDevData, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, gridDiagramDevData, methodDescribe);
} }
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/getGridDiagramAreaData")
@ApiOperation("区域基本信息(监测点,终端,变电站等)")
public HttpResult<List<GridDiagramVO.AreaData>> getGridDiagramAreaData(@RequestBody DeviceInfoParam.BusinessParam param) {
String methodDescribe = getMethodDescribe("getGridDiagramAreaData");
List<GridDiagramVO.AreaData> gridDiagramDevData = rStatLimitService.getGridDiagramAreaData(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, gridDiagramDevData, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/getGridDiagramAreaData")
@ApiOperation("监测点告警越线天数详细信息")
public HttpResult<RStatLimitTargetVO> getGridDiagramAreaData(@RequestBody StatisticsBizBaseParam param) {
String methodDescribe = getMethodDescribe("getGridDiagramAreaData");
RStatLimitTargetVO gridDiagramDevData = targetDService.getGridDiagramTargetData(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, gridDiagramDevData, methodDescribe);
}
} }

View File

@@ -2,6 +2,7 @@ package com.njcn.harmonic.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO; import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO;
import com.njcn.harmonic.pojo.vo.RStatLimitTargetVO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
@@ -59,4 +60,8 @@ public interface RStatLimitTargetDMapper extends BaseMapper<RStatLimitTargetDPO>
List<RStatLimitTargetDPO> getSumTarget(@Param("ids") List<String> ids, List<RStatLimitTargetDPO> getSumTarget(@Param("ids") List<String> ids,
@Param("startTime") String startTime, @Param("startTime") String startTime,
@Param("endTime") String endTime); @Param("endTime") String endTime);
RStatLimitTargetVO getSumTargetDetails(@Param("ids") List<String> ids,
@Param("startTime") String startTime,
@Param("endTime") String endTime);
} }

View File

@@ -237,7 +237,7 @@
from ( from (
SELECT SELECT
my_index, my_index,
sum( all_time ) AS allCount sum( all_time )+sum( flicker_all_time )AS allCount
FROM FROM
r_stat_limit_target_d r_stat_limit_target_d
<where> <where>
@@ -282,4 +282,93 @@
group by group by
my_index my_index
</select> </select>
<select id="getSumTargetDetails" resultType="com.njcn.harmonic.pojo.vo.RStatLimitTargetVO">
SELECT
my_index AS lineId,
SUM( all_time ) AS allTime,
SUM( flicker_overtime ) AS flickerOvertime,
SUM( flicker_all_time ) AS flickerAllTime,
SUM( freq_dev_overtime ) AS freqDevOvertime,
SUM( voltage_dev_overtime ) AS voltageDevOvertime,
SUM( ubalance_overtime ) AS ubalanceOvertime,
SUM( uaberrance_overtime ) AS uaberranceOvertime,
SUM( i_neg_overtime ) AS iNegOvertime,
sum(if((uharm_2_overtime+
uharm_3_overtime+
uharm_4_overtime+
uharm_5_overtime+
uharm_6_overtime+
uharm_7_overtime+
uharm_8_overtime+
uharm_9_overtime+
uharm_10_overtime+
uharm_11_overtime+
uharm_12_overtime+
uharm_13_overtime+
uharm_14_overtime+
uharm_15_overtime+
uharm_16_overtime+
uharm_17_overtime+
uharm_18_overtime+
uharm_19_overtime+
uharm_20_overtime+
uharm_21_overtime+
uharm_22_overtime+
uharm_23_overtime+
uharm_24_overtime+
uharm_25_overtime)>0,1,0))as uharmOvertime,
sum(if((iharm_2_overtime+
iharm_3_overtime+
iharm_4_overtime+
iharm_5_overtime+
iharm_6_overtime+
iharm_7_overtime+
iharm_8_overtime+
iharm_9_overtime+
iharm_10_overtime+
iharm_11_overtime+
iharm_12_overtime+
iharm_13_overtime+
iharm_14_overtime+
iharm_15_overtime+
iharm_16_overtime+
iharm_17_overtime+
iharm_18_overtime+
iharm_19_overtime+
iharm_20_overtime+
iharm_21_overtime+
iharm_22_overtime+
iharm_23_overtime+
iharm_24_overtime+
iharm_25_overtime)>0,1,0)) as iharmOvertime,
sum(if((inuharm_1_overtime+
inuharm_2_overtime+
inuharm_3_overtime+
inuharm_4_overtime+
inuharm_5_overtime+
inuharm_6_overtime+
inuharm_7_overtime+
inuharm_8_overtime+
inuharm_9_overtime+
inuharm_10_overtime+
inuharm_11_overtime+
inuharm_12_overtime+
inuharm_13_overtime+
inuharm_14_overtime+
inuharm_15_overtime+
inuharm_16_overtime)>0,1,0)) as inuharmOvertime
FROM
r_stat_limit_target_d
<where>
and time_id between #{startTime} and #{endTime}
<if test=" ids != null and ids.size > 0">
AND my_index IN
<foreach collection='ids' item='item' index="index" open='(' separator=',' close=')'>
#{item}
</foreach>
</if>
</where>
GROUP BY
my_index
</select>
</mapper> </mapper>

View File

@@ -1,8 +1,10 @@
package com.njcn.harmonic.service; package com.njcn.harmonic.service;
import com.baomidou.mybatisplus.extension.service.IService; 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.param.StatSubstationBizBaseParam;
import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO; import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO;
import com.njcn.harmonic.pojo.vo.RStatLimitTargetVO;
import java.util.List; import java.util.List;
@@ -23,4 +25,11 @@ public interface IRStatLimitTargetDService extends IService<RStatLimitTargetDPO>
*/ */
List<String> getLinesTarget(StatSubstationBizBaseParam param); List<String> getLinesTarget(StatSubstationBizBaseParam param);
/**
* 根据监测点查询一个月各指标越线超标天数
* @param param
* @return
*/
RStatLimitTargetVO getGridDiagramTargetData(StatisticsBizBaseParam param);
} }

View File

@@ -2,19 +2,19 @@ package com.njcn.harmonic.service.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil; 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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.device.biz.commApi.CommTerminalGeneralClient; import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
import com.njcn.device.biz.pojo.dto.DeptGetSubStationDTO; 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.dto.SubGetBase;
import com.njcn.device.biz.pojo.param.DeptGetLineParam; 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.device.pq.pojo.vo.GridDiagramVO;
import com.njcn.harmonic.mapper.RMpTargetWarnDMapper; import com.njcn.harmonic.mapper.RMpTargetWarnDMapper;
import com.njcn.harmonic.pojo.param.StatSubstationBizBaseParam; import com.njcn.harmonic.pojo.param.StatSubstationBizBaseParam;
import com.njcn.harmonic.pojo.po.RMpTargetWarnDPO; import com.njcn.harmonic.pojo.po.RMpTargetWarnDPO;
import com.njcn.harmonic.service.IRMpTargetWarnDService; import com.njcn.harmonic.service.IRMpTargetWarnDService;
import com.njcn.harmonic.service.IRStatLimitTargetDService;
import com.njcn.system.api.DicDataFeignClient; import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.enums.DicDataEnum; import com.njcn.system.enums.DicDataEnum;
import com.njcn.system.enums.DicDataTypeEnum; import com.njcn.system.enums.DicDataTypeEnum;
@@ -46,7 +46,8 @@ public class RMpTargetWarnDServiceImpl extends ServiceImpl<RMpTargetWarnDMapper,
private final DeptFeignClient deptFeignClient; private final DeptFeignClient deptFeignClient;
private final DicDataFeignClient dicDataFeignClient; private final DicDataFeignClient dicDataFeignClient;
private final CommTerminalGeneralClient commTerminalGeneralClient; private final CommTerminalGeneralClient commTerminalGeneralClient;
private final IRStatLimitTargetDService targetDService;
private final LineIntegrityClient lineIntegrityClient;
@Override @Override
public GridDiagramVO getSubLineGiveAnAlarm(StatSubstationBizBaseParam param) { public GridDiagramVO getSubLineGiveAnAlarm(StatSubstationBizBaseParam param) {
//获取电压等级 //获取电压等级
@@ -74,15 +75,22 @@ public class RMpTargetWarnDServiceImpl extends ServiceImpl<RMpTargetWarnDMapper,
List<String> lineIDS = deptGetChildrenMoreDTOS.stream() List<String> lineIDS = deptGetChildrenMoreDTOS.stream()
.flatMap(x -> x.getStationIds().stream().flatMap(l -> l.getUnitChildrenList().stream())) .flatMap(x -> x.getStationIds().stream().flatMap(l -> l.getUnitChildrenList().stream()))
.collect(Collectors.toList()); .collect(Collectors.toList());
//根据r_stat_limit_target_d来判断是否告警allTime flicker_overtime
List<String> integrityList =new ArrayList<>();
List<RMpTargetWarnDPO> list = this.list(new QueryWrapper<RMpTargetWarnDPO>() //根据r_stat_limit_target_d来判断是否告警allTime flicker_overtime
.select("measurement_point_id,sum(is_warn) as isWarn") List<String> linesTarget=new ArrayList<>();
.in(CollUtil.isNotEmpty(lineIDS), "measurement_point_id", lineIDS) if(CollUtil.isNotEmpty(lineIDS)){
.ge(StrUtil.isNotBlank(param.getStartTime()), "data_date", DateUtil.beginOfDay(DateUtil.parse(param.getStartTime()))) StatSubstationBizBaseParam baseParam=new StatSubstationBizBaseParam();
.le(StrUtil.isNotBlank(param.getEndTime()), "data_date", DateUtil.endOfDay(DateUtil.parse(param.getEndTime()))) baseParam.setIds(lineIDS);
.groupBy("measurement_point_id") baseParam.setStartTime(DateUtil.beginOfDay(DateUtil.parse(param.getStartTime())).toString());
); baseParam.setEndTime(DateUtil.endOfDay(DateUtil.parse(param.getEndTime())).toString());
linesTarget.addAll(targetDService.getLinesTarget(baseParam));
List<RStatIntegrityD> 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<String, DeptGetSubStationDTO.Info> deptLineMap = deptGetChildrenMoreDTOS.stream().collect(Collectors.toMap(DeptGetSubStationDTO.Info::getUnitId, Function.identity())); Map<String, DeptGetSubStationDTO.Info> deptLineMap = deptGetChildrenMoreDTOS.stream().collect(Collectors.toMap(DeptGetSubStationDTO.Info::getUnitId, Function.identity()));
@@ -99,7 +107,7 @@ public class RMpTargetWarnDServiceImpl extends ServiceImpl<RMpTargetWarnDMapper,
List<SubGetBase> subBaseList = deptLineMap.get(datum.getId()).getStationIds(); List<SubGetBase> subBaseList = deptLineMap.get(datum.getId()).getStationIds();
List<GridDiagramVO.StatisticsData> statisticsData = new ArrayList<>(); List<GridDiagramVO.StatisticsData> statisticsData = new ArrayList<>();
List<GridDiagramVO.StatisticsData> gwStatisticsData = new ArrayList<>(); List<GridDiagramVO.StatisticsData> gwStatisticsData = new ArrayList<>();
getSubStationStatisticsData(statisticsData, gwStatisticsData, subBaseList, voltageIds, list); getSubStationStatisticsData(statisticsData, gwStatisticsData, subBaseList, voltageIds, linesTarget,integrityList);
lineStatistics.setData(statisticsData); lineStatistics.setData(statisticsData);
gwLineStatistics.setData(gwStatisticsData); gwLineStatistics.setData(gwStatisticsData);
@@ -116,7 +124,8 @@ public class RMpTargetWarnDServiceImpl extends ServiceImpl<RMpTargetWarnDMapper,
List<GridDiagramVO.StatisticsData> gwStatisticsData, List<GridDiagramVO.StatisticsData> gwStatisticsData,
List<SubGetBase> subBaseList, List<SubGetBase> subBaseList,
List<String> voltageIds, List<String> voltageIds,
List<RMpTargetWarnDPO> list List<String> list,
List<String> integrityList
) { ) {
GridDiagramVO.StatisticsData data; GridDiagramVO.StatisticsData data;
for (String voltageId : voltageIds) { for (String voltageId : voltageIds) {
@@ -143,8 +152,10 @@ public class RMpTargetWarnDServiceImpl extends ServiceImpl<RMpTargetWarnDMapper,
} else { } else {
line.addAll(x.getGwUnitChildrenList()); line.addAll(x.getGwUnitChildrenList());
} }
List<String> collect = list.stream().filter(d -> line.contains(d.getMeasurementPointId())) List<String> collect=new ArrayList<>();
.filter(d -> d.getIsWarn() > 0).map(RMpTargetWarnDPO::getMeasurementPointId).collect(Collectors.toList()); 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)) { if (CollUtil.isNotEmpty(collect)) {
num.getAndIncrement(); num.getAndIncrement();
alarm.addAll(collect); alarm.addAll(collect);
@@ -152,7 +163,7 @@ public class RMpTargetWarnDServiceImpl extends ServiceImpl<RMpTargetWarnDMapper,
}); });
data.setNumTwo(num.get()); data.setNumTwo(num.get());
data.setNumTwoList(alarm); data.setNumTwoList(alarm.stream().distinct().collect(Collectors.toList()));
if (i == 0) { if (i == 0) {
statisticsData.add(data); statisticsData.add(data);
} else { } else {
@@ -172,16 +183,18 @@ public class RMpTargetWarnDServiceImpl extends ServiceImpl<RMpTargetWarnDMapper,
List<String> alarm = new ArrayList<>(); List<String> alarm = new ArrayList<>();
subBaseList.stream().forEach(x -> { subBaseList.stream().forEach(x -> {
List<String> line = x.getUnitChildrenList(); List<String> line = x.getUnitChildrenList();
List<String> alarmList = list.stream().filter(d -> line.contains(d.getMeasurementPointId())) List<String> alarmList=new ArrayList<>();
.filter(d -> d.getIsWarn() > 0).map(RMpTargetWarnDPO::getMeasurementPointId).collect(Collectors.toList()); 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)) { if (CollUtil.isNotEmpty(alarmList)) {
num.getAndIncrement(); num.getAndIncrement();
alarm.addAll(alarmList); alarm.addAll(alarmList.stream().distinct().collect(Collectors.toList()));
} }
}); });
data.setNumTwo(num.get()); data.setNumTwo(num.get());
data.setNumTwoList(alarm); data.setNumTwoList(alarm);
statisticsData.add(data); statisticsData.add(data);
//国网监测点
data = new GridDiagramVO.StatisticsData(); data = new GridDiagramVO.StatisticsData();
data.setNumOne(subBaseList.stream() data.setNumOne(subBaseList.stream()
.filter(x -> 1 == x.getIsUpToGrid()) .filter(x -> 1 == x.getIsUpToGrid())
@@ -195,11 +208,12 @@ public class RMpTargetWarnDServiceImpl extends ServiceImpl<RMpTargetWarnDMapper,
List<String> gwAlarm = new ArrayList<>(); List<String> gwAlarm = new ArrayList<>();
subBaseList.stream().filter(x -> 1 == x.getIsUpToGrid()).forEach(x -> { subBaseList.stream().filter(x -> 1 == x.getIsUpToGrid()).forEach(x -> {
List<String> line = x.getGwUnitChildrenList(); List<String> line = x.getGwUnitChildrenList();
List<String> alarmList = list.stream().filter(d -> line.contains(d.getMeasurementPointId())) List<String> alarmList=new ArrayList<>();
.filter(d -> d.getIsWarn() > 0).map(RMpTargetWarnDPO::getMeasurementPointId).collect(Collectors.toList()); 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)) { if (CollUtil.isNotEmpty(alarmList)) {
gwNum.getAndIncrement(); gwNum.getAndIncrement();
gwAlarm.addAll(alarmList); gwAlarm.addAll(alarmList.stream().distinct().collect(Collectors.toList()));
} }
}); });
data.setNumTwo(gwNum.get()); data.setNumTwo(gwNum.get());

View File

@@ -1,12 +1,16 @@
package com.njcn.harmonic.service.impl; package com.njcn.harmonic.service.impl;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 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.mapper.RStatLimitTargetDMapper;
import com.njcn.harmonic.pojo.param.StatSubstationBizBaseParam; import com.njcn.harmonic.pojo.param.StatSubstationBizBaseParam;
import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO; import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO;
import com.njcn.harmonic.pojo.vo.RStatLimitTargetVO;
import com.njcn.harmonic.service.IRStatLimitTargetDService; import com.njcn.harmonic.service.IRStatLimitTargetDService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List; import java.util.List;
/** /**
@@ -24,4 +28,11 @@ public class RStatLimitTargetDServiceImpl extends ServiceImpl<RStatLimitTargetDM
public List<String> getLinesTarget(StatSubstationBizBaseParam param) { public List<String> getLinesTarget(StatSubstationBizBaseParam param) {
return this.baseMapper.getLinesTarget(param.getIds(),param.getStartTime(),param.getEndTime()); 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());
}
} }

View File

@@ -26,4 +26,11 @@ public interface RStatLimitService {
List<RStatLimitTargetDPO> monitorIdsGetLimitTargetInfo(String date, List<String> monitorIds); List<RStatLimitTargetDPO> monitorIdsGetLimitTargetInfo(String date, List<String> monitorIds);
List<GridDiagramVO.LineData> getGridDiagramLineData(DeviceInfoParam.BusinessParam deviceInfoParam); List<GridDiagramVO.LineData> getGridDiagramLineData(DeviceInfoParam.BusinessParam deviceInfoParam);
/**
* 区域基本信息(监测点,终端,变电站等)
* @param param
* @return
*/
List<GridDiagramVO.AreaData> getGridDiagramAreaData(DeviceInfoParam.BusinessParam param);
} }

View File

@@ -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.DeviceInfoParam;
import com.njcn.device.pq.pojo.param.OnlineRateParam; import com.njcn.device.pq.pojo.param.OnlineRateParam;
import com.njcn.device.pq.pojo.po.RStatIntegrityD; 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.GridDiagramVO;
import com.njcn.device.pq.pojo.vo.RStatOnlinerateVO; 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.RStatLimitRateDMapper;
import com.njcn.harmonic.mapper.RStatLimitTargetDMapper; 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.RStatLimitRateDPO;
import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO; import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO;
import com.njcn.harmonic.service.IRStatLimitTargetDService;
import com.njcn.harmonic.service.majornetwork.RStatLimitService; import com.njcn.harmonic.service.majornetwork.RStatLimitService;
import com.njcn.system.pojo.enums.StatisticsEnum; import com.njcn.system.pojo.enums.StatisticsEnum;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@@ -31,7 +30,6 @@ import java.util.ArrayList;
import java.util.Comparator; import java.util.Comparator;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream;
/** /**
* pqs * pqs
@@ -47,6 +45,7 @@ public class RStatLimitServiceImpl implements RStatLimitService {
private final RStatLimitTargetDMapper rStatLimitTargetDMapper; private final RStatLimitTargetDMapper rStatLimitTargetDMapper;
private final GeneralDeviceInfoClient generalDeviceInfoClient; private final GeneralDeviceInfoClient generalDeviceInfoClient;
private final LineIntegrityClient lineIntegrityClient; private final LineIntegrityClient lineIntegrityClient;
private final IRStatLimitTargetDService targetDService;
@Override @Override
public List<RStatLimitRateDPO> monitorIdsGetLimitRateInfo(String date, List<String> monitorIds) { public List<RStatLimitRateDPO> monitorIdsGetLimitRateInfo(String date, List<String> monitorIds) {
@@ -137,6 +136,48 @@ public class RStatLimitServiceImpl implements RStatLimitService {
return info; return info;
} }
@Override
public List<GridDiagramVO.AreaData> getGridDiagramAreaData(DeviceInfoParam.BusinessParam param) {
List<GridDiagramVO.AreaData> info = new ArrayList<>();
GridDiagramVO.AreaData areaData ;
List<GeneralDeviceDTO> data = generalDeviceInfoClient.getPracticalRunDeviceInfo(param).getData();
List<String> integrityList;
List<String> 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<RStatIntegrityD> 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<String> 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<String> 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<String> lineIds, List<RStatIntegrityD> onIntegrityByIds, List<String> devIds, List<RStatOnlinerateVO> onlineRateByDevIds,List<RStatLimitTargetDPO> limitTargetList, GridDiagramVO.LineData lineData) { private void onLineAndIntegrity(List<String> lineIds, List<RStatIntegrityD> onIntegrityByIds, List<String> devIds, List<RStatOnlinerateVO> onlineRateByDevIds,List<RStatLimitTargetDPO> limitTargetList, GridDiagramVO.LineData lineData) {
//监测完整率 //监测完整率
List<RStatIntegrityD> integrityDS = onIntegrityByIds.stream().filter(x -> lineIds.contains(x.getLineIndex())).collect(Collectors.toList()); List<RStatIntegrityD> integrityDS = onIntegrityByIds.stream().filter(x -> lineIds.contains(x.getLineIndex())).collect(Collectors.toList());