1.终端评价详情日表算法-占比修改

2.发射特性和影响特性算法修改,只统计四类监测点光伏电站、电气化铁路、风电场和冶炼负荷
This commit is contained in:
wr
2024-03-08 15:59:25 +08:00
parent 4c752edc19
commit f8766060a6
8 changed files with 109 additions and 29 deletions

View File

@@ -1,5 +1,6 @@
package com.njcn.harmonic.pojo.vo;
import cn.hutool.core.util.NumberUtil;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -61,4 +62,44 @@ public class RStatLoadTypeVO {
@ApiModelProperty(value = "累计闪变超标占比")
private Float flickerAccrued;
public void setVAverage(Float vAverage) {
this.vAverage = NumberUtil.round(vAverage*100,2).floatValue();
}
public void setVAccrued(Float vAccrued) {
this.vAccrued = NumberUtil.round(vAccrued*100,2).floatValue();
}
public void setIAverage(Float iAverage) {
this.iAverage = NumberUtil.round(iAverage*100,2).floatValue();
}
public void setIAccrued(Float iAccrued) {
this.iAccrued = NumberUtil.round(iAccrued*100,2).floatValue();
}
public void setUnbalanceAverage(Float unbalanceAverage) {
this.unbalanceAverage = NumberUtil.round(unbalanceAverage*100,2).floatValue();
}
public void setUnbalanceAccrued(Float unbalanceAccrued) {
this.unbalanceAccrued = NumberUtil.round(unbalanceAccrued*100,2).floatValue();
}
public void setINegAverage(Float iNegAverage) {
this.iNegAverage = NumberUtil.round(iNegAverage*100,2).floatValue();
}
public void setINegAccrued(Float iNegAccrued) {
this.iNegAccrued = NumberUtil.round(iNegAccrued*100,2).floatValue();
}
public void setFlickerAverage(Float flickerAverage) {
this.flickerAverage = NumberUtil.round(flickerAverage*100,2).floatValue();
}
public void setFlickerAccrued(Float flickerAccrued) {
this.flickerAccrued = NumberUtil.round(flickerAccrued*100,2).floatValue();
}
}

View File

@@ -24,15 +24,15 @@
org_no,
load_type,
v_average,
(case when effective_measurement = 0 then 0 else ROUND( v_count / effective_measurement, 2 ) end) as vAccrued,
IFNULL( v_count / effective_measurement, 0 ) AS vAccrued,
i_average,
(case when effective_measurement = 0 then 0 else ROUND( i_count / effective_measurement, 2 ) end) as iAccrued,
IFNULL( i_count / effective_measurement, 0 ) AS iAccrued,
unbalance_average,
(case when effective_measurement = 0 then 0 else ROUND( unbalance_count / effective_measurement, 2 ) end) as unbalanceAccrued,
IFNULL( unbalance_count / effective_measurement, 0 ) AS unbalanceAccrued,
i_neg_average,
(case when effective_measurement = 0 then 0 else ROUND( i_neg_count / effective_measurement, 2 ) end) as iNegAccrued,
IFNULL( i_neg_count / effective_measurement, 0 ) AS iNegAccrued,
flicker_average,
(case when effective_measurement = 0 then 0 else ROUND( flicker_count / effective_measurement, 2 ) end) as flickerAccrued
IFNULL( flicker_count / effective_measurement, 0 ) AS flickerAccrued
from
r_stat_load_type_m
<where>

View File

@@ -24,15 +24,15 @@
org_no,
load_type,
v_average,
ROUND( v_count / effective_measurement, 2 ) AS vAccrued,
IFNULL( v_count / effective_measurement, 0 ) AS vAccrued,
i_average,
ROUND( i_count / effective_measurement, 2 ) AS iAccrued,
IFNULL( i_count / effective_measurement, 0 ) AS iAccrued,
unbalance_average,
ROUND( unbalance_count / effective_measurement, 2 ) AS unbalanceAccrued,
IFNULL( unbalance_count / effective_measurement, 0 ) AS unbalanceAccrued,
i_neg_average,
ROUND( i_neg_count / effective_measurement, 2 ) AS iNegAccrued,
IFNULL( i_neg_count / effective_measurement, 0 ) AS iNegAccrued,
flicker_average,
ROUND( flicker_count / effective_measurement, 2 ) AS flickerAccrued
IFNULL( flicker_count / effective_measurement, 0 ) AS flickerAccrued
from
r_stat_load_type_q
<where>

