1.变电站超标统计算法编写

This commit is contained in:
wr
2024-02-28 10:26:01 +08:00
parent a739eed039
commit a44b8f2348
7 changed files with 178 additions and 62 deletions

View File

@@ -391,6 +391,42 @@ public class ExecutionCenter extends BaseController {
}
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@ApiOperation("单位变电站算法执行链")
@PostMapping("/orgSubStationExecutor")
@Async("asyncExecutor")
public void orgSubStationExecutor(@RequestBody BaseParam baseParam) {
String methodDescribe = getMethodDescribe("orgSubStationExecutor");
//手动判断参数是否合法,
CalculatedParam<DeptGetSubStationDTO.Info> calculatedParam = judgeExecuteParam(baseParam);
// 测点索引
DeptGetLineParam deptGetLineParam = new DeptGetLineParam();
if (CollectionUtils.isEmpty(calculatedParam.getIdList())) {
Dept data = deptFeignClient.getRootDept().getData();
deptGetLineParam.setDeptId(data.getId());
List<DeptGetSubStationDTO.Info> data1 = commTerminalGeneralClient.deptGetSubStationInfo(deptGetLineParam).getData();
calculatedParam.setIdList(data1);
}
LiteflowResponse liteflowResponse;
if (baseParam.isRepair()) {
//补招时,起始日期、截止日期必填
DateTime startDate = DateUtil.parse(baseParam.getBeginTime(), DatePattern.NORM_DATE_FORMAT);
DateTime endDate = DateUtil.parse(baseParam.getEndTime(), DatePattern.NORM_DATE_FORMAT);
long betweenDay = DateUtil.betweenDay(startDate, endDate, true);
//递增日期执行算法链
for (int i = 0; i < betweenDay; i++) {
if (i != 0) {
startDate = DateUtil.offsetDay(startDate, 1);
}
calculatedParam.setDataDate(DateUtil.format(startDate, DatePattern.NORM_DATE_PATTERN));
liteflowResponse = flowExecutor.execute2Resp("orgSub_station", calculatedParam);
dealResponse(calculatedParam, liteflowResponse, methodDescribe);
}
} else {
//非补招
liteflowResponse = flowExecutor.execute2Resp("orgSub_station", calculatedParam);
dealResponse(calculatedParam, liteflowResponse, methodDescribe);
}
}
}

View File

@@ -0,0 +1,43 @@
package com.njcn.prepare.executor;
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
import com.njcn.prepare.harmonic.service.mysql.line.PollutionService;
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatSubstationService;
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatSubstationVoltageMPOService;
import com.njcn.prepare.harmonic.service.mysql.send.ConverterDetailStatisticsPOService;
import com.njcn.prepare.harmonic.service.mysql.upload.IRUploadSubstationStatisticalDataDService;
import com.yomahub.liteflow.annotation.LiteflowComponent;
import com.yomahub.liteflow.annotation.LiteflowMethod;
import com.yomahub.liteflow.core.NodeComponent;
import com.yomahub.liteflow.enums.LiteFlowMethodEnum;
import com.yomahub.liteflow.enums.NodeTypeEnum;
import lombok.RequiredArgsConstructor;
import java.util.Objects;
/**
* @Description:
* @Author: wr
* @Date: 2024/2/27 13:50
*/
@LiteflowComponent
@RequiredArgsConstructor
public class OrgSubStationExecutor extends BaseExecutor{
private final RStatSubstationVoltageMPOService rStatSubstationVoltageMPOService;
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rStatSubstationVoltage", nodeType = NodeTypeEnum.COMMON)
public boolean rStatSubstationVoltageAccess(NodeComponent bindCmp) {
return isAccess(bindCmp);
}
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "rStatSubstationVoltage", nodeType = NodeTypeEnum.COMMON)
public void rStatSubstationVoltageProcess(NodeComponent bindCmp) {
String tag = bindCmp.getTag();
CalculatedParam calculatedParam = bindCmp.getRequestData();
if (Objects.equals(tag,"r_stat_substation_voltage_m")){
rStatSubstationVoltageMPOService.handler(calculatedParam);
}
}
}

