企业级概览页面接口
This commit is contained in:
@@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ public class LineIntegrityDataServiceImpl extends ServiceImpl<LineIntegrityDataM
|
|||||||
List<LineIntegrityDataVO> proList = lineIntegrityDataMapper.getProvinceList(gdIds);
|
List<LineIntegrityDataVO> proList = lineIntegrityDataMapper.getProvinceList(gdIds);
|
||||||
|
|
||||||
// 查询监测点数据完整性
|
// 查询监测点数据完整性
|
||||||
List<LineDataIntegrity> percentageOfCompleteDatas = rStatIntegrityDMapper.getLineIntegrityRate(generalDeviceDTO.getLineIndexes(),lineIntegrityDataParam.getSearchBeginTime(), lineIntegrityDataParam.getSearchEndTime());
|
List<LineDataIntegrity> percentageOfCompleteDatas = rStatIntegrityDMapper.getLineIntegrityRate(generalDeviceDTO.getLineIndexes(), lineIntegrityDataParam.getSearchBeginTime(), lineIntegrityDataParam.getSearchEndTime());
|
||||||
|
|
||||||
for (LineIntegrityDataVO lineDataIntegrity : lineList) {
|
for (LineIntegrityDataVO lineDataIntegrity : lineList) {
|
||||||
boolean flag = false;
|
boolean flag = false;
|
||||||
@@ -169,7 +169,7 @@ public class LineIntegrityDataServiceImpl extends ServiceImpl<LineIntegrityDataM
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 数据封装
|
// 数据封装
|
||||||
Double temValue = lineList.stream().filter(item->item.getIntegrityData()!=3.14159).mapToDouble(LineIntegrityDataVO::getIntegrityData).average().orElse(3.14159);
|
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 temp = lineList.stream().filter(t -> t.getAlgoDescribe() != null).min(Comparator.comparing(LineIntegrityDataVO::getAlgoDescribe)).orElse(new LineIntegrityDataVO());
|
||||||
lineIntegrityDataVO.setAlgoDescribe(temp.getAlgoDescribe());
|
lineIntegrityDataVO.setAlgoDescribe(temp.getAlgoDescribe());
|
||||||
lineIntegrityDataVO.setId(generalDeviceDTO.getIndex());
|
lineIntegrityDataVO.setId(generalDeviceDTO.getIndex());
|
||||||
@@ -180,7 +180,7 @@ public class LineIntegrityDataServiceImpl extends ServiceImpl<LineIntegrityDataM
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
getAreaIntegrityData(mapAlarm,pro);
|
getAreaIntegrityData(mapAlarm, pro);
|
||||||
return pro;
|
return pro;
|
||||||
} else {
|
} else {
|
||||||
return new ArrayList<>();
|
return new ArrayList<>();
|
||||||
@@ -199,14 +199,14 @@ public class LineIntegrityDataServiceImpl extends ServiceImpl<LineIntegrityDataM
|
|||||||
if (CollectionUtils.isEmpty(lineIndexes)) {
|
if (CollectionUtils.isEmpty(lineIndexes)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
outParam.setType(generalDeviceDTO.getName()+"\n("+generalDeviceDTO.getLineIndexes().size()+")");
|
outParam.setType(generalDeviceDTO.getName() + "\n(" + generalDeviceDTO.getLineIndexes().size() + ")");
|
||||||
//根据监测点查询数据完整性
|
//根据监测点查询数据完整性
|
||||||
List<PublicDTO> integrityData = getCondition(lineIndexes, integrityIconParam.getSearchBeginTime(), integrityIconParam.getSearchEndTime());
|
List<PublicDTO> integrityData = getCondition(lineIndexes, integrityIconParam.getSearchBeginTime(), integrityIconParam.getSearchEndTime());
|
||||||
outParam.setSingle(NumberUtil.round(integrityData.stream().mapToDouble(PublicDTO::getData).average().orElse(3.14159),2).doubleValue());
|
outParam.setSingle(NumberUtil.round(integrityData.stream().mapToDouble(PublicDTO::getData).average().orElse(3.14159), 2).doubleValue());
|
||||||
//如果存在需要比较的时间,再获取对应数据
|
//如果存在需要比较的时间,再获取对应数据
|
||||||
if (StrUtil.isNotBlank(integrityIconParam.getPeriodBeginTime()) && StrUtil.isNotBlank(integrityIconParam.getPeriodEndTime())) {
|
if (StrUtil.isNotBlank(integrityIconParam.getPeriodBeginTime()) && StrUtil.isNotBlank(integrityIconParam.getPeriodEndTime())) {
|
||||||
List<PublicDTO> compareData = getCondition(lineIndexes, integrityIconParam.getPeriodBeginTime(), integrityIconParam.getPeriodEndTime());
|
List<PublicDTO> compareData = getCondition(lineIndexes, integrityIconParam.getPeriodBeginTime(), integrityIconParam.getPeriodEndTime());
|
||||||
outParam.setRatio(NumberUtil.round(compareData.stream().mapToDouble(PublicDTO::getData).average().orElse(3.14159),2).doubleValue());
|
outParam.setRatio(NumberUtil.round(compareData.stream().mapToDouble(PublicDTO::getData).average().orElse(3.14159), 2).doubleValue());
|
||||||
}
|
}
|
||||||
out.add(outParam);
|
out.add(outParam);
|
||||||
}
|
}
|
||||||
@@ -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<>();
|
||||||
@@ -242,7 +380,7 @@ public class LineIntegrityDataServiceImpl extends ServiceImpl<LineIntegrityDataM
|
|||||||
return integrityList;
|
return integrityList;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void getAreaIntegrityData(Map<Integer, Integer> mapAlarm,List<LineIntegrityDataVO> proList) {
|
public void getAreaIntegrityData(Map<Integer, Integer> mapAlarm, List<LineIntegrityDataVO> proList) {
|
||||||
for (LineIntegrityDataVO proItem : proList) {
|
for (LineIntegrityDataVO proItem : proList) {
|
||||||
List<LineIntegrityDataVO> gds = proItem.getChildren();
|
List<LineIntegrityDataVO> gds = proItem.getChildren();
|
||||||
if (CollectionUtil.isNotEmpty(gds)) {
|
if (CollectionUtil.isNotEmpty(gds)) {
|
||||||
@@ -273,12 +411,13 @@ 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 {
|
||||||
proItem.setValueOver(0);
|
proItem.setValueOver(0);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -311,7 +450,7 @@ public class LineIntegrityDataServiceImpl extends ServiceImpl<LineIntegrityDataM
|
|||||||
List<LineIntegrityDataVO> lineIntegrityDataVOList = groupLine.get(pid);
|
List<LineIntegrityDataVO> lineIntegrityDataVOList = groupLine.get(pid);
|
||||||
lineAdministrationTree.setChildren(lineIntegrityDataVOList);
|
lineAdministrationTree.setChildren(lineIntegrityDataVOList);
|
||||||
//父级完整性匹配
|
//父级完整性匹配
|
||||||
Double temValue = lineIntegrityDataVOList.stream().filter(item->item.getIntegrityData() != 3.14159).mapToDouble(LineIntegrityDataVO::getIntegrityData).average().orElse(3.14159);
|
Double temValue = lineIntegrityDataVOList.stream().filter(item -> item.getIntegrityData() != 3.14159).mapToDouble(LineIntegrityDataVO::getIntegrityData).average().orElse(3.14159);
|
||||||
lineAdministrationTree.setIntegrityData(DataStatisticsUtil.dataLimits(temValue));
|
lineAdministrationTree.setIntegrityData(DataStatisticsUtil.dataLimits(temValue));
|
||||||
LineIntegrityDataVO temp = lineIntegrityDataVOList.stream().filter(t -> t.getAlgoDescribe() != null).min(Comparator.comparing(LineIntegrityDataVO::getAlgoDescribe)).orElse(new LineIntegrityDataVO());
|
LineIntegrityDataVO temp = lineIntegrityDataVOList.stream().filter(t -> t.getAlgoDescribe() != null).min(Comparator.comparing(LineIntegrityDataVO::getAlgoDescribe)).orElse(new LineIntegrityDataVO());
|
||||||
lineAdministrationTree.setAlgoDescribe(temp.getAlgoDescribe());
|
lineAdministrationTree.setAlgoDescribe(temp.getAlgoDescribe());
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user