View File

@@ -24,15 +24,15 @@
org_no,
load_type,
v_average,
ROUND( v_count / effective_measurement, 2 ) AS vAccrued,
IFNULL( v_count / effective_measurement, 0 ) AS vAccrued,
i_average,
ROUND( i_count / effective_measurement, 2 ) AS iAccrued,
IFNULL( i_count / effective_measurement, 0 ) AS iAccrued,
unbalance_average,
ROUND( unbalance_count / effective_measurement, 2 ) AS unbalanceAccrued,
IFNULL( unbalance_count / effective_measurement, 0 ) AS unbalanceAccrued,
i_neg_average,
ROUND( i_neg_count / effective_measurement, 2 ) AS iNegAccrued,
IFNULL( i_neg_count / effective_measurement, 0 ) AS iNegAccrued,
flicker_average,
ROUND( flicker_count / effective_measurement, 2 ) AS flickerAccrued
IFNULL( flicker_count / effective_measurement, 0 ) AS flickerAccrued
from
r_stat_load_type_y
<where>

View File

@@ -155,11 +155,11 @@ public class RMpDevEvaluateDetailPOServiceImpl extends MppServiceImpl<RMpDevEval
List<ROperatingMonitorDPO> ls = map1.get(k);
double d1 = ls.stream().mapToDouble(po -> po.getDataIntegrityRate().doubleValue()).average().getAsDouble();
double d2 = ls.stream().mapToDouble(po -> po.getIndexIntegrityRate().doubleValue()).average().getAsDouble();
rMpDevEvaluateDetailPO.setDevDataRate(d1);
rMpDevEvaluateDetailPO.setDevTargetRate(d2);
rMpDevEvaluateDetailPO.setDevDataRate(d1*100.0);
rMpDevEvaluateDetailPO.setDevTargetRate(d2*100.0);
long count = ls.stream().filter(po -> po.getIsUnusual() == 1 && po.getDataIntegrityRate().compareTo(new BigDecimal(0.95)) == 1).count();
double d3 = (double) count / ls.size();
rMpDevEvaluateDetailPO.setDevEffectiveRate(d3);
rMpDevEvaluateDetailPO.setDevEffectiveRate(d3*100.0);
}
rMpDevEvaluateDetailPOList.add(rMpDevEvaluateDetailPO);
});

View File

