河北超高压算法-基准水平添加均值和标准差数据
This commit is contained in:
@@ -26,7 +26,7 @@
|
||||
select
|
||||
`time`,
|
||||
line_id,
|
||||
max(rms) rms
|
||||
max(rms_lvr) rms
|
||||
from
|
||||
r_stat_data_v_d
|
||||
where
|
||||
|
||||
@@ -9,10 +9,13 @@ import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetBase;
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetBusBarDTO;
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
|
||||
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
|
||||
import com.njcn.device.biz.pojo.param.DeptGetLineParam;
|
||||
import com.njcn.device.pms.pojo.po.GeneratrixWire;
|
||||
import com.njcn.device.pms.pojo.po.Monitor;
|
||||
import com.njcn.device.pms.pojo.po.PmsMidLedger;
|
||||
import com.njcn.harmonic.pojo.dto.LineDataDto;
|
||||
import com.njcn.harmonic.pojo.po.dim.RDimVoltageD;
|
||||
import com.njcn.harmonic.pojo.po.upload.RUploadEvaluationDataD;
|
||||
import com.njcn.prepare.harmonic.enums.UploadEnum;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.dim.GeneratrixWireMapper;
|
||||
@@ -101,46 +104,60 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl<RUploadEva
|
||||
this.judgeLevel(item.getDeptLevel(),rUploadEvaluationDataD,item.getUnitId(),item.getUnitName(),deptList,deptMap);
|
||||
|
||||
BusBarDto busBarDto = allDept.stream().filter(o->Objects.equals(o.getOrgId(),item.getUnitId())).findFirst().orElse(null);
|
||||
//fixme 这边均值和标准差算法较为复杂,同时国网不要求上送,暂不计算
|
||||
/*** 计算无电压等级的数据*/
|
||||
RUploadEvaluationDataD dto = this.getLineNum(busBarDto,"0");
|
||||
//电压
|
||||
RUploadEvaluationDataD dto1 = this.channelData(rUploadEvaluationDataD,defaultValue,UploadEnum.INDEX_TYPE_01.getCode(),0,"0",dto);
|
||||
RUploadEvaluationDataD dto1 = this.channelData(rUploadEvaluationDataD,defaultValue,defaultValue,UploadEnum.INDEX_TYPE_01.getCode(),0,"0",dto);
|
||||
result.add(dto1);
|
||||
//长时间闪变
|
||||
RUploadEvaluationDataD dto2 = this.channelData(rUploadEvaluationDataD,defaultValue,UploadEnum.INDEX_TYPE_02.getCode(),0,"0",dto);
|
||||
RUploadEvaluationDataD dto2 = this.channelData(rUploadEvaluationDataD,defaultValue,defaultValue,UploadEnum.INDEX_TYPE_02.getCode(),0,"0",dto);
|
||||
result.add(dto2);
|
||||
//三相电压不平衡
|
||||
RUploadEvaluationDataD dto3 = this.channelData(rUploadEvaluationDataD,defaultValue,UploadEnum.INDEX_TYPE_03.getCode(),0,"0",dto);
|
||||
RUploadEvaluationDataD dto3 = this.channelData(rUploadEvaluationDataD,defaultValue,defaultValue,UploadEnum.INDEX_TYPE_03.getCode(),0,"0",dto);
|
||||
result.add(dto3);
|
||||
//电压总谐波畸变率
|
||||
RUploadEvaluationDataD dto4 = this.channelData(rUploadEvaluationDataD,defaultValue,UploadEnum.INDEX_TYPE_04.getCode(),0,"0",dto);
|
||||
RUploadEvaluationDataD dto4 = this.channelData(rUploadEvaluationDataD,defaultValue,defaultValue,UploadEnum.INDEX_TYPE_04.getCode(),0,"0",dto);
|
||||
result.add(dto4);
|
||||
//各次谐波电压
|
||||
this.channelHarmonicData(rUploadEvaluationDataD,result,null,UploadEnum.INDEX_TYPE_05.getCode(),"0",dto);
|
||||
this.channelHarmonicData(rUploadEvaluationDataD,result,null,UploadEnum.INDEX_TYPE_05.getCode(),"0",dto,null);
|
||||
//负序电流
|
||||
RUploadEvaluationDataD dto6 = this.channelData(rUploadEvaluationDataD,defaultValue,UploadEnum.INDEX_TYPE_06.getCode(),0,"0",dto);
|
||||
RUploadEvaluationDataD dto6 = this.channelData(rUploadEvaluationDataD,defaultValue,defaultValue,UploadEnum.INDEX_TYPE_06.getCode(),0,"0",dto);
|
||||
result.add(dto6);
|
||||
/*** 计算分电压等级的数据*/
|
||||
if (CollUtil.isNotEmpty(busBarDto.getVoltageChild())){
|
||||
busBarDto.getVoltageChild().forEach(item2->{
|
||||
RDimVoltageD rDimVoltageD = this.getDimVoltageData(item.getUnitId(),calculatedParam.getDataDate(),item2.getVoltageLevel());
|
||||
|
||||
RUploadEvaluationDataD dto0 = this.getLineNum(busBarDto,item2.getVoltageLevel());
|
||||
//电压
|
||||
RUploadEvaluationDataD dto11 = this.channelData(rUploadEvaluationDataD,defaultValue,UploadEnum.INDEX_TYPE_01.getCode(),0,item2.getVoltageLevel(),dto0);
|
||||
double sd1 = this.getDimVoltageDataSd(item2.getVoltageLevel(),Objects.isNull(rDimVoltageD)?defaultValue:rDimVoltageD.getV(),calculatedParam.getDataDate(),item.getLineBaseList(),UploadEnum.INDEX_TYPE_01.getCode(),null);
|
||||
RUploadEvaluationDataD dto11 = this.channelData(rUploadEvaluationDataD,Objects.isNull(rDimVoltageD)?defaultValue:rDimVoltageD.getV(),sd1,UploadEnum.INDEX_TYPE_01.getCode(),0,item2.getVoltageLevel(),dto0);
|
||||
result.add(dto11);
|
||||
//长时间闪变
|
||||
RUploadEvaluationDataD dto22 = this.channelData(rUploadEvaluationDataD,defaultValue,UploadEnum.INDEX_TYPE_02.getCode(),0,item2.getVoltageLevel(),dto0);
|
||||
double sd2 = this.getDimVoltageDataSd(item2.getVoltageLevel(),Objects.isNull(rDimVoltageD)?defaultValue:rDimVoltageD.getPst(),calculatedParam.getDataDate(),item.getLineBaseList(),UploadEnum.INDEX_TYPE_02.getCode(),null);
|
||||
RUploadEvaluationDataD dto22 = this.channelData(rUploadEvaluationDataD,Objects.isNull(rDimVoltageD)?defaultValue:rDimVoltageD.getPst(),sd2,UploadEnum.INDEX_TYPE_02.getCode(),0,item2.getVoltageLevel(),dto0);
|
||||
result.add(dto22);
|
||||
//三相电压不平衡
|
||||
RUploadEvaluationDataD dto33 = this.channelData(rUploadEvaluationDataD,defaultValue,UploadEnum.INDEX_TYPE_03.getCode(),0,item2.getVoltageLevel(),dto0);
|
||||
double sd3 = this.getDimVoltageDataSd(item2.getVoltageLevel(),Objects.isNull(rDimVoltageD)?defaultValue:rDimVoltageD.getVUnbalance(),calculatedParam.getDataDate(),item.getLineBaseList(),UploadEnum.INDEX_TYPE_03.getCode(),null);
|
||||
RUploadEvaluationDataD dto33 = this.channelData(rUploadEvaluationDataD,Objects.isNull(rDimVoltageD)?defaultValue:rDimVoltageD.getVUnbalance(),sd3,UploadEnum.INDEX_TYPE_03.getCode(),0,item2.getVoltageLevel(),dto0);
|
||||
result.add(dto33);
|
||||
//电压总谐波畸变率
|
||||
RUploadEvaluationDataD dto44 = this.channelData(rUploadEvaluationDataD,defaultValue,UploadEnum.INDEX_TYPE_04.getCode(),0,item2.getVoltageLevel(),dto0);
|
||||
double sd4 = this.getDimVoltageDataSd(item2.getVoltageLevel(),Objects.isNull(rDimVoltageD)?defaultValue:rDimVoltageD.getVThd(),calculatedParam.getDataDate(),item.getLineBaseList(),UploadEnum.INDEX_TYPE_04.getCode(),null);
|
||||
RUploadEvaluationDataD dto44 = this.channelData(rUploadEvaluationDataD,Objects.isNull(rDimVoltageD)?defaultValue:rDimVoltageD.getVThd(),sd4,UploadEnum.INDEX_TYPE_04.getCode(),0,item2.getVoltageLevel(),dto0);
|
||||
result.add(dto44);
|
||||
//各次谐波电压
|
||||
this.channelHarmonicData(rUploadEvaluationDataD,result,null,UploadEnum.INDEX_TYPE_05.getCode(),item2.getVoltageLevel(),dto0);
|
||||
List<Double> valueList = new ArrayList<>();
|
||||
if (!Objects.isNull(rDimVoltageD)){
|
||||
valueList = Arrays.asList(rDimVoltageD.getV2(),rDimVoltageD.getV3(),rDimVoltageD.getV4(),rDimVoltageD.getV5(),rDimVoltageD.getV6(),rDimVoltageD.getV7(),rDimVoltageD.getV8(),rDimVoltageD.getV9(),rDimVoltageD.getV10()
|
||||
,rDimVoltageD.getV11(),rDimVoltageD.getV12(),rDimVoltageD.getV13(),rDimVoltageD.getV14(),rDimVoltageD.getV15(),rDimVoltageD.getV16(),rDimVoltageD.getV17(),rDimVoltageD.getV18(),rDimVoltageD.getV19(),rDimVoltageD.getV20()
|
||||
,rDimVoltageD.getV21(),rDimVoltageD.getV22(),rDimVoltageD.getV23(),rDimVoltageD.getV24(),rDimVoltageD.getV25(),rDimVoltageD.getV26(),rDimVoltageD.getV27(),rDimVoltageD.getV28(),rDimVoltageD.getV29(),rDimVoltageD.getV30()
|
||||
,rDimVoltageD.getV31(),rDimVoltageD.getV32(),rDimVoltageD.getV33(),rDimVoltageD.getV34(),rDimVoltageD.getV35(),rDimVoltageD.getV36(),rDimVoltageD.getV37(),rDimVoltageD.getV38(),rDimVoltageD.getV39(),rDimVoltageD.getV40()
|
||||
,rDimVoltageD.getV41(),rDimVoltageD.getV42(),rDimVoltageD.getV43(),rDimVoltageD.getV44(),rDimVoltageD.getV45(),rDimVoltageD.getV46(),rDimVoltageD.getV47(),rDimVoltageD.getV48(),rDimVoltageD.getV49(),rDimVoltageD.getV50());
|
||||
}
|
||||
this.channelHarmonicData(rUploadEvaluationDataD,result,valueList,UploadEnum.INDEX_TYPE_05.getCode(),item2.getVoltageLevel(),dto0,item.getLineBaseList());
|
||||
//负序电流
|
||||
RUploadEvaluationDataD dto66 = this.channelData(rUploadEvaluationDataD,defaultValue,UploadEnum.INDEX_TYPE_06.getCode(),0,item2.getVoltageLevel(),dto0);
|
||||
double sd6 = this.getDimVoltageDataSd(item2.getVoltageLevel(),Objects.isNull(rDimVoltageD)?defaultValue:rDimVoltageD.getINeg(),calculatedParam.getDataDate(),item.getLineBaseList(),UploadEnum.INDEX_TYPE_06.getCode(),null);
|
||||
RUploadEvaluationDataD dto66 = this.channelData(rUploadEvaluationDataD,Objects.isNull(rDimVoltageD)?defaultValue:rDimVoltageD.getINeg(),sd6,UploadEnum.INDEX_TYPE_06.getCode(),0,item2.getVoltageLevel(),dto0);
|
||||
result.add(dto66);
|
||||
});
|
||||
}
|
||||
@@ -334,14 +351,14 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl<RUploadEva
|
||||
/**
|
||||
* 单个指标数据处理
|
||||
*/
|
||||
public RUploadEvaluationDataD channelData(RUploadEvaluationDataD rUploadEvaluationDataD,Double value, String indexType, Integer harmonicNum, String voltage,RUploadEvaluationDataD rUploadEvaluationDataD2) {
|
||||
public RUploadEvaluationDataD channelData(RUploadEvaluationDataD rUploadEvaluationDataD,Double value, Double sd, String indexType, Integer harmonicNum, String voltage,RUploadEvaluationDataD rUploadEvaluationDataD2) {
|
||||
RUploadEvaluationDataD dto = new RUploadEvaluationDataD();
|
||||
BeanUtils.copyProperties(rUploadEvaluationDataD,dto);
|
||||
dto.setId(IdUtil.simpleUUID());
|
||||
dto.setAvgValue(value);
|
||||
dto.setIndexType(indexType);
|
||||
dto.setHarmonicNum(harmonicNum);
|
||||
dto.setStandardDeviation(value==3.1415926?3.1415926:0d);
|
||||
dto.setStandardDeviation(sd);
|
||||
dto.setVoltageLevel(voltage);
|
||||
dto.setMonitorBusNum(rUploadEvaluationDataD2.getMonitorBusNum());
|
||||
dto.setOnlineBusNum(rUploadEvaluationDataD2.getOnlineBusNum());
|
||||
@@ -352,7 +369,7 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl<RUploadEva
|
||||
/**
|
||||
* 各次谐波电压数据处理
|
||||
*/
|
||||
public void channelHarmonicData(RUploadEvaluationDataD rUploadEvaluationDataD,List<RUploadEvaluationDataD> result,List<Double> valueList, String indexType, String voltage,RUploadEvaluationDataD rUploadEvaluationDataD2) {
|
||||
public void channelHarmonicData(RUploadEvaluationDataD rUploadEvaluationDataD,List<RUploadEvaluationDataD> result,List<Double> valueList, String indexType, String voltage,RUploadEvaluationDataD rUploadEvaluationDataD2,List<LineDevGetDTO> line) {
|
||||
final Double defaultValue = 3.1415926;
|
||||
int length;
|
||||
if (!Objects.isNull(valueList)){
|
||||
@@ -367,7 +384,12 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl<RUploadEva
|
||||
dto.setAvgValue(CollUtil.isNotEmpty(valueList)?valueList.get(i):defaultValue);
|
||||
dto.setIndexType(indexType);
|
||||
dto.setHarmonicNum(i+2);
|
||||
dto.setStandardDeviation(CollUtil.isNotEmpty(valueList)?Objects.equals(valueList.get(i),defaultValue)?defaultValue:0d:defaultValue);
|
||||
if (Objects.equals(voltage, "0")){
|
||||
dto.setStandardDeviation(defaultValue);
|
||||
} else {
|
||||
double sd = this.getDimVoltageDataSd(voltage,dto.getAvgValue(),dto.getStatisticalDate(),line,indexType,dto.getHarmonicNum());
|
||||
dto.setStandardDeviation(sd);
|
||||
}
|
||||
dto.setVoltageLevel(voltage);
|
||||
dto.setMonitorBusNum(rUploadEvaluationDataD2.getMonitorBusNum());
|
||||
dto.setOnlineBusNum(rUploadEvaluationDataD2.getOnlineBusNum());
|
||||
@@ -375,4 +397,89 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl<RUploadEva
|
||||
result.add(dto);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取单位母线的均值数据
|
||||
*/
|
||||
public RDimVoltageD getDimVoltageData(String orgId, String time, String voltage) {
|
||||
LambdaQueryWrapper<RDimVoltageD> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
lambdaQueryWrapper.eq(RDimVoltageD::getOrgId, orgId)
|
||||
.eq(RDimVoltageD::getStatisDate,time)
|
||||
.eq(RDimVoltageD::getVoltageType,voltage);
|
||||
return rDimVoltageDMapper.selectOne(lambdaQueryWrapper);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取不同电压等级母线下的监测点数据,用于计算标准差
|
||||
*/
|
||||
public Double getDimVoltageDataSd(String voltage, Double avg, String time, List<LineDevGetDTO> line, String type, Integer times) {
|
||||
double standardDeviation = 3.1415926;
|
||||
if (Objects.equals(avg,standardDeviation)){
|
||||
return standardDeviation;
|
||||
}
|
||||
//获取监测点数据
|
||||
if (CollUtil.isNotEmpty(line)){
|
||||
Map<String,List<LineDevGetDTO>> map = line.stream().collect(Collectors.groupingBy(LineDevGetDTO::getVoltageLevel));
|
||||
if (!Objects.isNull(map.get(voltage))){
|
||||
Set<String> lineSet = map.get(voltage).stream().map(LineDevGetDTO::getPointId).collect(Collectors.toSet());
|
||||
List<LineDataDto> dataList = rDimVoltageDMapper.getLineData(time,time,lineSet);
|
||||
//根据平均值计算每个指标的标准差
|
||||
if (CollUtil.isNotEmpty(dataList)){
|
||||
double total = this.getDataByType(type,avg,dataList,times);
|
||||
//计算标准差
|
||||
standardDeviation = Math.sqrt(total/dataList.size());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
return standardDeviation;
|
||||
}
|
||||
|
||||
/**
|
||||
* 不同指标标准差算法
|
||||
*/
|
||||
public Double getDataByType(String type, Double avg, List<LineDataDto> dataList, Integer times) {
|
||||
double total = 0.0;
|
||||
switch (type) {
|
||||
case "01":
|
||||
for (LineDataDto lineDataDto : dataList) {
|
||||
total += (lineDataDto.getRms() - avg) * (lineDataDto.getRms() - avg);
|
||||
}
|
||||
return total;
|
||||
case "02":
|
||||
for (LineDataDto lineDataDto : dataList) {
|
||||
total += (lineDataDto.getPst() - avg) * (lineDataDto.getPst() - avg);
|
||||
}
|
||||
return total;
|
||||
case "03":
|
||||
for (LineDataDto lineDataDto : dataList) {
|
||||
total += (lineDataDto.getVUnbalance() - avg) * (lineDataDto.getVUnbalance() - avg);
|
||||
}
|
||||
return total;
|
||||
case "04":
|
||||
for (LineDataDto lineDataDto : dataList) {
|
||||
total += (lineDataDto.getVThd() - avg) * (lineDataDto.getVThd() - avg);
|
||||
}
|
||||
return total;
|
||||
case "05":
|
||||
for (LineDataDto lineDataDto : dataList) {
|
||||
try {
|
||||
double value = (double) lineDataDto.getClass().getMethod("getV" + times).invoke(lineDataDto);
|
||||
total += (value - avg) * (value - avg);
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage());
|
||||
}
|
||||
}
|
||||
return total;
|
||||
case "06":
|
||||
for (LineDataDto lineDataDto : dataList) {
|
||||
total += (lineDataDto.getINeg() - avg) * (lineDataDto.getINeg() - avg);
|
||||
}
|
||||
return total;
|
||||
default:
|
||||
return 3.1415926;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user