1.pms变电站背景谐波算法

This commit is contained in:
2024-01-29 09:00:59 +08:00
parent aeed170427
commit e1b8cbf639
14 changed files with 271 additions and 146 deletions

View File

@@ -67,7 +67,7 @@ public class Monitor extends BaseEntity {
/**
* 监测线名称
* 监测线名称
*/
private String lineName;

View File

@@ -1,8 +1,13 @@
package com.njcn.device.pms.pojo.po;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDate;
import java.util.Date;
/**
@@ -12,16 +17,19 @@ import java.util.Date;
* @since 2022-11-03 14:16:47
*/
@Data
@TableName(value="r_stat_busbar_harmonic_y")
public class RStatBusbarHarmonicYPO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 母线ID
*/
@MppMultiId
private String busbarId;
/**
* 生成数据的时间,每年统计一次
*/
private Date dataDate;
@MppMultiId
private LocalDate dataDate;
/**
* 电压有效值最大
*/
@@ -37,6 +45,7 @@ public class RStatBusbarHarmonicYPO implements Serializable {
/**
* 电压有效值95概率大值
*/
@TableField(value = "v_effective_95")
private Double vEffective95;
/**
* 电压总谐波畸变率最大
@@ -53,6 +62,7 @@ public class RStatBusbarHarmonicYPO implements Serializable {
/**
* 电压总谐波畸变率95概率大值
*/
@TableField(value = "v_thd_95")
private Double vThd95;
/**
* 三相电压不平衡最大
@@ -69,6 +79,7 @@ public class RStatBusbarHarmonicYPO implements Serializable {
/**
* 三相电压不平衡95概率大值
*/
@TableField(value = "unbalance_95")
private Double unbalance95;
/**
* 闪变最大
@@ -85,6 +96,7 @@ public class RStatBusbarHarmonicYPO implements Serializable {
/**
* 闪变95概率大值
*/
@TableField(value = "flicker_95")
private Double flicker95;
}

View File

@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDate;
import java.util.Date;
/**
@@ -65,7 +66,7 @@ public class RStatBusbarHarmonicYVO implements Serializable {
* 生成数据的时间,每年统计一次
*/
@ApiModelProperty(name = "dataDate", value = "生成数据的时间,每年统计一次")
private Date dataDate;
private LocalDate dataDate;
/**
* 电压有效最大值

View File

@@ -363,6 +363,20 @@ public class CommTerminalController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
/**
* pms获取指定单位下面的母线以及母线下面的监测点信息
* @author cdf
* @date 2024/1/26
*/
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@GetMapping("/getBusBarAndHisMonitor")
@ApiOperation("pms获取指定单位下面的母线以及母线下面的监测点信息")
public HttpResult<List<BusBarAndHisMonitorDTO>> getBusBarAndHisMonitor() {
String methodDescribe = getMethodDescribe("getBusBarAndHisMonitor");
List<BusBarAndHisMonitorDTO> busBarAndHisMonitorDTOList = commTerminalService.getBusBarAndHisMonitor();
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, busBarAndHisMonitorDTOList, methodDescribe);
}
/**
* 用于返回pq 还是pms系统

View File

@@ -281,40 +281,6 @@ public class PmsDistributionMonitorController extends BaseController {
}
/**
* 批量同步台区到配网表
* @author cdf
* @date 2023/7/24
*/
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/batchOpDistributionArea")
@ApiOperation("批量同步台区到配网表")
public HttpResult<Boolean> batchOpDistributionArea() {
String methodDescribe = getMethodDescribe("batchOpDistributionArea");
boolean result = iDistributionMonitorService.batchOpDistributionArea();
if(result){
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe);
}
/**
* 批量给配网监测点录入单位id
* @author cdf
* @date 2023/9/20
*/
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/disMonitorWriteOrgId")
@ApiOperation("批量修改配网里的单位")
public HttpResult<Boolean> disMonitorWriteOrgId() {
String methodDescribe = getMethodDescribe("disMonitorWriteOrgId");
iDistributionMonitorService.disMonitorWriteOrgId();
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
@ApiOperation(value = "将用户数据导入到配网表中")
@PostMapping("/savePmsDistributionUser")
public HttpResult<Boolean> savePmsDistributionUser() {

View File

@@ -1,9 +1,11 @@
package com.njcn.device.pms.service.ledgerManger;
import com.njcn.common.pojo.param.StatisticsBizBaseParam;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.device.biz.pojo.dto.StatisticsMonitor;
import com.njcn.device.biz.pojo.dto.*;
import com.njcn.device.biz.pojo.param.DeptGetLineParam;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
import java.util.Map;
@@ -103,4 +105,7 @@ public interface CommTerminalService {
* @date 2023/10/23
*/
Map<String,String> getCustomDetailByLineId(String id);
List<BusBarAndHisMonitorDTO> getBusBarAndHisMonitor();
}

View File

@@ -5,6 +5,7 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.njcn.common.pojo.enums.common.DataStateEnum;
import com.njcn.common.pojo.enums.common.ServerEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
@@ -768,4 +769,24 @@ public class CommTerminalServiceImpl implements CommTerminalService {
return monitorMapper.getCustomDetailByLineId(id);
}
@Override
public List<BusBarAndHisMonitorDTO> getBusBarAndHisMonitor() {
List<BusBarAndHisMonitorDTO> result = new ArrayList<>();
DictData dictData = dicDataFeignClient.getDicDataByNameAndTypeName(DicDataTypeEnum.LINE_STATE.getName(),DicDataEnum.RUN.getName()).getData();
LambdaQueryWrapper<Monitor> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.select(Monitor::getId,Monitor::getLineId).eq(Monitor::getMonitorState,dictData.getId())
.eq(Monitor::getStatus, DataStateEnum.ENABLE.getCode());
List<Monitor> monitorList = monitorMapper.selectList(lambdaQueryWrapper);
Map<String,List<Monitor>> busBarMap = monitorList.stream().collect(Collectors.groupingBy(Monitor::getLineId));
busBarMap.forEach((key,val)->{
BusBarAndHisMonitorDTO busBarAndHisMonitorDTO = new BusBarAndHisMonitorDTO();
busBarAndHisMonitorDTO.setBusBarId(key);
busBarAndHisMonitorDTO.setMonitorIds(val.stream().map(Monitor::getId).collect(Collectors.toList()));
result.add(busBarAndHisMonitorDTO);
});
return result;
}
}

View File

@@ -116,16 +116,6 @@ public interface IDistributionMonitorService extends IMppService<DistributionMon
*/
List<String> getBaseDisMonitorIds(List<String> orgIds,List<String> monitorSortIds);
/**
* 批量同步台区到配网表
* @author cdf
* @date 2023/7/24
*/
Boolean batchOpDistributionArea();
Boolean disMonitorWriteOrgId();
/**
* 批量同步发电用户到配网表
* @return

View File

@@ -464,104 +464,6 @@ public class DistributionMonitorServiceImpl extends MppServiceImpl<DistributionM
return distributionMonitorMapper.getBaseDisMonitorIds(orgIds,monitorSortIds);
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean batchOpDistributionArea() {
TimeInterval timeInterval = new TimeInterval();
DictData dictData = dicDataFeignClient.getDicDataByNameAndTypeName(DicDataTypeEnum.LINE_SORT.getName(),DicDataEnum.TWO_LINE.getName()).getData();
int count = powerDistributionareaMapper.selectCount(new LambdaQueryWrapper<>());
int calCount = 0;
if (count > 0) {
calCount = count / 10000 + 1;
for (int i = 0; i < calCount; i++) {
int page = i * 10000;
List<PowerDistributionarea> powerDistributionareaList = powerDistributionareaMapper.selectList(
new LambdaQueryWrapper<PowerDistributionarea>()
.select(PowerDistributionarea::getId,
PowerDistributionarea::getState,
PowerDistributionarea::getVoltageLevel,
PowerDistributionarea::getOrgId,
PowerDistributionarea::getPowerStationId,
PowerDistributionarea::getLineId
)
.last(true, "limit " + page+ ",10000"));
List<DistributionMonitor> poList= new ArrayList<>();
for(PowerDistributionarea powerDistributionarea:powerDistributionareaList){
DistributionMonitor distributionMonitor = new DistributionMonitor();
distributionMonitor.setMonitorSort(dictData.getId());
distributionMonitor.setMonitorId(powerDistributionarea.getId());
distributionMonitor.setOrgId(powerDistributionarea.getOrgId());
distributionMonitor.setStatus(DataStateEnum.ENABLE.getCode());
distributionMonitor.setMonitorState(powerDistributionarea.getState());
distributionMonitor.setVoltageLevel(powerDistributionarea.getVoltageLevel());
distributionMonitor.setCreatedDate(LocalDateTime.now());
distributionMonitor.setIfPowerUser(0);
distributionMonitor.setPowerStationId(powerDistributionarea.getPowerStationId());
distributionMonitor.setLineId(powerDistributionarea.getLineId());
poList.add(distributionMonitor);
}
this.saveOrUpdateBatchByMultiId(poList);
}
}
return true;
}
@Override
public Boolean disMonitorWriteOrgId() {
List<DistributionMonitor> distributionMonitorList = this.list();
if(CollectionUtil.isNotEmpty(distributionMonitorList)){
Map<String,List<DistributionMonitor>> map = distributionMonitorList.stream().collect(Collectors.groupingBy(DistributionMonitor::getMonitorSort));
List<DistributionMonitor> po = new ArrayList<>();
map.forEach((key,val)->{
if(key.equals("78a96acb276a5fe9d6eff737fdf1973f")){
List<DistributionMonitor> one = map.get("78a96acb276a5fe9d6eff737fdf1973f");
List<String> oneIds = one.stream().map(DistributionMonitor::getMonitorId).distinct().collect(Collectors.toList());
List<Monitor> monitorList = monitorMapper.selectList(new LambdaQueryWrapper<Monitor>().in(Monitor::getId,oneIds));
for(Monitor monitor:monitorList){
DistributionMonitor distributionMonitor = new DistributionMonitor();
distributionMonitor.setMonitorId(monitor.getId());
distributionMonitor.setOrgId(monitor.getOrgId());
LambdaUpdateWrapper<DistributionMonitor> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.set(DistributionMonitor::getOrgId,distributionMonitor.getOrgId()).eq(DistributionMonitor::getMonitorId,distributionMonitor.getMonitorId());
this.update(updateWrapper);
}
}else if(key.equals("a5696acb276a5fe9d6eff74fdf1973f")){
List<DistributionMonitor> two = map.get("a5696acb276a5fe9d6eff74fdf1973f");
List<String> twoIds = two.stream().map(DistributionMonitor::getMonitorId).distinct().collect(Collectors.toList());
List<PowerDistributionarea> monitorList = powerDistributionareaMapper.selectList(new LambdaQueryWrapper<PowerDistributionarea>().in(PowerDistributionarea::getId,twoIds));
for(PowerDistributionarea monitor:monitorList){
DistributionMonitor distributionMonitor = new DistributionMonitor();
distributionMonitor.setMonitorId(monitor.getId());
distributionMonitor.setOrgId(monitor.getOrgId());
LambdaUpdateWrapper<DistributionMonitor> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.set(DistributionMonitor::getOrgId,distributionMonitor.getOrgId()).eq(DistributionMonitor::getMonitorId,distributionMonitor.getMonitorId());
this.update(updateWrapper);
}
}else {
List<DistributionMonitor> two = map.get("a5696acb276a5fe9d6eff74fdf1973f");
List<String> twoIds = two.stream().map(DistributionMonitor::getMonitorId).distinct().collect(Collectors.toList());
List<PowerDistributionarea> monitorList = powerDistributionareaMapper.selectList(new LambdaQueryWrapper<PowerDistributionarea>().in(PowerDistributionarea::getId,twoIds));
}
});
}
return true;
}
@Override
@Transactional(rollbackFor = Exception.class)

View File

@@ -2,6 +2,7 @@ package com.njcn.prepare.executor;
import com.njcn.device.biz.pojo.dto.DeptGetBusBarDTO;
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
import com.njcn.prepare.harmonic.service.mysql.busbar.IStationBusBarReportService;
import com.njcn.prepare.harmonic.service.mysql.dim.IRDimVoltageDService;
import com.njcn.prepare.harmonic.service.mysql.dim.IRDimVoltageMService;
import com.njcn.prepare.harmonic.service.mysql.dim.IRDimVoltageYService;
@@ -25,6 +26,8 @@ public class BusBarExecutor extends BaseExecutor{
private final IRDimVoltageMService irDimVoltageMService;
private final IRDimVoltageYService irDimVoltageYService;
private final IStationBusBarReportService iStationBusBarReportService;
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rBusbarVoltage", nodeType = NodeTypeEnum.COMMON)
public boolean rBusbarVoltageAccess(NodeComponent bindCmp) {
return isAccess(bindCmp);
@@ -51,4 +54,19 @@ public class BusBarExecutor extends BaseExecutor{
}
}
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rStatBusbarHarmonicY", nodeType = NodeTypeEnum.COMMON)
public boolean rStatBusbarHarmonicYAccess(NodeComponent bindCmp) {
return isAccess(bindCmp);
}
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "rStatBusbarHarmonicY", nodeType = NodeTypeEnum.COMMON)
public void rStatBusbarHarmonicYProcess(NodeComponent bindCmp) {
CalculatedParam<DeptGetBusBarDTO> calculatedParam = bindCmp.getRequestData();
//年表
iStationBusBarReportService.handleEveryDayAllYear(calculatedParam);
}
}

View File

@@ -0,0 +1,14 @@
package com.njcn.prepare.harmonic.mapper.mysql.busbar;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.device.pms.pojo.po.RStatBusbarHarmonicYPO;
import com.njcn.harmonic.pojo.po.day.RStatComassesDPO;
/**
* pqs
*
* @author cdf
* @date 2024/1/25
*/
public interface StationBusBarReportMapper extends MppBaseMapper<RStatBusbarHarmonicYPO> {
}

View File

@@ -0,0 +1,18 @@
package com.njcn.prepare.harmonic.service.mysql.busbar;
import com.github.jeffreyning.mybatisplus.service.IMppService;
import com.njcn.device.pms.pojo.po.RStatBusbarHarmonicYPO;
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
/**
* 变电站母线电压指标
* @author cdf
* @date 2024/1/25
*/
public interface IStationBusBarReportService extends IMppService<RStatBusbarHarmonicYPO> {
void handleEveryDayAllYear(CalculatedParam<?> calculatedParam);
}

View File

@@ -0,0 +1,162 @@
package com.njcn.prepare.harmonic.service.mysql.busbar.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.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
import com.njcn.device.biz.pojo.dto.BusBarAndHisMonitorDTO;
import com.njcn.device.pms.pojo.po.RStatBusbarHarmonicYPO;
import com.njcn.harmonic.pojo.po.RStatDataVD;
import com.njcn.harmonic.pojo.po.day.RStatDataPltDPO;
import com.njcn.harmonic.pojo.po.day.RStatDataVDPO;
import com.njcn.prepare.harmonic.mapper.mysql.busbar.StationBusBarReportMapper;
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
import com.njcn.prepare.harmonic.service.mysql.busbar.IStationBusBarReportService;
import com.njcn.prepare.harmonic.service.mysql.day.IRStatDataPltDService;
import com.njcn.prepare.harmonic.service.mysql.day.IRStatDataVDService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* pqs
*
* @author cdf
* @date 2024/1/25
*/
@Service
@RequiredArgsConstructor
public class StationBusBarReportServiceImpl extends MppServiceImpl<StationBusBarReportMapper, RStatBusbarHarmonicYPO> implements IStationBusBarReportService {
private final CommTerminalGeneralClient commTerminalGeneralClient;
private final IRStatDataVDService irStatDataVDService;
private final IRStatDataPltDService irStatDataPltDService;
@Override
public void handleEveryDayAllYear(CalculatedParam<?> calculatedParam) {
DateTime date = DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN);
String begin = DateUtil.format(DateUtil.beginOfYear(date), DatePattern.NORM_DATE_PATTERN);
List<BusBarAndHisMonitorDTO> busBatList = commTerminalGeneralClient.getBusBarAndHisMonitor().getData();
List<RStatBusbarHarmonicYPO> resultPoList = new ArrayList<>();
for (BusBarAndHisMonitorDTO busBarAndHisMonitorDTO : busBatList) {
RStatBusbarHarmonicYPO rStatBusbarHarmonicYPO = new RStatBusbarHarmonicYPO();
rStatBusbarHarmonicYPO.setBusbarId(busBarAndHisMonitorDTO.getBusBarId());
rStatBusbarHarmonicYPO.setDataDate(LocalDate.parse(begin));
LambdaQueryWrapper<RStatDataVDPO> vdQuery = new LambdaQueryWrapper<>();
vdQuery.select(RStatDataVDPO::getLineId, RStatDataVDPO::getPhasicType, RStatDataVDPO::getVThd, RStatDataVDPO::getRms, RStatDataVDPO::getValueType, RStatDataVDPO::getVUnbalance)
.in(RStatDataVDPO::getLineId, busBarAndHisMonitorDTO.getMonitorIds()).between(RStatDataVDPO::getTime, begin, calculatedParam.getDataDate());
List<RStatDataVDPO> rStatDataVDPOList = irStatDataVDService.list(vdQuery);
Map<String, List<RStatDataVDPO>> vMap = rStatDataVDPOList.stream().collect(Collectors.groupingBy(RStatDataVDPO::getValueType));
if (vMap.containsKey("MAX")) {
List<RStatDataVDPO> maxList = vMap.get("MAX");
Double rms = maxList.stream().filter(item -> !item.getPhasicType().equals("T")).map(RStatDataVDPO::getRms).max(Comparator.comparing(Function.identity())).orElse(3.14159);
Double thd = maxList.stream().filter(item -> item.getPhasicType().equals("T")).map(RStatDataVDPO::getVThd).max(Comparator.comparing(Function.identity())).orElse(3.14159);
Double un = maxList.stream().filter(item -> item.getPhasicType().equals("T")).map(RStatDataVDPO::getVUnbalance).max(Comparator.comparing(Function.identity())).orElse(3.14159);
rStatBusbarHarmonicYPO.setVEffectiveMax(rms);
rStatBusbarHarmonicYPO.setVThdMax(thd);
rStatBusbarHarmonicYPO.setUnbalanceMax(un);
}else {
rStatBusbarHarmonicYPO.setVEffectiveMax(3.14159);
rStatBusbarHarmonicYPO.setVThdMax(3.14159);
rStatBusbarHarmonicYPO.setUnbalanceMax(3.14159);
}
if (vMap.containsKey("MIN")) {
List<RStatDataVDPO> maxList = vMap.get("MIN");
Double rms = maxList.stream().filter(item -> !item.getPhasicType().equals("T")).map(RStatDataVDPO::getRms).min(Comparator.comparing(Function.identity())).orElse(3.14159);
Double thd = maxList.stream().filter(item -> item.getPhasicType().equals("T")).map(RStatDataVDPO::getVThd).min(Comparator.comparing(Function.identity())).orElse(3.14159);
Double un = maxList.stream().filter(item -> item.getPhasicType().equals("T")).map(RStatDataVDPO::getVUnbalance).min(Comparator.comparing(Function.identity())).orElse(3.14159);
rStatBusbarHarmonicYPO.setVEffectiveMin(rms);
rStatBusbarHarmonicYPO.setVThdMin(thd);
rStatBusbarHarmonicYPO.setUnbalanceMin(un);
}else {
rStatBusbarHarmonicYPO.setVEffectiveMin(3.14159);
rStatBusbarHarmonicYPO.setVThdMin(3.14159);
rStatBusbarHarmonicYPO.setUnbalanceMin(3.14159);
}
if (vMap.containsKey("AVG")) {
List<RStatDataVDPO> maxList = vMap.get("AVG");
Double rms = maxList.stream().filter(item -> !item.getPhasicType().equals("T")).mapToDouble(RStatDataVDPO::getRms).average().orElse(3.14159);
Double thd = maxList.stream().filter(item -> item.getPhasicType().equals("T")).mapToDouble(RStatDataVDPO::getVThd).average().orElse(3.14159);
Double un = maxList.stream().filter(item -> item.getPhasicType().equals("T")).mapToDouble(RStatDataVDPO::getVUnbalance).average().orElse(3.14159);
rStatBusbarHarmonicYPO.setVEffectiveAvg(rms);
rStatBusbarHarmonicYPO.setVThdAvg(thd);
rStatBusbarHarmonicYPO.setUnbalanceAvg(un);
}else {
rStatBusbarHarmonicYPO.setVEffectiveAvg(3.14159);
rStatBusbarHarmonicYPO.setVThdAvg(3.14159);
rStatBusbarHarmonicYPO.setUnbalanceAvg(3.14159);
}
if (vMap.containsKey("CP95")) {
List<RStatDataVDPO> cp95List = vMap.get("CP95");
Double rms = cp95List.stream().filter(item -> !item.getPhasicType().equals("T")).map(RStatDataVDPO::getRms).max(Comparator.comparing(Function.identity())).orElse(3.14159);
Double thd = cp95List.stream().filter(item -> item.getPhasicType().equals("T")).map(RStatDataVDPO::getVThd).max(Comparator.comparing(Function.identity())).orElse(3.14159);
Double un = cp95List.stream().filter(item -> item.getPhasicType().equals("T")).map(RStatDataVDPO::getVUnbalance).max(Comparator.comparing(Function.identity())).orElse(3.14159);
rStatBusbarHarmonicYPO.setVEffective95(rms);
rStatBusbarHarmonicYPO.setVThd95(thd);
rStatBusbarHarmonicYPO.setUnbalance95(un);
}else {
rStatBusbarHarmonicYPO.setVEffective95(3.14159);
rStatBusbarHarmonicYPO.setVThd95(3.14159);
rStatBusbarHarmonicYPO.setUnbalance95(3.14159);
}
//长时闪变
LambdaQueryWrapper<RStatDataPltDPO> pltdQuery = new LambdaQueryWrapper<>();
pltdQuery.select(RStatDataPltDPO::getPlt,RStatDataPltDPO::getPhaseType,RStatDataPltDPO::getValueType)
.in(RStatDataPltDPO::getLineId, busBarAndHisMonitorDTO.getMonitorIds()).between(RStatDataPltDPO::getTime, begin,calculatedParam.getDataDate());
List<RStatDataPltDPO> pltList = irStatDataPltDService.list(pltdQuery);
Map<String, List<RStatDataPltDPO>> pltMap = pltList.stream().collect(Collectors.groupingBy(RStatDataPltDPO::getValueType));
if (pltMap.containsKey("MAX")) {
List<RStatDataPltDPO> maxList = pltMap.get("MAX");
Double plt = maxList.stream().map(RStatDataPltDPO::getPlt).max(Comparator.comparing(Function.identity())).orElse(3.14159);
rStatBusbarHarmonicYPO.setFlickerMax(plt);
}else {
rStatBusbarHarmonicYPO.setFlickerMax(3.14159);
}
if (pltMap.containsKey("MIN")) {
List<RStatDataPltDPO> minList = pltMap.get("MIN");
Double plt = minList.stream().map(RStatDataPltDPO::getPlt).min(Comparator.comparing(Function.identity())).orElse(3.14159);
rStatBusbarHarmonicYPO.setFlickerMin(plt);
}else {
rStatBusbarHarmonicYPO.setFlickerMin(3.14159);
}
if (pltMap.containsKey("AVG")) {
List<RStatDataPltDPO> maxList = pltMap.get("AVG");
Double plt = maxList.stream().mapToDouble(RStatDataPltDPO::getPlt).average().orElse(3.14159);
rStatBusbarHarmonicYPO.setFlickerAvg(plt);
}else {
rStatBusbarHarmonicYPO.setFlickerAvg(3.14159);
}
if (pltMap.containsKey("CP95")) {
List<RStatDataPltDPO> cp95List = pltMap.get("CP95");
Double plt = cp95List.stream().map(RStatDataPltDPO::getPlt).max(Comparator.comparing(Function.identity())).orElse(3.14159);
rStatBusbarHarmonicYPO.setFlicker95(plt);
}else {
rStatBusbarHarmonicYPO.setFlicker95(3.14159);
}
resultPoList.add(rStatBusbarHarmonicYPO);
}
this.saveOrUpdateBatchByMultiId(resultPoList);
}
}

View File

@@ -1,10 +1,12 @@
package com.njcn.prepare.harmonic.service.mysql.day;
import com.github.jeffreyning.mybatisplus.service.IMppService;
import com.njcn.harmonic.pojo.po.day.RStatDataFlickerDPO;
import com.njcn.harmonic.pojo.po.day.RStatDataVDPO;
import java.util.List;
public interface IRStatDataFlickerDService {
public interface IRStatDataFlickerDService extends IMppService<RStatDataFlickerDPO> {
void insert(List<RStatDataFlickerDPO> list);
}