@@ -3,6 +3,7 @@ package com.njcn.prepare.harmonic.service.mysql.newalgorithm.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
@@ -26,6 +27,10 @@ import com.njcn.prepare.harmonic.service.mysql.day.IRStatDataIDService;
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.IRMpEmissionIExcessRateMService;
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.IRMpEmissionIMService;
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.IRMpEmissionMService;
import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.enums.DicDataEnum;
import com.njcn.system.enums.DicDataTypeEnum;
import com.njcn.system.pojo.po.DictData;
import com.njcn.user.api.DeptFeignClient;
import com.njcn.user.pojo.po.Dept;
import java.lang.reflect.Field;
@@ -60,6 +65,7 @@ public class RMpEmissionMServiceImpl extends MppServiceImpl<RMpEmissionMMapper,
private final RStatLimitRateDMapper rStatLimitRateDMapper;
private final IRMpEmissionIMService irMpEmissionIMService;
private final IRMpEmissionIExcessRateMService irMpEmissionIExcessRateMService;
private final DicDataFeignClient dicDataFeignClient;
@Override
@Async("asyncExecutor")
@@ -73,6 +79,14 @@ public class RMpEmissionMServiceImpl extends MppServiceImpl<RMpEmissionMMapper,
DeptGetLineParam deptGetLineParam = new DeptGetLineParam();
deptGetLineParam.setDeptId(data.getId());
List<DeptGetChildrenMoreDTO> data1 = commTerminalGeneralClient.deptGetLine(deptGetLineParam).getData();
//获取监测点标签
List<DictData> dictDataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.MONITORING_LABELS.getCode()).getData();
List<String> dicIdsList = dictDataList.stream().filter(x -> ObjectUtil.equals(x.getCode(), DicDataEnum.POWER_STATION.getCode()) ||
ObjectUtil.equals(x.getCode(), DicDataEnum.WIND_FARM.getCode()) ||
ObjectUtil.equals(x.getCode(), DicDataEnum.SMELT_LOAD.getCode()) ||
ObjectUtil.equals(x.getCode(), DicDataEnum.ELECTRIFIED_RAILWAYS.getCode())
).map(DictData::getId).collect(Collectors.toList());
//监测点id
List<String> line;
for (DeptGetChildrenMoreDTO deptGetChildrenMoreDTO : data1) {
@@ -86,12 +100,13 @@ public class RMpEmissionMServiceImpl extends MppServiceImpl<RMpEmissionMMapper,
if(CollUtil.isNotEmpty(deptGetChildrenMoreDTO.getPwMonitorIds())){
lineBaseList.addAll(deptGetChildrenMoreDTO.getPwMonitorIds());
}
if (CollUtil.isNotEmpty(lineBaseList)) {
line.addAll(lineBaseList.stream().filter(x -> StrUtil.isNotBlank(x.getPointId())).map(LineDevGetDTO::getPointId).collect(Collectors.toList()));
lineBaseMap.putAll(lineBaseList.stream().filter(x -> StrUtil.isNotBlank(x.getPointId()))
.filter(x->dicIdsList.contains(x.getLineTag()))
.collect(Collectors.groupingBy(LineDevGetDTO::getLineTag, Collectors.mapping(LineDevGetDTO::getPointId, Collectors.toList()))));
line.addAll(lineBaseList.stream().filter(x -> StrUtil.isNotBlank(x.getPointId()))
.filter(x->dicIdsList.contains(x.getLineTag()))
.map(LineDevGetDTO::getPointId).collect(Collectors.toList()));
}

View File

@@ -3,6 +3,7 @@ package com.njcn.prepare.harmonic.service.mysql.newalgorithm.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
@@ -19,6 +20,10 @@ import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RMpInfluenceMMapper;
import com.njcn.prepare.harmonic.pojo.param.LineParam;
import com.njcn.prepare.harmonic.service.mysql.day.IRStatDataVDService;
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.*;
import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.enums.DicDataEnum;
import com.njcn.system.enums.DicDataTypeEnum;
import com.njcn.system.pojo.po.DictData;
import com.njcn.user.api.DeptFeignClient;
import com.njcn.user.pojo.po.Dept;
import lombok.RequiredArgsConstructor;
@@ -51,7 +56,7 @@ public class RMpInfluenceMServiceImpl extends MppServiceImpl<RMpInfluenceMMapper
private final RStatLimitRateDMapper rStatLimitRateDMapper;
private final IRMpInfluenceVMService irMpInfluenceVMService;
private final IRMpInfluenceVExcessRateMService irMpInfluenceVExcessRateMService;
private final DicDataFeignClient dicDataFeignClient;
@Override
@Async("asyncExecutor")
@@ -65,6 +70,13 @@ public class RMpInfluenceMServiceImpl extends MppServiceImpl<RMpInfluenceMMapper
DeptGetLineParam deptGetLineParam = new DeptGetLineParam();
deptGetLineParam.setDeptId(data.getId());
List<DeptGetChildrenMoreDTO> data1 = commTerminalGeneralClient.deptGetLine(deptGetLineParam).getData();
//获取监测点标签
List<DictData> dictDataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.MONITORING_LABELS.getCode()).getData();
List<String> dicIdsList = dictDataList.stream().filter(x -> ObjectUtil.equals(x.getCode(), DicDataEnum.POWER_STATION.getCode()) ||
ObjectUtil.equals(x.getCode(), DicDataEnum.WIND_FARM.getCode()) ||
ObjectUtil.equals(x.getCode(), DicDataEnum.SMELT_LOAD.getCode()) ||
ObjectUtil.equals(x.getCode(), DicDataEnum.ELECTRIFIED_RAILWAYS.getCode())
).map(DictData::getId).collect(Collectors.toList());
//监测点id
List<String> line;
for (DeptGetChildrenMoreDTO deptGetChildrenMoreDTO : data1) {
@@ -80,10 +92,12 @@ public class RMpInfluenceMServiceImpl extends MppServiceImpl<RMpInfluenceMMapper
}
if (CollUtil.isNotEmpty(lineBaseList)) {
line.addAll(lineBaseList.stream().filter(x -> StrUtil.isNotBlank(x.getPointId())).map(LineDevGetDTO::getPointId).collect(Collectors.toList()));
line.addAll(lineBaseList.stream().filter(x -> StrUtil.isNotBlank(x.getPointId()))
.filter(x->dicIdsList.contains(x.getLineTag()))
.map(LineDevGetDTO::getPointId).collect(Collectors.toList()));
lineBaseMap.putAll(lineBaseList.stream().filter(x -> StrUtil.isNotBlank(x.getPointId()))
.filter(x->dicIdsList.contains(x.getLineTag()))
.collect(Collectors.groupingBy(LineDevGetDTO::getLineTag, Collectors.mapping(LineDevGetDTO::getPointId, Collectors.toList()))));
}

