增加获取越线详情远程接口

This commit is contained in:
wr
2025-04-07 20:11:02 +08:00
parent 43c083f5e7
commit e545186cb0
7 changed files with 182 additions and 21 deletions

View File

@@ -1,14 +1,11 @@
package com.njcn.dataProcess.api;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.constant.ServerInfo;
import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.dataProcess.api.fallback.DataLimitRateDetailFeignClientFallbackFactory;
import com.njcn.dataProcess.param.LineCountEvaluateParam;
import com.njcn.dataProcess.pojo.dto.DataLimitRateDetailDto;
import com.njcn.dataProcess.pojo.dto.DataLimitRateDto;
import io.swagger.annotations.ApiOperation;
import com.njcn.dataProcess.pojo.dto.DataLimitRateDetailTimeDto;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@@ -32,4 +29,7 @@ public interface DataLimitRateDetailFeignClient {
@PostMapping("/getLimitRateDetailTime")
HttpResult<List<String>> getLimitRateDetailTime(@RequestParam("id") String id, @RequestParam("time") String time);
@PostMapping("/getLimitRateDetailTimeList")
HttpResult<List<DataLimitRateDetailTimeDto>> getLimitRateDetailTimeList(@RequestBody LineCountEvaluateParam lineParam);
}

View File

@@ -6,7 +6,7 @@ import com.njcn.common.pojo.response.HttpResult;
import com.njcn.dataProcess.api.DataLimitRateDetailFeignClient;
import com.njcn.dataProcess.param.LineCountEvaluateParam;
import com.njcn.dataProcess.pojo.dto.DataLimitRateDetailDto;
import com.njcn.dataProcess.pojo.dto.DataLimitRateDto;
import com.njcn.dataProcess.pojo.dto.DataLimitRateDetailTimeDto;
import com.njcn.dataProcess.util.DataProcessingEnumUtil;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
@@ -56,6 +56,12 @@ public class DataLimitRateDetailFeignClientFallbackFactory implements FallbackFa
log.error("{}异常,降级处理,异常为:{}","根据监测点id获取所有超标时间",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<List<DataLimitRateDetailTimeDto>> getLimitRateDetailTimeList(LineCountEvaluateParam lineParam) {
log.error("{}异常,降级处理,异常为:{}","获取原始数据越线时间",cause.toString());
throw new BusinessException(finalExceptionEnum);
}
};
}
}

View File

@@ -0,0 +1,69 @@
package com.njcn.dataProcess.pojo.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @author web2023
*/
@Data
public class DataLimitRateDetailTimeDto implements Serializable {
/**
* 监测点ID合格率的变电站/装置/母线/线路序号
*/
private String lineId;
/**
* 合格率时间
*/
private String time;
/**
* 闪变越限次数
*/
private List<String> flickerOvertime;
/**
* 频率偏差越限次数
*/
private List<String> freqDevOvertime;
/**
* 电压偏差越限次数
*/
private List<String> voltageDevOvertime;
/**
* 三相电压不平衡度越限次数
*/
private List<String> ubalanceOvertime;
/**
* 电压谐波畸变率越限次数
*/
private List<String> uaberranceOvertime;
/**
* 负序电流限值次数
*/
private List<String> iNegOvertime;
/**
* 电压谐波含有率越限次数
*/
private List<String> uharmOvertime;
/**
* 电流谐波幅值越限次数
*/
private List<String> iharmOvertime;
/**
* 0.5次间谐波电压限值次数
*/
private List<String> inuharmOvertime;
}

View File

