完善全景详情监测点超标信息
This commit is contained in:
@@ -4,6 +4,7 @@ package com.njcn.device.pq.service.impl;
|
|||||||
import cn.hutool.core.codec.Base64;
|
import cn.hutool.core.codec.Base64;
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.date.*;
|
import cn.hutool.core.date.*;
|
||||||
|
import cn.hutool.core.util.NumberUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.hutool.json.JSONArray;
|
import cn.hutool.json.JSONArray;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
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.pojo.vo.dataClean.*;
|
||||||
import com.njcn.device.pq.service.CommTerminalService;
|
import com.njcn.device.pq.service.CommTerminalService;
|
||||||
import com.njcn.device.pq.service.IDataVerifyService;
|
import com.njcn.device.pq.service.IDataVerifyService;
|
||||||
|
import com.njcn.harmonic.pojo.po.RStatDataVD;
|
||||||
import com.njcn.supervision.api.UserLedgerFeignClient;
|
import com.njcn.supervision.api.UserLedgerFeignClient;
|
||||||
import com.njcn.supervision.pojo.vo.user.NewUserReportVO;
|
import com.njcn.supervision.pojo.vo.user.NewUserReportVO;
|
||||||
import com.njcn.system.api.DicDataFeignClient;
|
import com.njcn.system.api.DicDataFeignClient;
|
||||||
@@ -48,6 +50,7 @@ import org.slf4j.LoggerFactory;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
|
import java.lang.reflect.Method;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
@@ -412,74 +415,131 @@ public class DataVerifyServiceImpl extends ServiceImpl<DataVerifyMapper, DataVer
|
|||||||
List<DetailAbnormalVO.DetailLimitInnerVO> uaberrance = new ArrayList<>();
|
List<DetailAbnormalVO.DetailLimitInnerVO> uaberrance = new ArrayList<>();
|
||||||
List<DetailAbnormalVO.DetailLimitInnerVO> ubalance = new ArrayList<>();
|
List<DetailAbnormalVO.DetailLimitInnerVO> ubalance = new ArrayList<>();
|
||||||
List<DetailAbnormalVO.DetailLimitInnerVO> flicker = new ArrayList<>();
|
List<DetailAbnormalVO.DetailLimitInnerVO> flicker = new ArrayList<>();
|
||||||
for (DataLimitRateDetailDto dto : dtoList) {
|
List<DetailAbnormalVO.DetailLimitInnerVO> iNeg = new ArrayList<>();
|
||||||
dealJsonArr(new JSONArray(dto.getFreqDevOvertime()), freq, DicDataEnum.FREQUENCY_DEV.getCode(), null);
|
|
||||||
dealJsonArr(new JSONArray(dto.getVoltageDevOvertime()), voltage, DicDataEnum.VOLTAGE_DEV.getCode(), null);
|
List<DetailAbnormalVO.DetailLimitInnerVO> uharm = new ArrayList<>();
|
||||||
dealJsonArr(new JSONArray(dto.getUaberranceOvertime()), uaberrance, DicDataEnum.THD_V.getCode(), null);
|
List<DetailAbnormalVO.DetailLimitInnerVO> iharm = new ArrayList<>();
|
||||||
dealJsonArr(new JSONArray(dto.getUbalanceOvertime()), ubalance, DicDataEnum.phase_Voltage.getCode(), null);
|
List<DetailAbnormalVO.DetailLimitInnerVO> inuharm = new ArrayList<>();
|
||||||
dealJsonArr(new JSONArray(dto.getFlickerOvertime()), flicker, DicDataEnum.FLICKER.getCode(), null);
|
|
||||||
}
|
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)) {
|
if (CollUtil.isNotEmpty(freq)) {
|
||||||
List<DetailAbnormalVO.DetailLimitInnerVO> collect = freq.stream().sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal).reversed()).collect(Collectors.toList());
|
List<DetailAbnormalVO.DetailLimitInnerVO> collect = freq.stream().sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal).reversed()).collect(Collectors.toList());
|
||||||
DetailAbnormalVO.DetailLimitInnerVO val = collect.get(0);
|
DetailAbnormalVO.DetailLimitInnerVO val = collect.get(0);
|
||||||
assess.setFreqData(Double.valueOf(val.getVal()));
|
assess.setFreqData(NumberUtil.round(val.getVal(),2).doubleValue());
|
||||||
assess.setFreqLimit(val.getOverLimitValue());
|
|
||||||
} else {
|
|
||||||
assess.setFreqLimit(overLimitDataById.getFreqDev());
|
|
||||||
}
|
}
|
||||||
|
//电压偏差
|
||||||
if (CollUtil.isNotEmpty(voltage)) {
|
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());
|
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)){
|
if(CollUtil.isNotEmpty(collect)){
|
||||||
DetailAbnormalVO.DetailLimitInnerVO val = collect.get(0);
|
DetailAbnormalVO.DetailLimitInnerVO val = collect.get(0);
|
||||||
assess.setVDevData(Double.valueOf(val.getVal()));
|
assess.setVDevData(NumberUtil.round(val.getVal(),2).doubleValue());
|
||||||
assess.setVDevLimit(val.getOverLimitValue());
|
|
||||||
}
|
}
|
||||||
List<DetailAbnormalVO.DetailLimitInnerVO> collect2 = voltage.stream().filter(x->Double.valueOf(x.getVal()) < 0).sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal)).collect(Collectors.toList());
|
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)){
|
if(CollUtil.isNotEmpty(collect2)){
|
||||||
DetailAbnormalVO.DetailLimitInnerVO val2 = collect2.get(0);
|
DetailAbnormalVO.DetailLimitInnerVO val2 = collect2.get(0);
|
||||||
assess.setUDevData(Double.valueOf(val2.getVal()));
|
assess.setUDevData(NumberUtil.round(val2.getVal(),2).doubleValue());
|
||||||
assess.setUDevLimit(val2.getOverLimitValue());
|
|
||||||
}
|
}
|
||||||
}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)) {
|
if (CollUtil.isNotEmpty(uaberrance)) {
|
||||||
List<DetailAbnormalVO.DetailLimitInnerVO> collect = uaberrance.stream().sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal).reversed()).collect(Collectors.toList());
|
List<DetailAbnormalVO.DetailLimitInnerVO> collect = uaberrance.stream().sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal).reversed()).collect(Collectors.toList());
|
||||||
DetailAbnormalVO.DetailLimitInnerVO val = collect.get(0);
|
DetailAbnormalVO.DetailLimitInnerVO val = collect.get(0);
|
||||||
assess.setUaberranceData(Double.valueOf(val.getVal()));
|
assess.setUaberranceData(NumberUtil.round(val.getVal(),2).doubleValue());
|
||||||
assess.setUaberranceLimit(val.getOverLimitValue());
|
|
||||||
}else {
|
|
||||||
assess.setUaberranceLimit(overLimitDataById.getUaberrance());
|
|
||||||
}
|
}
|
||||||
|
//三相不平衡度
|
||||||
if (CollUtil.isNotEmpty(ubalance)) {
|
if (CollUtil.isNotEmpty(ubalance)) {
|
||||||
List<DetailAbnormalVO.DetailLimitInnerVO> collect = ubalance.stream().sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal).reversed()).collect(Collectors.toList());
|
List<DetailAbnormalVO.DetailLimitInnerVO> collect = ubalance.stream().sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal).reversed()).collect(Collectors.toList());
|
||||||
DetailAbnormalVO.DetailLimitInnerVO val = collect.get(0);
|
DetailAbnormalVO.DetailLimitInnerVO val = collect.get(0);
|
||||||
assess.setUnbalanceData(Double.valueOf(val.getVal()));
|
assess.setUnbalanceData(NumberUtil.round(val.getVal(),2).doubleValue());
|
||||||
assess.setUnbalanceLimit(val.getOverLimitValue());
|
|
||||||
}else{
|
|
||||||
assess.setUnbalanceLimit(overLimitDataById.getUbalance());
|
|
||||||
}
|
}
|
||||||
|
//闪变
|
||||||
if (CollUtil.isNotEmpty(flicker)) {
|
if (CollUtil.isNotEmpty(flicker)) {
|
||||||
List<DetailAbnormalVO.DetailLimitInnerVO> collect = flicker.stream().sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal).reversed()).collect(Collectors.toList());
|
List<DetailAbnormalVO.DetailLimitInnerVO> collect = flicker.stream().sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal).reversed()).collect(Collectors.toList());
|
||||||
DetailAbnormalVO.DetailLimitInnerVO val = collect.get(0);
|
DetailAbnormalVO.DetailLimitInnerVO val = collect.get(0);
|
||||||
assess.setFlickerData(Double.valueOf(val.getVal()));
|
assess.setFlickerData(NumberUtil.round(val.getVal(),2).doubleValue());
|
||||||
assess.setFlickerLimit(val.getOverLimitValue());
|
}
|
||||||
}else {
|
//谐波电压
|
||||||
assess.setFlickerLimit(overLimitDataById.getFlicker());
|
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;
|
return assess;
|
||||||
}
|
}
|
||||||
@@ -571,6 +631,13 @@ public class DataVerifyServiceImpl extends ServiceImpl<DataVerifyMapper, DataVer
|
|||||||
processSpecialTargets(tempList, result, targetName);
|
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) {
|
private void processSpecialTargets(List<String> specialTargetList, List<DetailAbnormalVO.DetailLimitInnerVO> result, String targetName) {
|
||||||
for (String strJson : specialTargetList) {
|
for (String strJson : specialTargetList) {
|
||||||
String[] temStr = strJson.split(SEPARATOR);
|
String[] temStr = strJson.split(SEPARATOR);
|
||||||
|
|||||||
Reference in New Issue
Block a user