View File

@@ -430,13 +430,23 @@ public class RStatLoadTypeServiceImpl implements RStatLoadTypeService {
rStatLoadTypeYPO.setUnbalanceCount(0);
rStatLoadTypeYPO.setFlickerCount(0);
}else {
Optional<RStatHarmonicYPO> vfirst = rStatHarmonicYPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.HARMONIC_VOLTAGE.getCode()).getId())).findFirst();
Optional<RStatHarmonicYPO> vfirst = rStatHarmonicYPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.HARMONIC_VOLTAGE.getCode()).getId())
&&Objects.equals(temp.getMeasurementTypeClass(), m)
).findFirst();
rStatLoadTypeYPO.setVCount(vfirst.isPresent() ? vfirst.get().getOverLimitMeasurementAccrued(): 0);
Optional<RStatHarmonicYPO> ifirst = rStatHarmonicYPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.HARMONIC_CURRENT.getCode()).getId())).findFirst();
Optional<RStatHarmonicYPO> ifirst = rStatHarmonicYPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.HARMONIC_CURRENT.getCode()).getId())
&&Objects.equals(temp.getMeasurementTypeClass(), m)
).findFirst();
rStatLoadTypeYPO.setICount(ifirst.isPresent() ? ifirst.get().getOverLimitMeasurementAccrued(): 0);
Optional<RStatHarmonicYPO> pfirst = rStatHarmonicYPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.PHASE_VOLTAGE.getCode()).getId())).findFirst();
Optional<RStatHarmonicYPO> nfirst = rStatHarmonicYPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.NEG_CURRENT.getCode()).getId())).findFirst();
Optional<RStatHarmonicYPO> ffirst = rStatHarmonicYPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.FLICKER.getCode()).getId())).findFirst();
Optional<RStatHarmonicYPO> pfirst = rStatHarmonicYPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.PHASE_VOLTAGE.getCode()).getId())
&&Objects.equals(temp.getMeasurementTypeClass(), m)
).findFirst();
Optional<RStatHarmonicYPO> nfirst = rStatHarmonicYPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.NEG_CURRENT.getCode()).getId())
&&Objects.equals(temp.getMeasurementTypeClass(), m)
).findFirst();
Optional<RStatHarmonicYPO> ffirst = rStatHarmonicYPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.FLICKER.getCode()).getId())
&&Objects.equals(temp.getMeasurementTypeClass(), m)
).findFirst();
rStatLoadTypeYPO.setINegCount(nfirst.isPresent() ? nfirst.get().getOverLimitMeasurementAccrued(): 0);
rStatLoadTypeYPO.setUnbalanceCount(pfirst.isPresent() ? pfirst.get().getOverLimitMeasurementAccrued(): 0);