From fac26809a48a068d5773c15eb250951f12172502 Mon Sep 17 00:00:00 2001 From: cdf <857448963@qq.com> Date: Sat, 11 May 2024 16:51:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B2=B3=E5=8C=97pms=E4=B8=A4=E7=BA=A7?= =?UTF-8?q?=E6=96=87=E6=A1=A3=E9=9C=80=E6=B1=82=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/REvaluationDataServiceImpl.java | 41 ++++-- .../api/upload/DimBusGlobalFeignClient.java | 4 + ...imBusGlobalFeignClientFallbackFactory.java | 6 + .../dim/IRDimBusGlobalDController.java | 8 +- .../mysql/day/RStatIntegrityDMapper.java | 2 + .../mysql/upload/IRDimBusUpYService.java | 3 + .../upload/impl/RDimBusUpDServiceImpl.java | 43 +++--- .../upload/impl/RDimBusUpYServiceImpl.java | 131 ++++++++++++++++++ .../tasks/PmsRunStatisticTaskRunner.java | 1 + 9 files changed, 209 insertions(+), 30 deletions(-) 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 f8afd0d1d..abe5ec21a 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 @@ -19,9 +19,7 @@ import com.njcn.harmonic.pojo.dto.upload.PqEvaluationCreateDTO; import com.njcn.harmonic.pojo.param.UploadDataParam; import com.njcn.harmonic.pojo.param.UploadParam; import com.njcn.harmonic.pojo.param.upload.DimBusBarParam; -import com.njcn.harmonic.pojo.po.upload.PmsRunStatisticD; -import com.njcn.harmonic.pojo.po.upload.RDimBusUpD; -import com.njcn.harmonic.pojo.po.upload.RUploadEvaluationDataD; +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; @@ -36,6 +34,7 @@ import com.njcn.web.utils.GwSendUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.ListUtils; +import org.apache.poi.ss.formula.functions.T; import org.springframework.stereotype.Service; import java.math.BigDecimal; @@ -209,29 +208,53 @@ public class REvaluationDataServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); this.harmTarget(param, queryWrapper); - queryWrapper.eq("statistic_date", day); + queryWrapper.eq("statistic_date", day).eq("stat_date",param.getStatDate()); List rDimBusUpDList = rDimBusUpDMapper.selectList(queryWrapper); if (CollectionUtil.isEmpty(rDimBusUpDList)) { return new Page<>(); } temBusIds = rDimBusUpDList.stream().map(RDimBusUpD::getMidBusId).distinct().collect(Collectors.toList()); } - param.setOnlineBusIds(temBusIds); - - } else if (param.getStatType().equals("02")) { + LocalDate monthBegin = LocalDate.parse(param.getStartTime()); + //具体日期投运,监测台账查询 + LambdaQueryWrapper dayLam = new LambdaQueryWrapper<>(); + dayLam.eq(PmsRunStatisticM::getStatisticDate, monthBegin).in(PmsRunStatisticM::getDeptId, param.getNodeId()).eq(PmsRunStatisticM::getStatDate,param.getStatDate()); + PmsRunStatisticM pmsRunStatisticM = pmsRunStatisticMMapper.selectOne(dayLam); + if (Objects.nonNull(pmsRunStatisticM)) { + if (StrUtil.isNotBlank(param.getDataSource())) { + temBusIds = new ArrayList<>(Arrays.asList(pmsRunStatisticM.getOnlineBusMidIds().split(StrUtil.COMMA))); + } else { + temBusIds = new ArrayList<>(Arrays.asList(pmsRunStatisticM.getRunBusIds().split(StrUtil.COMMA))); + } + } + + //稳态指标条件筛选 + if (StrUtil.isNotBlank(param.getIndexType())) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + this.harmTarget(param, queryWrapper); + queryWrapper.eq("statistic_date", monthBegin); + List rDimBusUpMList = rDimBusUpMMapper.selectList(queryWrapper); + if (CollectionUtil.isEmpty(rDimBusUpMList)) { + return new Page<>(); + } + temBusIds = rDimBusUpMList.stream().map(RDimBusUpM::getMidBusId).distinct().collect(Collectors.toList()); + } } else if (param.getStatType().equals("01")) { } } - + param.setOnlineBusIds(temBusIds); + if (CollectionUtil.isEmpty(temBusIds)) { + return new Page<>(); + } return this.baseMapper.getBaseEvaOnlineBusDetail(new Page<>(param.getPageNum(), param.getPageSize()), param); } - private void harmTarget(DimBusBarParam param, QueryWrapper queryWrapper) { + private void harmTarget(DimBusBarParam param, QueryWrapper queryWrapper) { //稳态指标条件筛选 String target = "", harmV = ""; switch (param.getIndexType()) { diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/upload/DimBusGlobalFeignClient.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/upload/DimBusGlobalFeignClient.java index c6cf9c6b7..fcfc456b7 100644 --- a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/upload/DimBusGlobalFeignClient.java +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/upload/DimBusGlobalFeignClient.java @@ -20,4 +20,8 @@ public interface DimBusGlobalFeignClient { @GetMapping("/runLedgerStatistic") void runLedgerStatistic (@RequestParam("date")String date); + + + @GetMapping("/dimBusUpEveryDay") + void dimBusUpEveryDay (@RequestParam("date")String date); } diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/upload/fallback/DimBusGlobalFeignClientFallbackFactory.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/upload/fallback/DimBusGlobalFeignClientFallbackFactory.java index 5e3f5b8d8..184be72e4 100644 --- a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/upload/fallback/DimBusGlobalFeignClientFallbackFactory.java +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/upload/fallback/DimBusGlobalFeignClientFallbackFactory.java @@ -30,6 +30,12 @@ public class DimBusGlobalFeignClientFallbackFactory implements FallbackFactory { + + } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/IRDimBusUpYService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/IRDimBusUpYService.java index 62000e713..18bd647ec 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/IRDimBusUpYService.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/IRDimBusUpYService.java @@ -14,4 +14,7 @@ import com.njcn.harmonic.pojo.po.upload.RDimBusUpY; */ public interface IRDimBusUpYService extends IMppService { + + void handYear(String date); + } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RDimBusUpDServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RDimBusUpDServiceImpl.java index 7c25bf883..c3d4ef2ef 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RDimBusUpDServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RDimBusUpDServiceImpl.java @@ -3,6 +3,7 @@ package com.njcn.prepare.harmonic.service.mysql.upload.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.TimeInterval; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -60,6 +61,7 @@ public class RDimBusUpDServiceImpl extends MppServiceImpl queryWrapper = new QueryWrapper<>(); @@ -82,6 +84,12 @@ public class RDimBusUpDServiceImpl extends MppServiceImpl rStatDataVDPOList = rStatDataVDMapper.selectList(new LambdaQueryWrapper().in(RStatDataVDPO::getLineId,allMonitorIds).eq(RStatDataVDPO::getTime,localDate).eq(RStatDataVDPO::getValueType,"AVG").in(RStatDataVDPO::getPhasicType, Stream.of("A","B","C").collect(Collectors.toList()))); Map> vMap = rStatDataVDPOList.stream().collect(Collectors.groupingBy(RStatDataVDPO::getLineId)); + + List rStatLimitRateDPOList = rStatLimitRateDMapper.selectList( + new LambdaQueryWrapper().in(RStatLimitRateDPO::getLineId,allMonitorIds) + .eq(RStatLimitRateDPO::getTime,localDate).in(RStatLimitRateDPO::getPhasicType,Stream.of("A","B","C").collect(Collectors.toList()))); + Map> limtMap = rStatLimitRateDPOList.stream().collect(Collectors.groupingBy(RStatLimitRateDPO::getLineId)); + Map> listMap = monitorList.stream().collect(Collectors.groupingBy(Monitor::getLineId)); List poList = new ArrayList<>(); @@ -91,9 +99,6 @@ public class RDimBusUpDServiceImpl extends MppServiceImpl rStatLimitRateDPOList = rStatLimitRateDMapper.selectList( - new LambdaQueryWrapper().eq(RStatLimitRateDPO::getLineId,maxR.getLineIndex()) - .eq(RStatLimitRateDPO::getTime,localDate).in(RStatLimitRateDPO::getPhasicType,Stream.of("A","B","C").collect(Collectors.toList()))); GeneratrixWire generatrixWire = generatrixWireMap.get(key); String effectIds = temIntegrity.stream().map(RStatIntegrityD::getLineIndex).collect(Collectors.joining(StrUtil.COMMA)); @@ -103,27 +108,27 @@ public class RDimBusUpDServiceImpl extends MppServiceImpl vList = vMap.get(maxR.getLineIndex()); temAvg = vList.stream().mapToDouble(RStatDataVDPO::getRms).average().orElse(3.14159); } + if(limtMap.containsKey(maxR.getLineIndex())){ + List statLimitRateDPOList = limtMap.get(maxR.getLineIndex()); - for(RStatLimitRateDPO rStatLimitRateDPO: rStatLimitRateDPOList){ - RDimBusUpD rDimBusUpD = new RDimBusUpD(); - - BeanUtil.copyProperties(rStatLimitRateDPO,rDimBusUpD); - - - rDimBusUpD.setBusId(key); - rDimBusUpD.setMidBusId(generatrixWire.getMidBusId()); - rDimBusUpD.setStatisticDate(localDate); - rDimBusUpD.setEffectId(maxR.getLineIndex()); - rDimBusUpD.setEffectIds(effectIds); - rDimBusUpD.setVoltageLevel(generatrixWire.getScale()); - rDimBusUpD.setV(temAvg); - - poList.add(rDimBusUpD); + for(RStatLimitRateDPO rStatLimitRateDPO: statLimitRateDPOList){ + RDimBusUpD rDimBusUpD = new RDimBusUpD(); + BeanUtil.copyProperties(rStatLimitRateDPO,rDimBusUpD); + rDimBusUpD.setBusId(key); + rDimBusUpD.setMidBusId(generatrixWire.getMidBusId()); + rDimBusUpD.setStatisticDate(localDate); + rDimBusUpD.setEffectId(maxR.getLineIndex()); + rDimBusUpD.setEffectIds(effectIds); + rDimBusUpD.setVoltageLevel(generatrixWire.getScale()); + rDimBusUpD.setV(temAvg); + poList.add(rDimBusUpD); + } } } }); - this.saveOrUpdateBatchByMultiId(poList); + + System.out.println("母线日算法执行时间(S)-----------------------"+timeInterval.intervalSecond()); } } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RDimBusUpYServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RDimBusUpYServiceImpl.java index 157dbeb26..7e9cca22b 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RDimBusUpYServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RDimBusUpYServiceImpl.java @@ -1,12 +1,46 @@ package com.njcn.prepare.harmonic.service.mysql.upload.impl; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.date.TimeInterval; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; +import com.njcn.device.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.day.RStatDataVDPO; +import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO; +import com.njcn.harmonic.pojo.po.upload.RDimBusUpY; +import com.njcn.prepare.harmonic.mapper.mysql.area.PmsMonitorPOMapper; +import com.njcn.prepare.harmonic.mapper.mysql.day.RStatDataVDMapper; +import com.njcn.prepare.harmonic.mapper.mysql.day.RStatIntegrityDMapper; +import com.njcn.prepare.harmonic.mapper.mysql.day.RStatLimitRateDMapper; +import com.njcn.prepare.harmonic.mapper.mysql.dim.GeneratrixWireMapper; import com.njcn.prepare.harmonic.mapper.mysql.upload.RDimBusUpYMapper; import com.njcn.harmonic.pojo.po.upload.RDimBusUpY; import com.njcn.prepare.harmonic.service.mysql.upload.IRDimBusUpYService; +import com.njcn.system.api.DicDataFeignClient; +import com.njcn.system.enums.DicDataEnum; +import com.njcn.system.enums.DicDataTypeEnum; +import com.njcn.system.pojo.po.DictData; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; +import java.util.stream.Stream; + /** *

* 母线越限详情 服务实现类 @@ -16,6 +50,103 @@ import org.springframework.stereotype.Service; * @since 2024-05-09 */ @Service +@RequiredArgsConstructor public class RDimBusUpYServiceImpl extends MppServiceImpl implements IRDimBusUpYService { + private final RStatIntegrityDMapper rStatIntegrityDMapper; + + private final DicDataFeignClient dicDataFeignClient; + + private final PmsMonitorPOMapper pmsMonitorPOMapper; + + private final GeneratrixWireMapper generatrixWireMapper; + + private final RStatDataVDMapper rStatDataVDMapper; + + private final RStatLimitRateDMapper rStatLimitRateDMapper; + + @Override + public void handYear(String date) { + TimeInterval timeInterval = new TimeInterval(); + LocalDate localDate = LocalDate.parse(date); + DateTime start = DateUtil.beginOfYear(DateUtil.parse(date, DatePattern.NORM_DATE_PATTERN)); + DateTime end = DateUtil.parse(date); + LocalDate statDate = LocalDate.parse(DateUtil.format(start, DatePattern.NORM_DATE_PATTERN)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.select("line_index","avg(real_time/due_time) as integrityData","avg(real_time) as realTime","avg(due_time) as dueTime"). + between("time_id",start,end).last("group by line_index"); + List rStatIntegrityDList = rStatIntegrityDMapper.selectList(queryWrapper); + //TODO 测试暂时注释 + //List integrityDList = rStatIntegrityDList.stream().filter(it->it.getIntegrityData()>0.95).collect(Collectors.toList()); + + DictData dictData = dicDataFeignClient.getDicDataByCodeAndType(DicDataEnum.RUN.getCode(), DicDataTypeEnum.LINE_STATE.getCode()).getData(); + List monitorList = pmsMonitorPOMapper.selectList(new LambdaQueryWrapper().eq(Monitor::getIsUpToGrid,1).eq(Monitor::getMonitorState,dictData.getId())); + List allMonitorIds = monitorList.stream().map(Monitor::getId).distinct().collect(Collectors.toList()); + + List lineIds = monitorList.stream().map(Monitor::getLineId).distinct().collect(Collectors.toList()); + List generatrixWireList = generatrixWireMapper.selectList(new LambdaQueryWrapper().in(GeneratrixWire::getId,lineIds)); + Map generatrixWireMap = generatrixWireList.stream().collect(Collectors.toMap(GeneratrixWire::getId, Function.identity())); + + List rStatDataVDPOList = rStatDataVDMapper.selectList(new QueryWrapper() + .select("line_id","phasic_type","avg(rms) as rms").lambda() + .in(RStatDataVDPO::getLineId,allMonitorIds) + .between(RStatDataVDPO::getTime,start,end) + .eq(RStatDataVDPO::getValueType,"AVG") + .in(RStatDataVDPO::getPhasicType, Stream.of("A","B","C").collect(Collectors.toList())) + .groupBy(RStatDataVDPO::getLineId,RStatDataVDPO::getPhasicType)); + Map> vMap = rStatDataVDPOList.stream().collect(Collectors.groupingBy(RStatDataVDPO::getLineId)); + + StringBuilder stringBuilder = new StringBuilder(); + for(int i =2;i<26;i++){ + stringBuilder.append(",").append("sum(uharm_").append(i).append("_overtime) as ").append("uharm_").append(i).append("_overtime"); + } + List rStatLimitRateDPOList = rStatLimitRateDMapper.selectList( + new QueryWrapper().select("my_index as lineId,phasic_type,sum(all_time) as allTime,sum(flicker_all_time) as flickerAllTime,sum(freq_dev_overtime) as freqDevOvertime," + + "sum(voltage_dev_overtime) as voltageDevOvertime,sum(ubalance_overtime) as ubalanceOvertime,sum(flicker_overtime) as flickerOvertime,sum(uaberrance_overtime)as uaberranceOvertime,sum(i_neg_overtime)as i_neg_overtime"+stringBuilder) + .lambda().in(RStatLimitRateDPO::getLineId,allMonitorIds) + .between(RStatLimitRateDPO::getTime,start,end) + .in(RStatLimitRateDPO::getPhasicType,Stream.of("A","B","C").collect(Collectors.toList())).groupBy(RStatLimitRateDPO::getLineId,RStatLimitRateDPO::getPhasicType)); + Map> limtMap = rStatLimitRateDPOList.stream().collect(Collectors.groupingBy(RStatLimitRateDPO::getLineId)); + + Map> listMap = monitorList.stream().collect(Collectors.groupingBy(Monitor::getLineId)); + List poList = new ArrayList<>(); + listMap.forEach((key,val)->{ + List monitorIds = val.stream().map(Monitor::getId).collect(Collectors.toList()); + List temIntegrity = rStatIntegrityDList.stream().filter(it->monitorIds.contains(it.getLineIndex())).collect(Collectors.toList()); + if(CollectionUtil.isNotEmpty(temIntegrity)){ + RStatIntegrityD maxR = temIntegrity.stream().max(Comparator.comparing(RStatIntegrityD::getIntegrityData)).orElse(null); + assert maxR != null; + + GeneratrixWire generatrixWire = generatrixWireMap.get(key); + String effectIds = temIntegrity.stream().map(RStatIntegrityD::getLineIndex).collect(Collectors.joining(StrUtil.COMMA)); + + Double temAvg= 3.14159; + if(vMap.containsKey(maxR.getLineIndex())){ + List vList = vMap.get(maxR.getLineIndex()); + temAvg = vList.stream().mapToDouble(RStatDataVDPO::getRms).average().orElse(3.14159); + } + + if(limtMap.containsKey(maxR.getLineIndex())){ + List rStatLimitRateDPOS = limtMap.get(maxR.getLineIndex()); + for(RStatLimitRateDPO rStatLimitRateDPO: rStatLimitRateDPOS){ + RDimBusUpY RDimBusUpY = new RDimBusUpY(); + BeanUtil.copyProperties(rStatLimitRateDPO,RDimBusUpY); + RDimBusUpY.setBusId(key); + RDimBusUpY.setMidBusId(generatrixWire.getMidBusId()); + RDimBusUpY.setStatisticDate(statDate); + RDimBusUpY.setStatDate(localDate); + RDimBusUpY.setEffectId(maxR.getLineIndex()); + RDimBusUpY.setEffectIds(effectIds); + RDimBusUpY.setVoltageLevel(generatrixWire.getScale()); + RDimBusUpY.setV(temAvg); + poList.add(RDimBusUpY); + } + } + } + }); + + this.saveOrUpdateBatchByMultiId(poList); + System.out.println("母线年算法执行时间(S)-----------------------"+timeInterval.intervalSecond()); + } } diff --git a/pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/PmsRunStatisticTaskRunner.java b/pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/PmsRunStatisticTaskRunner.java index 50cca3e34..85bf5d49d 100644 --- a/pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/PmsRunStatisticTaskRunner.java +++ b/pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/PmsRunStatisticTaskRunner.java @@ -27,5 +27,6 @@ public class PmsRunStatisticTaskRunner implements TimerTaskRunner { date = DateUtil.format(DateUtil.yesterday(),DatePattern.NORM_DATE_PATTERN); } dimBusGlobalFeignClient.runLedgerStatistic(date); + dimBusGlobalFeignClient.dimBusUpEveryDay(date); } }