From 91ff704f0a9dab4732ac58e6b1b6e3c63174bf07 Mon Sep 17 00:00:00 2001 From: xy <748613696@qq.com> Date: Wed, 7 Jan 2026 18:23:38 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AE=97=E6=B3=95=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceimpl/line/DayDataServiceImpl.java | 77 ++++++++++--------- .../line/IDataCrossingServiceImpl.java | 28 ++++++- .../line/IDataLimitRateAsyncImpl.java | 4 + .../influxdb/InfluxdbDataHarmpowerPImpl.java | 5 +- .../influxdb/InfluxdbDataHarmpowerQImpl.java | 6 +- .../influxdb/InfluxdbDataHarmpowerSImpl.java | 6 +- .../src/main/resources/bootstrap.yml | 2 +- 7 files changed, 81 insertions(+), 47 deletions(-) diff --git a/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/DayDataServiceImpl.java b/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/DayDataServiceImpl.java index a81292e..a017338 100644 --- a/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/DayDataServiceImpl.java +++ b/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/DayDataServiceImpl.java @@ -82,7 +82,7 @@ public class DayDataServiceImpl implements IDayDataService { pendingIds.forEach(list->{ lineParam.setLineId(list); //添加异常数据时间点 - getAbnormalData(lineParam); + //getAbnormalData(lineParam); //获取原始数据 List partList = dataVFeignClient.getBaseData(lineParam).getData(); if (CollUtil.isNotEmpty(partList)) { @@ -100,7 +100,7 @@ public class DayDataServiceImpl implements IDayDataService { dto.setTime(item.getTime()); dto.setLineId(item.getLineId()); dto.setPhasicType(item2.getPhasicType()); - dto.setValueType(item3.getValueType()); + dto.setValueType(item3.getValueType().toUpperCase()); dto.setQualityFlag(Objects.equals(item.getQualityFlag(),"null") ? "0" : item.getQualityFlag()); channelDataVHandler(item3,valueTypes,dto,true); result.add(dto); @@ -131,7 +131,7 @@ public class DayDataServiceImpl implements IDayDataService { pendingIds.forEach(list->{ lineParam.setLineId(list); //添加异常数据时间点 - getAbnormalData(lineParam); + //getAbnormalData(lineParam); //获取原始数据 List partList = dataIFeignClient.getBaseData(lineParam).getData(); if (CollUtil.isNotEmpty(partList)) { @@ -148,7 +148,7 @@ public class DayDataServiceImpl implements IDayDataService { dto.setTime(item.getTime()); dto.setLineId(item.getLineId()); dto.setPhasicType(item2.getPhasicType()); - dto.setValueType(item3.getValueType()); + dto.setValueType(item3.getValueType().toUpperCase()); dto.setQualityFlag(Objects.equals(item.getQualityFlag(),"null") ? "0" : item.getQualityFlag()); channelDataIHandler(item3,valueTypes,dto,true); result.add(dto); @@ -180,7 +180,7 @@ public class DayDataServiceImpl implements IDayDataService { pendingIds.forEach(list->{ lineParam.setLineId(list); //添加异常数据时间点 - getAbnormalData(lineParam); + //getAbnormalData(lineParam); //获取原始数据 List partList = dataFlickerFeignClient.getBaseData(lineParam).getData(); if (CollUtil.isNotEmpty(partList)) { @@ -196,7 +196,7 @@ public class DayDataServiceImpl implements IDayDataService { dto.setTime(item.getTime()); dto.setLineId(item.getLineId()); dto.setPhasicType(item2.getPhasicType()); - dto.setValueType(item4); + dto.setValueType(item4.toUpperCase()); dto.setQualityFlag(Objects.equals(item.getQualityFlag(),"null") ? "0" : item.getQualityFlag()); channelDataFlickerHandler(item3,dto,item4,true); result.add(dto); @@ -229,7 +229,7 @@ public class DayDataServiceImpl implements IDayDataService { pendingIds.forEach(list->{ lineParam.setLineId(list); //添加异常数据时间点 - getAbnormalData(lineParam); + //getAbnormalData(lineParam); //获取原始数据 List partList = dataFlucFeignClient.getBaseData(lineParam).getData(); if (CollUtil.isNotEmpty(partList)) { @@ -245,7 +245,7 @@ public class DayDataServiceImpl implements IDayDataService { dto.setTime(item.getTime()); dto.setLineId(item.getLineId()); dto.setPhasicType(item2.getPhasicType()); - dto.setValueType(item4); + dto.setValueType(item4.toUpperCase()); dto.setQualityFlag(Objects.equals(item.getQualityFlag(),"null") ? "0" : item.getQualityFlag()); channelDataFlucHandler(item3,dto,item4,true); result.add(dto); @@ -277,7 +277,7 @@ public class DayDataServiceImpl implements IDayDataService { pendingIds.forEach(list->{ lineParam.setLineId(list); //添加异常数据时间点 - getAbnormalData(lineParam); + //getAbnormalData(lineParam); //获取原始数据 List partList = dataHarmphasicIFeignClient.getBaseData(lineParam).getData(); if (CollUtil.isNotEmpty(partList)) { @@ -294,7 +294,7 @@ public class DayDataServiceImpl implements IDayDataService { dto.setTime(item.getTime()); dto.setLineId(item.getLineId()); dto.setPhasicType(item2.getPhasicType()); - dto.setValueType(item3.getValueType()); + dto.setValueType(item3.getValueType().toUpperCase()); dto.setQualityFlag(Objects.equals(item.getQualityFlag(),"null") ? "0" : item.getQualityFlag()); channelDataHarmPhasicIHandler(item3,valueTypes,dto,true); result.add(dto); @@ -325,7 +325,7 @@ public class DayDataServiceImpl implements IDayDataService { pendingIds.forEach(list->{ lineParam.setLineId(list); //添加异常数据时间点 - getAbnormalData(lineParam); + //getAbnormalData(lineParam); //获取原始数据 List partList = dataHarmphasicVFeignClient.getBaseData(lineParam).getData(); if (CollUtil.isNotEmpty(partList)) { @@ -342,7 +342,7 @@ public class DayDataServiceImpl implements IDayDataService { dto.setTime(item.getTime()); dto.setLineId(item.getLineId()); dto.setPhasicType(item2.getPhasicType()); - dto.setValueType(item3.getValueType()); + dto.setValueType(item3.getValueType().toUpperCase()); dto.setQualityFlag(Objects.equals(item.getQualityFlag(),"null") ? "0" : item.getQualityFlag()); channelDataHarmPhasicVHandler(item3,valueTypes,dto,true); result.add(dto); @@ -373,7 +373,7 @@ public class DayDataServiceImpl implements IDayDataService { pendingIds.forEach(list->{ lineParam.setLineId(list); //添加异常数据时间点 - getAbnormalData(lineParam); + //getAbnormalData(lineParam); //获取原始数据 List partList = dataHarmpowerPFeignClient.getBaseData(lineParam).getData(); if (CollUtil.isNotEmpty(partList)) { @@ -390,7 +390,7 @@ public class DayDataServiceImpl implements IDayDataService { dto.setTime(item.getTime()); dto.setLineId(item.getLineId()); dto.setPhasicType(item2.getPhasicType()); - dto.setValueType(item3.getValueType()); + dto.setValueType(item3.getValueType().toUpperCase()); dto.setQualityFlag(Objects.equals(item.getQualityFlag(),"null") ? "0" : item.getQualityFlag()); channelDataHarmPowerPHandler(item3,valueTypes,dto,true); result.add(dto); @@ -421,7 +421,7 @@ public class DayDataServiceImpl implements IDayDataService { pendingIds.forEach(list->{ lineParam.setLineId(list); //添加异常数据时间点 - getAbnormalData(lineParam); + //getAbnormalData(lineParam); //获取原始数据 List partList = dataHarmpowerQFeignClient.getBaseData(lineParam).getData(); if (CollUtil.isNotEmpty(partList)) { @@ -438,7 +438,7 @@ public class DayDataServiceImpl implements IDayDataService { dto.setTime(item.getTime()); dto.setLineId(item.getLineId()); dto.setPhasicType(item2.getPhasicType()); - dto.setValueType(item3.getValueType()); + dto.setValueType(item3.getValueType().toUpperCase()); dto.setQualityFlag(Objects.equals(item.getQualityFlag(),"null") ? "0" : item.getQualityFlag()); channelDataHarmPowerQHandler(item3,valueTypes,dto,true); result.add(dto); @@ -469,7 +469,7 @@ public class DayDataServiceImpl implements IDayDataService { pendingIds.forEach(list->{ lineParam.setLineId(list); //添加异常数据时间点 - getAbnormalData(lineParam); + //getAbnormalData(lineParam); //获取原始数据 List partList = dataHarmpowerSFeignClient.getBaseData(lineParam).getData(); if (CollUtil.isNotEmpty(partList)) { @@ -486,7 +486,7 @@ public class DayDataServiceImpl implements IDayDataService { dto.setTime(item.getTime()); dto.setLineId(item.getLineId()); dto.setPhasicType(item2.getPhasicType()); - dto.setValueType(item3.getValueType()); + dto.setValueType(item3.getValueType().toUpperCase()); dto.setQualityFlag(Objects.equals(item.getQualityFlag(),"null") ? "0" : item.getQualityFlag()); channelDataHarmPowerSHandler(item3,valueTypes,dto,true); result.add(dto); @@ -517,7 +517,7 @@ public class DayDataServiceImpl implements IDayDataService { pendingIds.forEach(list->{ lineParam.setLineId(list); //添加异常数据时间点 - getAbnormalData(lineParam); + //getAbnormalData(lineParam); //获取原始数据 List partList = dataHarmRateIFeignClient.getBaseData(lineParam).getData(); if (CollUtil.isNotEmpty(partList)) { @@ -534,7 +534,7 @@ public class DayDataServiceImpl implements IDayDataService { dto.setTime(item.getTime()); dto.setLineId(item.getLineId()); dto.setPhasicType(item2.getPhasicType()); - dto.setValueType(item3.getValueType()); + dto.setValueType(item3.getValueType().toUpperCase()); dto.setQualityFlag(Objects.equals(item.getQualityFlag(),"null") ? "0" : item.getQualityFlag()); channelDataHarmRateIHandler(item3,valueTypes,dto,true); result.add(dto); @@ -565,7 +565,7 @@ public class DayDataServiceImpl implements IDayDataService { pendingIds.forEach(list->{ lineParam.setLineId(list); //添加异常数据时间点 - getAbnormalData(lineParam); + //getAbnormalData(lineParam); //获取原始数据 List partList = dataHarmRateVFeignClient.getBaseData(lineParam).getData(); if (CollUtil.isNotEmpty(partList)) { @@ -582,7 +582,7 @@ public class DayDataServiceImpl implements IDayDataService { dto.setTime(item.getTime()); dto.setLineId(item.getLineId()); dto.setPhasicType(item2.getPhasicType()); - dto.setValueType(item3.getValueType()); + dto.setValueType(item3.getValueType().toUpperCase()); dto.setQualityFlag(Objects.equals(item.getQualityFlag(),"null") ? "0" : item.getQualityFlag()); channelDataHarmRateVHandler(item3,valueTypes,dto,true); result.add(dto); @@ -613,7 +613,7 @@ public class DayDataServiceImpl implements IDayDataService { pendingIds.forEach(list->{ lineParam.setLineId(list); //添加异常数据时间点 - getAbnormalData(lineParam); + //getAbnormalData(lineParam); //获取原始数据 List partList = dataInharmIFeignClient.getBaseData(lineParam).getData(); if (CollUtil.isNotEmpty(partList)) { @@ -630,7 +630,7 @@ public class DayDataServiceImpl implements IDayDataService { dto.setTime(item.getTime()); dto.setLineId(item.getLineId()); dto.setPhasicType(item2.getPhasicType()); - dto.setValueType(item3.getValueType()); + dto.setValueType(item3.getValueType().toUpperCase()); dto.setQualityFlag(Objects.equals(item.getQualityFlag(),"null") ? "0" : item.getQualityFlag()); channelDataInHarmIHandler(item3,valueTypes,dto,true); result.add(dto); @@ -661,7 +661,7 @@ public class DayDataServiceImpl implements IDayDataService { pendingIds.forEach(list->{ lineParam.setLineId(list); //添加异常数据时间点 - getAbnormalData(lineParam); + //getAbnormalData(lineParam); //获取原始数据 List partList = dataInharmVFeignClient.getBaseData(lineParam).getData(); if (CollUtil.isNotEmpty(partList)) { @@ -678,7 +678,7 @@ public class DayDataServiceImpl implements IDayDataService { dto.setTime(item.getTime()); dto.setLineId(item.getLineId()); dto.setPhasicType(item2.getPhasicType()); - dto.setValueType(item3.getValueType()); + dto.setValueType(item3.getValueType().toUpperCase()); dto.setQualityFlag(Objects.equals(item.getQualityFlag(),"null") ? "0" : item.getQualityFlag()); channelDataInHarmVHandler(item3,valueTypes,dto,true); result.add(dto); @@ -710,7 +710,7 @@ public class DayDataServiceImpl implements IDayDataService { pendingIds.forEach(list->{ lineParam.setLineId(list); //添加异常数据时间点 - getAbnormalData(lineParam); + //getAbnormalData(lineParam); //获取原始数据 List partList = dataPltFeignClient.getBaseData(lineParam).getData(); if (CollUtil.isNotEmpty(partList)) { @@ -726,7 +726,7 @@ public class DayDataServiceImpl implements IDayDataService { dto.setTime(item.getTime()); dto.setLineId(item.getLineId()); dto.setPhasicType(item2.getPhasicType()); - dto.setValueType(item4); + dto.setValueType(item4.toUpperCase()); dto.setQualityFlag(Objects.equals(item.getQualityFlag(),"null") ? "0" : item.getQualityFlag()); channelDataPltHandler(item3,dto,item4,true); result.add(dto); @@ -1552,18 +1552,21 @@ public class DayDataServiceImpl implements IDayDataService { case InfluxDbSqlConstant.MAX: case InfluxDbSqlConstant.CP95: Optional max = list.stream().filter(Objects::nonNull).max(Double::compare); - result = max.orElse(null); +// result = max.orElse(null); + result = max.orElse(0.0); break; case InfluxDbSqlConstant.MIN: Optional min = list.stream().filter(Objects::nonNull).min(Double::compare); - result = min.orElse(null); +// result = min.orElse(null); + result = min.orElse(0.0); break; case InfluxDbSqlConstant.AVG_WEB: OptionalDouble average = list.stream() .filter(Objects::nonNull) .mapToDouble(Double::doubleValue) .average(); - result = average.isPresent() ? average.getAsDouble() : null; +// result = average.isPresent() ? average.getAsDouble() : null; + result = average.isPresent() ? average.getAsDouble() : 0.0; break; default: break; @@ -1572,24 +1575,28 @@ public class DayDataServiceImpl implements IDayDataService { switch (valueType) { case InfluxDbSqlConstant.MAX: Optional max = list.stream().filter(Objects::nonNull).max(Double::compare); - result = max.orElse(null); +// result = max.orElse(null); + result = max.orElse(0.0); break; case InfluxDbSqlConstant.MIN: Optional min = list.stream().filter(Objects::nonNull).min(Double::compare); - result = min.orElse(null); +// result = min.orElse(null); + result = min.orElse(0.0); break; case InfluxDbSqlConstant.AVG_WEB: OptionalDouble average = list.stream() .filter(Objects::nonNull) .mapToDouble(Double::doubleValue) .average(); - result = average.isPresent() ? average.getAsDouble() : null; +// result = average.isPresent() ? average.getAsDouble() : null; + result = average.isPresent() ? average.getAsDouble() : 0.0; break; case InfluxDbSqlConstant.CP95: list.sort(Collections.reverseOrder()); int discardCount = (int) Math.ceil(list.size() * 0.05); List remainingList = list.subList(discardCount, list.size()); - result = remainingList.isEmpty() ? null : remainingList.get(0); +// result = remainingList.isEmpty() ? null : remainingList.get(0); + result = remainingList.isEmpty() ? 0.0 : remainingList.get(0); break; default: break; diff --git a/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/IDataCrossingServiceImpl.java b/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/IDataCrossingServiceImpl.java index 85c7d01..77123dc 100644 --- a/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/IDataCrossingServiceImpl.java +++ b/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/IDataCrossingServiceImpl.java @@ -12,10 +12,16 @@ import com.njcn.algorithm.service.line.IDataLimitRateAsync; import com.njcn.algorithm.utils.MemorySizeUtil; import com.njcn.common.utils.PubUtils; import com.njcn.csdevice.api.CsLineFeignClient; -import com.njcn.dataProcess.api.*; +import com.njcn.csdevice.api.CsOverLimitClient; +import com.njcn.dataProcess.api.DataLimitQualifiedFeignClient; +import com.njcn.dataProcess.api.DataLimitRateFeignClient; +import com.njcn.dataProcess.api.DataLimitTargetFeignClient; import com.njcn.dataProcess.constant.PhaseType; import com.njcn.dataProcess.param.LineCountEvaluateParam; -import com.njcn.dataProcess.pojo.dto.*; +import com.njcn.dataProcess.pojo.dto.DataLimitDetailDto; +import com.njcn.dataProcess.pojo.dto.DataLimitRateDto; +import com.njcn.dataProcess.pojo.dto.DataLimitTargetDto; +import com.njcn.dataProcess.pojo.dto.DataQualifiedDetail; import com.njcn.dataProcess.util.TimeUtils; import com.njcn.device.biz.commApi.CommTerminalGeneralClient; import com.njcn.device.biz.pojo.po.Overlimit; @@ -25,6 +31,7 @@ import org.apache.commons.collections4.ListUtils; import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; @@ -38,6 +45,7 @@ import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.function.Function; import java.util.stream.Collectors; @@ -67,6 +75,8 @@ public class IDataCrossingServiceImpl implements IDataCrossingService { private IDataLimitRateAsync dataLimitRateAsync; @Resource private CsLineFeignClient csLineFeignClient; + @Resource + private CsOverLimitClient csOverLimitClient; @Override public void limitRateHandler(CalculatedParam calculatedParam) { @@ -79,8 +89,20 @@ public class IDataCrossingServiceImpl implements IDataCrossingService { lineParam.setEndTime(TimeUtils.getEndOfDay(calculatedParam.getDataDate())); lineParam.setType(calculatedParam.getType()); List lineIds = calculatedParam.getIdList(); + List overLimitList; //获取所有监测点的限值 - List overLimitList = commTerminalGeneralClient.getOverLimitDataByIds(lineIds).getData(); + if (Objects.equals(lineParam.getType(), 2)) { + List list = csOverLimitClient.getOverLimitByLineIds(lineIds).getData(); + overLimitList = list.stream() + .map(item -> { + Overlimit overlimit = new Overlimit(); + BeanUtils.copyProperties(item, overlimit); + return overlimit; + }) + .collect(Collectors.toList()); + } else { + overLimitList = commTerminalGeneralClient.getOverLimitDataByIds(lineIds).getData(); + } Map overLimitMap = overLimitList.stream().collect(Collectors.toMap(Overlimit::getId, Function.identity())); //以100个监测点分片处理 List> pendingIds = ListUtils.partition(lineIds, 1); diff --git a/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/IDataLimitRateAsyncImpl.java b/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/IDataLimitRateAsyncImpl.java index 6dc2c4e..1b00aef 100644 --- a/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/IDataLimitRateAsyncImpl.java +++ b/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/IDataLimitRateAsyncImpl.java @@ -277,6 +277,10 @@ public class IDataLimitRateAsyncImpl implements IDataLimitRateAsync { result.add(b); result.add(c); result.add(t); + + + + return result; } diff --git a/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/influxdb/InfluxdbDataHarmpowerPImpl.java b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/influxdb/InfluxdbDataHarmpowerPImpl.java index 9eb19ed..ac1f51d 100644 --- a/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/influxdb/InfluxdbDataHarmpowerPImpl.java +++ b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/influxdb/InfluxdbDataHarmpowerPImpl.java @@ -299,6 +299,7 @@ public class InfluxdbDataHarmpowerPImpl extends MppServiceImpl