修改算法

This commit is contained in:
huangzj
2023-11-23 08:50:27 +08:00
parent 1244a5613e
commit 612f599eff
8 changed files with 172 additions and 94 deletions

View File

@@ -55,7 +55,6 @@ public class RDimBusTargetDPO {
@TableField(value = "Pass_Avg_Rate") @TableField(value = "Pass_Avg_Rate")
private Double passAvgRate; private Double passAvgRate;
@TableField(value = "`State`")
private Integer state;
} }

View File

@@ -21,7 +21,7 @@ import lombok.Data;
*/ */
@Data @Data
@TableName(value = "r_dim_bus_target_m") @TableName(value = "r_dim_bus_target_m")
public class RDimBusTargetMPO extends BaseEntity { public class RDimBusTargetMPO {
@MppMultiId(value = "Org_Id") @MppMultiId(value = "Org_Id")
private String orgId; private String orgId;
@@ -55,7 +55,6 @@ public class RDimBusTargetMPO extends BaseEntity {
@TableField(value = "Pass_Avg_Rate") @TableField(value = "Pass_Avg_Rate")
private Double passAvgRate; private Double passAvgRate;
@TableField(value = "`State`")
private Integer state;
} }

View File

@@ -21,7 +21,7 @@ import lombok.Data;
*/ */
@Data @Data
@TableName(value = "r_dim_bus_target_y") @TableName(value = "r_dim_bus_target_y")
public class RDimBusTargetYPO extends BaseEntity { public class RDimBusTargetYPO {
@MppMultiId(value = "Org_Id") @MppMultiId(value = "Org_Id")
private String orgId; private String orgId;
@@ -55,8 +55,7 @@ public class RDimBusTargetYPO extends BaseEntity {
@TableField(value = "Pass_Avg_Rate") @TableField(value = "Pass_Avg_Rate")
private Double passAvgRate; private Double passAvgRate;
@TableField(value = "`State`")
private Integer state;
} }

View File

@@ -76,8 +76,6 @@ public class RDimBusbarHarmnicDPO {
@TableField(value = "Statis_count") @TableField(value = "Statis_count")
private Integer statisCount; private Integer statisCount;
@TableField(value = "`State`")
private Integer state;

View File

@@ -2,42 +2,25 @@ package com.njcn.prepare.harmonic.service.mysql.dim.impl;
import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.date.LocalDateTimeUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
import com.njcn.device.pms.pojo.po.Monitor;
import com.njcn.device.pq.pojo.po.RStatIntegrityD;
import com.njcn.harmonic.pojo.po.RMpPartHarmonicDetailD;
import com.njcn.harmonic.pojo.po.RMpSurplusHarmonicDetailD;
import com.njcn.harmonic.pojo.po.dim.RDimBusbarHarmnicDPO; import com.njcn.harmonic.pojo.po.dim.RDimBusbarHarmnicDPO;
import com.njcn.prepare.harmonic.mapper.mysql.day.RStatIntegrityDMapper;
import com.njcn.prepare.harmonic.mapper.mysql.line.PmsMonitorMapper;
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam; import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorDPO;
import com.njcn.prepare.harmonic.service.mysql.Impl.line.ROperatingMonitorDServiceImpl;
import com.njcn.prepare.harmonic.service.mysql.dim.RDimBusTargetDPOService; import com.njcn.prepare.harmonic.service.mysql.dim.RDimBusTargetDPOService;
import com.njcn.prepare.harmonic.service.mysql.dim.RDimBusbarHarmnicDPOService; import com.njcn.prepare.harmonic.service.mysql.dim.RDimBusbarHarmnicDPOService;
import com.njcn.prepare.harmonic.service.mysql.line.IRMpPartHarmonicDetailDService;
import com.njcn.prepare.harmonic.service.mysql.line.IRMpSurplusHarmonicDetailDService;
import com.njcn.prepare.harmonic.service.mysql.line.ROperatingMonitorService;
import com.njcn.system.api.DicDataFeignClient; import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.enums.DicDataEnum; import com.njcn.system.enums.DicDataEnum;
import com.njcn.system.enums.DicDataTypeEnum; import com.njcn.system.enums.DicDataTypeEnum;
import com.njcn.system.pojo.po.DictData; import com.njcn.system.pojo.po.DictData;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.harmonic.pojo.po.dim.RDimBusTargetDPO; import com.njcn.harmonic.pojo.po.dim.RDimBusTargetDPO;
import com.njcn.prepare.harmonic.mapper.mysql.dim.RDimBusTargetDPOMapper; import com.njcn.prepare.harmonic.mapper.mysql.dim.RDimBusTargetDPOMapper;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.ArrayList; import java.util.*;
import java.util.List; import java.util.concurrent.atomic.AtomicReference;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@@ -56,9 +39,6 @@ public class RDimBusTargetDPOServiceImpl extends MppServiceImpl<RDimBusTargetDPO
private final DicDataFeignClient dicDataFeignClient; private final DicDataFeignClient dicDataFeignClient;
private final RDimBusbarHarmnicDPOService rDimBusbarHarmnicDPOService; private final RDimBusbarHarmnicDPOService rDimBusbarHarmnicDPOService;
//咨询后直接用Mapper查询这个算法只用pms补考虑pq后续不知道要不要改
private final PmsMonitorMapper pmsMonitorMapper;
@Override @Override
public void handleDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) { public void handleDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
List<RDimBusTargetDPO> rDimBusTargetDPOList = new ArrayList<>(); List<RDimBusTargetDPO> rDimBusTargetDPOList = new ArrayList<>();
@@ -88,72 +68,33 @@ public class RDimBusTargetDPOServiceImpl extends MppServiceImpl<RDimBusTargetDPO
double v1 = count / effectiveBuses; double v1 = count / effectiveBuses;
double limitrate = Math.round(v1 * 100.0) / 100.0; double limitrate = Math.round(v1 * 100.0) / 100.0;
rDimBusTargetDPO.setLimitRate(limitrate); rDimBusTargetDPO.setLimitRate(limitrate);
double asDouble = rdibBusbarHarmList.stream().filter(temp -> temp.getStatisCount() > 0).mapToDouble(temp -> { OptionalDouble average = rdibBusbarHarmList.stream().filter(temp -> temp.getStatisCount() > 0).mapToDouble(temp -> {
return Double.valueOf(temp.getLimitCount()) / temp.getStatisCount(); return Double.valueOf(temp.getLimitCount()) / temp.getStatisCount();
}).average().getAsDouble(); }).average();
double passRate = Math.round(asDouble * 100.0) / 100.0; Double passRate=0.00;
if(average.isPresent()) {
passRate = average.getAsDouble();
rDimBusTargetDPO.setPassAvgRate(1 - passRate);
passRate = Math.round(passRate * 100.0) / 100.0;
rDimBusTargetDPO.setPassRate(1 - passRate); rDimBusTargetDPO.setPassRate(1 - passRate);
}else {
rDimBusTargetDPO.setPassAvgRate(3.14159);
rDimBusTargetDPO.setPassRate(3.14159);
}
rDimBusTargetDPO.setLimitAvgRate(limitrate);
rDimBusTargetDPOList.add(rDimBusTargetDPO);
}); });
}); });
if (!CollectionUtils.isEmpty(rDimBusTargetDPOList)) {
this.saveOrUpdateBatchByMultiId(rDimBusTargetDPOList, 500);
}
} }
private void overLimitTimes(DictData temp, List<RMpSurplusHarmonicDetailD> rMpSurplusHarmonicDetailDList, List<RMpPartHarmonicDetailD> rMpPartHarmonicDetailDList, List<Monitor> monitorList) {
Double overLimitTimes =0.00;
Map<String, Integer> collect = monitorList.stream().collect(Collectors.toMap(Monitor::getId, Monitor::getStatisticalInterval));
if (Objects.equals(temp.getCode(), DicDataEnum.VOLTAGE_DEV.getCode())) {
overLimitTimes = rMpPartHarmonicDetailDList.stream().mapToDouble(po -> {
return po.getVDevTimes() * collect.get(po.getMeasurementPointId());
}
).sum();
} else if ( Objects.equals(temp.getCode(), DicDataEnum.FLICKER.getCode())) {
overLimitTimes = rMpSurplusHarmonicDetailDList.stream().mapToDouble(po -> {
return po.getFlickerTimes() * collect.get(po.getMeasurementPointId());
}
).sum();
} else if ( Objects.equals(temp.getCode(), DicDataEnum.PHASE_VOLTAGE.getCode())) {
overLimitTimes = rMpPartHarmonicDetailDList.stream().mapToDouble(po -> {
return po.getUnbalanceTimes() * collect.get(po.getMeasurementPointId());
}
).sum();
} else if (Objects.equals(temp.getCode(), DicDataEnum.THD_V.getCode())){
overLimitTimes = rMpPartHarmonicDetailDList.stream().mapToDouble(po -> {
return po.getVTimes() * collect.get(po.getMeasurementPointId());
}
).sum();
}
}
/**
* @Description: overLimitBusbarsCount
* @Param:
* @return: java.lang.Integer
* @Author: clam
* @Date: 2023/11/21
*/
private Integer overLimitBusbarsCount(DictData temp, List<RMpSurplusHarmonicDetailD> rMpSurplusHarmonicDetailDList, List<RMpPartHarmonicDetailD> rMpPartHarmonicDetailDList) {
Integer busbarsCount =0;
if (Objects.equals(temp.getCode(), DicDataEnum.VOLTAGE_DEV.getCode())) {
busbarsCount = rMpPartHarmonicDetailDList.stream().filter(po -> Objects.equals(po.getIsVDev(), 1)).collect(Collectors.toList()).size();
} else if ( Objects.equals(temp.getCode(), DicDataEnum.FLICKER.getCode())) {
busbarsCount = rMpSurplusHarmonicDetailDList.stream().filter(po -> Objects.equals(po.getIsFlicker(), 1)).collect(Collectors.toList()).size();
} else if ( Objects.equals(temp.getCode(), DicDataEnum.PHASE_VOLTAGE.getCode())) {
busbarsCount = rMpPartHarmonicDetailDList.stream().filter(po -> Objects.equals(po.getIsUnbalance(), 1)).collect(Collectors.toList()).size();
} else if (Objects.equals(temp.getCode(), DicDataEnum.THD_V.getCode())){
busbarsCount = rMpPartHarmonicDetailDList.stream().filter(po -> Objects.equals(po.getIsVThd(), 1)).collect(Collectors.toList()).size();
} }
return busbarsCount;
}
}

