企业级概览页面接口

This commit is contained in:
2023-08-30 20:28:14 +08:00
parent 151ef5f885
commit 03f2982c5a
6 changed files with 277 additions and 10 deletions

View File

@@ -87,4 +87,18 @@ public class LineIntegrityDataController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, rStatIntegrityDList, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, rStatIntegrityDList, methodDescribe);
} }
/**
* 监测点数据完整性
*/
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/getEnterpriseIntegrityData")
@ApiOperation("企业级监测点数据完整性图")
@ApiImplicitParam(name = "lineIntegrityDataParam", value = "参数实体", required = true)
public HttpResult<List<LineIntegrityDataVO>> getEnterpriseIntegrityData(@RequestBody LineIntegrityDataParam lineIntegrityDataParam) {
String methodDescribe = getMethodDescribe("getEnterpriseIntegrityData");
List<LineIntegrityDataVO> integrityDataOfLine = lineIntegrityDataService.getEnterpriseIntegrityData(lineIntegrityDataParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS,integrityDataOfLine,methodDescribe);
}
} }

View File

@@ -22,4 +22,6 @@ public interface LineIntegrityDataService {
List<LineIntegrityDataVO> getIntegrityDataOfLine(LineIntegrityDataParam lineIntegrityDataParam); List<LineIntegrityDataVO> getIntegrityDataOfLine(LineIntegrityDataParam lineIntegrityDataParam);
List<IntegrityIconVO> getIntegrityIcon(DeviceInfoParam.CompareBusinessParam integrityIconParam); List<IntegrityIconVO> getIntegrityIcon(DeviceInfoParam.CompareBusinessParam integrityIconParam);
List<LineIntegrityDataVO> getEnterpriseIntegrityData(LineIntegrityDataParam lineIntegrityDataParam);
} }

View File

