From a739eed03961151b3d2eec24697ff58041a1b554 Mon Sep 17 00:00:00 2001 From: xuyang <748613696@qq.com> Date: Wed, 28 Feb 2024 09:43:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B2=B3=E5=8C=97=E8=B6=85=E9=AB=98=E5=8E=8B?= =?UTF-8?q?=E7=AE=97=E6=B3=95-=E5=9F=BA=E5=87=86=E6=B0=B4=E5=B9=B3?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=9D=87=E5=80=BC=E5=92=8C=E6=A0=87=E5=87=86?= =?UTF-8?q?=E5=B7=AE=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mysql/dim/mapping/RDimVoltageDMapper.xml | 2 +- .../RUploadEvaluationDataDServiceImpl.java | 141 +++++++++++++++--- 2 files changed, 125 insertions(+), 18 deletions(-) diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/mapping/RDimVoltageDMapper.xml b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/mapping/RDimVoltageDMapper.xml index 7c5966bfb..4a1ea0e58 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/mapping/RDimVoltageDMapper.xml +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/mapping/RDimVoltageDMapper.xml @@ -26,7 +26,7 @@ select `time`, line_id, - max(rms) rms + max(rms_lvr) rms from r_stat_data_v_d where diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadEvaluationDataDServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadEvaluationDataDServiceImpl.java index 3ce551de7..8c310c36f 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadEvaluationDataDServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadEvaluationDataDServiceImpl.java @@ -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 MppServiceImplObjects.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 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 result,List valueList, String indexType, String voltage,RUploadEvaluationDataD rUploadEvaluationDataD2) { + public void channelHarmonicData(RUploadEvaluationDataD rUploadEvaluationDataD,List result,List valueList, String indexType, String voltage,RUploadEvaluationDataD rUploadEvaluationDataD2,List line) { final Double defaultValue = 3.1415926; int length; if (!Objects.isNull(valueList)){ @@ -367,7 +384,12 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl 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 line, String type, Integer times) { + double standardDeviation = 3.1415926; + if (Objects.equals(avg,standardDeviation)){ + return standardDeviation; + } + //获取监测点数据 + if (CollUtil.isNotEmpty(line)){ + Map> map = line.stream().collect(Collectors.groupingBy(LineDevGetDTO::getVoltageLevel)); + if (!Objects.isNull(map.get(voltage))){ + Set lineSet = map.get(voltage).stream().map(LineDevGetDTO::getPointId).collect(Collectors.toSet()); + List 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 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; + } + } + + } \ No newline at end of file