View File

@@ -1,15 +1,31 @@
package com.njcn.prepare.harmonic.service.mysql.dim.impl; package com.njcn.prepare.harmonic.service.mysql.dim.impl;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
import com.njcn.harmonic.pojo.po.dim.RDimBusTargetDPO;
import com.njcn.harmonic.pojo.po.dim.RDimBusbarHarmnicDPO;
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam; import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
import com.njcn.prepare.harmonic.service.mysql.dim.RDimBusTargetDPOService; import com.njcn.prepare.harmonic.service.mysql.dim.RDimBusTargetDPOService;
import com.njcn.prepare.harmonic.service.mysql.dim.RDimBusTargetMPOService; import com.njcn.prepare.harmonic.service.mysql.dim.RDimBusTargetMPOService;
import com.njcn.prepare.harmonic.service.mysql.dim.RDimBusbarHarmnicDPOService;
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 lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.njcn.prepare.harmonic.mapper.mysql.dim.RDimBusTargetMPOMapper; import com.njcn.prepare.harmonic.mapper.mysql.dim.RDimBusTargetMPOMapper;
import com.njcn.harmonic.pojo.po.dim.RDimBusTargetMPO; import com.njcn.harmonic.pojo.po.dim.RDimBusTargetMPO;
import org.springframework.util.CollectionUtils;
import java.time.LocalDate;
import java.util.*;
import java.util.stream.Collectors;
/** /**
* *
@@ -23,8 +39,65 @@ import com.njcn.harmonic.pojo.po.dim.RDimBusTargetMPO;
@RequiredArgsConstructor @RequiredArgsConstructor
public class RDimBusTargetMPOServiceImpl extends MppServiceImpl<RDimBusTargetMPOMapper, RDimBusTargetMPO> implements RDimBusTargetMPOService { public class RDimBusTargetMPOServiceImpl extends MppServiceImpl<RDimBusTargetMPOMapper, RDimBusTargetMPO> implements RDimBusTargetMPOService {
private final DicDataFeignClient dicDataFeignClient;
private final RDimBusbarHarmnicDPOService rDimBusbarHarmnicDPOService;
@Override @Override
public void handleMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) { public void handleMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
List<RDimBusTargetMPO> rDimBusTargetMPOList = new ArrayList<>();
//指标对象类型
List<DictData> indicatorTypeDate = dicDataFeignClient.getDicDataByTypeCode(
DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
LocalDate localDate = LocalDateTimeUtil.parseDate(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN);
//获取日期
DateTime begin = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
DateTime end = DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
List<String> collect = indicatorTypeDate.stream().filter(temp -> Objects.equals(temp.getCode(), DicDataEnum.VOLTAGE_DEV.getCode()) ||
Objects.equals(temp.getCode(), DicDataEnum.FLICKER.getCode()) ||
Objects.equals(temp.getCode(), DicDataEnum.PHASE_VOLTAGE.getCode()) ||
Objects.equals(temp.getCode(), DicDataEnum.THD_V.getCode())).map(DictData::getId).collect(Collectors.toList());
List<RDimBusbarHarmnicDPO> rdibBusbarHarms = rDimBusbarHarmnicDPOService.lambdaQuery().between(RDimBusbarHarmnicDPO::getStatisDate, begin,end).in(RDimBusbarHarmnicDPO::getTargetType, collect).list();
if (CollectionUtils.isEmpty(rdibBusbarHarms)){
return;
}
Map<String, Map<String, List<RDimBusbarHarmnicDPO>>> collect1 = rdibBusbarHarms.stream().collect(Collectors.groupingBy(RDimBusbarHarmnicDPO::getOrgId,
Collectors.groupingBy(RDimBusbarHarmnicDPO::getTargetType)));
collect1.forEach((orgId,v)->{
v.forEach((tag,rdibBusbarHarmList)->{
RDimBusTargetMPO rDimBusTargetMPO = new RDimBusTargetMPO();
rDimBusTargetMPO.setOrgId(orgId);
rDimBusTargetMPO.setTargetType(tag);
rDimBusTargetMPO.setStatisDate(localDate);
//有效接入母线数量
Double effectiveBuses = Double.valueOf(rdibBusbarHarmList.stream().map(RDimBusbarHarmnicDPO::getBusbarId).distinct().count()
);
long count = rdibBusbarHarmList.stream().filter(temp -> temp.getLimitCount() > 0).map(RDimBusbarHarmnicDPO::getBusbarId).distinct().count();
double v1 = count / effectiveBuses;
double limitrate = Math.round(v1 * 100.0) / 100.0;
rDimBusTargetMPO.setLimitRate(limitrate);
OptionalDouble average = rdibBusbarHarmList.stream().filter(temp -> temp.getStatisCount() > 0).mapToDouble(temp -> {
return Double.valueOf(temp.getLimitCount()) / temp.getStatisCount();
}).average();
Double passRate=0.00;
if(average.isPresent()) {
passRate = average.getAsDouble();
rDimBusTargetMPO.setPassAvgRate(1 - passRate);
passRate = Math.round(passRate * 100.0) / 100.0;
rDimBusTargetMPO.setPassRate(1 - passRate);
}else {
rDimBusTargetMPO.setPassAvgRate(3.14159);
rDimBusTargetMPO.setPassRate(3.14159);
}
rDimBusTargetMPO.setLimitAvgRate(limitrate);
rDimBusTargetMPOList.add(rDimBusTargetMPO);
});
});
if (!CollectionUtils.isEmpty(rDimBusTargetMPOList)) {
this.saveOrUpdateBatchByMultiId(rDimBusTargetMPOList, 500);
}
} }
} }

View File

@@ -1,16 +1,32 @@
package com.njcn.prepare.harmonic.service.mysql.dim.impl; package com.njcn.prepare.harmonic.service.mysql.dim.impl;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
import com.njcn.harmonic.pojo.po.dim.RDimBusTargetMPO;
import com.njcn.harmonic.pojo.po.dim.RDimBusbarHarmnicDPO;
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam; import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
import com.njcn.prepare.harmonic.service.mysql.dim.RDimBusTargetDPOService; import com.njcn.prepare.harmonic.service.mysql.dim.RDimBusTargetDPOService;
import com.njcn.prepare.harmonic.service.mysql.dim.RDimBusTargetYPOService; import com.njcn.prepare.harmonic.service.mysql.dim.RDimBusTargetYPOService;
import com.njcn.prepare.harmonic.service.mysql.dim.RDimBusbarHarmnicDPOService;
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 lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.harmonic.pojo.po.dim.RDimBusTargetYPO; import com.njcn.harmonic.pojo.po.dim.RDimBusTargetYPO;
import com.njcn.prepare.harmonic.mapper.mysql.dim.RDimBusTargetYPOMapper; import com.njcn.prepare.harmonic.mapper.mysql.dim.RDimBusTargetYPOMapper;
import org.springframework.util.CollectionUtils;
import java.time.LocalDate;
import java.util.*;
import java.util.stream.Collectors;
/** /**
* *
@@ -24,8 +40,63 @@ import com.njcn.prepare.harmonic.mapper.mysql.dim.RDimBusTargetYPOMapper;
@RequiredArgsConstructor @RequiredArgsConstructor
public class RDimBusTargetYPOServiceImpl extends MppServiceImpl<RDimBusTargetYPOMapper, RDimBusTargetYPO> implements RDimBusTargetYPOService { public class RDimBusTargetYPOServiceImpl extends MppServiceImpl<RDimBusTargetYPOMapper, RDimBusTargetYPO> implements RDimBusTargetYPOService {
private final DicDataFeignClient dicDataFeignClient;
private final RDimBusbarHarmnicDPOService rDimBusbarHarmnicDPOService;
@Override @Override
public void handleYear(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) { public void handleYear(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
List<RDimBusTargetYPO> rDimBusTargetYPOList = new ArrayList<>();
//指标对象类型
List<DictData> indicatorTypeDate = dicDataFeignClient.getDicDataByTypeCode(
DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
LocalDate localDate = LocalDateTimeUtil.parseDate(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN);
//获取日期
DateTime begin = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
DateTime end = DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
List<String> collect = indicatorTypeDate.stream().filter(temp -> Objects.equals(temp.getCode(), DicDataEnum.VOLTAGE_DEV.getCode()) ||
Objects.equals(temp.getCode(), DicDataEnum.FLICKER.getCode()) ||
Objects.equals(temp.getCode(), DicDataEnum.PHASE_VOLTAGE.getCode()) ||
Objects.equals(temp.getCode(), DicDataEnum.THD_V.getCode())).map(DictData::getId).collect(Collectors.toList());
List<RDimBusbarHarmnicDPO> rdibBusbarHarms = rDimBusbarHarmnicDPOService.lambdaQuery().between(RDimBusbarHarmnicDPO::getStatisDate, begin,end).in(RDimBusbarHarmnicDPO::getTargetType, collect).list();
if (CollectionUtils.isEmpty(rdibBusbarHarms)){
return;
}
Map<String, Map<String, List<RDimBusbarHarmnicDPO>>> collect1 = rdibBusbarHarms.stream().collect(Collectors.groupingBy(RDimBusbarHarmnicDPO::getOrgId,
Collectors.groupingBy(RDimBusbarHarmnicDPO::getTargetType)));
collect1.forEach((orgId,v)->{
v.forEach((tag,rdibBusbarHarmList)->{
RDimBusTargetYPO rDimBusTargetYPO = new RDimBusTargetYPO();
rDimBusTargetYPO.setOrgId(orgId);
rDimBusTargetYPO.setTargetType(tag);
rDimBusTargetYPO.setStatisDate(localDate);
//有效接入母线数量
Double effectiveBuses = Double.valueOf(rdibBusbarHarmList.stream().map(RDimBusbarHarmnicDPO::getBusbarId).distinct().count()
);
long count = rdibBusbarHarmList.stream().filter(temp -> temp.getLimitCount() > 0).map(RDimBusbarHarmnicDPO::getBusbarId).distinct().count();
double v1 = count / effectiveBuses;
double limitrate = Math.round(v1 * 100.0) / 100.0;
rDimBusTargetYPO.setLimitRate(limitrate);
OptionalDouble average = rdibBusbarHarmList.stream().filter(temp -> temp.getStatisCount() > 0).mapToDouble(temp -> {
return Double.valueOf(temp.getLimitCount()) / temp.getStatisCount();
}).average();
Double passRate=0.00;
if(average.isPresent()) {
passRate = average.getAsDouble();
rDimBusTargetYPO.setPassAvgRate(1 - passRate);
passRate = Math.round(passRate * 100.0) / 100.0;
rDimBusTargetYPO.setPassRate(1 - passRate);
}else {
rDimBusTargetYPO.setPassAvgRate(3.14159);
rDimBusTargetYPO.setPassRate(3.14159);
}
rDimBusTargetYPO.setLimitAvgRate(limitrate);
rDimBusTargetYPOList.add(rDimBusTargetYPO);
});
});
if (!CollectionUtils.isEmpty(rDimBusTargetYPOList)) {
this.saveOrUpdateBatchByMultiId(rDimBusTargetYPOList, 500);
}
} }
} }

View File

@@ -110,7 +110,6 @@ public class RDimBusbarHarmnicDPOServiceImpl extends MppServiceImpl<RDimBusbarHa
rDimBusbarHarmnicDPO.setBusbarId(busbar.getLineId()); rDimBusbarHarmnicDPO.setBusbarId(busbar.getLineId());
rDimBusbarHarmnicDPO.setTargetType(temp.getId()); rDimBusbarHarmnicDPO.setTargetType(temp.getId());
rDimBusbarHarmnicDPO.setLevel(0); rDimBusbarHarmnicDPO.setLevel(0);
rDimBusbarHarmnicDPO.setState(1);
rDimBusbarHarmnicDPO.setMonitorTag(busbar.getMonitorTag()); rDimBusbarHarmnicDPO.setMonitorTag(busbar.getMonitorTag());
rDimBusbarHarmnicDPO.setVoltageLevel(busbar.getVoltageLevel()); rDimBusbarHarmnicDPO.setVoltageLevel(busbar.getVoltageLevel());
Optional<RStatLimitRateDPO> first = rStatLimitRateDPOS.stream().filter(rStatLimitRateDPO -> Objects.equals(rStatLimitRateDPO.getLineId(), busbar.getId())).findFirst(); Optional<RStatLimitRateDPO> first = rStatLimitRateDPOS.stream().filter(rStatLimitRateDPO -> Objects.equals(rStatLimitRateDPO.getLineId(), busbar.getId())).findFirst();
@@ -145,7 +144,6 @@ public class RDimBusbarHarmnicDPOServiceImpl extends MppServiceImpl<RDimBusbarHa
rDimBusbarHarmnicDPO.setTargetType(dictData.getId()); rDimBusbarHarmnicDPO.setTargetType(dictData.getId());
rDimBusbarHarmnicDPO.setBusbarId(busbar.getLineId()); rDimBusbarHarmnicDPO.setBusbarId(busbar.getLineId());
rDimBusbarHarmnicDPO.setLevel(1); rDimBusbarHarmnicDPO.setLevel(1);
rDimBusbarHarmnicDPO.setState(1);
rDimBusbarHarmnicDPO.setMonitorTag(busbar.getMonitorTag()); rDimBusbarHarmnicDPO.setMonitorTag(busbar.getMonitorTag());
rDimBusbarHarmnicDPO.setVoltageLevel(busbar.getVoltageLevel()); rDimBusbarHarmnicDPO.setVoltageLevel(busbar.getVoltageLevel());
Optional<RMpEventDetailDPO> first = rMpEventDetailDPOList.stream().filter(rMpEventDetailDPO -> Objects.equals(rMpEventDetailDPO.getMeasurementPointId(), busbar.getId())).findFirst(); Optional<RMpEventDetailDPO> first = rMpEventDetailDPOList.stream().filter(rMpEventDetailDPO -> Objects.equals(rMpEventDetailDPO.getMeasurementPointId(), busbar.getId())).findFirst();