@@ -221,6 +221,144 @@ public class LineIntegrityDataServiceImpl extends ServiceImpl<LineIntegrityDataM
return out; return out;
} }
@Override
public List<LineIntegrityDataVO> getEnterpriseIntegrityData(LineIntegrityDataParam lineIntegrityDataParam) {
// 获取所有数据
List<GeneralDeviceDTO> generalDeviceDTOList = generalDeviceService.getDeviceInfo(lineIntegrityDataParam, Stream.of(0).collect(Collectors.toList()), Stream.of(1).collect(Collectors.toList()));
// 判断所有数据集合状态
if (CollectionUtil.isNotEmpty(generalDeviceDTOList)) {
// 创建集合返回数据
List<LineIntegrityDataVO> pro = new ArrayList<>();
// 获取告警策略列表
List<AlarmStrategyVO> alarmStrategyVos = alarmClient.getAlarmStrategyData().getData();
// 判断告警策略数据状态
if (CollectionUtil.isEmpty(alarmStrategyVos)) {
throw new BusinessException(DeviceResponseEnum.QUERY_ALARMSTRATEGY_DATA_EMPTY);
}
List<AlarmStrategyVO> alarmAlgoDescribe = lineIntegrityDataMapper.getAlarmAlgoDescribe(alarmStrategyVos);
Map<Integer, Integer> mapAlarm = alarmAlgoDescribe.stream().collect(Collectors.toMap(AlarmStrategyVO::getAlgoDescribe, AlarmStrategyVO::getIntegrityValue));
Map<String, Integer> mapA = alarmStrategyVos.stream().collect(Collectors.toMap(AlarmStrategyVO::getId, AlarmStrategyVO::getIntegrityValue));
// 遍历集合
for (GeneralDeviceDTO generalDeviceDTO : generalDeviceDTOList) {
// 判断监测点索引集合状态
if (CollectionUtils.isEmpty(generalDeviceDTO.getLineIndexes())) {
continue;
}
// 创建实体类
LineIntegrityDataVO lineIntegrityDataVO = new LineIntegrityDataVO();
// 通过监测点索引查询监测点信息
List<LineIntegrityDataVO> lineList = lineIntegrityDataMapper.getDetailedParametersForLine(generalDeviceDTO.getLineIndexes(), lineIntegrityDataParam.getLineGrade());
List<String> lineIds = lineList.stream().map(LineIntegrityDataVO::getId).distinct().collect(Collectors.toList());
// 通过供电站索引查询供电站信息
List<LineIntegrityDataVO> subList = lineIntegrityDataMapper.getSubList(lineIds);
// 查询监测点数据完整性
List<LineDataIntegrity> percentageOfCompleteDatas = rStatIntegrityDMapper.getLineIntegrityRate(generalDeviceDTO.getLineIndexes(), lineIntegrityDataParam.getSearchBeginTime(), lineIntegrityDataParam.getSearchEndTime());
for (LineIntegrityDataVO lineDataIntegrity : lineList) {
boolean flag = false;
for (LineDataIntegrity lineData : percentageOfCompleteDatas) {
if (lineDataIntegrity.getId().equals(lineData.getLineId())) {
flag = true;
Double temValue = lineData.getIntegrityData();
lineDataIntegrity.setIntegrityData(DataStatisticsUtil.dataLimits(temValue));
//根据等级判断是否越限
if (StrUtil.isNotBlank(lineDataIntegrity.getLineGrade())) {
if (mapA.containsKey(lineDataIntegrity.getLineGrade())) {
if (temValue > mapA.get(lineDataIntegrity.getLineGrade())) {
lineDataIntegrity.setValueOver(1);
} else {
lineDataIntegrity.setValueOver(0);
}
} else {
throw new BusinessException(DeviceResponseEnum.LINE_GRADE_LESS);
}
} else {
//默认没有设置等级的监测点标志为1 0.不合格 1.合格
lineDataIntegrity.setValueOver(1);
}
break;
}
}
if (!flag) {
//表示未匹配到数据完整性
lineDataIntegrity.setIntegrityData(3.14159);
lineDataIntegrity.setValueOver(0);
}
}
//处理变电站
dealEnterpriseChildrenData(subList, lineList, true);
lineIntegrityDataVO.setChildren(subList);
// 数据封装
Double temValue = lineList.stream().filter(item -> item.getIntegrityData() != 3.14159).mapToDouble(LineIntegrityDataVO::getIntegrityData).average().orElse(3.14159);
LineIntegrityDataVO temp = lineList.stream().filter(t -> t.getAlgoDescribe() != null).min(Comparator.comparing(LineIntegrityDataVO::getAlgoDescribe)).orElse(new LineIntegrityDataVO());
lineIntegrityDataVO.setAlgoDescribe(temp.getAlgoDescribe());
lineIntegrityDataVO.setId(generalDeviceDTO.getIndex());
lineIntegrityDataVO.setName(generalDeviceDTO.getName());
lineIntegrityDataVO.setLevel(0);
lineIntegrityDataVO.setIntegrityData(DataStatisticsUtil.dataLimits(temValue));
pro.add(lineIntegrityDataVO);
}
getAreaIntegrityData(mapAlarm, pro);
return pro;
} else {
return new ArrayList<>();
}
}
/**
* 处理变电站
*
* @param targetData 父集合
* @param childrenData 子集合
* @param isLine 处理策略
*/
private void dealEnterpriseChildrenData(List<LineIntegrityDataVO> targetData, List<LineIntegrityDataVO> childrenData, boolean isLine) {
// 创建一个map集合用于封装对象
Map<String, List<LineIntegrityDataVO>> groupLine;
if (isLine) {
// 通过stream流分组
groupLine = childrenData.stream().collect(Collectors.groupingBy(lineAdministrationTree -> {
// 获取父id字符串通过 逗号 分割 成一个数组
String[] pid = lineAdministrationTree.getPids().split(",");
// 判断集合索引为3的元素
return pid[LineBaseEnum.SUB_LEVEL.getCode()];
}));
} else {
groupLine = childrenData.stream().collect(Collectors.groupingBy(LineIntegrityDataVO::getPid));
}
targetData = targetData.stream().peek(lineAdministrationTree -> {
Set<String> pids = groupLine.keySet();
for (String pid : pids) {
if (lineAdministrationTree.getId().equals(pid)) {
List<LineIntegrityDataVO> lineIntegrityDataVOList = groupLine.get(pid);
//父级完整性匹配
Double temValue = lineIntegrityDataVOList.stream().filter(item -> item.getIntegrityData() != 3.14159).mapToDouble(LineIntegrityDataVO::getIntegrityData).average().orElse(3.14159);
lineAdministrationTree.setIntegrityData(DataStatisticsUtil.dataLimits(temValue));
LineIntegrityDataVO temp = lineIntegrityDataVOList.stream().filter(t -> t.getAlgoDescribe() != null).min(Comparator.comparing(LineIntegrityDataVO::getAlgoDescribe)).orElse(new LineIntegrityDataVO());
lineAdministrationTree.setAlgoDescribe(temp.getAlgoDescribe());
}
}
}).collect(Collectors.toList());
}
private List<PublicDTO> getCondition(List<String> lineList, String startTime, String endTime) { private List<PublicDTO> getCondition(List<String> lineList, String startTime, String endTime) {
List<PublicDTO> integrityList = new ArrayList<>(); List<PublicDTO> integrityList = new ArrayList<>();
@@ -273,7 +411,7 @@ public class LineIntegrityDataServiceImpl extends ServiceImpl<LineIntegrityDataM
} }
} }
if (Objects.nonNull(proItem.getAlgoDescribe())) { if (Objects.nonNull(proItem.getAlgoDescribe())) {
if (mapAlarm.containsKey(proItem.getAlgoDescribe())) if (mapAlarm.containsKey(proItem.getAlgoDescribe())) {
if (proItem.getIntegrityData() != 3.14159 && proItem.getIntegrityData() < mapAlarm.get(proItem.getAlgoDescribe())) { if (proItem.getIntegrityData() != 3.14159 && proItem.getIntegrityData() < mapAlarm.get(proItem.getAlgoDescribe())) {
proItem.setValueOver(1); proItem.setValueOver(1);
} else { } else {
@@ -282,6 +420,7 @@ public class LineIntegrityDataServiceImpl extends ServiceImpl<LineIntegrityDataM
} }
} }
} }
}
/** /**
* 处理变电站 * 处理变电站

View File

@@ -59,4 +59,14 @@ public class SteadyQualifyController extends BaseController {
} }
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/getEnterpriseSteadyQualify")
@ApiOperation("企业级稳态合格率图表")
@ApiImplicitParam(name = "steadyParam", value = "稳态列表参数", required = true)
public HttpResult<List<SteadyQualifyVO>> getEnterpriseSteadyQualify(@RequestBody @Validated DeviceInfoParam.BusinessParam steadyParam){
String methodDescribe = getMethodDescribe("getEnterpriseSteadyQualify");
List<SteadyQualifyVO> list = steadyQualifyService.getEnterpriseSteadyQualify(steadyParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
}
} }

View File

@@ -28,4 +28,12 @@ public interface SteadyQualifyService {
* @return * @return
*/ */
SteadyQualifyCensusVO getSteadyQualifyCensus(DeviceInfoParam.BusinessParam steadyCensusParam); SteadyQualifyCensusVO getSteadyQualifyCensus(DeviceInfoParam.BusinessParam steadyCensusParam);
/**
* 功能描述: 获取稳态合格率信息
* @param steadyParam
* @author cc
* @date 2022/03/20 20:34
*/
List<SteadyQualifyVO> getEnterpriseSteadyQualify(DeviceInfoParam.BusinessParam steadyParam);
} }

