1.迁移接口,简化部署模块

This commit is contained in:
2026-07-02 14:11:49 +08:00
parent ce9b2b62d9
commit 1cd3283ba5
6 changed files with 93 additions and 143 deletions

View File

@@ -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<RStatLimitRateDetailD> {
/**
* 稳态超标时间
* @param lineParam
* @return
*/
List<DataLimitRateDetailTimeDto> getLimitRateDetailTime(LineCountEvaluateParam lineParam);
}

View File

@@ -2,6 +2,8 @@ package com.njcn.harmonic.service;
import cn.hutool.json.JSONArray; import cn.hutool.json.JSONArray;
import com.baomidou.mybatisplus.extension.service.IService; 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.LimitCalendarQueryParam;
import com.njcn.harmonic.pojo.param.LimitExtentDayQueryParam; import com.njcn.harmonic.pojo.param.LimitExtentDayQueryParam;
import com.njcn.harmonic.pojo.param.LimitExtentQueryParam; import com.njcn.harmonic.pojo.param.LimitExtentQueryParam;
@@ -27,4 +29,12 @@ public interface IRStatLimitRateDetailDService extends IService<RStatLimitRateDe
List<LimitProbabilityVO> limitProbabilityData(LimitProbabilityQueryParam param); List<LimitProbabilityVO> limitProbabilityData(LimitProbabilityQueryParam param);
List<LimitTimeProbabilityVO> limitTimeProbabilityData(LimitProbabilityQueryParam param); List<LimitTimeProbabilityVO> limitTimeProbabilityData(LimitProbabilityQueryParam param);
/**
* 稳态超标时间
* @param lineParam
* @return
*/
List<DataLimitRateDetailTimeDto> getLimitRateDetailTime(LineCountEvaluateParam lineParam);
} }

View File

