1.迁移接口,简化部署模块
This commit is contained in:
@@ -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);
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -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);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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", "");
|
||||||
|
|||||||
@@ -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的最大值和相关信息
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -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> {
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -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<>();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user