View File

@@ -74,7 +74,7 @@ public class RStatSubstationVoltageController extends BaseController {
List<DeptGetSubStationDTO> data = commTerminalGeneralClient.deptSubStation(deptGetLineParam).getData();
long start = System.currentTimeMillis();
service.handler(data,orgParam.getDataDate(),orgParam.getType());
// service.handler(data,orgParam.getDataDate(),orgParam.getType());
long end = System.currentTimeMillis();
System.out.println("该方法总耗时为 ---> "+(end-start));
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);

View File

@@ -29,19 +29,19 @@
#{startTime} dataDate,
measurement_point_id measurementPointId,
case when sum(is_v_dev_warn) > 0 then 1 else 0 end vdevAlarmInfo,
sum(is_v_dev_warn)/count(distinct data_date) vdevSeverity,
ROUND( (sum(is_v_dev_warn)/count(distinct data_date))*100,2) vdevSeverity,
case when sum(is_freq_warn) > 0 then 1 else 0 end freqAlarmInfo,
sum(is_freq_warn)/count(distinct data_date) freqSeverity,
ROUND( (sum(is_freq_warn)/count(distinct data_date))*100,2) freqSeverity,
case when sum(is_unbalance_warn) > 0 then 1 else 0 end unbalanceAlarmInfo,
sum(is_unbalance_warn)/count(distinct data_date) unbalanceSeverity,
ROUND( (sum(is_unbalance_warn)/count(distinct data_date))*100,2) unbalanceSeverity,
case when sum(is_v_warn) > 0 then 1 else 0 end vAlarmInfo,
sum(is_v_warn)/count(distinct data_date) vSeverity,
ROUND( (sum(is_v_warn)/count(distinct data_date))*100,2) vSeverity,
case when sum(is_flicker_warn) > 0 then 1 else 0 end flickerAlarmInfo,
sum(is_flicker_warn)/count(distinct data_date) flickerSeverity,
ROUND( (sum(is_flicker_warn)/count(distinct data_date))*100,2) flickerSeverity,
case when sum(is_sag_warn) > 0 then 1 else 0 end sagAlarmInfo,
sum(is_sag_warn)/count(distinct data_date) sagSeverity,
ROUND( (sum(is_sag_warn)/count(distinct data_date))*100,2) sagSeverity,
case when sum(is_interrupt_warn) > 0 then 1 else 0 end interruptAlarmInfo,
sum(is_interrupt_warn)/count(distinct data_date) interruptSeverity,
ROUND( (sum(is_interrupt_warn)/count(distinct data_date))*100,2)interruptSeverity,
sum(is_v_dev_warn)/count(distinct data_date)+sum(is_freq_warn)/count(distinct
data_date)+sum(is_unbalance_warn)/count(distinct data_date)+sum(is_v_warn)/count(distinct
data_date)+sum(is_flicker_warn)/count(distinct data_date) harmonicTypeGradeTotal,

View File

