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

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

@@ -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;
@@ -60,19 +63,44 @@ public class RelationDataLimitRateDetailImpl extends MppServiceImpl<RStatLimitRa
Class<?> fieldType = field.getType();
System.out.println("Field name: " + field.getName() + ", Type: " + fieldType.getName());
}
} catch (SecurityException |IllegalAccessException e) {
} 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<>();
@@ -88,17 +116,52 @@ public class RelationDataLimitRateDetailImpl extends MppServiceImpl<RStatLimitRa
public List<DataLimitRateDetailDto> getRawData(LineCountEvaluateParam lineParam) {
List<DataLimitRateDetailDto> result = 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());
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);
list.forEach(item->{
list.forEach(item -> {
DataLimitRateDetailDto dto = new DataLimitRateDetailDto();
BeanUtils.copyProperties(item,dto);
BeanUtils.copyProperties(item, dto);
result.add(dto);
});
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<>();
}
}