View File

@@ -142,6 +142,65 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService {
return steadyQualifyCensusVO; return steadyQualifyCensusVO;
} }
@Override
public List<SteadyQualifyVO> getEnterpriseSteadyQualify(DeviceInfoParam.BusinessParam steadyParam) {
List<SteadyQualifyVO> steadyQualifyList = new ArrayList<>();
//按照条件获取实际运行终端综合信息
List<GeneralDeviceDTO> deviceDataList = generalDeviceInfoClient.getPracticalRunDeviceInfo(steadyParam).getData();
//组装监测点Top层集合
for (GeneralDeviceDTO generalDeviceDTO : deviceDataList) {
List<String> lineIndexes = generalDeviceDTO.getLineIndexes();
if (CollectionUtils.isEmpty(lineIndexes)) {
continue;
}
SteadyQualifyVO steadyQualifyVO = new SteadyQualifyVO();
steadyQualifyVO.setId(generalDeviceDTO.getIndex());
steadyQualifyVO.setName(generalDeviceDTO.getName());
List<SteadyQualifyDTO> qualifiesRate = getQualifiesRate(lineIndexes, steadyParam.getSearchBeginTime(), steadyParam.getSearchEndTime());
//组装子集级数据树
List<SteadyQualifyVO> treeList = getCompanyTreeData(qualifiesRate, lineIndexes);
if (CollectionUtil.isNotEmpty(treeList)) {
List<SteadyQualifyVO> flicker = treeList.stream().filter(s -> s.getFlicker() != 3.14159).collect(Collectors.toList());
List<SteadyQualifyVO> freqOffset = treeList.stream().filter(s -> s.getFreqOffset() != 3.14159).collect(Collectors.toList());
List<SteadyQualifyVO> voltageOffset = treeList.stream().filter(s -> s.getVoltageOffset() != 3.14159).collect(Collectors.toList());
List<SteadyQualifyVO> voltageUnbalance = treeList.stream().filter(s -> s.getVoltageUnbalance() != 3.14159).collect(Collectors.toList());
List<SteadyQualifyVO> negativeCurrent = treeList.stream().filter(s -> s.getNegativeCurrent() != 3.14159).collect(Collectors.toList());
List<SteadyQualifyVO> harmonicVoltage = treeList.stream().filter(s -> s.getHarmonicVoltage() != 3.14159).collect(Collectors.toList());
List<SteadyQualifyVO> harmonicCurrent = treeList.stream().filter(s -> s.getHarmonicCurrent() != 3.14159).collect(Collectors.toList());
List<SteadyQualifyVO> interHarmonic = treeList.stream().filter(s -> s.getInterHarmonic() != 3.14159).collect(Collectors.toList());
//求各项平均值
if (!CollectionUtils.isEmpty(flicker)) {
steadyQualifyVO.setFlicker(PubUtils.dataLimits(NumberUtil.round(flicker.stream().mapToDouble(SteadyQualifyVO::getFlicker).average().orElse(100), 2).doubleValue()));
}
if (!CollectionUtils.isEmpty(freqOffset)) {
steadyQualifyVO.setFreqOffset(PubUtils.dataLimits(NumberUtil.round(freqOffset.stream().mapToDouble(SteadyQualifyVO::getFreqOffset).average().orElse(100), 2).doubleValue()));
}
if (!CollectionUtils.isEmpty(voltageOffset)) {
steadyQualifyVO.setVoltageOffset(PubUtils.dataLimits(NumberUtil.round(voltageOffset.stream().mapToDouble(SteadyQualifyVO::getVoltageOffset).average().orElse(100), 2).doubleValue()));
}
if (!CollectionUtils.isEmpty(voltageUnbalance)) {
steadyQualifyVO.setVoltageUnbalance(PubUtils.dataLimits(NumberUtil.round(voltageUnbalance.stream().mapToDouble(SteadyQualifyVO::getVoltageUnbalance).average().orElse(100), 2).doubleValue()));
}
if (!CollectionUtils.isEmpty(negativeCurrent)) {
steadyQualifyVO.setNegativeCurrent(PubUtils.dataLimits(NumberUtil.round(negativeCurrent.stream().mapToDouble(SteadyQualifyVO::getNegativeCurrent).average().orElse(100), 2).doubleValue()));
}
if (!CollectionUtils.isEmpty(harmonicVoltage)) {
steadyQualifyVO.setHarmonicVoltage(PubUtils.dataLimits(NumberUtil.round(harmonicVoltage.stream().mapToDouble(SteadyQualifyVO::getHarmonicVoltage).average().orElse(100), 2).doubleValue()));
}
if (!CollectionUtils.isEmpty(harmonicCurrent)) {
steadyQualifyVO.setHarmonicCurrent(PubUtils.dataLimits(NumberUtil.round(harmonicCurrent.stream().mapToDouble(SteadyQualifyVO::getHarmonicCurrent).average().orElse(100), 2).doubleValue()));
}
if (!CollectionUtils.isEmpty(interHarmonic)) {
steadyQualifyVO.setInterHarmonic(PubUtils.dataLimits(NumberUtil.round(interHarmonic.stream().mapToDouble(SteadyQualifyVO::getInterHarmonic).average().orElse(100), 2).doubleValue()));
}
}
steadyQualifyVO.setChildren(treeList);
steadyQualifyList.add(steadyQualifyVO);
}
return steadyQualifyList;
}
/** /**
* 获取父级每层数据 * 获取父级每层数据
*/ */
@@ -582,4 +641,39 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService {
} }
} }
/**
* 获取父级每层数据
*/
private List<SteadyQualifyVO> getCompanyTreeData(List<SteadyQualifyDTO> qualifiesRate, List<String> lineIndexes) {
//监测点集合
List<SteadyQualifyVO> monitorList = steadyQualifyMapper.getSteadyQualifyData(lineIndexes);
//母线集合
List<SteadyQualifyVO> busBarList = steadyQualifyMapper.getLineInfoByList(monitorList.stream().map(SteadyQualifyVO::getPid).distinct().collect(Collectors.toList()));
//终端集合
List<SteadyQualifyVO> deviceList = steadyQualifyMapper.getLineInfoByList(busBarList.stream().map(SteadyQualifyVO::getPid).distinct().collect(Collectors.toList()));
//变电站集合
List<SteadyQualifyVO> substationList = steadyQualifyMapper.getLineInfoByList(deviceList.stream().map(SteadyQualifyVO::getPid).distinct().collect(Collectors.toList()));
//供电公司集合
List<SteadyQualifyVO> powerCompanyList = steadyQualifyMapper.getLineInfoByList(substationList.stream().map(SteadyQualifyVO::getPid).distinct().collect(Collectors.toList()));
// List<SteadyQualifyDTO> qualifiesRate = getQualifiesRate(lineIndexes, steadyParam.getSearchBeginTime(), steadyParam.getSearchEndTime());
monitorList.forEach(steadyQualifyVO -> {
SteadyQualifyVO dataSingleMonitorMoreDay = getDataSingleMonitorMoreDay(qualifiesRate, steadyQualifyVO.getId());
steadyQualifyVO.setFlicker(PubUtils.dataLimits(dataSingleMonitorMoreDay.getFlicker()));
steadyQualifyVO.setFreqOffset(PubUtils.dataLimits(dataSingleMonitorMoreDay.getFreqOffset()));
steadyQualifyVO.setVoltageOffset(PubUtils.dataLimits(dataSingleMonitorMoreDay.getVoltageOffset()));
steadyQualifyVO.setVoltageUnbalance(PubUtils.dataLimits(dataSingleMonitorMoreDay.getVoltageUnbalance()));
steadyQualifyVO.setNegativeCurrent(PubUtils.dataLimits(dataSingleMonitorMoreDay.getNegativeCurrent()));
steadyQualifyVO.setHarmonicVoltage(PubUtils.dataLimits(dataSingleMonitorMoreDay.getHarmonicVoltage()));
steadyQualifyVO.setHarmonicCurrent(PubUtils.dataLimits(dataSingleMonitorMoreDay.getHarmonicCurrent()));
steadyQualifyVO.setInterHarmonic(PubUtils.dataLimits(dataSingleMonitorMoreDay.getInterHarmonic()));
});
setChildesList(substationList, monitorList);
setFatherDistortion(substationList);
return substationList;
}
} }