@@ -17,7 +17,7 @@ import com.njcn.device.pq.api.OverLimitClient;
import com.njcn.harmonic.constant.Param; import com.njcn.harmonic.constant.Param;
import com.njcn.harmonic.pojo.param.PowerStatisticsParam; import com.njcn.harmonic.pojo.param.PowerStatisticsParam;
import com.njcn.harmonic.pojo.vo.*; 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.PowerStatisticsService;
import com.njcn.harmonic.service.activepowerrange.RActivePowerRangeService; import com.njcn.harmonic.service.activepowerrange.RActivePowerRangeService;
import com.njcn.harmonic.service.influxdb.*; import com.njcn.harmonic.service.influxdb.*;
@@ -53,6 +53,7 @@ import java.util.stream.Collectors;
public class PowerStatisticsServiceImpl implements PowerStatisticsService { public class PowerStatisticsServiceImpl implements PowerStatisticsService {
private final RActivePowerRangeService rActivePowerRangeService; private final RActivePowerRangeService rActivePowerRangeService;
private final IRStatLimitRateDetailDService irStatLimitRateDetailDService;
private final DecimalFormat dftwo = new DecimalFormat(Param.DECIMAL_FORMATTWOSTR); private final DecimalFormat dftwo = new DecimalFormat(Param.DECIMAL_FORMATTWOSTR);
private final IDataV dataV; private final IDataV dataV;
private final IDataI dataI; private final IDataI dataI;
@@ -60,7 +61,6 @@ public class PowerStatisticsServiceImpl implements PowerStatisticsService {
private final IDataInHarmV dataInHarmV; private final IDataInHarmV dataInHarmV;
private final IDataHarmRateV dataHarmRateV; private final IDataHarmRateV dataHarmRateV;
private final OverLimitClient overLimitClient; private final OverLimitClient overLimitClient;
private final IDataLimitRateDetailService iDataLimitRateDetailService;
private List<String> times = Arrays.asList("0~10%", "10~20%", "20~30%", "30~40%", "40~50%", "50~60%", "60~70%", "70~80%", "80~90%", "90~100%"); private List<String> 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.setStartTime(powerStatisticsParam.getSearchBeginTime());
lineCountEvaluateParam.setEndTime(powerStatisticsParam.getSearchEndTime()); lineCountEvaluateParam.setEndTime(powerStatisticsParam.getSearchEndTime());
//获取超标数据 //获取超标数据
List<DataLimitRateDetailTimeDto> dtoList = iDataLimitRateDetailService.getLimitRateDetailTime(lineCountEvaluateParam);
List<DataLimitRateDetailTimeDto> dtoList = irStatLimitRateDetailDService.getLimitRateDetailTime(lineCountEvaluateParam);
Map<String, DataLimitRateDetailTimeDto> timeDateMap = dtoList.stream().collect(Collectors.toMap(x -> x.getTime(), Function.identity())); Map<String, DataLimitRateDetailTimeDto> timeDateMap = dtoList.stream().collect(Collectors.toMap(x -> x.getTime(), Function.identity()));
List<String> timeId = rActivePowerRangePO.getTimeId(); List<String> timeId = rActivePowerRangePO.getTimeId();
String times = reflexObjValue(rActivePowerRangePO, "minsTime" + powerStatisticsParam.getField()).toString().replace("null", ""); String times = reflexObjValue(rActivePowerRangePO, "minsTime" + powerStatisticsParam.getField()).toString().replace("null", "");

View File

@@ -1,18 +1,23 @@
package com.njcn.harmonic.service.impl; package com.njcn.harmonic.service.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.lang.Pair; import cn.hutool.core.lang.Pair;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONArray; import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.csdevice.api.CsLineFeignClient; import com.njcn.csdevice.api.CsLineFeignClient;
import com.njcn.csdevice.pojo.po.CsLinePO; 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.biz.pojo.po.Overlimit;
import com.njcn.device.pq.api.OverLimitClient; import com.njcn.device.pq.api.OverLimitClient;
import com.njcn.harmonic.pojo.param.LimitCalendarQueryParam; import com.njcn.harmonic.pojo.param.LimitCalendarQueryParam;
@@ -30,10 +35,13 @@ import com.njcn.harmonic.service.IRStatLimitRateDetailDService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -381,6 +389,76 @@ public class RStatLimitRateDetailDServiceImpl extends ServiceImpl<RStatLimitRate
return result; return result;
} }
@Override
public List<DataLimitRateDetailTimeDto> getLimitRateDetailTime(LineCountEvaluateParam lineParam) {
List<DataLimitRateDetailTimeDto> info = new ArrayList<>();
LambdaQueryWrapper<RStatLimitRateDetailDPO> 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<RStatLimitRateDetailDPO> 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<String> toList(RStatLimitRateDetailDPO detailD,Integer start, Integer end, String targetName){
List<AbnormalData.Json> 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<String> toList(String json){
List<AbnormalData.Json> jsons = JSON.parseArray(json, AbnormalData.Json.class);
return getString(jsons);
}
private List<String> getString(List<AbnormalData.Json> jsons) {
if (CollUtil.isNotEmpty(jsons)){
List<String> 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的最大值和相关信息 * 设置LimitExtentVO的最大值和相关信息
*/ */

View File

@@ -1,17 +0,0 @@
package com.njcn.harmonic.service.impl;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.dataProcess.pojo.po.RStatLimitRateDetailD;
/**
* <p>
* Mapper 接口
* </p>
* @author web2023
*/
public interface RStatLimitRateDetailRelationMapper extends MppBaseMapper<RStatLimitRateDetailD> {
}

View File

@@ -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<RStatLimitRateDetailRelationMapper, RStatLimitRateDetailD> implements IDataLimitRateDetailService {
@Override
public List<DataLimitRateDetailTimeDto> getLimitRateDetailTime(LineCountEvaluateParam lineParam) {
List<DataLimitRateDetailTimeDto> info = new ArrayList<>();
LambdaQueryWrapper<RStatLimitRateDetailD> 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<RStatLimitRateDetailD> 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<String> toList(RStatLimitRateDetailD detailD,Integer start, Integer end, String targetName){
List<AbnormalData.Json> 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<String> toList(String json){
List<AbnormalData.Json> jsons = JSON.parseArray(json, AbnormalData.Json.class);
return getString(jsons);
}
private List<String> getString(List<AbnormalData.Json> jsons) {
if (CollUtil.isNotEmpty(jsons)){
List<String> 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<>();
}
}