河北两级贯通接口调整

This commit is contained in:
cdf
2024-06-12 08:33:37 +08:00
parent 2e756e0e38
commit b13e0c22de
18 changed files with 487 additions and 264 deletions

View File

@@ -96,4 +96,9 @@ public class LineDevGetDTO {
* oracle监测点id
*/
private Integer oracleLineId;
/**
* 接线方式 0.星型 1.星三角 2.三角
*/
private String wiringMethod;
}

View File

@@ -123,16 +123,22 @@ public class CommTerminalServiceImpl implements CommTerminalService {
//电压等级
// List<DictData> voltageDic = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_VOLTAGE.getCode()).getData();
//Map<String, DictData> mapVoltage = voltageDic.stream().collect(Collectors.toMap(DictData::getId, Function.identity()));
//接线方式
List<DictData> wireList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_CONNECT.getCode()).getData();
Map<String,DictData> wireMap = wireList.stream().collect(Collectors.toMap(DictData::getId,Function.identity()));
//监测点状态
DictData dictData = dicDataFeignClient.getDicDataByNameAndTypeName(DicDataTypeEnum.LINE_STATE.getName(), DicDataEnum.RUN.getName()).getData();
Map<String, List<Monitor>> map = new HashMap<>();
Map<String, List<Monitor>> finalMap;
if (deptGetLineParam.getSystemType() == 0 || deptGetLineParam.getSystemType() == 2) {
List<Monitor> monitorList = monitorMapper.selectList(new LambdaQueryWrapper<Monitor>()
.eq(Monitor::getStatus, DataStateEnum.ENABLE.getCode())
.eq(Objects.nonNull(deptGetLineParam.getIsUpToGrid()), Monitor::getIsUpToGrid, deptGetLineParam.getIsUpToGrid())
.eq(deptGetLineParam.getMonitorStateRunning(), Monitor::getMonitorState, dictData.getId()));
map = monitorList.stream().collect(Collectors.groupingBy(Monitor::getOrgId));
finalMap = monitorList.stream().collect(Collectors.groupingBy(Monitor::getOrgId));
}else {
finalMap = new HashMap<>();
}
//TODO 配网数据量巨大,暂时注释
/* Map<String, List<PmsMonitorBaseDTO>> mapPms = new HashMap<>();
@@ -141,7 +147,7 @@ public class CommTerminalServiceImpl implements CommTerminalService {
mapPms = pmsMonitorBaseDTOList.stream().collect(Collectors.groupingBy(PmsMonitorBaseDTO::getOrgId));
}
Map<String, List<PmsMonitorBaseDTO>> finalMapPms = mapPms;*/
Map<String, List<Monitor>> finalMap = map;
temDept.forEach(item -> {
DeptGetChildrenMoreDTO deptGetChildrenMoreDTO = new DeptGetChildrenMoreDTO();
deptGetChildrenMoreDTO.setUnitId(item.getUnitId());
@@ -172,6 +178,7 @@ public class CommTerminalServiceImpl implements CommTerminalService {
lineDevGetDTO.setIsUpToGrid(it.getIsUpToGrid());
lineDevGetDTO.setIsUploadHead(it.getIsUploadHead());
lineDevGetDTO.setMonitorUploadStatus(it.getMonitorUploadStatus());
lineDevGetDTO.setWiringMethod(wireMap.get(it.getTerminalWiringMethod()).getValue());
lineList.add(lineDevGetDTO);
});
}

View File