@@ -243,13 +243,13 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService {
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
queryWrapper.clear();
queryWrapper.select("freq_over_day", "v_dev_over_day", "v_over_day", "i_over_day", "unbalance_over_day", "i_neg_over_day").
queryWrapper.select("measurement_point_id","freq_over_day", "v_dev_over_day", "v_over_day", "i_over_day", "unbalance_over_day", "i_neg_over_day").
in("measurement_point_id", collect1).
between("data_date",begin,end);
List<RMpPartHarmonicDetailM> rMpPartHarmonicDetailMS = rMpPartHarmonicDetailMMapper.selectList(queryWrapper);
rMpSurplusHarmonicDetailMQueryWrapper.clear();
rMpSurplusHarmonicDetailMQueryWrapper.select("flicker_over_day", "inuharm_over_day").
rMpSurplusHarmonicDetailMQueryWrapper.select("measurement_point_id","flicker_over_day", "inuharm_over_day").
in("measurement_point_id", collect1).
between("data_date",begin,end);
List<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMS = rMpSurplusHarmonicDetailMMapper.selectList(rMpSurplusHarmonicDetailMQueryWrapper);
@@ -318,13 +318,13 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService {
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
queryWrapper.clear();
queryWrapper.select("freq_over_day", "v_dev_over_day", "v_over_day", "i_over_day", "unbalance_over_day", "i_neg_over_day").
queryWrapper.select("measurement_point_id","freq_over_day", "v_dev_over_day", "v_over_day", "i_over_day", "unbalance_over_day", "i_neg_over_day").
in("measurement_point_id", collect1).
between("data_date",begin,end);
List<RMpPartHarmonicDetailM> rMpPartHarmonicDetailMS = rMpPartHarmonicDetailMMapper.selectList(queryWrapper);
rMpSurplusHarmonicDetailMQueryWrapper.clear();
rMpSurplusHarmonicDetailMQueryWrapper.select("flicker_over_day", "inuharm_over_day").
rMpSurplusHarmonicDetailMQueryWrapper.select("measurement_point_id","flicker_over_day", "inuharm_over_day").
in("measurement_point_id", collect1).
between("data_date",begin,end);
List<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMS = rMpSurplusHarmonicDetailMMapper.selectList(rMpSurplusHarmonicDetailMQueryWrapper);
@@ -431,14 +431,14 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService {
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
queryWrapper.clear();
queryWrapper.select("freq_over_day", "v_dev_over_day", "v_over_day", "i_over_day", "unbalance_over_day", "i_neg_over_day").
queryWrapper.select("measurement_point_id","freq_over_day", "v_dev_over_day", "v_over_day", "i_over_day", "unbalance_over_day", "i_neg_over_day").
in("measurement_point_id", collect1).
between("data_date",begin,end);
List<RMpPartHarmonicDetailM> rMpPartHarmonicDetailMS = rMpPartHarmonicDetailMMapper.selectList(queryWrapper);
rMpSurplusHarmonicDetailMQueryWrapper.clear();
rMpSurplusHarmonicDetailMQueryWrapper.select("flicker_over_day", "inuharm_over_day").
rMpSurplusHarmonicDetailMQueryWrapper.select("measurement_point_id","flicker_over_day", "inuharm_over_day").
in("measurement_point_id", collect1).
between("data_date",begin,end);
List<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMS = rMpSurplusHarmonicDetailMMapper.selectList(rMpSurplusHarmonicDetailMQueryWrapper);
@@ -498,7 +498,8 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService {
} else {
String value = df.format((float) rStatHarmonicQPO.getOverLimitMeasurementAccrued() / rStatOrgQPO.getEffectiveMeasurementAccrued());
rStatHarmonicQPO.setOverLimitMeasurementRatioAccrued(Double.parseDouble(value));
double v1 = Double.parseDouble(value);
rStatHarmonicQPO.setOverLimitMeasurementRatioAccrued(v1);
}
rStatHarmonicQPOList.add(rStatHarmonicQPO);
});
@@ -514,14 +515,14 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService {
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
queryWrapper.clear();
queryWrapper.select("freq_over_day", "v_dev_over_day", "v_over_day", "i_over_day", "unbalance_over_day", "i_neg_over_day").
queryWrapper.select("measurement_point_id","freq_over_day", "v_dev_over_day", "v_over_day", "i_over_day", "unbalance_over_day", "i_neg_over_day").
in("measurement_point_id", collect1).
between("data_date",begin,end);
List<RMpPartHarmonicDetailM> rMpPartHarmonicDetailMS = rMpPartHarmonicDetailMMapper.selectList(queryWrapper);
rMpSurplusHarmonicDetailMQueryWrapper.clear();
rMpSurplusHarmonicDetailMQueryWrapper.select("flicker_over_day", "inuharm_over_day").
rMpSurplusHarmonicDetailMQueryWrapper.select("measurement_point_id","flicker_over_day", "inuharm_over_day").
in("measurement_point_id", collect1).
between("data_date",begin,end);
List<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMS = rMpSurplusHarmonicDetailMMapper.selectList(rMpSurplusHarmonicDetailMQueryWrapper);
@@ -638,14 +639,14 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService {
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
queryWrapper.clear();
queryWrapper.select("freq_over_day", "v_dev_over_day", "v_over_day", "i_over_day", "unbalance_over_day", "i_neg_over_day").
queryWrapper.select("measurement_point_id","freq_over_day", "v_dev_over_day", "v_over_day", "i_over_day", "unbalance_over_day", "i_neg_over_day").
in("measurement_point_id", collect1).
between("data_date",begin,end);
List<RMpPartHarmonicDetailM> rMpPartHarmonicDetailMS = rMpPartHarmonicDetailMMapper.selectList(queryWrapper);
rMpSurplusHarmonicDetailMQueryWrapper.clear();
rMpSurplusHarmonicDetailMQueryWrapper.select("flicker_over_day", "inuharm_over_day").
rMpSurplusHarmonicDetailMQueryWrapper.select("measurement_point_id","flicker_over_day", "inuharm_over_day").
in("measurement_point_id", collect1).
between("data_date",begin,end);
List<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMS = rMpSurplusHarmonicDetailMMapper.selectList(rMpSurplusHarmonicDetailMQueryWrapper);
@@ -721,14 +722,14 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService {
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
queryWrapper.clear();
queryWrapper.select("freq_over_day", "v_dev_over_day", "v_over_day", "i_over_day", "unbalance_over_day", "i_neg_over_day").
queryWrapper.select("measurement_point_id","freq_over_day", "v_dev_over_day", "v_over_day", "i_over_day", "unbalance_over_day", "i_neg_over_day").
in("measurement_point_id", collect1).
between("data_date",begin,end);
List<RMpPartHarmonicDetailM> rMpPartHarmonicDetailMS = rMpPartHarmonicDetailMMapper.selectList(queryWrapper);
rMpSurplusHarmonicDetailMQueryWrapper.clear();
rMpSurplusHarmonicDetailMQueryWrapper.select("flicker_over_day", "inuharm_over_day").
rMpSurplusHarmonicDetailMQueryWrapper.select("measurement_point_id","flicker_over_day", "inuharm_over_day").
in("measurement_point_id", collect1).
between("data_date",begin,end);
List<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMS = rMpSurplusHarmonicDetailMMapper.selectList(rMpSurplusHarmonicDetailMQueryWrapper);
@@ -1429,31 +1430,29 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService {
private Integer getOverLimitMeasurementAccruedTime(DictData dictData, List<RMpPartHarmonicDetailM> rMpPartHarmonicDetailMS, List<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMS) {
Integer value = 0;
if (Objects.equals(dictData.getCode(),DicDataEnum.VOLTAGE_DEV.getCode())) {
value = Integer.valueOf(rMpPartHarmonicDetailMS.stream().filter(temp ->temp.getVDevOverDay()>0).count()+"");
value = Integer.valueOf(rMpPartHarmonicDetailMS.stream().filter(temp ->temp.getVDevOverDay()>0).map(RMpPartHarmonicDetailM::getMeasurementPointId).distinct().count()+"");
}
if (Objects.equals(dictData.getCode(),DicDataEnum.FLICKER.getCode())) {
value = Integer.valueOf(rMpSurplusHarmonicDetailMS.stream().filter(temp ->temp.getFlickerOverDay()>0).count()+"");
value = Integer.valueOf(rMpSurplusHarmonicDetailMS.stream().filter(temp ->temp.getFlickerOverDay()>0).map(RMpSurplusHarmonicDetailM::getMeasurementPointId).distinct().count()+"");
}
if (Objects.equals(dictData.getCode(),DicDataEnum.HARMONIC_VOLTAGE.getCode())) {
value = Integer.valueOf(rMpPartHarmonicDetailMS.stream().filter(temp ->temp.getVOverDay()>0).count()+"");
value = Integer.valueOf(rMpPartHarmonicDetailMS.stream().filter(temp ->temp.getVOverDay()>0).map(RMpPartHarmonicDetailM::getMeasurementPointId).distinct().count()+"");
}
if (Objects.equals(dictData.getCode(),DicDataEnum.HARMONIC_CURRENT.getCode())) {
value = Integer.valueOf(rMpPartHarmonicDetailMS.stream().filter(temp ->temp.getIOverDay()>0).count()+"");
value = Integer.valueOf(rMpPartHarmonicDetailMS.stream().filter(temp ->temp.getIOverDay()>0).map(RMpPartHarmonicDetailM::getMeasurementPointId).distinct().count()+"");
}
if (Objects.equals(dictData.getCode(),DicDataEnum.INTERHARMONIC_VOLTAGE.getCode())) {
value = Integer.valueOf(rMpSurplusHarmonicDetailMS.stream().filter(temp ->temp.getInuharmOverDay()>0).count()+"");
value = Integer.valueOf(rMpSurplusHarmonicDetailMS.stream().filter(temp ->temp.getInuharmOverDay()>0).map(RMpSurplusHarmonicDetailM::getMeasurementPointId).distinct().count()+"");
}
if (Objects.equals(dictData.getCode(),DicDataEnum.PHASE_VOLTAGE.getCode())) {
value = Integer.valueOf(rMpPartHarmonicDetailMS.stream().filter(temp ->temp.getUnbalanceOverDay()>0).count()+"");
value = Integer.valueOf(rMpPartHarmonicDetailMS.stream().filter(temp ->temp.getUnbalanceOverDay()>0).map(RMpPartHarmonicDetailM::getMeasurementPointId).distinct().count()+"");
}
if (Objects.equals(dictData.getCode(),DicDataEnum.FREQUENCY_DEV.getCode())) {
value = Integer.valueOf(rMpPartHarmonicDetailMS.stream().filter(temp ->temp.getFreqOverDay()>0).count()+"");
value = Integer.valueOf(rMpPartHarmonicDetailMS.stream().filter(temp ->temp.getFreqOverDay()>0).map(RMpPartHarmonicDetailM::getMeasurementPointId).distinct().count()+"");
}
if (Objects.equals(dictData.getCode(),DicDataEnum.NEG_CURRENT.getCode())) {
value = Integer.valueOf(rMpPartHarmonicDetailMS.stream().filter(temp ->temp.getINegOverDay()>0).count()+"");
value = Integer.valueOf(rMpPartHarmonicDetailMS.stream().filter(temp ->temp.getINegOverDay()>0).map(RMpPartHarmonicDetailM::getMeasurementPointId).distinct().count()+"");
}
return value;
}

View File

@@ -2,13 +2,13 @@ package com.njcn.prepare.harmonic.service.mysql.newalgorithm;
import com.github.jeffreyning.mybatisplus.service.IMppService;
import com.njcn.device.biz.pojo.dto.DeptGetSubStationDTO;
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatSubstationVoltageMPO;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
*
* Description:
* Date: 2023/8/4 14:57【需求编号】
*
@@ -16,7 +16,6 @@ import java.util.List;
* @version V1.0.0
*/
public interface RStatSubstationVoltageMPOService extends IMppService<RStatSubstationVoltageMPO> {
void handler(CalculatedParam calculatedParam);
void handler(List<DeptGetSubStationDTO> data, String dataDate, Integer type);
}

View File

@@ -1,11 +1,26 @@
package com.njcn.prepare.harmonic.service.mysql.newalgorithm.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.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
import com.njcn.device.biz.pojo.dto.DeptGetSubStationDTO;
import com.njcn.device.biz.pojo.dto.LineDevGetBandDTO;
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
import com.njcn.device.biz.pojo.dto.SubGetBase;
import com.njcn.harmonic.pojo.po.RMpEventDetailMPO;
import com.njcn.harmonic.pojo.po.RMpPartHarmonicDetailM;
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpPartHarmonicDetailMMapper;
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
import com.njcn.prepare.harmonic.pojo.po.RStatSubstationMPO;
import com.njcn.prepare.harmonic.service.mysql.line.RMpEventDetailMService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
@@ -29,37 +44,61 @@ import org.springframework.util.CollectionUtils;
* @version V1.0.0
*/
@Service
@RequiredArgsConstructor
@Slf4j
public class RStatSubstationVoltageMPOServiceImpl extends MppServiceImpl<RStatSubstationVoltageMPOMapper, RStatSubstationVoltageMPO> implements RStatSubstationVoltageMPOService{
private final RMpPartHarmonicDetailMMapper rMpPartHarmonicDetailMMapper;
private final RMpEventDetailMService rMpEventDetailMService;
@Override
public void handler(List<DeptGetSubStationDTO> data, String dataDate, Integer type) {
public void handler(CalculatedParam calculatedParam) {
DateTime begin = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
DateTime end = DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
//变电站id集合
List<DeptGetSubStationDTO.Info> idList = calculatedParam.getIdList();
List<RStatSubstationVoltageMPO> result=new ArrayList<>();
Date date = DateUtil.parse(dataDate);
LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
List<String> zwList = new ArrayList<>();
List<String> pwList = new ArrayList<>();
for (DeptGetSubStationDTO datum : data) {
if (!CollectionUtils.isEmpty(datum.getStationIds())) {
zwList.addAll(datum.getStationIds());
RStatSubstationVoltageMPO po;
QueryWrapper<RMpPartHarmonicDetailM> queryWrapper = new QueryWrapper<>();
QueryWrapper<RMpEventDetailMPO> queryWrapper2 = new QueryWrapper<>();
//单位
for (DeptGetSubStationDTO.Info info : idList) {
List<SubGetBase> stationIds = info.getStationIds();
//根据电压等级进行分组
Map<String, List<SubGetBase>> subMap = stationIds.stream().collect(Collectors.groupingBy(SubGetBase::getVoltageLevel));
for (Map.Entry<String, List<SubGetBase>> stringListEntry : subMap.entrySet()) {
po=new RStatSubstationVoltageMPO();
po.setOrgNo(info.getUnitId());
po.setDataDate(begin);
po.setSubstationVoltage(stringListEntry.getKey());
po.setSubstationCount(stringListEntry.getValue().size());
Integer harmonicCount=0;
Integer eventCount=0;
for (SubGetBase subGetBase : stringListEntry.getValue()) {
queryWrapper.clear();
queryWrapper.select("measurement_over_day")
.in("measurement_point_id",subGetBase.getUnitChildrenList())
.between("data_date",begin,end);
List<RMpPartHarmonicDetailM> rMpPartHarmonicDetailMS = rMpPartHarmonicDetailMMapper.selectList(queryWrapper);
long count = rMpPartHarmonicDetailMS.stream().filter(x -> x.getMeasurementOverDay() > 0).count();
if(count>0){
harmonicCount=harmonicCount+1;
}
if (!CollectionUtils.isEmpty(datum.getPwStationIds())) {
pwList.addAll(datum.getPwStationIds());
queryWrapper2.clear();
queryWrapper2.in("measurement_point_id",subGetBase.getUnitChildrenList())
.between("data_date",begin,end);
List<RMpEventDetailMPO> list = rMpEventDetailMService.list(queryWrapper2);
long count1 = list.stream().filter(x -> x.getSagTimes() > 0 || x.getSwellTimes() > 0 || x.getInterruptTimes() > 0).count();
if(count1>0){
eventCount=eventCount+1;
}
}
zwList.addAll(pwList);
List<String> resultL = zwList.stream().distinct().collect(Collectors.toList());
if (!CollectionUtils.isEmpty(resultL)) {
resultL.forEach(temp->{
});
po.setHarmonicCount(harmonicCount);
po.setEventCount(eventCount);
result.add(po);
}
}
if (!CollectionUtils.isEmpty(result)) {
this.saveOrUpdateBatchByMultiId(result, 500);
}