污染值列表

This commit is contained in:
wr
2025-09-09 17:02:52 +08:00
parent a34876c9c5
commit 134b5b7257
3 changed files with 54 additions and 60 deletions

View File

@@ -1,5 +1,6 @@
package com.njcn.harmonic.controller;
import cn.hutool.core.date.DateUtil;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
@@ -124,13 +125,11 @@ public class PollutionSubstationController extends BaseController {
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@ApiOperation(value ="监测点谐波污染值列表",produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
@GetMapping(value ="/downPollutionLineCalc",produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
public HttpResult<List<LinePollution>> downPollutionLineCalc(@RequestParam(value = "startTime") String startTime,
@RequestParam(value = "endTime") String endTime) {
@PostMapping(value ="/downPollutionLineCalc",produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
public HttpResult<List<LinePollution>> downPollutionLineCalc(@RequestBody StatSubstationBizBaseParam param) {
String methodDescribe = getMethodDescribe("getSubstationInfo");
StatSubstationBizBaseParam param=new StatSubstationBizBaseParam();
param.setStartTime(startTime);
param.setEndTime(endTime);
param.setStartTime(DateUtil.beginOfDay(DateUtil.parse(param.getStartTime())).toString());
param.setEndTime(DateUtil.endOfDay(DateUtil.parse(param.getEndTime())).toString());
List<LinePollution> linePollutions = pollutionSubstationService.downPollutionLineCalc(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, linePollutions, methodDescribe);
}

View File

@@ -972,25 +972,27 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
@Override
public List<LinePollution> downPollutionLineCalc(StatSubstationBizBaseParam param) {
String startDate = DateUtil.beginOfDay(DateUtil.parse(param.getStartTime())).toString();
String endDate = DateUtil.endOfDay(DateUtil.parse(param.getEndTime())).toString();
List<LinePollution> finalLinePollutionList = pollutionCalcList(startDate, endDate);
List<LinePollution> finalLinePollutionList = pollutionCalcList(param);
// 全部监测点计算完毕后根据污染值从大到小进行排序
finalLinePollutionList = finalLinePollutionList.stream()
.sorted(Comparator.comparing(LinePollution::getVHarmonicValue).reversed())
.sorted(Comparator.comparing(LinePollution::getHarmonicValue).reversed())
.collect(Collectors.toList());
return finalLinePollutionList;
}
private List<LinePollution> pollutionCalcList(String startDate,String endDate) {
private List<LinePollution> pollutionCalcList(StatSubstationBizBaseParam param) {
String startDate = param.getStartTime();
String endDate = param.getEndTime();
List<LinePollution> linePollutionList = new ArrayList<>();
List<String> lineIdList = commTerminalGeneralClient.getRunMonitorIds().getData();
GridDiagramParam eventParam = new GridDiagramParam();
List<String> lineIdList = generalDeviceInfoClient.deptGetRunLine(param.getId()).getData();
eventParam.setIds(lineIdList);
eventParam.setSearchBeginTime(startDate);
eventParam.setSearchEndTime(endDate);
eventParam.setSearchBeginTime(param.getStartTime());
eventParam.setSearchEndTime(param.getEndTime());
List<EventCount> eventCounts = detailFeignClient.getEventCount(eventParam).getData();
Map<String, EventCount> eventMap = new HashMap<>();
@@ -1011,14 +1013,11 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
List<RStatOnlinerateVO> onLineRateVOS = generalDeviceInfoClient.getOnlineRateByDevIds(onlineRateParam).getData();
Map<String, Float> onlineRateMap = onLineRateVOS.stream().collect(Collectors.toMap(RStatOnlinerateVO::getDevIndex, RStatOnlinerateVO::getOnlineRate));
List<DictData> dictDataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.POLLUTION_CALC.getCode()).getData();
Map<String, String> dictData = dictDataList.stream().collect(Collectors.toMap(DictData::getCode, DictData::getId));
String vHarmonicLimit = dictData.get(DicDataEnum.V_HARMONIC_LIMIT.getCode());
String iAllLimit = dictData.get(DicDataEnum.I_ALL_LIMIT.getCode());
List<RMpPollutionDPO> rMpPollutionDPOS = rMpPollutionDPOMapper.selectSumList(lineIdList, Arrays.asList(vHarmonicLimit, iAllLimit), startDate, endDate);
List<RMpPollutionDPO> rMpPollutionDPOS = rMpPollutionDPOMapper.selectSumList(lineIdList, param.getIds(), startDate, endDate);
Map<String, Double> calcMap = new HashMap<>();
if (CollUtil.isNotEmpty(rMpPollutionDPOS)) {
calcMap.putAll(rMpPollutionDPOS.stream().collect(Collectors.toMap(x -> x.getLineId() + "_" + x.getPollutionType(), RMpPollutionDPO::getValue)));
//谐波电压
calcMap.putAll(rMpPollutionDPOS.stream().collect(Collectors.toMap(x -> x.getLineId(), RMpPollutionDPO::getValue)));
}
if (CollUtil.isNotEmpty(lineIdList)) {
// 获取谐波电压数据&总畸变率&越限限值计算基础污染值
@@ -1027,7 +1026,7 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
LinePollution linePollution = new LinePollution();
linePollution.setLineId(lineId);
//获取监测点数据完整性
linePollution.setIntegrity(Objects.isNull(integrityMap.get(lineId)) ? 0.0 : integrityMap.get(lineId));
linePollution.setIntegrity(Objects.isNull(integrityMap.get(lineId)) ? 0.0 : integrityMap.get(lineId)>100?100.0:integrityMap.get(lineId));
//获取监测点限值
Overlimit overlimit = commTerminalGeneralClient.getOverLimitData(lineId).getData();
LineDevGetDTO lineDetailData = commTerminalGeneralClient.getMonitorDetail(lineId).getData();
@@ -1037,10 +1036,8 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
}
linePollution.setLineName(lineDetailData.getPointName());
linePollution.setInterval(lineDetailData.getInterval());
// 计算谐波电压的污染值
linePollution.setVHarmonicValue(calcMap.containsKey(lineId+"_"+vHarmonicLimit)?calcMap.get(lineId+"_"+vHarmonicLimit):0.0);
// 计算谐波电流的污染值
linePollution.setIHarmonicValue(calcMap.containsKey(lineId+"_"+iAllLimit )?calcMap.get(lineId+"_"+iAllLimit):0.0);
// 计算谐波的污染值
linePollution.setHarmonicValue(calcMap.containsKey(lineId)?calcMap.get(lineId)>100?100.0:integrityMap.get(lineId):0.0);
// 获取暂态数据
BeanUtil.copyProperties(eventMap.get(lineId), linePollution);
//获取该监测点其他元信息
@@ -1060,9 +1057,7 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
@Override
public void downPollutionUserCalc(StatSubstationBizBaseParam param) {
// 处理干扰源用户的报告
String startDate = DateUtil.beginOfDay(DateUtil.parse(param.getStartTime())).toString();
String endDate = DateUtil.endOfDay(DateUtil.parse(param.getEndTime())).toString();
List<LinePollution> loadTypeLineList = pollutionCalcList(startDate, endDate);
List<LinePollution> loadTypeLineList = pollutionCalcList(param);
/**
* 1、首先过滤重要变电站、一类变电站、跨省计量关点 todo...待优化
* 2、过滤后以监测对象分组统计数据有多个测点的需要出结果
@@ -1081,14 +1076,11 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
// objPollution.setBusinessType(linePollutions.get(0).getBusinessType());
// 求出平均污染值
double objVValue = linePollutions.stream()
.mapToDouble(o -> o.getVHarmonicValue())
.mapToDouble(o -> o.getHarmonicValue())
.sum();
objPollution.setObjVValue(PubUtils.doubleRound(2, objVValue) + "");
double objIValue = linePollutions.stream()
.mapToDouble(o -> o.getIHarmonicValue())
.sum();
objPollution.setObjIValue(PubUtils.doubleRound(2, objIValue) + "");
// 处理该监测对象下面监测点的信息
List<LoadTypeLineItemPollution> loadTypeLineItemPollutions = new ArrayList<>();
@@ -1104,15 +1096,13 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
objPollutions= objPollutions.stream()
.sorted(Comparator.comparing(ObjPollution::getObjVValue).reversed())
.collect(Collectors.toList());
ExcelUtil.exportExcel("用户谐波电压污染值" + endDate + ".xlsx", ObjPollution.class, objPollutions);
ExcelUtil.exportExcel("用户谐波电压污染值" + param.getEndTime() + ".xlsx", ObjPollution.class, objPollutions);
}
@Override
public void downPollutionSubCalc(StatSubstationBizBaseParam param) {
// 处理干扰源用户的报告
String startDate = DateUtil.beginOfDay(DateUtil.parse(param.getStartTime())).toString();
String endDate = DateUtil.endOfDay(DateUtil.parse(param.getEndTime())).toString();
List<LinePollution> linePollutionList = pollutionCalcList(startDate, endDate);
List<LinePollution> linePollutionList = pollutionCalcList(param);
// 整合变电站待导出的数据
List<GdPollution> gdPollutionList = new ArrayList<>();
// 以供电公司分组
@@ -1147,19 +1137,13 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
if (CollUtil.isNotEmpty(temp)) {
// 计算电网侧下所有监测点谐波电压平均污染值
double subVValue = temp.stream()
.mapToDouble(o -> o.getVHarmonicValue())
.mapToDouble(o -> o.getHarmonicValue())
.average()
.orElse(0.0);
// 电网侧污染值
powerFlagPollution1.setPowerVValue(PubUtils.doubleRound(2, subVValue) + "");
// 计算电网侧下所有监测点谐波电流平均污染值
double subIValue = temp.stream()
.mapToDouble(o -> o.getIHarmonicValue())
.average()
.orElse(0.0);
// 电网侧污染值
powerFlagPollution1.setPowerIValue(PubUtils.doubleRound(2, subIValue) + "");
// 设备信息
for (LinePollution linePollution : temp) {
@@ -1185,19 +1169,13 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
if (CollUtil.isNotEmpty(temp1)) {
// 计算电网侧下所有监测点谐波电压平均污染值
double subVValue = temp1.stream()
.mapToDouble(o -> o.getVHarmonicValue())
.mapToDouble(o -> o.getHarmonicValue())
.average()
.orElse(0.0);
// 电网侧污染值
powerFlagPollution2.setPowerVValue(PubUtils.doubleRound(2, subVValue) + "");
// 计算电网侧下所有监测点谐波电流平均污染值
double subIValue = temp1.stream()
.mapToDouble(o -> o.getIHarmonicValue())
.average()
.orElse(0.0);
// 电网侧污染值
powerFlagPollution2.setPowerIValue(PubUtils.doubleRound(2, subIValue) + "");
for (LinePollution linePollution : temp1) {
LineItemPollution lineItemPollution = new LineItemPollution();
BeanUtil.copyProperties(linePollution, lineItemPollution, true);
@@ -1236,7 +1214,7 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
gdPollution.setSubstationPollutionList(substationPollutions);
gdPollutionList.add(gdPollution);
}
ExcelUtil.exportExcel("变电站谐波电压污染值" + endDate + ".xlsx", GdPollution.class, gdPollutionList);
ExcelUtil.exportExcel("变电站谐波电压污染值" + param.getEndTime() + ".xlsx", GdPollution.class, gdPollutionList);
}