@@ -10,7 +10,7 @@ import com.njcn.dataProcess.annotation.InsertBean;
import com.njcn.dataProcess.annotation.QueryBean;
import com.njcn.dataProcess.param.LineCountEvaluateParam;
import com.njcn.dataProcess.pojo.dto.DataLimitRateDetailDto;
import com.njcn.dataProcess.pojo.dto.DataLimitTargetDto;
import com.njcn.dataProcess.pojo.dto.DataLimitRateDetailTimeDto;
import com.njcn.dataProcess.service.IDataLimitRateDetail;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
@@ -67,6 +67,13 @@ public class DataLimitRateDetailController extends BaseController {
List<DataLimitRateDetailDto> rawData = limitRateDetailInsert.getRawData(lineParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, rawData, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/getLimitRateDetailTimeList")
@ApiOperation("获取原始数据越线时间")
public HttpResult<List<DataLimitRateDetailTimeDto>> getLimitRateDetailTimeList(@RequestBody LineCountEvaluateParam lineParam) {
String methodDescribe = getMethodDescribe("getLimitRateDetailTimeList");
List<DataLimitRateDetailTimeDto> rawData = limitRateDetailInsert.getLimitRateDetailTime(lineParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, rawData, methodDescribe);
}
}

View File

@@ -3,6 +3,7 @@ package com.njcn.dataProcess.service;
import com.github.jeffreyning.mybatisplus.service.IMppService;
import com.njcn.dataProcess.param.LineCountEvaluateParam;
import com.njcn.dataProcess.pojo.dto.DataLimitRateDetailDto;
import com.njcn.dataProcess.pojo.dto.DataLimitRateDetailTimeDto;
import com.njcn.dataProcess.pojo.po.RStatLimitRateDetailD;
import java.util.List;
@@ -24,6 +25,15 @@ public interface IDataLimitRateDetail extends IMppService<RStatLimitRateDetailD>
*/
List<String> getLimitRateDetailTime(String id,String time);
/**
* 稳态超标时间
* @param lineParam
* @return
*/
List<DataLimitRateDetailTimeDto> getLimitRateDetailTime(LineCountEvaluateParam lineParam);
/**
* 批量插入数据
* @param limitRateDetailList

View File

@@ -4,6 +4,7 @@ import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.dataProcess.dao.relation.mapper.RStatLimitRateDetailRelationMapper;
import com.njcn.dataProcess.param.LineCountEvaluateParam;
import com.njcn.dataProcess.pojo.dto.DataLimitRateDetailDto;
import com.njcn.dataProcess.pojo.dto.DataLimitRateDetailTimeDto;
import com.njcn.dataProcess.pojo.po.RStatLimitRateDetailD;
import com.njcn.dataProcess.service.IDataLimitRateDetail;
import lombok.RequiredArgsConstructor;
@@ -26,6 +27,11 @@ public class InfluxdbDataLimitRateDetailImpl extends MppServiceImpl<RStatLimitRa
return Collections.emptyList();
}
@Override
public List<DataLimitRateDetailTimeDto> getLimitRateDetailTime(LineCountEvaluateParam lineParam) {
return Collections.emptyList();
}
@Override
public void batchInsertion(List<DataLimitRateDetailDto> limitRateList) {

View File

@@ -1,14 +1,14 @@
package com.njcn.dataProcess.service.impl.relation;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DatePattern;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.dataProcess.dao.relation.mapper.RStatLimitRateDetailRelationMapper;
import com.njcn.dataProcess.pojo.dto.AbnormalData;
import com.njcn.dataProcess.pojo.dto.*;
import com.njcn.dataProcess.param.LineCountEvaluateParam;
import com.njcn.dataProcess.pojo.dto.DataLimitRateDetailDto;
import com.njcn.dataProcess.pojo.po.RStatLimitRateDetailD;
import com.njcn.dataProcess.service.IDataLimitRateDetail;
import lombok.RequiredArgsConstructor;
@@ -16,6 +16,9 @@ import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.lang.reflect.Field;
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.Collections;
@@ -63,16 +66,41 @@ public class RelationDataLimitRateDetailImpl extends MppServiceImpl<RStatLimitRa
} catch (SecurityException | IllegalAccessException e) {
e.printStackTrace();
}
if (CollUtil.isNotEmpty(json)){
List<String> times = json.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 getString(json);
}
return Collections.emptyList();
}
@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());
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,"uharm"));
dto.setIharmOvertime(toList(detailD,2,25,"iharm"));
dto.setInuharmOvertime(toList(detailD,1,16,"inuharm"));
info.add(dto);
}
return info;
}
@Override
public void batchInsertion(List<DataLimitRateDetailDto> limitRateList) {
List<RStatLimitRateDetailD> result = new ArrayList<>();
@@ -101,4 +129,39 @@ public class RelationDataLimitRateDetailImpl extends MppServiceImpl<RStatLimitRa
});
return result;
}
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);
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<>();
}
}