From 1aae135e834344fefc29ad0703c10b14e33c55ec Mon Sep 17 00:00:00 2001 From: wr <1754607820@qq.com> Date: Thu, 22 Jan 2026 09:20:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=B1=A1=E6=9F=93=E5=80=BC?= =?UTF-8?q?=E7=AE=97=E6=B3=95=E5=A2=9E=E5=8A=A0=E6=98=AF=E5=90=A6=E9=9B=B6?= =?UTF-8?q?=E7=A5=A8=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/njcn/algorithm/ExecutionCenter.java | 6 +- .../line/DataComAssServiceImpl.java | 2 +- .../serviceimpl/line/PollutionCalcImpl.java | 20 +++--- .../dataProcess/api/DataVFeignClient.java | 4 ++ .../DataVFeignClientFallbackFactory.java | 6 ++ .../controller/DataVController.java | 9 +++ .../com/njcn/dataProcess/service/IDataV.java | 13 ++++ .../impl/influxdb/InfluxdbDataVImpl.java | 65 ++++++++++++------- .../impl/relation/RelationDataVImpl.java | 5 ++ 9 files changed, 95 insertions(+), 35 deletions(-) diff --git a/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/ExecutionCenter.java b/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/ExecutionCenter.java index 60b5b62..02a3c9a 100644 --- a/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/ExecutionCenter.java +++ b/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/ExecutionCenter.java @@ -122,9 +122,9 @@ public class ExecutionCenter extends BaseController { startDate = DateUtil.offsetDay(startDate, 1); } calculatedParam.setDataDate(DateUtil.format(startDate, DatePattern.NORM_DATE_PATTERN)); - // CalculatedParam repairParam = BeanUtil.copyProperties(calculatedParam, CalculatedParam.class); - calculatedParam.setType(0); - flowService.execute2Resp(methodDescribe, calculatedParam); + CalculatedParam repairParam = BeanUtil.copyProperties(calculatedParam, CalculatedParam.class); + repairParam.setType(0); + flowService.execute2Resp(methodDescribe, repairParam); } } else { //非补招 diff --git a/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/DataComAssServiceImpl.java b/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/DataComAssServiceImpl.java index e635202..a5f9cdd 100644 --- a/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/DataComAssServiceImpl.java +++ b/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/DataComAssServiceImpl.java @@ -58,7 +58,7 @@ public class DataComAssServiceImpl implements IDataComAssService { lineParam.setStartTime(TimeUtils.getBeginOfDay(calculatedParam.getDataDate())); lineParam.setEndTime(TimeUtils.getEndOfDay(calculatedParam.getDataDate())); List lineIdList = calculatedParam.getIdList(); - getAbnormalData(lineParam); + //getAbnormalData(lineParam); for (String lineId : lineIdList) { DataComassesDPO rStatComassesDpo = new DataComassesDPO(); rStatComassesDpo.setTime(calculatedParam.getDataDate()); diff --git a/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/PollutionCalcImpl.java b/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/PollutionCalcImpl.java index 18aa34c..352c191 100644 --- a/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/PollutionCalcImpl.java +++ b/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/PollutionCalcImpl.java @@ -80,19 +80,21 @@ public class PollutionCalcImpl implements IPollutionCalc { LineDevGetDTO line = lineDetailMap.get(id); if (limitMap.containsKey(id)) { Overlimit overlimit = limitMap.get(id); - dataPollutionD = new DataPollutionD(); - dataPollutionD.setLineId(id); - dataPollutionD.setDataDate(LocalDateTimeUtil.parseDate(calculatedParam.getDataDate())); - dataPollutionD.setPollutionType(vHarmonicLimit); lineParam.setValueType(Arrays.asList(line.getTimeInterval() + "")); lineParam.setLineId(Arrays.asList(id)); - List dataVDtoList = dataVFeignClient.getGroupByTimeDataV(lineParam).getData(); - List dataHarmDtoList = dataHarmRateVFeignClient.getGroupByTimeHarmRateV(lineParam).getData(); - //计算谐波电压污染值 - dataPollutionD.setValue(PubUtils.doubleRound(2, calcVAllPollutionValue(dataVDtoList, dataHarmDtoList, overlimit) * line.getTimeInterval())); + if(!dataVFeignClient.excludeZeroData(lineParam).getData()){ + dataPollutionD = new DataPollutionD(); + dataPollutionD.setLineId(id); + dataPollutionD.setDataDate(LocalDateTimeUtil.parseDate(calculatedParam.getDataDate())); + dataPollutionD.setPollutionType(vHarmonicLimit); + List dataVDtoList = dataVFeignClient.getGroupByTimeDataV(lineParam).getData(); + List dataHarmDtoList = dataHarmRateVFeignClient.getGroupByTimeHarmRateV(lineParam).getData(); + //计算谐波电压污染值 + dataPollutionD.setValue(PubUtils.doubleRound(2, calcVAllPollutionValue(dataVDtoList, dataHarmDtoList, overlimit) * line.getTimeInterval())); + list.add(dataPollutionD); + } - list.add(dataPollutionD); dataPollutionD = new DataPollutionD(); dataPollutionD.setLineId(id); dataPollutionD.setDataDate(LocalDateTimeUtil.parseDate(calculatedParam.getDataDate())); diff --git a/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/api/DataVFeignClient.java b/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/api/DataVFeignClient.java index 8ee2391..4c5c255 100644 --- a/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/api/DataVFeignClient.java +++ b/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/api/DataVFeignClient.java @@ -68,4 +68,8 @@ public interface DataVFeignClient { //按时间分组获取原始数据 @PostMapping("/getGroupByTimeDataV") HttpResult> getGroupByTimeDataV(@RequestBody LineCountEvaluateParam lineParam); + + + @PostMapping("/excludeZeroData") + HttpResult excludeZeroData(@RequestBody LineCountEvaluateParam lineParam); } diff --git a/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/api/fallback/DataVFeignClientFallbackFactory.java b/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/api/fallback/DataVFeignClientFallbackFactory.java index fdf3268..5446c95 100644 --- a/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/api/fallback/DataVFeignClientFallbackFactory.java +++ b/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/api/fallback/DataVFeignClientFallbackFactory.java @@ -116,6 +116,12 @@ public class DataVFeignClientFallbackFactory implements FallbackFactory excludeZeroData(LineCountEvaluateParam lineParam) { + log.error("{}异常,降级处理,异常为:{}","判断是否存在是零飘数据",cause.toString()); + throw new BusinessException(finalExceptionEnum); + } }; } } diff --git a/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/controller/DataVController.java b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/controller/DataVController.java index be7bc34..5646546 100644 --- a/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/controller/DataVController.java +++ b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/controller/DataVController.java @@ -166,6 +166,15 @@ public class DataVController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, dataV, methodDescribe); } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/excludeZeroData") + @ApiOperation("判断是否存在是零飘数据") + public HttpResult excludeZeroData(@RequestBody LineCountEvaluateParam lineParam) { + String methodDescribe = getMethodDescribe("excludeZeroData"); + Boolean b = dataVQuery.excludeZeroData(lineParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, b, methodDescribe); + } + diff --git a/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/IDataV.java b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/IDataV.java index 3051e80..04c7f29 100644 --- a/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/IDataV.java +++ b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/IDataV.java @@ -81,4 +81,17 @@ public interface IDataV extends IMppService { List getDataV(LineCountEvaluateParam lineParam); List getGroupByTimeDataV(LineCountEvaluateParam lineParam); + + + /** + * 查看监测点的电压,判断是否存在是零飘数据 + * 如果零飘数据占比一半多,则抛弃该监测点数据 + * @param lineParam + * @return: java.lang.Boolean + * @Author: wr + * @Date: 2026/1/15 9:26 + */ + Boolean excludeZeroData(LineCountEvaluateParam lineParam); + + } diff --git a/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/influxdb/InfluxdbDataVImpl.java b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/influxdb/InfluxdbDataVImpl.java index 48cbc1b..1a6083c 100644 --- a/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/influxdb/InfluxdbDataVImpl.java +++ b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/influxdb/InfluxdbDataVImpl.java @@ -208,7 +208,7 @@ public class InfluxdbDataVImpl extends MppServiceImpl list = dataVMapper.selectByQueryWrapper(influxQueryWrapper); if (CollUtil.isNotEmpty(list)) { Map> abnormalTime = lineParam.getAbnormalTime(); - if(CollUtil.isNotEmpty(abnormalTime)){ + if (CollUtil.isNotEmpty(abnormalTime)) { if (abnormalTime.containsKey(lineParam.getLineId().get(0))) { List timeList = abnormalTime.get(lineParam.getLineId().get(0)); //有异常数据,当前监测点自身的异常数据 @@ -216,7 +216,7 @@ public class InfluxdbDataVImpl extends MppServiceImpl !timeList.contains(DATE_TIME_FORMATTER.format(item.getTime()))).collect(Collectors.toList())); } } - }else{ + } else { result.addAll(list); } } @@ -390,8 +390,8 @@ public class InfluxdbDataVImpl extends MppServiceImpl measurementCountDTOList = dataVMapper.getMeasurementCount(influxQueryWrapper); - if(CollUtil.isNotEmpty(measurementCountDTOList)){ - for(MeasurementCountDTO m : measurementCountDTOList){ + if (CollUtil.isNotEmpty(measurementCountDTOList)) { + for (MeasurementCountDTO m : measurementCountDTOList) { MeasurementCountDTO.MeasurementCountResultDTO p = new MeasurementCountDTO.MeasurementCountResultDTO(); p.setFreq(m.getFreq()); p.setLineId(m.getLineId()); @@ -425,6 +425,27 @@ public class InfluxdbDataVImpl extends MppServiceImpl rmsResult = dataVMapper.selectByQueryWrapper(dataVQueryWrapper); + if (CollUtil.isNotEmpty(rmsResult)) { + List exceptionData = rmsResult.stream().filter(dataV -> dataV.getRms() < 1.0).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(exceptionData)) { + if (exceptionData.size() * 2 >= rmsResult.size()) { + return true; + } + } + } + return false; + } + /** * 按监测点集合、时间条件获取dataV分钟数据 * timeMap参数来判断是否进行数据处理 timeMap为空则不进行数据处理 @@ -483,53 +504,53 @@ public class InfluxdbDataVImpl extends MppServiceImpl quality(List list, LineCountEvaluateParam lineParam) { List result = new ArrayList<>(); Map> lineMap = list.stream().collect(Collectors.groupingBy(DataVDto::getLineId));