diff --git a/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/LineDevGetDTO.java b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/LineDevGetDTO.java index 5b8effe2b..f89bdb9a6 100644 --- a/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/LineDevGetDTO.java +++ b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/LineDevGetDTO.java @@ -96,4 +96,9 @@ public class LineDevGetDTO { * oracle监测点id */ private Integer oracleLineId; + + /** + * 接线方式 0.星型 1.星三角 2.三角 + */ + private String wiringMethod; } diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/impl/CommTerminalServiceImpl.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/impl/CommTerminalServiceImpl.java index 62bbe0c81..f4bc1856d 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/impl/CommTerminalServiceImpl.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/impl/CommTerminalServiceImpl.java @@ -123,16 +123,22 @@ public class CommTerminalServiceImpl implements CommTerminalService { //电压等级 // List voltageDic = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_VOLTAGE.getCode()).getData(); //Map mapVoltage = voltageDic.stream().collect(Collectors.toMap(DictData::getId, Function.identity())); + //接线方式 + List wireList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_CONNECT.getCode()).getData(); + Map wireMap = wireList.stream().collect(Collectors.toMap(DictData::getId,Function.identity())); + //监测点状态 DictData dictData = dicDataFeignClient.getDicDataByNameAndTypeName(DicDataTypeEnum.LINE_STATE.getName(), DicDataEnum.RUN.getName()).getData(); - Map> map = new HashMap<>(); + Map> finalMap; if (deptGetLineParam.getSystemType() == 0 || deptGetLineParam.getSystemType() == 2) { List monitorList = monitorMapper.selectList(new LambdaQueryWrapper() .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> mapPms = new HashMap<>(); @@ -141,7 +147,7 @@ public class CommTerminalServiceImpl implements CommTerminalService { mapPms = pmsMonitorBaseDTOList.stream().collect(Collectors.groupingBy(PmsMonitorBaseDTO::getOrgId)); } Map> finalMapPms = mapPms;*/ - Map> 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); }); } diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/dto/LineDataDto.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/dto/LineDataDto.java index 1065994d6..91d73c7e9 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/dto/LineDataDto.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/dto/LineDataDto.java @@ -18,6 +18,8 @@ public class LineDataDto { private String lineId; + private Integer terminalWiringMethod; + private Double rms; private Double vUnbalance; diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimVoltageD.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimVoltageD.java index f5d8f60fc..7d9f7e288 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimVoltageD.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimVoltageD.java @@ -27,6 +27,12 @@ public class RDimVoltageD { @MppMultiId private LocalDate statisDate; + /** + * 数据类型(avg:平均值 sd:标准差) + */ + @MppMultiId + private String dataType; + /** * 单位id */ diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/upload/RUploadDataLog.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/upload/RUploadDataLog.java new file mode 100644 index 000000000..5d00f71f1 --- /dev/null +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/upload/RUploadDataLog.java @@ -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; + +/** + *

+ * 调度算法执行结果记录表 + *

+ * + * @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; + + +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/upload/RUploadDataLogController.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/upload/RUploadDataLogController.java new file mode 100644 index 000000000..72919b57b --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/upload/RUploadDataLogController.java @@ -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; + +/** + *

+ * 调度算法执行结果记录表 前端控制器 + *

+ * + * @author hongawen + * @since 2024-06-06 + */ +@RestController +@RequestMapping("/rUploadDataLog") +public class RUploadDataLogController extends BaseController { + +} + diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/upload/RUploadDataLogMapper.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/upload/RUploadDataLogMapper.java new file mode 100644 index 000000000..01720efcc --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/upload/RUploadDataLogMapper.java @@ -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; + +/** + *

+ * 调度算法执行结果记录表 Mapper 接口 + *

+ * + * @author hongawen + * @since 2024-06-06 + */ +public interface RUploadDataLogMapper extends MppBaseMapper { + +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/impl/RMpPartHarmonicDetailDServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/impl/RMpPartHarmonicDetailDServiceImpl.java index 0380c74eb..586552720 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/impl/RMpPartHarmonicDetailDServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/impl/RMpPartHarmonicDetailDServiceImpl.java @@ -60,7 +60,7 @@ public class RMpPartHarmonicDetailDServiceImpl extends ServiceImpl 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 lineIdLists = deptLineFeignClient.getLineNodeByDeptId(param.getOrgNo()).getData(); if (CollectionUtils.isEmpty(lineIdLists)){ @@ -70,7 +70,7 @@ public class RMpPartHarmonicDetailDServiceImpl extends ServiceImpl 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 rMpPartHarmonicDetailDTOS = new ArrayList<>(); LocalDate date = LocalDate.parse(param.getStartTime()); YearMonth yearMonth = YearMonth.from(date); diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/IRUploadDataLogService.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/IRUploadDataLogService.java new file mode 100644 index 000000000..7efb7ba79 --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/IRUploadDataLogService.java @@ -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; + +/** + *

+ * 调度算法执行结果记录表 服务类 + *

+ * + * @author hongawen + * @since 2024-06-06 + */ +public interface IRUploadDataLogService extends IMppService { + +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/REvaluationDataServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/REvaluationDataServiceImpl.java index 27dcf132e..cf12e1dc9 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/REvaluationDataServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/REvaluationDataServiceImpl.java @@ -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 list; //指定数据上送,不管之前有没有上送,都重新上送一次 //(预防之前上送过,修改数据后需要再次上送) @@ -141,6 +149,8 @@ public class REvaluationDataServiceImpl extends ServiceImpl> partition = ListUtils.partition(list, 100); //分片上传 + StrBuilder resultLog = new StrBuilder(); + AtomicBoolean resultFlag = new AtomicBoolean(true); for (int i = 0; i < partition.size(); i++) { //处理数据 List collect = partition.get(i).stream().peek(item -> { @@ -181,11 +191,29 @@ public class REvaluationDataServiceImpl extends ServiceImpl send = GwSendUtil.send(sp, GWSendEnum.EVALUATION); //获取返回结果 List 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 getBaseEvaOnlineBusDetail(DimBusBarParam param) { List temBusIds = new ArrayList<>(); @@ -607,7 +635,9 @@ public class REvaluationDataServiceImpl extends ServiceImpl ids, Map send) { + private void returnInformation(Integer step, List ids, Map 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 + * 调度算法执行结果记录表 服务实现类 + *

+ * + * @author hongawen + * @since 2024-06-06 + */ +@Service +public class RUploadDataLogServiceImpl extends MppServiceImpl implements IRUploadDataLogService { + +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimVoltageDServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimVoltageDServiceImpl.java index 9fc08503d..cc727e608 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimVoltageDServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimVoltageDServiceImpl.java @@ -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; /** *

@@ -57,36 +64,58 @@ public class RDimVoltageDServiceImpl extends MppServiceImpl calculatedParam) { List result = new ArrayList<>(); List 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 lineList = new HashSet<>(); Set busBarList = new HashSet<>(); //接线方式 List dictData = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_CONNECT.getCode()).getData(); - Map dictDataMap = dictData.stream().collect(Collectors.toMap(DictData::getId,Function.identity())); + Map 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 list1 = getMonitorInfo(lineList); + Map monitorMap = list1.stream().collect(Collectors.toMap(Monitor::getId, Function.identity())); + //获取监测点数据 - List list2 = getLineData(beginDay,endDay,lineList); + List 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 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 rStatIntegrityDList = rStatIntegrityDMapper.selectList(queryWrapper); //获取母线信息 List list3 = getBusBarInfo(busBarList); //循环区域信息,筛选符合条件的数据,做统计 - deptList.forEach(item->{ + deptList.forEach(item -> { + + if(item.getUnitId().equals("13B9B47F251C3324E05338297A0A0595")){ + + System.out.println(55); + } + List list = item.getBusBarIds(); if (CollUtil.isNotEmpty(list)) { RDimVoltageD rDimVoltageD = new RDimVoltageD(); @@ -98,142 +127,216 @@ public class RDimVoltageDServiceImpl extends MppServiceImpl> 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 getMonitorInfo(Set lineList) { LambdaQueryWrapper 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 getBusBarInfo(Set busBarList){ + public List getBusBarInfo(Set busBarList) { LambdaQueryWrapper 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 getLineData(String startTime, String endTime, Set lineList){ - return this.baseMapper.getLineData(startTime,endTime,lineList); + public List getLineData(String startTime, String endTime, Set lineList) { + List 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 list1, List list2, List list3,List rStatIntegrityDList,Map dictDataMap) { + public void assignment(String voltage, RDimVoltageD rDimVoltageD, List list1, List list2, List list3, List rStatIntegrityDList,List 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 l1 = list1.stream().map(GeneratrixWire::getId).collect(Collectors.toList()); //获取这些母线下的监测点 List l2 = list2.stream().filter(obj -> l1.contains(obj.getLineId())).collect(Collectors.toList()); - List rStatIntegrityDS = rStatIntegrityDList.stream().filter(it->l2.stream().map(Monitor::getId).collect(Collectors.toList()).contains(it.getLineIndex())).collect(Collectors.toList()); + List rStatIntegrityDS = rStatIntegrityDList.stream().filter(it -> l2.stream().map(Monitor::getId).collect(Collectors.toList()).contains(it.getLineIndex())).collect(Collectors.toList()); - Map> 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> mapMonitor = l2.stream().collect(Collectors.groupingBy(Monitor::getLineId)); + + List 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 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 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 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 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()); } } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadEvaluationDataDServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadEvaluationDataDServiceImpl.java index dbef549d6..c1fcbfbba 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadEvaluationDataDServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadEvaluationDataDServiceImpl.java @@ -83,12 +83,15 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl allMidBusBarList = this.getBusBarInfo(); + + //获取在运测点 + List monitorList = this.getRunMonitorList(pmsRunStatisticsListD); + + //获取监测母线 List superviseBusList; if (CollUtil.isNotEmpty(pmsRunStatisticsListD)) { - List wireIds = pmsRunStatisticsListD.stream() - .filter(x -> StrUtil.isNotBlank(x.getOnlineBusIds())) - .flatMap(x -> CollectionUtil.toList(x.getOnlineBusIds().split(StrUtil.COMMA)).stream()).distinct().collect(Collectors.toList()); + List 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 lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(GeneratrixWire::getStatus, DataStateEnum.ENABLE.getCode()) @@ -125,8 +128,14 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl Objects.equals(o.getOrgId(), item.getUnitId())).findFirst().orElse(null); + List 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 { - 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 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 valueList = new ArrayList<>(); + List 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 calculatedParam) { - List result = new ArrayList<>(); - final Double defaultValue = 3.1415926; - //首先获取pms_run_statistic表是否存在执行日期的数据 - List pmsRunStatisticsListD = runStatisticDMapper.selectList(new LambdaQueryWrapper().eq(PmsRunStatisticD::getStatisticDate, calculatedParam.getDataDate())); - - //获取中台母线信息 - List allMidBusBarList = this.getBusBarInfo(); - //获取监测母线 - List superviseBusList; - if (CollUtil.isNotEmpty(pmsRunStatisticsListD)) { - List 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 lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(GeneratrixWire::getStatus, DataStateEnum.ENABLE.getCode()) - .in(GeneratrixWire::getId, wireIds); - superviseBusList = generatrixWireMapper.selectList(lambdaQueryWrapper); - }else{ - List list1 = this.getPmsMonitor(); - superviseBusList = this.getCnBusBarInfo(list1); - } - } else { - //获取监测点信息 - List list1 = this.getPmsMonitor(); - superviseBusList = this.getCnBusBarInfo(list1); + private List getRunMonitorList(List pmsRunStatisticsListD) { + List 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 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 barDto = commTerminalGeneralClient.deptBusBar(deptGetLineParam).getData(); - - List busBarList = this.getBusBarNum(superviseBusList, allMidBusBarList, barDto); - List allDept = this.getAllDeptLineNum(busBarList, deptGetLineParam); - //获取省级单位id - String provinceId = deptFeignClient.getDepSonIdByDeptId(rootDept.getId()).getData().get(0); - Dept dept = deptFeignClient.getDeptById(provinceId).getData(); - //获取所有单位 - List deptList = deptFeignClient.getAllDept().getData(); - Map> deptMap = deptList.stream().collect(Collectors.groupingBy(Dept::getCode)); - - List 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 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 result, List valueList, String indexType, String voltage, RUploadEvaluationDataD rUploadEvaluationDataD2, List line) { + public void channelHarmonicData(RUploadEvaluationDataD rUploadEvaluationDataD, List result, List valueList, List valueListSd, String indexType, String voltage, RUploadEvaluationDataD rUploadEvaluationDataD2, List line) { final Double defaultValue = 3.1415926; int length; if (!Objects.isNull(valueList)) { @@ -760,8 +658,7 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl 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 line, String type, Integer times) { + public Double getDimVoltageDataSd(String voltage, Double avg, String time, List line, String type, Integer times) { double standardDeviation = 3.1415926; if (Objects.equals(avg, standardDeviation)) { return standardDeviation; } //获取监测点数据 if (CollUtil.isNotEmpty(line)) { - Map> map = line.stream().collect(Collectors.groupingBy(LineDevGetDTO::getVoltageLevel)); + Map> map = line.stream().collect(Collectors.groupingBy(Monitor::getVoltageLevel)); if (!Objects.isNull(map.get(voltage))) { - Set lineSet = map.get(voltage).stream().map(LineDevGetDTO::getPointId).collect(Collectors.toSet()); + Set lineSet = map.get(voltage).stream().map(Monitor::getId).collect(Collectors.toSet()); List dataList = rDimVoltageDMapper.getLineData(time, time, lineSet); + + //根据平均值计算每个指标的标准差 if (CollUtil.isNotEmpty(dataList)) { double total = this.getDataByType(type, avg, dataList, times); diff --git a/pqs-process/process-api/src/main/java/com/njcn/process/pojo/param/SupvPlanParam.java b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/param/SupvPlanParam.java index 0295e4ee5..def6e9153 100644 --- a/pqs-process/process-api/src/main/java/com/njcn/process/pojo/param/SupvPlanParam.java +++ b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/param/SupvPlanParam.java @@ -45,6 +45,13 @@ public class SupvPlanParam extends BaseParam { @NotBlank(message = "监督单位不可为空") private String supvOrgId; + /** + * 计划所属单位 + */ + @ApiModelProperty(value = "计划所属单位",required = true) + @NotBlank(message = "计划所属单位不可为空") + private String planBelongOrg; + /** * 计划编制人id */ diff --git a/pqs-process/process-api/src/main/java/com/njcn/process/pojo/po/SupvPlan.java b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/po/SupvPlan.java index 1cd62f22f..a1a582f10 100644 --- a/pqs-process/process-api/src/main/java/com/njcn/process/pojo/po/SupvPlan.java +++ b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/po/SupvPlan.java @@ -64,6 +64,11 @@ public class SupvPlan extends BaseEntity { */ private String supvOrgId; + /** + * 监督单位 + */ + private String planBelongOrg; + /** * 监督单位 */ diff --git a/pqs-process/process-api/src/main/java/com/njcn/process/pojo/vo/SupvPlanVO.java b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/vo/SupvPlanVO.java index 3feff1add..d42290394 100644 --- a/pqs-process/process-api/src/main/java/com/njcn/process/pojo/vo/SupvPlanVO.java +++ b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/vo/SupvPlanVO.java @@ -42,6 +42,11 @@ public class SupvPlanVO { @ApiModelProperty(value = "计划编制单位id") private String planOrgId; + /** + * 监督计划所属单位 + */ + private String planBelongOrg; + /** * 计划编制单位名字 */ diff --git a/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/SupvPlanServiceImpl.java b/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/SupvPlanServiceImpl.java index 19b0b8a69..a18251910 100644 --- a/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/SupvPlanServiceImpl.java +++ b/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/SupvPlanServiceImpl.java @@ -286,7 +286,7 @@ public class SupvPlanServiceImpl extends ServiceImpl 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) { diff --git a/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/SupvPushGwServiceImpl.java b/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/SupvPushGwServiceImpl.java index 9ce4f60e5..927ee0d5c 100644 --- a/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/SupvPushGwServiceImpl.java +++ b/pqs-process/process-boot/src/main/java/com/njcn/process/service/impl/SupvPushGwServiceImpl.java @@ -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 map = new HashMap<>(); @@ -719,7 +720,7 @@ public class SupvPushGwServiceImpl implements SupvPushGwService { throw new BusinessException("获取数据token出现未知异常!请检查ip端口是否正确!"); } return token; - } + }*/ public Map sendFile(String url,SupvFile supvFile) throws IOException { //获取文件服务器地址 @@ -786,7 +787,7 @@ public class SupvPushGwServiceImpl implements SupvPushGwService { public String requestCommon(String serviceName, String url, Map 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请求参数