河北超高压算法调整

This commit is contained in:
2024-01-12 15:03:36 +08:00
parent a031a872fa
commit e80daaab08
2 changed files with 103 additions and 76 deletions

View File

@@ -124,20 +124,30 @@ public class REvaluationDataServiceImpl extends ServiceImpl<RUploadEvaluationDat
if (Objects.equals(item.getHarmonicNum(),0)){ if (Objects.equals(item.getHarmonicNum(),0)){
item.setHarmonicNum(null); item.setHarmonicNum(null);
} }
if (Objects.equals(item.getVoltageLevel(),"0")){
item.setVoltageLevel(null);
}
if (Objects.equals(item.getCityId(),"")){
item.setCityId(null);
}
if (Objects.equals(item.getCountyId(),"")){
item.setCountyId(null);
}
BigDecimal four = BigDecimal.valueOf(item.getMonitorBusRate()); BigDecimal four = BigDecimal.valueOf(item.getMonitorBusRate());
double value = four.setScale(4,BigDecimal.ROUND_HALF_UP).doubleValue(); double value = four.setScale(4,BigDecimal.ROUND_HALF_UP).doubleValue();
item.setMonitorBusRate(value); item.setMonitorBusRate(value);
item.setVoltageLevel(getVoltage(item.getVoltageLevel())); item.setVoltageLevel(getVoltage(item.getVoltageLevel()));
}).collect(Collectors.toList()); }).collect(Collectors.toList());
//组装数据 log.info(JSON.toJSONString(l1));
SendParam sp = new SendParam(); // //组装数据
sp.setStats(l1); // SendParam sp = new SendParam();
sp.setStatisticalDate(param.getTime()); // sp.setStats(l1);
//上送数据 // sp.setStatisticalDate(param.getTime());
Map<String, String> send = GwSendUtil.send(sp, GWSendEnum.EVALUATION); // //上送数据
//获取返回结果 // Map<String, String> send = GwSendUtil.send(sp, GWSendEnum.EVALUATION);
List<String> l = pendingIds.get(i).stream().map(PqEvaluationCreateDTO::getId).collect(Collectors.toList()); // //获取返回结果
returnInformation(i,l,send); // List<String> l = pendingIds.get(i).stream().map(PqEvaluationCreateDTO::getId).collect(Collectors.toList());
// returnInformation(i,l,send);
} }
return "上送成功:成功数据" + list.size() + ""; return "上送成功:成功数据" + list.size() + "";
} }

View File

