完善全景详情监测点超标信息

This commit is contained in:
wr
2025-12-14 16:43:17 +08:00
parent f5e1fac55d
commit 4d48b42c98

View File

@@ -4,6 +4,7 @@ package com.njcn.device.pq.service.impl;
import cn.hutool.core.codec.Base64;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.*;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -34,6 +35,7 @@ import com.njcn.device.pq.pojo.vo.LineDetailDataVO;
import com.njcn.device.pq.pojo.vo.dataClean.*;
import com.njcn.device.pq.service.CommTerminalService;
import com.njcn.device.pq.service.IDataVerifyService;
import com.njcn.harmonic.pojo.po.RStatDataVD;
import com.njcn.supervision.api.UserLedgerFeignClient;
import com.njcn.supervision.pojo.vo.user.NewUserReportVO;
import com.njcn.system.api.DicDataFeignClient;
@@ -48,6 +50,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
@@ -412,74 +415,131 @@ public class DataVerifyServiceImpl extends ServiceImpl<DataVerifyMapper, DataVer
List<DetailAbnormalVO.DetailLimitInnerVO> uaberrance = new ArrayList<>();
List<DetailAbnormalVO.DetailLimitInnerVO> ubalance = new ArrayList<>();
List<DetailAbnormalVO.DetailLimitInnerVO> flicker = new ArrayList<>();
for (DataLimitRateDetailDto dto : dtoList) {
dealJsonArr(new JSONArray(dto.getFreqDevOvertime()), freq, DicDataEnum.FREQUENCY_DEV.getCode(), null);
dealJsonArr(new JSONArray(dto.getVoltageDevOvertime()), voltage, DicDataEnum.VOLTAGE_DEV.getCode(), null);
dealJsonArr(new JSONArray(dto.getUaberranceOvertime()), uaberrance, DicDataEnum.THD_V.getCode(), null);
dealJsonArr(new JSONArray(dto.getUbalanceOvertime()), ubalance, DicDataEnum.phase_Voltage.getCode(), null);
dealJsonArr(new JSONArray(dto.getFlickerOvertime()), flicker, DicDataEnum.FLICKER.getCode(), null);
}
List<DetailAbnormalVO.DetailLimitInnerVO> iNeg = new ArrayList<>();
List<DetailAbnormalVO.DetailLimitInnerVO> uharm = new ArrayList<>();
List<DetailAbnormalVO.DetailLimitInnerVO> iharm = new ArrayList<>();
List<DetailAbnormalVO.DetailLimitInnerVO> inuharm = new ArrayList<>();
for (DataLimitRateDetailDto dto : dtoList) {
dealJsonArr(new JSONArray(dto.getFreqDevOvertime()), freq, DicDataEnum.FREQUENCY_DEV.getName(), null);
dealJsonArr(new JSONArray(dto.getVoltageDevOvertime()), voltage, DicDataEnum.VOLTAGE_DEV.getName(), null);
dealJsonArr(new JSONArray(dto.getUaberranceOvertime()), uaberrance, DicDataEnum.THD_V.getName(), null);
dealJsonArr(new JSONArray(dto.getUbalanceOvertime()), ubalance, DicDataEnum.phase_Voltage.getName(), null);
dealJsonArr(new JSONArray(dto.getFlickerOvertime()), flicker, DicDataEnum.FLICKER.getName(), null);
dealJsonArr(new JSONArray(dto.getINegOvertime()), iNeg, DicDataEnum.NEG_CURRENT.getName(), null);
// 处理谐波类指标
processHarmonicTargetHarm(dto, DicDataEnum.HARMONIC_VOLTAGE.getName(), "uharm", 2, 25, uharm);
processHarmonicTargetHarm(dto, DicDataEnum.HARMONIC_CURRENT.getName(), "iharm", 2, 25, iharm);
processHarmonicTargetHarm(dto, DicDataEnum.INTERHARMONIC_VOLTAGE.getName(), "inuharm", 1, 16, inuharm);
}
assess.setFreqLimit(overLimitDataById.getFreqDev());
assess.setVDevLimit(overLimitDataById.getVoltageDev());
assess.setUDevLimit(overLimitDataById.getUvoltageDev());
assess.setUaberranceLimit(overLimitDataById.getUaberrance());
assess.setUnbalanceLimit(overLimitDataById.getUbalance());
assess.setFlickerLimit(overLimitDataById.getFlicker());
assess.setINegLimit(overLimitDataById.getINeg());
//电压偏差
//负序电流
//电压总谐波
//谐波电压
//谐波电压
//频率偏差
//谐波电流
//简谐波电压
//闪变
//三相不平衡度
//频率偏差
if (CollUtil.isNotEmpty(freq)) {
List<DetailAbnormalVO.DetailLimitInnerVO> collect = freq.stream().sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal).reversed()).collect(Collectors.toList());
DetailAbnormalVO.DetailLimitInnerVO val = collect.get(0);
assess.setFreqData(Double.valueOf(val.getVal()));
assess.setFreqLimit(val.getOverLimitValue());
} else {
assess.setFreqLimit(overLimitDataById.getFreqDev());
assess.setFreqData(NumberUtil.round(val.getVal(),2).doubleValue());
}
//电压偏差
if (CollUtil.isNotEmpty(voltage)) {
List<DetailAbnormalVO.DetailLimitInnerVO> collect = voltage.stream().filter(x->Double.valueOf(x.getVal()) > 0).sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal).reversed()).collect(Collectors.toList());
if(CollUtil.isNotEmpty(collect)){
DetailAbnormalVO.DetailLimitInnerVO val = collect.get(0);
assess.setVDevData(Double.valueOf(val.getVal()));
assess.setVDevLimit(val.getOverLimitValue());
assess.setVDevData(NumberUtil.round(val.getVal(),2).doubleValue());
}
List<DetailAbnormalVO.DetailLimitInnerVO> collect2 = voltage.stream().filter(x->Double.valueOf(x.getVal()) < 0).sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal)).collect(Collectors.toList());
if(CollUtil.isNotEmpty(collect2)){
DetailAbnormalVO.DetailLimitInnerVO val2 = collect2.get(0);
assess.setUDevData(Double.valueOf(val2.getVal()));
assess.setUDevLimit(val2.getOverLimitValue());
assess.setUDevData(NumberUtil.round(val2.getVal(),2).doubleValue());
}
}else{
assess.setVDevLimit(overLimitDataById.getVoltageDev());
assess.setUDevLimit(overLimitDataById.getUvoltageDev());
}
//负序电流
if (CollUtil.isNotEmpty(iNeg)) {
List<DetailAbnormalVO.DetailLimitInnerVO> collect = iNeg.stream().sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal).reversed()).collect(Collectors.toList());
DetailAbnormalVO.DetailLimitInnerVO val = collect.get(0);
assess.setINegData(NumberUtil.round(val.getVal(),2).doubleValue());
}
//电压总谐波
if (CollUtil.isNotEmpty(uaberrance)) {
List<DetailAbnormalVO.DetailLimitInnerVO> collect = uaberrance.stream().sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal).reversed()).collect(Collectors.toList());
DetailAbnormalVO.DetailLimitInnerVO val = collect.get(0);
assess.setUaberranceData(Double.valueOf(val.getVal()));
assess.setUaberranceLimit(val.getOverLimitValue());
}else {
assess.setUaberranceLimit(overLimitDataById.getUaberrance());
assess.setUaberranceData(NumberUtil.round(val.getVal(),2).doubleValue());
}
//三相不平衡度
if (CollUtil.isNotEmpty(ubalance)) {
List<DetailAbnormalVO.DetailLimitInnerVO> collect = ubalance.stream().sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal).reversed()).collect(Collectors.toList());
DetailAbnormalVO.DetailLimitInnerVO val = collect.get(0);
assess.setUnbalanceData(Double.valueOf(val.getVal()));
assess.setUnbalanceLimit(val.getOverLimitValue());
}else{
assess.setUnbalanceLimit(overLimitDataById.getUbalance());
assess.setUnbalanceData(NumberUtil.round(val.getVal(),2).doubleValue());
}
//闪变
if (CollUtil.isNotEmpty(flicker)) {
List<DetailAbnormalVO.DetailLimitInnerVO> collect = flicker.stream().sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal).reversed()).collect(Collectors.toList());
DetailAbnormalVO.DetailLimitInnerVO val = collect.get(0);
assess.setFlickerData(Double.valueOf(val.getVal()));
assess.setFlickerLimit(val.getOverLimitValue());
}else {
assess.setFlickerLimit(overLimitDataById.getFlicker());
assess.setFlickerData(NumberUtil.round(val.getVal(),2).doubleValue());
}
//谐波电压
if (CollUtil.isNotEmpty(uharm)) {
List<DetailAbnormalVO.DetailLimitInnerVO> collect = uharm.stream().sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal).reversed()).collect(Collectors.toList());
DetailAbnormalVO.DetailLimitInnerVO val = collect.get(0);
assess.setUharmData(NumberUtil.round(val.getVal(),2).doubleValue());
String[] split = val.getTargetName().split("");
try {
Class<?> clazz = overLimitDataById.getClass();
String methodName = "getUharm" + split[0];
Method method = clazz.getMethod(methodName);
Float value = (Float) method.invoke(overLimitDataById);
assess.setUharmLimit(value);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
//谐波电流
if (CollUtil.isNotEmpty(iharm)) {
List<DetailAbnormalVO.DetailLimitInnerVO> collect = iharm.stream().sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal).reversed()).collect(Collectors.toList());
DetailAbnormalVO.DetailLimitInnerVO val = collect.get(0);
assess.setIharmData(NumberUtil.round(val.getVal(),2).doubleValue());
String[] split = val.getTargetName().split("");
try {
Class<?> clazz = overLimitDataById.getClass();
String methodName = "getIharm" + split[0];
Method method = clazz.getMethod(methodName);
Float value = (Float) method.invoke(overLimitDataById);
assess.setIharmLimit(value);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
//间谐波电压
if (CollUtil.isNotEmpty(inuharm)) {
List<DetailAbnormalVO.DetailLimitInnerVO> collect = inuharm.stream().sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal).reversed()).collect(Collectors.toList());
DetailAbnormalVO.DetailLimitInnerVO val = collect.get(0);
assess.setInuharmData(NumberUtil.round(val.getVal(),2).doubleValue());
String[] split = val.getTargetName().split("");
try {
Class<?> clazz = overLimitDataById.getClass();
String methodName = "getInuharm" + split[0];
Method method = clazz.getMethod(methodName);
Float value = (Float) method.invoke(overLimitDataById);
assess.setInuharmLimit(value);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
return assess;
}
@@ -571,6 +631,13 @@ public class DataVerifyServiceImpl extends ServiceImpl<DataVerifyMapper, DataVer
processSpecialTargets(tempList, result, targetName);
}
private void processHarmonicTargetHarm(DataLimitRateDetailDto dto, String targetCode, String prefix, int start, int end,
List<DetailAbnormalVO.DetailLimitInnerVO> result) {
List<String> tempList = new ArrayList<>();
collectHarmonicData(dto, prefix, start, end, tempList);
processSpecialTargets(tempList, result, targetCode);
}
private void processSpecialTargets(List<String> specialTargetList, List<DetailAbnormalVO.DetailLimitInnerVO> result, String targetName) {
for (String strJson : specialTargetList) {
String[] temStr = strJson.split(SEPARATOR);