From 1cd3283ba563d2f0187ce07ac8ec12440520355a Mon Sep 17 00:00:00 2001 From: chendaofei <857448963@qq.com> Date: Thu, 2 Jul 2026 14:11:49 +0800 Subject: [PATCH] =?UTF-8?q?1.=E8=BF=81=E7=A7=BB=E6=8E=A5=E5=8F=A3=EF=BC=8C?= =?UTF-8?q?=E7=AE=80=E5=8C=96=E9=83=A8=E7=BD=B2=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/IDataLimitRateDetailService.java | 20 ---- .../IRStatLimitRateDetailDService.java | 10 ++ .../impl/PowerStatisticsServiceImpl.java | 8 +- .../RStatLimitRateDetailDServiceImpl.java | 78 +++++++++++++ .../RStatLimitRateDetailRelationMapper.java | 17 --- .../impl/RelationDataLimitRateDetailImpl.java | 103 ------------------ 6 files changed, 93 insertions(+), 143 deletions(-) delete mode 100644 pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/IDataLimitRateDetailService.java delete mode 100644 pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/RStatLimitRateDetailRelationMapper.java delete mode 100644 pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/RelationDataLimitRateDetailImpl.java diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/IDataLimitRateDetailService.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/IDataLimitRateDetailService.java deleted file mode 100644 index 6f3e988db..000000000 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/IDataLimitRateDetailService.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.njcn.harmonic.service; - -import com.github.jeffreyning.mybatisplus.service.IMppService; -import com.njcn.dataProcess.param.LineCountEvaluateParam; -import com.njcn.dataProcess.pojo.dto.DataLimitRateDetailTimeDto; -import com.njcn.dataProcess.pojo.po.RStatLimitRateDetailD; - -import java.util.List; - -public interface IDataLimitRateDetailService extends IMppService { - - - /** - * 稳态超标时间 - * @param lineParam - * @return - */ - List getLimitRateDetailTime(LineCountEvaluateParam lineParam); - -} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/IRStatLimitRateDetailDService.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/IRStatLimitRateDetailDService.java index 6880af46d..0b17c9a84 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/IRStatLimitRateDetailDService.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/IRStatLimitRateDetailDService.java @@ -2,6 +2,8 @@ package com.njcn.harmonic.service; import cn.hutool.json.JSONArray; import com.baomidou.mybatisplus.extension.service.IService; +import com.njcn.dataProcess.param.LineCountEvaluateParam; +import com.njcn.dataProcess.pojo.dto.DataLimitRateDetailTimeDto; import com.njcn.harmonic.pojo.param.LimitCalendarQueryParam; import com.njcn.harmonic.pojo.param.LimitExtentDayQueryParam; import com.njcn.harmonic.pojo.param.LimitExtentQueryParam; @@ -27,4 +29,12 @@ public interface IRStatLimitRateDetailDService extends IService limitProbabilityData(LimitProbabilityQueryParam param); List limitTimeProbabilityData(LimitProbabilityQueryParam param); + + /** + * 稳态超标时间 + * @param lineParam + * @return + */ + List getLimitRateDetailTime(LineCountEvaluateParam lineParam); + } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/activepowerrange/impl/PowerStatisticsServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/activepowerrange/impl/PowerStatisticsServiceImpl.java index fdd442f6f..29716322a 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/activepowerrange/impl/PowerStatisticsServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/activepowerrange/impl/PowerStatisticsServiceImpl.java @@ -17,7 +17,7 @@ import com.njcn.device.pq.api.OverLimitClient; import com.njcn.harmonic.constant.Param; import com.njcn.harmonic.pojo.param.PowerStatisticsParam; import com.njcn.harmonic.pojo.vo.*; -import com.njcn.harmonic.service.IDataLimitRateDetailService; +import com.njcn.harmonic.service.IRStatLimitRateDetailDService; import com.njcn.harmonic.service.activepowerrange.PowerStatisticsService; import com.njcn.harmonic.service.activepowerrange.RActivePowerRangeService; import com.njcn.harmonic.service.influxdb.*; @@ -53,6 +53,7 @@ import java.util.stream.Collectors; public class PowerStatisticsServiceImpl implements PowerStatisticsService { private final RActivePowerRangeService rActivePowerRangeService; + private final IRStatLimitRateDetailDService irStatLimitRateDetailDService; private final DecimalFormat dftwo = new DecimalFormat(Param.DECIMAL_FORMATTWOSTR); private final IDataV dataV; private final IDataI dataI; @@ -60,7 +61,6 @@ public class PowerStatisticsServiceImpl implements PowerStatisticsService { private final IDataInHarmV dataInHarmV; private final IDataHarmRateV dataHarmRateV; private final OverLimitClient overLimitClient; - private final IDataLimitRateDetailService iDataLimitRateDetailService; private List times = Arrays.asList("0~10%", "10~20%", "20~30%", "30~40%", "40~50%", "50~60%", "60~70%", "70~80%", "80~90%", "90~100%"); @@ -110,7 +110,9 @@ public class PowerStatisticsServiceImpl implements PowerStatisticsService { lineCountEvaluateParam.setStartTime(powerStatisticsParam.getSearchBeginTime()); lineCountEvaluateParam.setEndTime(powerStatisticsParam.getSearchEndTime()); //获取超标数据 - List dtoList = iDataLimitRateDetailService.getLimitRateDetailTime(lineCountEvaluateParam); + + + List dtoList = irStatLimitRateDetailDService.getLimitRateDetailTime(lineCountEvaluateParam); Map timeDateMap = dtoList.stream().collect(Collectors.toMap(x -> x.getTime(), Function.identity())); List timeId = rActivePowerRangePO.getTimeId(); String times = reflexObjValue(rActivePowerRangePO, "minsTime" + powerStatisticsParam.getField()).toString().replace("null", ""); diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/RStatLimitRateDetailDServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/RStatLimitRateDetailDServiceImpl.java index e79851ed7..88e6b54cf 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/RStatLimitRateDetailDServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/RStatLimitRateDetailDServiceImpl.java @@ -1,18 +1,23 @@ package com.njcn.harmonic.service.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DatePattern; import cn.hutool.core.lang.Pair; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSON; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.njcn.csdevice.api.CsLineFeignClient; import com.njcn.csdevice.pojo.po.CsLinePO; +import com.njcn.dataProcess.param.LineCountEvaluateParam; +import com.njcn.dataProcess.pojo.dto.AbnormalData; +import com.njcn.dataProcess.pojo.dto.DataLimitRateDetailTimeDto; import com.njcn.device.biz.pojo.po.Overlimit; import com.njcn.device.pq.api.OverLimitClient; import com.njcn.harmonic.pojo.param.LimitCalendarQueryParam; @@ -30,10 +35,13 @@ import com.njcn.harmonic.service.IRStatLimitRateDetailDService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.DecimalFormat; import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; @@ -381,6 +389,76 @@ public class RStatLimitRateDetailDServiceImpl extends ServiceImpl getLimitRateDetailTime(LineCountEvaluateParam lineParam) { + List info = new ArrayList<>(); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.in(CollUtil.isNotEmpty(lineParam.getLineId()), RStatLimitRateDetailDPO::getLineId, lineParam.getLineId()) + .between(RStatLimitRateDetailDPO::getTime, lineParam.getStartTime(),lineParam.getEndTime()) + // .le(RStatLimitRateDetailDPO::getTime, ) + // .orderByAsc(RStatLimitRateDetailDPO::getTime) + ; + + List list = this.list(lambdaQueryWrapper); + DataLimitRateDetailTimeDto dto; + for (RStatLimitRateDetailDPO detailD : list) { + dto = new DataLimitRateDetailTimeDto(); + dto.setLineId(detailD.getLineId()); + dto.setTime(detailD.getTime().format((DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)))); + dto.setFlickerOvertime(toList(detailD.getFlickerOvertime())); + dto.setFreqDevOvertime(toList(detailD.getFreqDevOvertime())); + dto.setVoltageDevOvertime(toList(detailD.getVoltageDevOvertime())); + dto.setUbalanceOvertime(toList(detailD.getUbalanceOvertime())); + dto.setUaberranceOvertime(toList(detailD.getUaberranceOvertime())); + dto.setINegOvertime(toList(detailD.getINegOvertime())); + dto.setUharmOvertime(toList(detailD,2,25,"getUharm")); + dto.setIharmOvertime(toList(detailD,2,25,"getIharm")); + dto.setInuharmOvertime(toList(detailD,1,16,"getInuharm")); + info.add(dto); + } + return info; + } + + private List toList(RStatLimitRateDetailDPO detailD,Integer start, Integer end, String targetName){ + List json = new ArrayList<>(); + for (int i = start; i <= end; i++) { + // 构造方法名 + String methodName = targetName + i + "Overtime"; + try { + // 获取 DataHarmDto 类的 getVx 方法 + Method getVMethod = RStatLimitRateDetailDPO.class.getMethod(methodName); + String value = (String) getVMethod.invoke(detailD); + if(StrUtil.isNotBlank(value)){ + json.addAll(JSON.parseArray(value, AbnormalData.Json.class)); + } + } catch (InvocationTargetException e) { + throw new RuntimeException(e); + } catch (NoSuchMethodException e) { + throw new RuntimeException(e); + } catch (IllegalAccessException e) { + throw new RuntimeException(e); + } + } + return getString(json); + } + + private List toList(String json){ + List jsons = JSON.parseArray(json, AbnormalData.Json.class); + return getString(jsons); + } + + private List getString(List jsons) { + if (CollUtil.isNotEmpty(jsons)){ + List times = jsons.stream().map(AbnormalData.Json::getTime).collect(Collectors.toList()); + String join = String.join(",", times); + String[] split = join.split(","); + return Arrays.stream(split).distinct().collect(Collectors.toList()); + } + return new ArrayList<>(); + } + /** * 设置LimitExtentVO的最大值和相关信息 */ diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/RStatLimitRateDetailRelationMapper.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/RStatLimitRateDetailRelationMapper.java deleted file mode 100644 index 4381ecdc9..000000000 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/RStatLimitRateDetailRelationMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.njcn.harmonic.service.impl; - -import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; -import com.njcn.dataProcess.pojo.po.RStatLimitRateDetailD; - - -/** - *

- * Mapper 接口 - *

- * @author web2023 - */ -public interface RStatLimitRateDetailRelationMapper extends MppBaseMapper { - - - -} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/RelationDataLimitRateDetailImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/RelationDataLimitRateDetailImpl.java deleted file mode 100644 index 1a1b08f7c..000000000 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/RelationDataLimitRateDetailImpl.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.njcn.harmonic.service.impl; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.date.DatePattern; -import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; -import com.njcn.dataProcess.param.LineCountEvaluateParam; -import com.njcn.dataProcess.pojo.dto.AbnormalData; -import com.njcn.dataProcess.pojo.dto.DataLimitRateDetailTimeDto; -import com.njcn.dataProcess.pojo.po.RStatLimitRateDetailD; -import com.njcn.harmonic.service.IDataLimitRateDetailService; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -/** - * @Author: cdf - * @CreateTime: 2026-07-01 - * @Description: - */ -@Service() -@RequiredArgsConstructor -public class RelationDataLimitRateDetailImpl extends MppServiceImpl implements IDataLimitRateDetailService { - - - - @Override - public List getLimitRateDetailTime(LineCountEvaluateParam lineParam) { - List info = new ArrayList<>(); - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.in(CollUtil.isNotEmpty(lineParam.getLineId()), RStatLimitRateDetailD::getLineId, lineParam.getLineId()) - .ge(RStatLimitRateDetailD::getTime, lineParam.getStartTime()) - .le(RStatLimitRateDetailD::getTime, lineParam.getEndTime()) - .orderByAsc(RStatLimitRateDetailD::getTime) - ; - - List list = this.list(lambdaQueryWrapper); - DataLimitRateDetailTimeDto dto; - for (RStatLimitRateDetailD detailD : list) { - dto = new DataLimitRateDetailTimeDto(); - dto.setLineId(detailD.getLineId()); - dto.setTime(detailD.getTime().format((DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)))); - dto.setFlickerOvertime(toList(detailD.getFlickerOvertime())); - dto.setFreqDevOvertime(toList(detailD.getFreqDevOvertime())); - dto.setVoltageDevOvertime(toList(detailD.getVoltageDevOvertime())); - dto.setUbalanceOvertime(toList(detailD.getUbalanceOvertime())); - dto.setUaberranceOvertime(toList(detailD.getUaberranceOvertime())); - dto.setINegOvertime(toList(detailD.getINegOvertime())); - dto.setUharmOvertime(toList(detailD,2,25,"getUharm")); - dto.setIharmOvertime(toList(detailD,2,25,"getIharm")); - dto.setInuharmOvertime(toList(detailD,1,16,"getInuharm")); - info.add(dto); - } - return info; - } - - private List toList(RStatLimitRateDetailD detailD,Integer start, Integer end, String targetName){ - List json = new ArrayList<>(); - for (int i = start; i <= end; i++) { - // 构造方法名 - String methodName = targetName + i + "Overtime"; - try { - // 获取 DataHarmDto 类的 getVx 方法 - Method getVMethod = RStatLimitRateDetailD.class.getMethod(methodName); - String value = (String) getVMethod.invoke(detailD); - if(StrUtil.isNotBlank(value)){ - json.addAll(JSON.parseArray(value, AbnormalData.Json.class)); - } - } catch (InvocationTargetException e) { - throw new RuntimeException(e); - } catch (NoSuchMethodException e) { - throw new RuntimeException(e); - } catch (IllegalAccessException e) { - throw new RuntimeException(e); - } - } - return getString(json); - } - - private List toList(String json){ - List jsons = JSON.parseArray(json, AbnormalData.Json.class); - return getString(jsons); - } - - private List getString(List jsons) { - if (CollUtil.isNotEmpty(jsons)){ - List times = jsons.stream().map(AbnormalData.Json::getTime).collect(Collectors.toList()); - String join = String.join(",", times); - String[] split = join.split(","); - return Arrays.stream(split).distinct().collect(Collectors.toList()); - } - return new ArrayList<>(); - } -}