@@ -18,6 +18,8 @@ public class LineDataDto {
private String lineId;
private Integer terminalWiringMethod;
private Double rms;
private Double vUnbalance;

View File

@@ -27,6 +27,12 @@ public class RDimVoltageD {
@MppMultiId
private LocalDate statisDate;
/**
* 数据类型(avg:平均值 sd:标准差)
*/
@MppMultiId
private String dataType;
/**
* 单位id
*/

View File

@@ -0,0 +1,63 @@
package com.njcn.harmonic.pojo.po.upload;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import com.njcn.db.bo.BaseEntity;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
* 调度算法执行结果记录表
* </p>
*
* @author hongawen
* @since 2024-06-06
*/
@Getter
@Setter
@TableName("r_upload_data_log")
public class RUploadDataLog {
private static final long serialVersionUID = 1L;
/**
* 统计日期
*/
@MppMultiId
private LocalDate statisticDate;
/**
* 大类 0.国网上送数据
*/
@MppMultiId
private Integer bigType;
/**
* 小类 0.基准水平 1.主网监测点 2.电站 3.干扰源
*/
@MppMultiId
private Integer smallType;
/**
* 0.失败 1.成功
*/
private Integer result;
/**
* 上送结果描述
*/
private String resultMsg;
/**
* 创建时间
*/
private LocalDateTime createTime;
}

View File

@@ -0,0 +1,22 @@
package com.njcn.harmonic.controller.upload;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.njcn.web.controller.BaseController;
/**
* <p>
* 调度算法执行结果记录表 前端控制器
* </p>
*
* @author hongawen
* @since 2024-06-06
*/
@RestController
@RequestMapping("/rUploadDataLog")
public class RUploadDataLogController extends BaseController {
}

View File

@@ -0,0 +1,18 @@
package com.njcn.harmonic.mapper.upload;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.harmonic.pojo.po.upload.RUploadDataLog;
/**
* <p>
* 调度算法执行结果记录表 Mapper 接口
* </p>
*
* @author hongawen
* @since 2024-06-06
*/
public interface RUploadDataLogMapper extends MppBaseMapper<RUploadDataLog> {
}

View File

@@ -60,7 +60,7 @@ public class RMpPartHarmonicDetailDServiceImpl extends ServiceImpl<RMpPartHarmon
@Override
public Page<RMpPartHarmonicDetailDTO> getRMpPartHarmonicDetail(RMpPartHarmonicDetailQueryParam param) {
String start = DateUtil.format(DateUtil.offsetDay(DateUtil.parse(param.getEndTime(), DatePattern.NORM_DATE_PATTERN),-15),DatePattern.NORM_DATE_PATTERN);
//String start = DateUtil.format(DateUtil.offsetDay(DateUtil.parse(param.getEndTime(), DatePattern.NORM_DATE_PATTERN),-15),DatePattern.NORM_DATE_PATTERN);
List<String> lineIdLists = deptLineFeignClient.getLineNodeByDeptId(param.getOrgNo()).getData();
if (CollectionUtils.isEmpty(lineIdLists)){
@@ -70,7 +70,7 @@ public class RMpPartHarmonicDetailDServiceImpl extends ServiceImpl<RMpPartHarmon
List<RStatLimitRateDPO> rStatLimitRateDPOs = irStatLimitRateDService.lambdaQuery()
.in(RStatLimitRateDPO::getLineId,lineIdLists)
.eq(RStatLimitRateDPO::getPhasicType,"T")
.between(RStatLimitRateDPO::getTime, start+" 00:00:00", param.getEndTime()+" 23:59:59").list();
.between(RStatLimitRateDPO::getTime, param.getStartTime()+" 00:00:00", param.getEndTime()+" 23:59:59").list();
List<RMpPartHarmonicDetailDTO> rMpPartHarmonicDetailDTOS = new ArrayList<>();
LocalDate date = LocalDate.parse(param.getStartTime());
YearMonth yearMonth = YearMonth.from(date);

View File

@@ -0,0 +1,18 @@
package com.njcn.harmonic.service.upload;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.jeffreyning.mybatisplus.service.IMppService;
import com.njcn.harmonic.pojo.po.upload.RUploadDataLog;
/**
* <p>
* 调度算法执行结果记录表 服务类
* </p>
*
* @author hongawen
* @since 2024-06-06
*/
public interface IRUploadDataLogService extends IMppService<RUploadDataLog> {
}

View File

@@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.text.StrBuilder;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
@@ -30,6 +31,7 @@ import com.njcn.harmonic.pojo.po.upload.*;
import com.njcn.harmonic.pojo.vo.upload.DimBusBarVO;
import com.njcn.harmonic.pojo.vo.upload.UploadEvaluationDataVo;
import com.njcn.harmonic.service.upload.IEvaluationDataService;
import com.njcn.harmonic.service.upload.IRUploadDataLogService;
import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.enums.DicDataEnum;
import com.njcn.system.pojo.po.DictData;
@@ -47,7 +49,10 @@ import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -84,6 +89,8 @@ public class REvaluationDataServiceImpl extends ServiceImpl<RUploadEvaluationDat
private final PmsMidLedgerClient pmsMidLedgerClient;
private final IRUploadDataLogService irUploadDataLogService;
@@ -121,6 +128,7 @@ public class REvaluationDataServiceImpl extends ServiceImpl<RUploadEvaluationDat
@Override
public String uploadEvaluationData(UploadParam param) {
LocalDate localDate = LocalDate.parse(param.getTime(), DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN));
List<RUploadEvaluationDataD> list;
//指定数据上送,不管之前有没有上送,都重新上送一次
//(预防之前上送过,修改数据后需要再次上送)
@@ -141,6 +149,8 @@ public class REvaluationDataServiceImpl extends ServiceImpl<RUploadEvaluationDat
//以尺寸100分片
List<List<RUploadEvaluationDataD>> partition = ListUtils.partition(list, 100);
//分片上传
StrBuilder resultLog = new StrBuilder();
AtomicBoolean resultFlag = new AtomicBoolean(true);
for (int i = 0; i < partition.size(); i++) {
//处理数据
List<RUploadEvaluationDataD> collect = partition.get(i).stream().peek(item -> {
@@ -181,11 +191,29 @@ public class REvaluationDataServiceImpl extends ServiceImpl<RUploadEvaluationDat
Map<String, String> send = GwSendUtil.send(sp, GWSendEnum.EVALUATION);
//获取返回结果
List<String> l = dtoList.stream().map(PqEvaluationCreateDTO::getId).collect(Collectors.toList());
returnInformation(i, l, send);
returnInformation(i, l, send,resultLog,resultFlag,localDate);
}
if(resultFlag.get()){
assUploadLog(localDate,resultLog,resultFlag);
}
return "上送成功:成功数据" + list.size() + "";
}
private void assUploadLog(LocalDate statisticDate,StrBuilder msg,AtomicBoolean resultFlag){
RUploadDataLog rUploadDataLog = new RUploadDataLog();
rUploadDataLog.setStatisticDate(statisticDate);
rUploadDataLog.setBigType(0);
rUploadDataLog.setSmallType(0);
rUploadDataLog.setCreateTime(LocalDateTime.now());
rUploadDataLog.setResult(resultFlag.get()?1:0);
rUploadDataLog.setResultMsg(msg.toString());
irUploadDataLogService.saveOrUpdateByMultiId(rUploadDataLog);
}
@Override
public Page<DimBusBarVO> getBaseEvaOnlineBusDetail(DimBusBarParam param) {
List<String> temBusIds = new ArrayList<>();
@@ -607,7 +635,9 @@ public class REvaluationDataServiceImpl extends ServiceImpl<RUploadEvaluationDat
* @param send 上送结果
* @return
*/
private void returnInformation(Integer step, List<String> ids, Map<String, String> send) {
private void returnInformation(Integer step, List<String> ids, Map<String, String> send,StrBuilder resultLog,AtomicBoolean resultFlag,LocalDate localDate) {
int start = step * 100;
int end = (step + 1) * 100;
if (send.containsKey("succeed")) {
String succeed = send.get("succeed");
if (succeed.contains("\\\"")) {
@@ -615,21 +645,30 @@ public class REvaluationDataServiceImpl extends ServiceImpl<RUploadEvaluationDat
}
Map mapData = JSON.parseObject(succeed, Map.class);
String status = mapData.get("status").toString();
if ("000000".equals(status)) {
//修改数据上送状态
updateState(ids);
String result = mapData.get("result").toString();
Map mapCount = JSON.parseObject(result, Map.class);
String count = mapCount.get("count").toString();
resultLog.append(" 上送" + start + "条至" + end + "条数据成功,返回成功条数: "+count+"; ");
} else {
resultFlag.set(false);
String errors = mapData.get("errors").toString();
int start = step * 100;
int end = (step + 1) * 100;
throw new BusinessException("上送" + start + "条至" + end + "条数据,上送失败:" + status + "_" + errors);
String errorMsg = " 上送" + start + "条至" + end + "条数据,上送失败:" + status + "_" + errors+" ;";
resultLog.append(errorMsg);
assUploadLog(localDate,resultLog,resultFlag);
throw new BusinessException(errorMsg);
}
} else {
resultFlag.set(false);
resultLog.append(" 上送" + start + "条至" + end + "条数据网络异常;");
assUploadLog(localDate,resultLog,resultFlag);
throw new BusinessException("当前时间段国网上送请求过多,请稍后再试");
}
}
/**

View File

@@ -0,0 +1,22 @@
package com.njcn.harmonic.service.upload.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.harmonic.mapper.upload.RUploadDataLogMapper;
import com.njcn.harmonic.pojo.po.upload.RUploadDataLog;
import com.njcn.harmonic.service.upload.IRUploadDataLogService;
import org.springframework.stereotype.Service;
/**
* <p>
* 调度算法执行结果记录表 服务实现类
* </p>
*
* @author hongawen
* @since 2024-06-06
*/
@Service
public class RUploadDataLogServiceImpl extends MppServiceImpl<RUploadDataLogMapper, RUploadDataLog> implements IRUploadDataLogService {
}

View File

@@ -7,11 +7,14 @@ 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.common.pojo.exception.BusinessException;
import com.njcn.common.utils.ReflectCommonUtil;
import com.njcn.device.biz.pojo.dto.DeptGetBusBarDTO;
import com.njcn.device.pms.pojo.po.GeneratrixWire;
import com.njcn.device.pms.pojo.po.Monitor;
import com.njcn.device.pq.pojo.po.RStatIntegrityD;
import com.njcn.harmonic.pojo.po.dim.RDimVoltageD;
import com.njcn.influx.utils.ReflectUitl;
import com.njcn.prepare.harmonic.mapper.mysql.area.PmsMonitorPOMapper;
import com.njcn.prepare.harmonic.mapper.mysql.day.RStatIntegrityDMapper;
import com.njcn.prepare.harmonic.mapper.mysql.dim.GeneratrixWireMapper;
@@ -24,13 +27,17 @@ import com.njcn.system.enums.DicDataTypeEnum;
import com.njcn.system.pojo.po.DictData;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.checkerframework.checker.units.qual.C;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.time.LocalDate;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
/**
* <p>
@@ -57,36 +64,58 @@ public class RDimVoltageDServiceImpl extends MppServiceImpl<RDimVoltageDMapper,
public void busbarVoltageD(CalculatedParam<DeptGetBusBarDTO> calculatedParam) {
List<RDimVoltageD> result = new ArrayList<>();
List<DeptGetBusBarDTO> deptList = calculatedParam.getIdList();
String beginDay = LocalDateTimeUtil.format(LocalDateTimeUtil.beginOfDay(LocalDateTimeUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)),DatePattern.NORM_DATETIME_PATTERN);
String endDay = LocalDateTimeUtil.format(LocalDateTimeUtil.endOfDay(LocalDateTimeUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)),DatePattern.NORM_DATETIME_PATTERN);
String beginDay = LocalDateTimeUtil.format(LocalDateTimeUtil.beginOfDay(LocalDateTimeUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)), DatePattern.NORM_DATETIME_PATTERN);
String endDay = LocalDateTimeUtil.format(LocalDateTimeUtil.endOfDay(LocalDateTimeUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)), DatePattern.NORM_DATETIME_PATTERN);
Set<String> lineList = new HashSet<>();
Set<String> busBarList = new HashSet<>();
//接线方式
List<DictData> dictData = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_CONNECT.getCode()).getData();
Map<String,DictData> dictDataMap = dictData.stream().collect(Collectors.toMap(DictData::getId,Function.identity()));
Map<String, DictData> dictDataMap = dictData.stream().collect(Collectors.toMap(DictData::getId, Function.identity()));
//获取监测点集合
deptList.forEach(item->{
deptList.forEach(item -> {
lineList.addAll(item.getBusBarAndMonitorIDs());
busBarList.addAll(item.getBusBarIds());
});
if (CollectionUtil.isNotEmpty(lineList)){
if (CollectionUtil.isNotEmpty(lineList)) {
//获取监测点信息
List<Monitor> list1 = getMonitorInfo(lineList);
Map<String, Monitor> monitorMap = list1.stream().collect(Collectors.toMap(Monitor::getId, Function.identity()));
//获取监测点数据
List<LineDataDto> list2 = getLineData(beginDay,endDay,lineList);
List<LineDataDto> list2 = getLineData(beginDay, endDay, lineList);
for (LineDataDto lineDataDto : list2) {
Monitor monitor = monitorMap.get(lineDataDto.getLineId());
Double lv;
//不同接线类型的线电压反推公式不同
if (dictDataMap.get(monitor.getTerminalWiringMethod()).getCode().equals("star")) {
lv = Math.sqrt(3);
} else {
lv = 1.00;
}
lineDataDto.setRms(lineDataDto.getRms() * lv);
}
//获取数据完整性
QueryWrapper<RStatIntegrityD> queryWrapper = new QueryWrapper<>();
queryWrapper.select("time_id","line_index","real_time/due_time as integrityData","real_time","due_time").
eq("time_id",beginDay);
queryWrapper.select("time_id", "line_index", "real_time/due_time as integrityData", "real_time", "due_time").
eq("time_id", beginDay);
List<RStatIntegrityD> rStatIntegrityDList = rStatIntegrityDMapper.selectList(queryWrapper);
//获取母线信息
List<GeneratrixWire> list3 = getBusBarInfo(busBarList);
//循环区域信息,筛选符合条件的数据,做统计
deptList.forEach(item->{
deptList.forEach(item -> {
if(item.getUnitId().equals("13B9B47F251C3324E05338297A0A0595")){
System.out.println(55);
}
List<String> list = item.getBusBarIds();
if (CollUtil.isNotEmpty(list)) {
RDimVoltageD rDimVoltageD = new RDimVoltageD();
@@ -98,142 +127,216 @@ public class RDimVoltageDServiceImpl extends MppServiceImpl<RDimVoltageDMapper,
Map<String, List<GeneratrixWire>> map1 = list4.stream().collect(Collectors.groupingBy(GeneratrixWire::getScale));
//循环分组数据,获取母线下监测点数据
map1.forEach((k, v) -> {
RDimVoltageD dto = assignment(k,rDimVoltageD,v,list1,list2,rStatIntegrityDList,dictDataMap);
result.add(dto);
assignment(k, rDimVoltageD, v, list1, list2, rStatIntegrityDList,result);
});
}
});
}
if (CollectionUtil.isNotEmpty(result)){
if (CollectionUtil.isNotEmpty(result)) {
this.saveOrUpdateBatchByMultiId(result);
}
}
/**
* 获取监测点信息
*
* @param lineList 监测点集合
* @return 监测点信息
*/
public List<Monitor> getMonitorInfo(Set<String> lineList) {
LambdaQueryWrapper<Monitor> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.in(Monitor::getId,lineList).eq(Monitor::getStatus,1);
lambdaQueryWrapper.in(Monitor::getId, lineList).eq(Monitor::getStatus, 1);
return pmsMonitorPOMapper.selectList(lambdaQueryWrapper);
}
/**
* 获取母线信息
*
* @param busBarList 监测点集合
* @return 母线信息
*/
public List<GeneratrixWire> getBusBarInfo(Set<String> busBarList){
public List<GeneratrixWire> getBusBarInfo(Set<String> busBarList) {
LambdaQueryWrapper<GeneratrixWire> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.in(GeneratrixWire::getId,busBarList).eq(GeneratrixWire::getStatus, 1);
lambdaQueryWrapper.in(GeneratrixWire::getId, busBarList).eq(GeneratrixWire::getStatus, 1);
return generatrixWireMapper.selectList(lambdaQueryWrapper);
}
/**
* 获取监测点数据
*
* @param startTime 开始时间
* @param endTime 结束时间
* @param lineList 监测点集合
* @return 母线信息
*/
public List<LineDataDto> getLineData(String startTime, String endTime, Set<String> lineList){
return this.baseMapper.getLineData(startTime,endTime,lineList);
public List<LineDataDto> getLineData(String startTime, String endTime, Set<String> lineList) {
List<LineDataDto> list2 = this.baseMapper.getLineData(startTime, endTime, lineList);
return list2.stream().filter(i -> i.getRms() > 0).collect(Collectors.toList());
}
/**
* 给实体赋值
* @param rDimVoltageD 对象
*
* @param rDimVoltageD 对象
*/
public RDimVoltageD assignment(String voltage, RDimVoltageD rDimVoltageD, List<GeneratrixWire> list1, List<Monitor> list2, List<LineDataDto> list3,List<RStatIntegrityD> rStatIntegrityDList,Map<String,DictData> dictDataMap) {
public void assignment(String voltage, RDimVoltageD rDimVoltageD, List<GeneratrixWire> list1, List<Monitor> list2, List<LineDataDto> list3, List<RStatIntegrityD> rStatIntegrityDList,List<RDimVoltageD> resultList) {
RDimVoltageD result = new RDimVoltageD();
BeanUtils.copyProperties(rDimVoltageD,result);
RDimVoltageD resultSd = new RDimVoltageD();
BeanUtils.copyProperties(rDimVoltageD, result);
result.setDataType("avg");
BeanUtils.copyProperties(rDimVoltageD, resultSd);
resultSd.setDataType("sd");
result.setVoltageType(voltage);
resultSd.setVoltageType(voltage);
//不同电压等级下母线的id
List<String> l1 = list1.stream().map(GeneratrixWire::getId).collect(Collectors.toList());
//获取这些母线下的监测点
List<Monitor> l2 = list2.stream().filter(obj -> l1.contains(obj.getLineId())).collect(Collectors.toList());
List<RStatIntegrityD> rStatIntegrityDS = rStatIntegrityDList.stream().filter(it->l2.stream().map(Monitor::getId).collect(Collectors.toList()).contains(it.getLineIndex())).collect(Collectors.toList());
List<RStatIntegrityD> rStatIntegrityDS = rStatIntegrityDList.stream().filter(it -> l2.stream().map(Monitor::getId).collect(Collectors.toList()).contains(it.getLineIndex())).collect(Collectors.toList());
Map<String,List<Monitor>> mapMonitor = l2.stream().collect(Collectors.groupingBy(Monitor::getLineId));
mapMonitor.forEach((busId,list)->{
RStatIntegrityD rStatIntegrityD = rStatIntegrityDS.stream().filter(i->list.stream().map(Monitor::getId).collect(Collectors.toList()).contains(i.getLineIndex())).max(Comparator.comparing(RStatIntegrityD::getIntegrityData)).orElse(null);
if(Objects.nonNull(rStatIntegrityD)) {
Map<String, List<Monitor>> mapMonitor = l2.stream().collect(Collectors.groupingBy(Monitor::getLineId));
List<LineDataDto> l3 = new ArrayList<>();
mapMonitor.forEach((busId, list) -> {
RStatIntegrityD rStatIntegrityD = rStatIntegrityDS.stream().filter(i -> list.stream().map(Monitor::getId).collect(Collectors.toList()).contains(i.getLineIndex())).max(Comparator.comparing(RStatIntegrityD::getIntegrityData)).orElse(null);
if (Objects.nonNull(rStatIntegrityD)) {
//获取监测点数据
List<LineDataDto> l3 = list3.stream().filter(vo -> vo.getLineId().equals(rStatIntegrityD.getLineIndex())).collect(Collectors.toList());
Monitor monitor = list.stream().filter(it->it.getId().equals(rStatIntegrityD.getLineIndex())).findFirst().orElse(null);
String method = monitor.getTerminalWiringMethod();
Double lv;
if(dictDataMap.get(method).getCode().equals("star")){
lv = Math.sqrt(3);
}else {
lv = 1.00;
}
if (CollectionUtil.isNotEmpty(l3)) {
result.setV(l3.stream().mapToDouble(it->it.getRms()*lv).average().orElse(0d));
result.setVUnbalance(l3.stream().mapToDouble(LineDataDto::getVUnbalance).average().orElse(0d));
result.setPst(l3.stream().mapToDouble(LineDataDto::getPst).average().orElse(0d));
result.setVThd(l3.stream().mapToDouble(LineDataDto::getVThd).average().orElse(0d));
result.setV1(l3.stream().mapToDouble(LineDataDto::getV1).average().orElse(0d));
result.setV2(l3.stream().mapToDouble(LineDataDto::getV2).average().orElse(0d));
result.setV3(l3.stream().mapToDouble(LineDataDto::getV3).average().orElse(0d));
result.setV4(l3.stream().mapToDouble(LineDataDto::getV4).average().orElse(0d));
result.setV5(l3.stream().mapToDouble(LineDataDto::getV5).average().orElse(0d));
result.setV6(l3.stream().mapToDouble(LineDataDto::getV6).average().orElse(0d));
result.setV7(l3.stream().mapToDouble(LineDataDto::getV7).average().orElse(0d));
result.setV8(l3.stream().mapToDouble(LineDataDto::getV8).average().orElse(0d));
result.setV9(l3.stream().mapToDouble(LineDataDto::getV9).average().orElse(0d));
result.setV10(l3.stream().mapToDouble(LineDataDto::getV10).average().orElse(0d));
result.setV11(l3.stream().mapToDouble(LineDataDto::getV11).average().orElse(0d));
result.setV12(l3.stream().mapToDouble(LineDataDto::getV12).average().orElse(0d));
result.setV13(l3.stream().mapToDouble(LineDataDto::getV13).average().orElse(0d));
result.setV14(l3.stream().mapToDouble(LineDataDto::getV14).average().orElse(0d));
result.setV15(l3.stream().mapToDouble(LineDataDto::getV15).average().orElse(0d));
result.setV16(l3.stream().mapToDouble(LineDataDto::getV16).average().orElse(0d));
result.setV17(l3.stream().mapToDouble(LineDataDto::getV17).average().orElse(0d));
result.setV18(l3.stream().mapToDouble(LineDataDto::getV18).average().orElse(0d));
result.setV19(l3.stream().mapToDouble(LineDataDto::getV19).average().orElse(0d));
result.setV20(l3.stream().mapToDouble(LineDataDto::getV20).average().orElse(0d));
result.setV21(l3.stream().mapToDouble(LineDataDto::getV21).average().orElse(0d));
result.setV22(l3.stream().mapToDouble(LineDataDto::getV22).average().orElse(0d));
result.setV23(l3.stream().mapToDouble(LineDataDto::getV23).average().orElse(0d));
result.setV24(l3.stream().mapToDouble(LineDataDto::getV24).average().orElse(0d));
result.setV25(l3.stream().mapToDouble(LineDataDto::getV25).average().orElse(0d));
result.setV26(l3.stream().mapToDouble(LineDataDto::getV26).average().orElse(0d));
result.setV27(l3.stream().mapToDouble(LineDataDto::getV27).average().orElse(0d));
result.setV28(l3.stream().mapToDouble(LineDataDto::getV28).average().orElse(0d));
result.setV29(l3.stream().mapToDouble(LineDataDto::getV29).average().orElse(0d));
result.setV30(l3.stream().mapToDouble(LineDataDto::getV30).average().orElse(0d));
result.setV31(l3.stream().mapToDouble(LineDataDto::getV31).average().orElse(0d));
result.setV32(l3.stream().mapToDouble(LineDataDto::getV32).average().orElse(0d));
result.setV33(l3.stream().mapToDouble(LineDataDto::getV33).average().orElse(0d));
result.setV34(l3.stream().mapToDouble(LineDataDto::getV34).average().orElse(0d));
result.setV35(l3.stream().mapToDouble(LineDataDto::getV35).average().orElse(0d));
result.setV36(l3.stream().mapToDouble(LineDataDto::getV36).average().orElse(0d));
result.setV37(l3.stream().mapToDouble(LineDataDto::getV37).average().orElse(0d));
result.setV38(l3.stream().mapToDouble(LineDataDto::getV38).average().orElse(0d));
result.setV39(l3.stream().mapToDouble(LineDataDto::getV39).average().orElse(0d));
result.setV40(l3.stream().mapToDouble(LineDataDto::getV40).average().orElse(0d));
result.setV41(l3.stream().mapToDouble(LineDataDto::getV41).average().orElse(0d));
result.setV42(l3.stream().mapToDouble(LineDataDto::getV42).average().orElse(0d));
result.setV43(l3.stream().mapToDouble(LineDataDto::getV43).average().orElse(0d));
result.setV44(l3.stream().mapToDouble(LineDataDto::getV44).average().orElse(0d));
result.setV45(l3.stream().mapToDouble(LineDataDto::getV45).average().orElse(0d));
result.setV46(l3.stream().mapToDouble(LineDataDto::getV46).average().orElse(0d));
result.setV47(l3.stream().mapToDouble(LineDataDto::getV47).average().orElse(0d));
result.setV48(l3.stream().mapToDouble(LineDataDto::getV48).average().orElse(0d));
result.setV49(l3.stream().mapToDouble(LineDataDto::getV49).average().orElse(0d));
result.setV50(l3.stream().mapToDouble(LineDataDto::getV50).average().orElse(0d));
result.setINeg(l3.stream().mapToDouble(LineDataDto::getINeg).average().orElse(0d));
}
List<LineDataDto> pointList = list3.stream().filter(vo -> vo.getLineId().equals(rStatIntegrityD.getLineIndex())).collect(Collectors.toList());
l3.addAll(pointList);
}
});
if (CollectionUtil.isNotEmpty(l3)) {
double v_avg = l3.stream().mapToDouble(LineDataDto::getRms).average().orElse(0d);
result.setV(v_avg);
double v_sdf = 0.0;
for (LineDataDto lineDataDto : l3) {
try {
v_sdf += (lineDataDto.getRms() - v_avg) * (lineDataDto.getRms() - v_avg);
} catch (Exception e) {
log.error(e.getMessage());
}
}
resultSd.setV(Math.sqrt(v_sdf / l3.size()));
return result;
double v_unbalance = l3.stream().mapToDouble(LineDataDto::getVUnbalance).average().orElse(0d);
result.setVUnbalance(v_unbalance);
double v_unbalance_df = 0.0;
for (LineDataDto lineDataDto : l3) {
try {
v_unbalance_df += (lineDataDto.getVUnbalance() - v_unbalance) * (lineDataDto.getVUnbalance() - v_unbalance);
} catch (Exception e) {
log.error(e.getMessage());
}
}
resultSd.setVUnbalance(Math.sqrt(v_unbalance_df / l3.size()));
double v_pst = l3.stream().mapToDouble(LineDataDto::getPst).average().orElse(0d);
result.setPst(v_pst);
double v_pst_df = 0.0;
for (LineDataDto lineDataDto : l3) {
try {
v_pst_df += (lineDataDto.getPst() - v_pst) * (lineDataDto.getPst() - v_pst);
} catch (Exception e) {
log.error(e.getMessage());
}
}
resultSd.setPst(Math.sqrt(v_pst_df / l3.size()));
double v_thd = l3.stream().mapToDouble(LineDataDto::getVThd).average().orElse(0d);
result.setVThd(v_thd);
double v_thd_df = 0.0;
for (LineDataDto lineDataDto : l3) {
try {
v_thd_df += (lineDataDto.getVThd() - v_thd) * (lineDataDto.getVThd() - v_thd);
} catch (Exception e) {
log.error(e.getMessage());
}
}
resultSd.setVThd(Math.sqrt(v_thd_df / l3.size()));
double v_ineg = l3.stream().mapToDouble(LineDataDto::getINeg).average().orElse(0d);
result.setINeg(v_ineg);
double v_ineg_df = 0.0;
for (LineDataDto lineDataDto : l3) {
try {
v_ineg_df += (lineDataDto.getINeg() - v_ineg) * (lineDataDto.getINeg() - v_ineg);
} catch (Exception e) {
log.error(e.getMessage());
}
}
resultSd.setINeg(Math.sqrt(v_ineg_df / l3.size()));
result.setINeg(l3.stream().mapToDouble(LineDataDto::getINeg).average().orElse(0d));
calculateAveragesAndSet(l3,result,resultSd);
resultList.add(result);
resultList.add(resultSd);
}
}
public void calculateAveragesAndSet(List<LineDataDto> l3, RDimVoltageD result,RDimVoltageD resultSd) {
// 从V1到V50可以使用IntStream来迭代这些索引
IntStream.rangeClosed(1, 50)
.forEach(i -> {
// 构建getter和setter方法的名字
String getterName = "getV" + i;
String setterName = "setV" + i;
// 获取getter和setter的Method对象
try {
Method getter = LineDataDto.class.getMethod(getterName);
Method setter = result.getClass().getMethod(setterName, Double.class);
Method setterSd = resultSd.getClass().getMethod(setterName, Double.class);
// 计算平均值
OptionalDouble average = l3.stream()
.mapToDouble(lineDataDto -> {
try {
return (double) getter.invoke(lineDataDto);
} catch (Exception e) {
throw new RuntimeException(e);
}
})
.average();
// 设置结果
if (average.isPresent()) {
double tem = average.getAsDouble();
setter.invoke(result,tem);
double sd = getTemParam(l3, tem, i);
setterSd.invoke(resultSd,sd);
} else {
// 如果列表为空,可以设置默认值或其他逻辑
setter.invoke(result, 0d);
setterSd.invoke(resultSd,0d);
}
} catch (Exception e) {
log.error(e.getMessage());
}
});
}
private Double getTemParam(List<LineDataDto> l3, Double avg, Integer count) {
double tem = 0.0;
for (LineDataDto lineDataDto : l3) {
try {
double vvv = (double) LineDataDto.class.getMethod("getV" + count).invoke(lineDataDto);
tem += (vvv - avg) * (vvv - avg);
} catch (Exception e) {
log.error(e.getMessage());
}
}
return Math.sqrt(tem/l3.size());
}
}

View File

@@ -83,12 +83,15 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl<RUploadEva
//获取中台母线信息
List<PmsMidLedger> allMidBusBarList = this.getBusBarInfo();
//获取在运测点
List<Monitor> monitorList = this.getRunMonitorList(pmsRunStatisticsListD);
//获取监测母线
List<GeneratrixWire> superviseBusList;
if (CollUtil.isNotEmpty(pmsRunStatisticsListD)) {
List<String> wireIds = pmsRunStatisticsListD.stream()
.filter(x -> StrUtil.isNotBlank(x.getOnlineBusIds()))
.flatMap(x -> CollectionUtil.toList(x.getOnlineBusIds().split(StrUtil.COMMA)).stream()).distinct().collect(Collectors.toList());
List<String> wireIds = pmsRunStatisticsListD.stream().filter(x -> StrUtil.isNotBlank(x.getOnlineBusIds())).flatMap(x -> CollectionUtil.toList(x.getOnlineBusIds().split(StrUtil.COMMA)).stream()).distinct().collect(Collectors.toList());
if(CollUtil.isNotEmpty(wireIds)){
LambdaQueryWrapper<GeneratrixWire> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(GeneratrixWire::getStatus, DataStateEnum.ENABLE.getCode())
@@ -125,8 +128,14 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl<RUploadEva
return;
}
if(item.getUnitId().equals("13B9B47F1E4F3324E05338297A0A0595")){
System.out.println("555");
}
BusBarDto busBarDto = allDept.stream().filter(o -> Objects.equals(o.getOrgId(), item.getUnitId())).findFirst().orElse(null);
List<Monitor> deptMonitorList = monitorList.stream().filter(t->item.getUnitId().contains(t.getOrgId())).collect(Collectors.toList());
if(Objects.isNull(busBarDto) || busBarDto.getAllOnlineBusNum()==0){
return;
}
@@ -157,34 +166,34 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl<RUploadEva
RUploadEvaluationDataD dto4 = this.channelData(rUploadEvaluationDataD, defaultValue, defaultValue, UploadEnum.INDEX_TYPE_04.getCode(), 0, "0", dto);
result.add(dto4);
//各次谐波电压
this.channelHarmonicData(rUploadEvaluationDataD, result, null, UploadEnum.INDEX_TYPE_05.getCode(), "0", dto, null);
this.channelHarmonicData(rUploadEvaluationDataD, result, null,null, UploadEnum.INDEX_TYPE_05.getCode(), "0", dto, null);
//负序电流
RUploadEvaluationDataD dto6 = this.channelData(rUploadEvaluationDataD, defaultValue, defaultValue, UploadEnum.INDEX_TYPE_06.getCode(), 0, "0", dto);
result.add(dto6);
/*** 计算分电压等级的数据*/
if (CollUtil.isNotEmpty(busBarDto.getVoltageChild())) {
busBarDto.getVoltageChild().forEach(item2 -> {
RDimVoltageD rDimVoltageD = this.getDimVoltageData(item.getUnitId(), calculatedParam.getDataDate(), item2.getVoltageLevel());
RDimVoltageD rDimVoltageD = this.getDimVoltageData(item.getUnitId(), calculatedParam.getDataDate(), item2.getVoltageLevel(),"avg");
RDimVoltageD rDimVoltageDSd = this.getDimVoltageData(item.getUnitId(), calculatedParam.getDataDate(), item2.getVoltageLevel(),"sd");
List<Monitor> voltageMonitor = deptMonitorList.stream().filter(it->it.getVoltageLevel().equals(item2.getVoltageLevel())).collect(Collectors.toList());
RUploadEvaluationDataD dto0 = this.getLineNum(busBarDto, item2.getVoltageLevel());
//电压
double sd1 = this.getDimVoltageDataSd(item2.getVoltageLevel(), Objects.isNull(rDimVoltageD) ? defaultValue : rDimVoltageD.getV(), calculatedParam.getDataDate(), item.getLineBaseList(), UploadEnum.INDEX_TYPE_01.getCode(), null);
RUploadEvaluationDataD dto11 = this.channelData(rUploadEvaluationDataD, Objects.isNull(rDimVoltageD) ? defaultValue : rDimVoltageD.getV(), sd1, UploadEnum.INDEX_TYPE_01.getCode(), 0, item2.getVoltageLevel(), dto0);
RUploadEvaluationDataD dto11 = this.channelData(rUploadEvaluationDataD, Objects.isNull(rDimVoltageD) ? defaultValue : rDimVoltageD.getV(), Objects.isNull(rDimVoltageDSd) ? defaultValue : rDimVoltageDSd.getV(), UploadEnum.INDEX_TYPE_01.getCode(), 0, item2.getVoltageLevel(), dto0);
result.add(dto11);
//长时间闪变
double sd2 = this.getDimVoltageDataSd(item2.getVoltageLevel(), Objects.isNull(rDimVoltageD) ? defaultValue : rDimVoltageD.getPst(), calculatedParam.getDataDate(), item.getLineBaseList(), UploadEnum.INDEX_TYPE_02.getCode(), null);
RUploadEvaluationDataD dto22 = this.channelData(rUploadEvaluationDataD, Objects.isNull(rDimVoltageD) ? defaultValue : rDimVoltageD.getPst(), sd2, UploadEnum.INDEX_TYPE_02.getCode(), 0, item2.getVoltageLevel(), dto0);
RUploadEvaluationDataD dto22 = this.channelData(rUploadEvaluationDataD, Objects.isNull(rDimVoltageD) ? defaultValue : rDimVoltageD.getPst(), Objects.isNull(rDimVoltageDSd) ? defaultValue : rDimVoltageDSd.getPst(), UploadEnum.INDEX_TYPE_02.getCode(), 0, item2.getVoltageLevel(), dto0);
result.add(dto22);
//三相电压不平衡
double sd3 = this.getDimVoltageDataSd(item2.getVoltageLevel(), Objects.isNull(rDimVoltageD) ? defaultValue : rDimVoltageD.getVUnbalance(), calculatedParam.getDataDate(), item.getLineBaseList(), UploadEnum.INDEX_TYPE_03.getCode(), null);
RUploadEvaluationDataD dto33 = this.channelData(rUploadEvaluationDataD, Objects.isNull(rDimVoltageD) ? defaultValue : rDimVoltageD.getVUnbalance(), sd3, UploadEnum.INDEX_TYPE_03.getCode(), 0, item2.getVoltageLevel(), dto0);
RUploadEvaluationDataD dto33 = this.channelData(rUploadEvaluationDataD, Objects.isNull(rDimVoltageD) ? defaultValue : rDimVoltageD.getVUnbalance(), Objects.isNull(rDimVoltageDSd) ? defaultValue : rDimVoltageDSd.getVUnbalance(), UploadEnum.INDEX_TYPE_03.getCode(), 0, item2.getVoltageLevel(), dto0);
result.add(dto33);
//电压总谐波畸变率
double sd4 = this.getDimVoltageDataSd(item2.getVoltageLevel(), Objects.isNull(rDimVoltageD) ? defaultValue : rDimVoltageD.getVThd(), calculatedParam.getDataDate(), item.getLineBaseList(), UploadEnum.INDEX_TYPE_04.getCode(), null);
RUploadEvaluationDataD dto44 = this.channelData(rUploadEvaluationDataD, Objects.isNull(rDimVoltageD) ? defaultValue : rDimVoltageD.getVThd(), sd4, UploadEnum.INDEX_TYPE_04.getCode(), 0, item2.getVoltageLevel(), dto0);
RUploadEvaluationDataD dto44 = this.channelData(rUploadEvaluationDataD, Objects.isNull(rDimVoltageD) ? defaultValue : rDimVoltageD.getVThd(), Objects.isNull(rDimVoltageDSd) ? defaultValue : rDimVoltageDSd.getVThd(), UploadEnum.INDEX_TYPE_04.getCode(), 0, item2.getVoltageLevel(), dto0);
result.add(dto44);
//各次谐波电压
List<Double> valueList = new ArrayList<>();
List<Double> valueListSd = new ArrayList<>();
if (!Objects.isNull(rDimVoltageD)) {
valueList = Arrays.asList(rDimVoltageD.getV2(), rDimVoltageD.getV3(), rDimVoltageD.getV4(), rDimVoltageD.getV5(), rDimVoltageD.getV6(), rDimVoltageD.getV7(), rDimVoltageD.getV8(), rDimVoltageD.getV9(), rDimVoltageD.getV10()
, rDimVoltageD.getV11(), rDimVoltageD.getV12(), rDimVoltageD.getV13(), rDimVoltageD.getV14(), rDimVoltageD.getV15(), rDimVoltageD.getV16(), rDimVoltageD.getV17(), rDimVoltageD.getV18(), rDimVoltageD.getV19(), rDimVoltageD.getV20()
@@ -192,10 +201,16 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl<RUploadEva
, rDimVoltageD.getV31(), rDimVoltageD.getV32(), rDimVoltageD.getV33(), rDimVoltageD.getV34(), rDimVoltageD.getV35(), rDimVoltageD.getV36(), rDimVoltageD.getV37(), rDimVoltageD.getV38(), rDimVoltageD.getV39(), rDimVoltageD.getV40()
, rDimVoltageD.getV41(), rDimVoltageD.getV42(), rDimVoltageD.getV43(), rDimVoltageD.getV44(), rDimVoltageD.getV45(), rDimVoltageD.getV46(), rDimVoltageD.getV47(), rDimVoltageD.getV48(), rDimVoltageD.getV49(), rDimVoltageD.getV50());
}
this.channelHarmonicData(rUploadEvaluationDataD, result, valueList, UploadEnum.INDEX_TYPE_05.getCode(), item2.getVoltageLevel(), dto0, item.getLineBaseList());
if (!Objects.isNull(rDimVoltageDSd)) {
valueListSd = Arrays.asList(rDimVoltageDSd.getV2(), rDimVoltageDSd.getV3(), rDimVoltageDSd.getV4(), rDimVoltageDSd.getV5(), rDimVoltageDSd.getV6(), rDimVoltageDSd.getV7(), rDimVoltageDSd.getV8(), rDimVoltageDSd.getV9(), rDimVoltageDSd.getV10()
, rDimVoltageDSd.getV11(), rDimVoltageDSd.getV12(), rDimVoltageDSd.getV13(), rDimVoltageDSd.getV14(), rDimVoltageDSd.getV15(), rDimVoltageDSd.getV16(), rDimVoltageDSd.getV17(), rDimVoltageDSd.getV18(), rDimVoltageDSd.getV19(), rDimVoltageDSd.getV20()
, rDimVoltageDSd.getV21(), rDimVoltageDSd.getV22(), rDimVoltageDSd.getV23(), rDimVoltageDSd.getV24(), rDimVoltageDSd.getV25(), rDimVoltageDSd.getV26(), rDimVoltageDSd.getV27(), rDimVoltageDSd.getV28(), rDimVoltageDSd.getV29(), rDimVoltageDSd.getV30()
, rDimVoltageDSd.getV31(), rDimVoltageDSd.getV32(), rDimVoltageDSd.getV33(), rDimVoltageDSd.getV34(), rDimVoltageDSd.getV35(), rDimVoltageDSd.getV36(), rDimVoltageDSd.getV37(), rDimVoltageDSd.getV38(), rDimVoltageDSd.getV39(), rDimVoltageDSd.getV40()
, rDimVoltageDSd.getV41(), rDimVoltageDSd.getV42(), rDimVoltageDSd.getV43(), rDimVoltageDSd.getV44(), rDimVoltageDSd.getV45(), rDimVoltageDSd.getV46(), rDimVoltageDSd.getV47(), rDimVoltageDSd.getV48(), rDimVoltageDSd.getV49(), rDimVoltageDSd.getV50());
}
this.channelHarmonicData(rUploadEvaluationDataD, result, valueList,valueListSd, UploadEnum.INDEX_TYPE_05.getCode(), item2.getVoltageLevel(), dto0, voltageMonitor);
//负序电流
double sd6 = this.getDimVoltageDataSd(item2.getVoltageLevel(), Objects.isNull(rDimVoltageD) ? defaultValue : rDimVoltageD.getINeg(), calculatedParam.getDataDate(), item.getLineBaseList(), UploadEnum.INDEX_TYPE_06.getCode(), null);
RUploadEvaluationDataD dto66 = this.channelData(rUploadEvaluationDataD, Objects.isNull(rDimVoltageD) ? defaultValue : rDimVoltageD.getINeg(), sd6, UploadEnum.INDEX_TYPE_06.getCode(), 0, item2.getVoltageLevel(), dto0);
RUploadEvaluationDataD dto66 = this.channelData(rUploadEvaluationDataD, Objects.isNull(rDimVoltageD) ? defaultValue : rDimVoltageD.getINeg(), Objects.isNull(rDimVoltageDSd) ? defaultValue : rDimVoltageDSd.getINeg(), UploadEnum.INDEX_TYPE_06.getCode(), 0, item2.getVoltageLevel(), dto0);
result.add(dto66);
});
}
@@ -207,136 +222,19 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl<RUploadEva
/* @Override
public void insertEvaluationDataDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
List<RUploadEvaluationDataD> result = new ArrayList<>();
final Double defaultValue = 3.1415926;
//首先获取pms_run_statistic表是否存在执行日期的数据
List<PmsRunStatisticD> pmsRunStatisticsListD = runStatisticDMapper.selectList(new LambdaQueryWrapper<PmsRunStatisticD>().eq(PmsRunStatisticD::getStatisticDate, calculatedParam.getDataDate()));
//获取中台母线信息
List<PmsMidLedger> allMidBusBarList = this.getBusBarInfo();
//获取监测母线
List<GeneratrixWire> superviseBusList;
if (CollUtil.isNotEmpty(pmsRunStatisticsListD)) {
List<String> wireIds = pmsRunStatisticsListD.stream()
.filter(x -> StrUtil.isNotBlank(x.getOnlineBusIds()))
.flatMap(x -> CollectionUtil.toList(x.getOnlineBusIds().split(StrUtil.COMMA)).stream()).distinct().collect(Collectors.toList());
if(CollUtil.isNotEmpty(wireIds)){
LambdaQueryWrapper<GeneratrixWire> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(GeneratrixWire::getStatus, DataStateEnum.ENABLE.getCode())
.in(GeneratrixWire::getId, wireIds);
superviseBusList = generatrixWireMapper.selectList(lambdaQueryWrapper);
}else{
List<Monitor> list1 = this.getPmsMonitor();
superviseBusList = this.getCnBusBarInfo(list1);
}
} else {
//获取监测点信息
List<Monitor> list1 = this.getPmsMonitor();
superviseBusList = this.getCnBusBarInfo(list1);
private List<Monitor> getRunMonitorList(List<PmsRunStatisticD> pmsRunStatisticsListD) {
List<String> monitorIds = pmsRunStatisticsListD.stream().filter(x -> StrUtil.isNotBlank(x.getRunMonitorIds())).flatMap(x -> CollectionUtil.toList(x.getRunMonitorIds().split(StrUtil.COMMA)).stream()).distinct().collect(Collectors.toList());
if (CollUtil.isNotEmpty(monitorIds)) {
LambdaQueryWrapper<Monitor> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.select(Monitor::getId, Monitor::getVoltageLevel, Monitor::getName,Monitor::getOrgId).eq(Monitor::getStatus, DataStateEnum.ENABLE.getCode())
.in(Monitor::getId, monitorIds);
return pmsMonitorMapper.selectList(lambdaQueryWrapper);
}else {
return new ArrayList<>();
}
//获取单位下各电压等级数据
Dept rootDept = deptFeignClient.getRootDept().getData();
DeptGetLineParam deptGetLineParam = new DeptGetLineParam();
deptGetLineParam.setDeptId(rootDept.getId());
List<DeptGetBusBarDTO> barDto = commTerminalGeneralClient.deptBusBar(deptGetLineParam).getData();
List<BusBarDto> busBarList = this.getBusBarNum(superviseBusList, allMidBusBarList, barDto);
List<BusBarDto> allDept = this.getAllDeptLineNum(busBarList, deptGetLineParam);
//获取省级单位id
String provinceId = deptFeignClient.getDepSonIdByDeptId(rootDept.getId()).getData().get(0);
Dept dept = deptFeignClient.getDeptById(provinceId).getData();
//获取所有单位
List<Dept> deptList = deptFeignClient.getAllDept().getData();
Map<String, List<Dept>> deptMap = deptList.stream().collect(Collectors.groupingBy(Dept::getCode));
List<DeptGetChildrenMoreDTO> list = calculatedParam.getIdList();
list.forEach(item -> {
if (Objects.equals(Integer.parseInt(UploadEnum.NJCN_DEPT_LEVEL_1.getCode()), item.getDeptLevel())) {
return;
}
BusBarDto busBarDto = allDept.stream().filter(o -> Objects.equals(o.getOrgId(), item.getUnitId())).findFirst().orElse(null);
if(Objects.isNull(busBarDto) || busBarDto.getAllOnlineBusNum()==0){
return;
}
RUploadEvaluationDataD rUploadEvaluationDataD = new RUploadEvaluationDataD();
rUploadEvaluationDataD.setProvinceId(dept.getCode());
rUploadEvaluationDataD.setProvinceName(dept.getName());
rUploadEvaluationDataD.setDataSources(UploadEnum.DATA_SOURCES_01.getCode());
rUploadEvaluationDataD.setStatisticalDate(calculatedParam.getDataDate());
rUploadEvaluationDataD.setComputeDate(calculatedParam.getDataDate());
rUploadEvaluationDataD.setStatisticalType(UploadEnum.STATISTICAL_TYPE_03.getCode());
rUploadEvaluationDataD.setUploadStatus(Integer.parseInt(UploadEnum.UPLOAD_STATUS_0.getCode()));
this.judgeLevel(item.getDeptLevel(), rUploadEvaluationDataD, item.getUnitId(), item.getUnitName(), deptList, deptMap);
}
*//*** 计算无电压等级的数据*//*
RUploadEvaluationDataD dto = this.getLineNum(busBarDto, "0");
//电压
RUploadEvaluationDataD dto1 = this.channelData(rUploadEvaluationDataD, defaultValue, defaultValue, UploadEnum.INDEX_TYPE_01.getCode(), 0, "0", dto);
result.add(dto1);
//长时间闪变
RUploadEvaluationDataD dto2 = this.channelData(rUploadEvaluationDataD, defaultValue, defaultValue, UploadEnum.INDEX_TYPE_02.getCode(), 0, "0", dto);
result.add(dto2);
//三相电压不平衡
RUploadEvaluationDataD dto3 = this.channelData(rUploadEvaluationDataD, defaultValue, defaultValue, UploadEnum.INDEX_TYPE_03.getCode(), 0, "0", dto);
result.add(dto3);
//电压总谐波畸变率
RUploadEvaluationDataD dto4 = this.channelData(rUploadEvaluationDataD, defaultValue, defaultValue, UploadEnum.INDEX_TYPE_04.getCode(), 0, "0", dto);
result.add(dto4);
//各次谐波电压
this.channelHarmonicData(rUploadEvaluationDataD, result, null, UploadEnum.INDEX_TYPE_05.getCode(), "0", dto, null);
//负序电流
RUploadEvaluationDataD dto6 = this.channelData(rUploadEvaluationDataD, defaultValue, defaultValue, UploadEnum.INDEX_TYPE_06.getCode(), 0, "0", dto);
result.add(dto6);
*//*** 计算分电压等级的数据*//*
if (CollUtil.isNotEmpty(busBarDto.getVoltageChild())) {
busBarDto.getVoltageChild().forEach(item2 -> {
RDimVoltageD rDimVoltageD = this.getDimVoltageData(item.getUnitId(), calculatedParam.getDataDate(), item2.getVoltageLevel());
RUploadEvaluationDataD dto0 = this.getLineNum(busBarDto, item2.getVoltageLevel());
//电压
double sd1 = this.getDimVoltageDataSd(item2.getVoltageLevel(), Objects.isNull(rDimVoltageD) ? defaultValue : rDimVoltageD.getV()*Math.sqrt(3), calculatedParam.getDataDate(), item.getLineBaseList(), UploadEnum.INDEX_TYPE_01.getCode(), null);
RUploadEvaluationDataD dto11 = this.channelData(rUploadEvaluationDataD, Objects.isNull(rDimVoltageD) ? defaultValue : rDimVoltageD.getV(), sd1, UploadEnum.INDEX_TYPE_01.getCode(), 0, item2.getVoltageLevel(), dto0);
result.add(dto11);
//长时间闪变
double sd2 = this.getDimVoltageDataSd(item2.getVoltageLevel(), Objects.isNull(rDimVoltageD) ? defaultValue : rDimVoltageD.getPst(), calculatedParam.getDataDate(), item.getLineBaseList(), UploadEnum.INDEX_TYPE_02.getCode(), null);
RUploadEvaluationDataD dto22 = this.channelData(rUploadEvaluationDataD, Objects.isNull(rDimVoltageD) ? defaultValue : rDimVoltageD.getPst(), sd2, UploadEnum.INDEX_TYPE_02.getCode(), 0, item2.getVoltageLevel(), dto0);
result.add(dto22);
//三相电压不平衡
double sd3 = this.getDimVoltageDataSd(item2.getVoltageLevel(), Objects.isNull(rDimVoltageD) ? defaultValue : rDimVoltageD.getVUnbalance(), calculatedParam.getDataDate(), item.getLineBaseList(), UploadEnum.INDEX_TYPE_03.getCode(), null);
RUploadEvaluationDataD dto33 = this.channelData(rUploadEvaluationDataD, Objects.isNull(rDimVoltageD) ? defaultValue : rDimVoltageD.getVUnbalance(), sd3, UploadEnum.INDEX_TYPE_03.getCode(), 0, item2.getVoltageLevel(), dto0);
result.add(dto33);
//电压总谐波畸变率
double sd4 = this.getDimVoltageDataSd(item2.getVoltageLevel(), Objects.isNull(rDimVoltageD) ? defaultValue : rDimVoltageD.getVThd(), calculatedParam.getDataDate(), item.getLineBaseList(), UploadEnum.INDEX_TYPE_04.getCode(), null);
RUploadEvaluationDataD dto44 = this.channelData(rUploadEvaluationDataD, Objects.isNull(rDimVoltageD) ? defaultValue : rDimVoltageD.getVThd(), sd4, UploadEnum.INDEX_TYPE_04.getCode(), 0, item2.getVoltageLevel(), dto0);
result.add(dto44);
//各次谐波电压
List<Double> valueList = new ArrayList<>();
if (!Objects.isNull(rDimVoltageD)) {
valueList = Arrays.asList(rDimVoltageD.getV2(), rDimVoltageD.getV3(), rDimVoltageD.getV4(), rDimVoltageD.getV5(), rDimVoltageD.getV6(), rDimVoltageD.getV7(), rDimVoltageD.getV8(), rDimVoltageD.getV9(), rDimVoltageD.getV10()
, rDimVoltageD.getV11(), rDimVoltageD.getV12(), rDimVoltageD.getV13(), rDimVoltageD.getV14(), rDimVoltageD.getV15(), rDimVoltageD.getV16(), rDimVoltageD.getV17(), rDimVoltageD.getV18(), rDimVoltageD.getV19(), rDimVoltageD.getV20()
, rDimVoltageD.getV21(), rDimVoltageD.getV22(), rDimVoltageD.getV23(), rDimVoltageD.getV24(), rDimVoltageD.getV25(), rDimVoltageD.getV26(), rDimVoltageD.getV27(), rDimVoltageD.getV28(), rDimVoltageD.getV29(), rDimVoltageD.getV30()
, rDimVoltageD.getV31(), rDimVoltageD.getV32(), rDimVoltageD.getV33(), rDimVoltageD.getV34(), rDimVoltageD.getV35(), rDimVoltageD.getV36(), rDimVoltageD.getV37(), rDimVoltageD.getV38(), rDimVoltageD.getV39(), rDimVoltageD.getV40()
, rDimVoltageD.getV41(), rDimVoltageD.getV42(), rDimVoltageD.getV43(), rDimVoltageD.getV44(), rDimVoltageD.getV45(), rDimVoltageD.getV46(), rDimVoltageD.getV47(), rDimVoltageD.getV48(), rDimVoltageD.getV49(), rDimVoltageD.getV50());
}
this.channelHarmonicData(rUploadEvaluationDataD, result, valueList, UploadEnum.INDEX_TYPE_05.getCode(), item2.getVoltageLevel(), dto0, item.getLineBaseList());
//负序电流
double sd6 = this.getDimVoltageDataSd(item2.getVoltageLevel(), Objects.isNull(rDimVoltageD) ? defaultValue : rDimVoltageD.getINeg(), calculatedParam.getDataDate(), item.getLineBaseList(), UploadEnum.INDEX_TYPE_06.getCode(), null);
RUploadEvaluationDataD dto66 = this.channelData(rUploadEvaluationDataD, Objects.isNull(rDimVoltageD) ? defaultValue : rDimVoltageD.getINeg(), sd6, UploadEnum.INDEX_TYPE_06.getCode(), 0, item2.getVoltageLevel(), dto0);
result.add(dto66);
});
}
});
if (CollUtil.isNotEmpty(result)) {
this.saveOrUpdateBatchByMultiId(result, 1000);
}
}*/
/**
* 通过日表取平均值,作为月表数据
@@ -742,7 +640,7 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl<RUploadEva
/**
* 各次谐波电压数据处理
*/
public void channelHarmonicData(RUploadEvaluationDataD rUploadEvaluationDataD, List<RUploadEvaluationDataD> result, List<Double> valueList, String indexType, String voltage, RUploadEvaluationDataD rUploadEvaluationDataD2, List<LineDevGetDTO> line) {
public void channelHarmonicData(RUploadEvaluationDataD rUploadEvaluationDataD, List<RUploadEvaluationDataD> result, List<Double> valueList, List<Double> valueListSd, String indexType, String voltage, RUploadEvaluationDataD rUploadEvaluationDataD2, List<Monitor> line) {
final Double defaultValue = 3.1415926;
int length;
if (!Objects.isNull(valueList)) {
@@ -760,8 +658,7 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl<RUploadEva
if (Objects.equals(voltage, "0")) {
dto.setStandardDeviation(defaultValue);
} else {
double sd = this.getDimVoltageDataSd(voltage, dto.getAvgValue(), dto.getStatisticalDate(), line, indexType, dto.getHarmonicNum());
dto.setStandardDeviation(sd);
dto.setStandardDeviation(CollUtil.isNotEmpty(valueListSd) ? valueListSd.get(i) : defaultValue);
}
dto.setVoltageLevel(voltage);
dto.setMonitorBusNum(rUploadEvaluationDataD2.getMonitorBusNum());
@@ -774,28 +671,31 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl<RUploadEva
/**
* 获取单位母线的均值数据
*/
public RDimVoltageD getDimVoltageData(String orgId, String time, String voltage) {
public RDimVoltageD getDimVoltageData(String orgId, String time, String voltage,String dataType) {
LambdaQueryWrapper<RDimVoltageD> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(RDimVoltageD::getOrgId, orgId)
.eq(RDimVoltageD::getStatisDate, time)
.eq(RDimVoltageD::getVoltageType, voltage);
.eq(RDimVoltageD::getVoltageType, voltage)
.eq(RDimVoltageD::getDataType,dataType);
return rDimVoltageDMapper.selectOne(lambdaQueryWrapper);
}
/**
* 获取不同电压等级母线下的监测点数据,用于计算标准差
*/
public Double getDimVoltageDataSd(String voltage, Double avg, String time, List<LineDevGetDTO> line, String type, Integer times) {
public Double getDimVoltageDataSd(String voltage, Double avg, String time, List<Monitor> line, String type, Integer times) {
double standardDeviation = 3.1415926;
if (Objects.equals(avg, standardDeviation)) {
return standardDeviation;
}
//获取监测点数据
if (CollUtil.isNotEmpty(line)) {
Map<String, List<LineDevGetDTO>> map = line.stream().collect(Collectors.groupingBy(LineDevGetDTO::getVoltageLevel));
Map<String, List<Monitor>> map = line.stream().collect(Collectors.groupingBy(Monitor::getVoltageLevel));
if (!Objects.isNull(map.get(voltage))) {
Set<String> lineSet = map.get(voltage).stream().map(LineDevGetDTO::getPointId).collect(Collectors.toSet());
Set<String> lineSet = map.get(voltage).stream().map(Monitor::getId).collect(Collectors.toSet());
List<LineDataDto> dataList = rDimVoltageDMapper.getLineData(time, time, lineSet);
//根据平均值计算每个指标的标准差
if (CollUtil.isNotEmpty(dataList)) {
double total = this.getDataByType(type, avg, dataList, times);

View File

@@ -45,6 +45,13 @@ public class SupvPlanParam extends BaseParam {
@NotBlank(message = "监督单位不可为空")
private String supvOrgId;
/**
* 计划所属单位
*/
@ApiModelProperty(value = "计划所属单位",required = true)
@NotBlank(message = "计划所属单位不可为空")
private String planBelongOrg;
/**
* 计划编制人id
*/

View File

@@ -64,6 +64,11 @@ public class SupvPlan extends BaseEntity {
*/
private String supvOrgId;
/**
* 监督单位
*/
private String planBelongOrg;
/**
* 监督单位
*/

View File

@@ -42,6 +42,11 @@ public class SupvPlanVO {
@ApiModelProperty(value = "计划编制单位id")
private String planOrgId;
/**
* 监督计划所属单位
*/
private String planBelongOrg;
/**
* 计划编制单位名字
*/

View File

@@ -286,7 +286,7 @@ public class SupvPlanServiceImpl extends ServiceImpl<SupvPlanMapper, SupvPlan> i
supvPlanVOList.forEach(item -> {
PvTerminalTreeVO pvTerminalTreeVO = null;
if (mapCode.containsKey(item.getSupvOrgId())) {
pvTerminalTreeVO = mapCode.get(item.getSupvOrgId());
pvTerminalTreeVO = mapCode.get(item.getPlanBelongOrg());
item.setSupvOrgName(pvTerminalTreeVO.getName());
int deptLevel = pvTerminalTreeVO.getPids().split(StrUtil.COMMA).length;
if (deptLevel == 2) {

View File

@@ -30,6 +30,7 @@ import com.njcn.user.api.UserFeignClient;
import com.njcn.user.pojo.po.Dept;
import com.njcn.user.pojo.po.User;
import com.njcn.user.pojo.vo.PvTerminalTreeVO;
import com.njcn.web.utils.GwSendUtil;
import com.njcn.web.utils.RestTemplateUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -135,8 +136,8 @@ public class SupvPushGwServiceImpl implements SupvPushGwService {
for (SupvPlan supvPlan : supvPlanList) {
checkParam(supvPlan);
PvTerminalTreeVO pvTerminalTreeVO = null;
if (mapCode.containsKey(supvPlan.getSupvOrgId())) {
pvTerminalTreeVO = mapCode.get(supvPlan.getSupvOrgId());
if (mapCode.containsKey(supvPlan.getPlanBelongOrg())) {
pvTerminalTreeVO = mapCode.get(supvPlan.getPlanBelongOrg());
supvPlan.setSupvOrgName(pvTerminalTreeVO.getName());
int deptLevel = pvTerminalTreeVO.getPids().split(StrUtil.COMMA).length;
if (deptLevel == 2) {
@@ -626,7 +627,7 @@ public class SupvPushGwServiceImpl implements SupvPushGwService {
.contentType("application/json; charset=UTF-8") //设置请求content-type
.accessKey("7d4cb2c0afb5468ca56e0654b1a442ef").secretKey("lW2xr6zKjbaqVDOSgQpcGrM6Rg0=");// 设置accessKey 和 设置secretKey
builder.contentBody(cb);
String token = LoginToken();
String token = GwSendUtil.LoginToken();
builder.putHeaderParamsMap("x-token", token);
builder.putHeaderParamsMap("serviceName", "pqSupervisionReject");
//进行调用,返回结果
@@ -679,7 +680,7 @@ public class SupvPushGwServiceImpl implements SupvPushGwService {
builder.contentBody(cb);
String token = LoginToken();
String token = GwSendUtil.LoginToken();
builder.putHeaderParamsMap("x-token", token);
builder.putHeaderParamsMap("serviceName", serviceName);
//进行调用,返回结果
@@ -698,10 +699,10 @@ public class SupvPushGwServiceImpl implements SupvPushGwService {
return map;
}
public String LoginToken() {
/* public String LoginToken() {
String token = null;
String clientId = "942a9278671711eda2e10ae0b5517f6c";
String clientSecret = "3Psd2VEhsA3dVsSPHW0ll5r/03kAqlA2P4w2IiWPA8UWSadcX0we2wffjyTUYGsK";
String clientId = "e512d3940a7d11eeae0cd6fb272b183c";
String clientSecret = "k8cF9CgXsj/lnuP2C4Vhx8tuNsPwieBIU8n14vHL1EoWSadcX0we2wffjyTUYGsK";
String userUrl = "http://" + gwUrl + "/psr-auth/oauth/accessToken?grant_type={grant_type}&client_id={client_id}&client_secret={client_secret}";
Map<String, String> map = new HashMap<>();
@@ -719,7 +720,7 @@ public class SupvPushGwServiceImpl implements SupvPushGwService {
throw new BusinessException("获取数据token出现未知异常请检查ip端口是否正确");
}
return token;
}
}*/
public Map<String,String> sendFile(String url,SupvFile supvFile) throws IOException {
//获取文件服务器地址
@@ -786,7 +787,7 @@ public class SupvPushGwServiceImpl implements SupvPushGwService {
public String requestCommon(String serviceName, String url, Map<String, String> param) {
String str;
HttpParameters.Builder builder = new HttpParameters.Builder();
String token = LoginToken();
String token = GwSendUtil.LoginToken();
builder.putHeaderParamsMap("x-token", token);
builder.requestURL(url) // 设置请求的URL,可以拼接URL请求参数