@@ -1,13 +1,15 @@
package com.njcn.prepare.harmonic.service.mysql.upload.impl; package com.njcn.prepare.harmonic.service.mysql.upload.impl;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.common.pojo.enums.common.DataStateEnum; import com.njcn.common.pojo.enums.common.DataStateEnum;
import com.njcn.device.biz.commApi.CommTerminalGeneralClient; import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
import com.njcn.device.biz.pojo.dto.DeptGetBase; 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.DeptGetChildrenMoreDTO;
import com.njcn.device.biz.pojo.dto.DeptGetDeviceDTO;
import com.njcn.device.biz.pojo.param.DeptGetLineParam; import com.njcn.device.biz.pojo.param.DeptGetLineParam;
import com.njcn.device.pms.pojo.po.GeneratrixWire; import com.njcn.device.pms.pojo.po.GeneratrixWire;
import com.njcn.device.pms.pojo.po.Monitor; import com.njcn.device.pms.pojo.po.Monitor;
@@ -66,11 +68,13 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl<RUploadEva
List<DictData> dicDataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_STATE.getCode()).getData(); List<DictData> dicDataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_STATE.getCode()).getData();
DictData dictData = dicDataList.stream().filter(o->Objects.equals(o.getCode(), DicDataEnum.RUN.getCode())).findFirst().orElse(null); DictData dictData = dicDataList.stream().filter(o->Objects.equals(o.getCode(), DicDataEnum.RUN.getCode())).findFirst().orElse(null);
//获取单位下各电压等级数据 //获取单位下各电压等级数据
List<BusBarDto> busBarList = getBusBarNum(list1,list2,dictData.getId()); DeptGetLineParam deptGetLineParam = new DeptGetLineParam();
List<BusBarDto> allDept = getAllDeptLineNum(busBarList);
//获取省级单位id
Dept data = deptFeignClient.getRootDept().getData(); Dept data = deptFeignClient.getRootDept().getData();
deptGetLineParam.setDeptId(data.getId());
List<DeptGetBusBarDTO> barDto = commTerminalGeneralClient.deptBusBar(deptGetLineParam).getData();
List<BusBarDto> busBarList = getBusBarNum(list1,list2,barDto,dictData.getId());
List<BusBarDto> allDept = getAllDeptLineNum(busBarList);
//获取省级单位id
String provinceId = deptFeignClient.getDepSonIdByDeptId(data.getId()).getData().get(0); String provinceId = deptFeignClient.getDepSonIdByDeptId(data.getId()).getData().get(0);
Dept dept = deptFeignClient.getDeptById(provinceId).getData(); Dept dept = deptFeignClient.getDeptById(provinceId).getData();
//获取所有单位 //获取所有单位
@@ -85,49 +89,47 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl<RUploadEva
return; return;
} }
List<RDimVoltageD> l1 = dimMap.get(item.getUnitId()); List<RDimVoltageD> l1 = dimMap.get(item.getUnitId());
if (CollectionUtil.isNotEmpty(l1)){ if (CollUtil.isNotEmpty(l1)){
l1.forEach(item2->{ l1.forEach(item2->{
RUploadEvaluationDataD dto = getLineNum(allDept,item2.getVoltageType(),item.getUnitId()); RUploadEvaluationDataD dto = getLineNum(allDept,item2.getVoltageType(),item.getUnitId());
if (dto.getMonitorBusNum() !=0 ){ RUploadEvaluationDataD rUploadEvaluationDataD = new RUploadEvaluationDataD();
RUploadEvaluationDataD rUploadEvaluationDataD = new RUploadEvaluationDataD(); rUploadEvaluationDataD.setProvinceId(dept.getCode());
rUploadEvaluationDataD.setProvinceId(dept.getCode()); rUploadEvaluationDataD.setProvinceName(dept.getName());
rUploadEvaluationDataD.setProvinceName(dept.getName()); rUploadEvaluationDataD.setDataSources(UploadEnum.DATA_SOURCES_01.getCode());
rUploadEvaluationDataD.setDataSources(UploadEnum.DATA_SOURCES_01.getCode()); rUploadEvaluationDataD.setStatisticalDate(calculatedParam.getDataDate());
rUploadEvaluationDataD.setStatisticalDate(calculatedParam.getDataDate()); rUploadEvaluationDataD.setStatisticalType(UploadEnum.STATISTICAL_TYPE_03.getCode());
rUploadEvaluationDataD.setStatisticalType(UploadEnum.STATISTICAL_TYPE_03.getCode()); rUploadEvaluationDataD.setUploadStatus(Integer.parseInt(UploadEnum.UPLOAD_STATUS_0.getCode()));
rUploadEvaluationDataD.setUploadStatus(Integer.parseInt(UploadEnum.UPLOAD_STATUS_0.getCode())); judgeLevel(item.getDeptLevel(),rUploadEvaluationDataD,item.getUnitId(),item.getUnitName(),deptList,deptMap);
judgeLevel(item.getDeptLevel(),rUploadEvaluationDataD,item.getUnitId(),item.getUnitName(),deptList,deptMap); //电压
//电压 RUploadEvaluationDataD dto1 = channelData(rUploadEvaluationDataD,item2.getV(),UploadEnum.INDEX_TYPE_01.getCode(),0,item2.getVoltageType(),dto);
RUploadEvaluationDataD dto1 = channelData(rUploadEvaluationDataD,item2.getV(),UploadEnum.INDEX_TYPE_01.getCode(),0,item2.getVoltageType(),dto); result.add(dto1);
result.add(dto1); //长时间闪变
//长时间闪变 RUploadEvaluationDataD dto2 = channelData(rUploadEvaluationDataD,item2.getPst(),UploadEnum.INDEX_TYPE_02.getCode(),0,item2.getVoltageType(),dto);
RUploadEvaluationDataD dto2 = channelData(rUploadEvaluationDataD,item2.getPst(),UploadEnum.INDEX_TYPE_02.getCode(),0,item2.getVoltageType(),dto); result.add(dto2);
result.add(dto2); //三相电压不平衡
//三相电压不平衡 RUploadEvaluationDataD dto3 = channelData(rUploadEvaluationDataD,item2.getVUnbalance(),UploadEnum.INDEX_TYPE_03.getCode(),0,item2.getVoltageType(),dto);
RUploadEvaluationDataD dto3 = channelData(rUploadEvaluationDataD,item2.getVUnbalance(),UploadEnum.INDEX_TYPE_03.getCode(),0,item2.getVoltageType(),dto); result.add(dto3);
result.add(dto3); //电压总谐波畸变率
//电压总谐波畸变率 RUploadEvaluationDataD dto4 = channelData(rUploadEvaluationDataD,item2.getVThd(),UploadEnum.INDEX_TYPE_04.getCode(),0,item2.getVoltageType(),dto);
RUploadEvaluationDataD dto4 = channelData(rUploadEvaluationDataD,item2.getVThd(),UploadEnum.INDEX_TYPE_04.getCode(),0,item2.getVoltageType(),dto); result.add(dto4);
result.add(dto4); //各次谐波电压
//各次谐波电压 List<Double> harmonic = Arrays.asList(item2.getV2(),item2.getV3(),item2.getV4(),item2.getV5()
List<Double> harmonic = Arrays.asList(item2.getV2(),item2.getV3(),item2.getV4(),item2.getV5() ,item2.getV6(),item2.getV7(),item2.getV8(),item2.getV9(),item2.getV10(),item2.getV11()
,item2.getV6(),item2.getV7(),item2.getV8(),item2.getV9(),item2.getV10(),item2.getV11() ,item2.getV12(),item2.getV13(),item2.getV14(),item2.getV15(),item2.getV16(),item2.getV17()
,item2.getV12(),item2.getV13(),item2.getV14(),item2.getV15(),item2.getV16(),item2.getV17() ,item2.getV18(),item2.getV19(),item2.getV20(),item2.getV21(),item2.getV22(),item2.getV23()
,item2.getV18(),item2.getV19(),item2.getV20(),item2.getV21(),item2.getV22(),item2.getV23() ,item2.getV24(),item2.getV25(),item2.getV26(),item2.getV27(),item2.getV28(),item2.getV29()
,item2.getV24(),item2.getV25(),item2.getV26(),item2.getV27(),item2.getV28(),item2.getV29() ,item2.getV30(),item2.getV31(),item2.getV32(),item2.getV33(),item2.getV34(),item2.getV35()
,item2.getV30(),item2.getV31(),item2.getV32(),item2.getV33(),item2.getV34(),item2.getV35() ,item2.getV36(),item2.getV37(),item2.getV38(),item2.getV39(),item2.getV40(),item2.getV41()
,item2.getV36(),item2.getV37(),item2.getV38(),item2.getV39(),item2.getV40(),item2.getV41() ,item2.getV42(),item2.getV43(),item2.getV44(),item2.getV45(),item2.getV46(),item2.getV47()
,item2.getV42(),item2.getV43(),item2.getV44(),item2.getV45(),item2.getV46(),item2.getV47() ,item2.getV48(),item2.getV49(),item2.getV50());
,item2.getV48(),item2.getV49(),item2.getV50()); channelHarmonicData(rUploadEvaluationDataD,result,harmonic,UploadEnum.INDEX_TYPE_05.getCode(),item2.getVoltageType(),dto);
channelHarmonicData(rUploadEvaluationDataD,result,harmonic,UploadEnum.INDEX_TYPE_05.getCode(),item2.getVoltageType(),dto); //负序电流
//负序电流 RUploadEvaluationDataD dto6 = channelData(rUploadEvaluationDataD,item2.getINeg(),UploadEnum.INDEX_TYPE_06.getCode(),0,item2.getVoltageType(),dto);
RUploadEvaluationDataD dto6 = channelData(rUploadEvaluationDataD,item2.getINeg(),UploadEnum.INDEX_TYPE_06.getCode(),0,item2.getVoltageType(),dto); result.add(dto6);
result.add(dto6);
}
}); });
} }
}); });
if (CollectionUtil.isNotEmpty(result)){ if (CollUtil.isNotEmpty(result)){
this.saveOrUpdateBatchByMultiId(result,1000); this.saveOrUpdateBatchByMultiId(result,1000);
} }
} }
@@ -141,7 +143,7 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl<RUploadEva
LambdaQueryWrapper<RDimVoltageD> lambdaQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<RDimVoltageD> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(RDimVoltageD::getStatisDate,time); lambdaQueryWrapper.eq(RDimVoltageD::getStatisDate,time);
List<RDimVoltageD> list = rDimVoltageDMapper.selectList(lambdaQueryWrapper); List<RDimVoltageD> list = rDimVoltageDMapper.selectList(lambdaQueryWrapper);
if (CollectionUtil.isNotEmpty(list)){ if (CollUtil.isNotEmpty(list)){
map = list.stream().collect(Collectors.groupingBy(RDimVoltageD::getOrgId)); map = list.stream().collect(Collectors.groupingBy(RDimVoltageD::getOrgId));
} }
return map; return map;
@@ -168,30 +170,45 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl<RUploadEva
/** /**
* 获取已知单位母线数量 * 获取已知单位母线数量
*/ */
public List<BusBarDto> getBusBarNum(List<Monitor> list1, List<GeneratrixWire> list2, String code) { public List<BusBarDto> getBusBarNum(List<Monitor> list1, List<GeneratrixWire> list2, List<DeptGetBusBarDTO> dto, String code) {
List<BusBarDto> result = new ArrayList<>(); List<BusBarDto> result = new ArrayList<>();
Map<String,List<DeptGetBusBarDTO>> unitMap = dto.stream().collect(Collectors.groupingBy(DeptGetBusBarDTO::getUnitId));
Map<String, List<Monitor>> map = list1.stream().collect(Collectors.groupingBy(Monitor::getOrgId)); Map<String, List<Monitor>> map = list1.stream().collect(Collectors.groupingBy(Monitor::getOrgId));
map.forEach((k,v)->{ unitMap.forEach((k,v)->{
//获取监测的母线
List<Monitor> l3 = map.get(k);
//组装数据
List<BusBarDto.VoltageChild> children = new ArrayList<>(); List<BusBarDto.VoltageChild> children = new ArrayList<>();
BusBarDto busBarDto = new BusBarDto(); BusBarDto busBarDto = new BusBarDto();
busBarDto.setOrgId(k); busBarDto.setOrgId(k);
//所有母线集合 //当前单位下所有母线数量
List<String> allLine = v.stream().map(Monitor::getLineId).collect(Collectors.toList()); List<String> l1 = v.get(0).getBusBarIds();
//在运母线集合 if (CollUtil.isNotEmpty(l1)){
List<String> online = v.stream().filter(o->Objects.equals(o.getMonitorState(),code)).map(Monitor::getLineId).collect(Collectors.toList()); //获取所有母线的基本信息,用于电压等级分类
List<GeneratrixWire> list3 = list2.stream().filter(o->allLine.contains(o.getId())).collect(Collectors.toList()); List<GeneratrixWire> l2 = list2.stream().filter(o->l1.contains(o.getId())).collect(Collectors.toList());
Map<String, List<GeneratrixWire>> map2 = list3.stream().collect(Collectors.groupingBy(GeneratrixWire::getScale)); //根据电压等级分组
map2.forEach((k1,v1)->{ Map<String, List<GeneratrixWire>> map2 = l2.stream().collect(Collectors.groupingBy(GeneratrixWire::getScale));
BusBarDto.VoltageChild voltageChild = new BusBarDto.VoltageChild(); map2.forEach((k1,v1)->{
voltageChild.setVoltageLevel(k1); BusBarDto.VoltageChild voltageChild = new BusBarDto.VoltageChild();
voltageChild.setMonitorBusNum(v1.size()); voltageChild.setVoltageLevel(k1);
List<GeneratrixWire> list4 = v1.stream().filter(o->online.contains(o.getId())).collect(Collectors.toList()); voltageChild.setOnlineBusNum(v1.size());
voltageChild.setOnlineBusNum(list4.size()); if (CollUtil.isNotEmpty(l3)){
voltageChild.setMonitorRate(list4.size()*100.0/v1.size()); List<String> online = l3.stream().filter(o->Objects.equals(o.getMonitorState(),code)).map(Monitor::getLineId).collect(Collectors.toList());
children.add(voltageChild); List<GeneratrixWire> l4 = list2.stream().filter(o->online.contains(o.getId())).collect(Collectors.toList());
}); Map<String, List<GeneratrixWire>> map3 = l4.stream().collect(Collectors.groupingBy(GeneratrixWire::getScale));
busBarDto.setVoltageChild(children); int num = Objects.isNull(map3.get(k1))?0:map3.get(k1).size();
result.add(busBarDto); voltageChild.setMonitorBusNum(num);
voltageChild.setMonitorRate(num*100.0/v1.size());
} else {
voltageChild.setMonitorBusNum(0);
voltageChild.setMonitorRate(0.0);
}
children.add(voltageChild);
});
busBarDto.setVoltageChild(children);
result.add(busBarDto);
}
}); });
return result; return result;
} }
@@ -214,7 +231,7 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl<RUploadEva
busBarDto.setOrgId(item.getUnitId()); busBarDto.setOrgId(item.getUnitId());
//获取当前部门下 包含母线数量的部门 //获取当前部门下 包含母线数量的部门
List<BusBarDto> newList = list.stream().filter(o->item.getUnitChildrenList().contains(o.getOrgId())).collect(Collectors.toList()); List<BusBarDto> newList = list.stream().filter(o->item.getUnitChildrenList().contains(o.getOrgId())).collect(Collectors.toList());
if (CollectionUtil.isNotEmpty(newList)){ if (CollUtil.isNotEmpty(newList)){
newList.forEach(item2->{ newList.forEach(item2->{
child.addAll(item2.getVoltageChild()); child.addAll(item2.getVoltageChild());
}); });
@@ -224,9 +241,9 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl<RUploadEva
c1.setVoltageLevel(k); c1.setVoltageLevel(k);
int monitorBusNum = v.stream().mapToInt(BusBarDto.VoltageChild::getMonitorBusNum).sum(); int monitorBusNum = v.stream().mapToInt(BusBarDto.VoltageChild::getMonitorBusNum).sum();
c1.setMonitorBusNum(monitorBusNum); c1.setMonitorBusNum(monitorBusNum);
int online = v.stream().mapToInt(BusBarDto.VoltageChild::getOnlineBusNum).sum(); int online = v.stream().mapToInt(BusBarDto.VoltageChild::getOnlineBusNum).sum()/3;
c1.setOnlineBusNum(online); c1.setOnlineBusNum(online);
c1.setMonitorRate(monitorBusNum==0?0:online*100.0/monitorBusNum); c1.setMonitorRate(online==0?0:monitorBusNum*100.0/online);
children.add(c1); children.add(c1);
}); });
busBarDto.setVoltageChild(children); busBarDto.setVoltageChild(children);
@@ -244,7 +261,7 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl<RUploadEva
BusBarDto dto2 = allDept.stream().filter(o->Objects.equals(o.getOrgId(),deptId)).findFirst().orElse(null); BusBarDto dto2 = allDept.stream().filter(o->Objects.equals(o.getOrgId(),deptId)).findFirst().orElse(null);
if (!Objects.isNull(dto2)){ if (!Objects.isNull(dto2)){
List<BusBarDto.VoltageChild> list = dto2.getVoltageChild(); List<BusBarDto.VoltageChild> list = dto2.getVoltageChild();
if (CollectionUtil.isNotEmpty(list)){ if (CollUtil.isNotEmpty(list)){
list.forEach(item->{ list.forEach(item->{
if (Objects.equals(item.getVoltageLevel(),voltage)){ if (Objects.equals(item.getVoltageLevel(),voltage)){
dto.setMonitorBusNum(item.getMonitorBusNum()); dto.setMonitorBusNum(item.getMonitorBusNum());