1.源参数下发增加装置下发参数

2.调整数据返回信息
This commit is contained in:
wr
2024-12-27 13:43:55 +08:00
parent 63831fc2d1
commit 6c9487a1e6
13 changed files with 393 additions and 71 deletions

View File

@@ -15,7 +15,6 @@ import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.security.Key;
import java.util.*;
import java.util.stream.Collectors;
@@ -42,11 +41,22 @@ public class DetectionServiceImpl {
* 开始处理指标类型
* 一共20组数据开始处理格式
*/
public Map<String, Boolean> text(List<DevData> dev, SourceIssue issue, DictDataEnum dataRule) {
public Map<String, Integer> text(List<DevData> dev, SourceIssue issue, DictDataEnum dataRule) {
Map<String, List<DevData>> devDataMap = dev.stream().collect(Collectors.groupingBy(DevData::getId));
Map<String, Boolean> stringBooleanMap=new LinkedHashMap<>();
Map<String, Integer> stringBooleanMap = new LinkedHashMap<>();
devDataMap.forEach(((key, value) -> {
stringBooleanMap.put(key, DetectionIndexProcessing(value, dataRule, issue));
Integer num;
Boolean b = DetectionIndexProcessing(value, dataRule, issue);
if (ObjectUtil.isNull(b)) {
if (b) {
num = 1;
} else {
num = 2;
}
} else {
num = 4;
}
stringBooleanMap.put(key, num);
}));
return stringBooleanMap;
}
@@ -64,41 +74,44 @@ public class DetectionServiceImpl {
public Boolean DetectionIndexProcessing(List<DevData> dev, DictDataEnum dataRule, SourceIssue sourceIssue) {
PqErrSysParam.DetectionParam param = new PqErrSysParam.DetectionParam();
List<PqErrSysDtls> pqErrSysDtls = pqErrSysDtlsService.listPqErrSysDtlsByPqErrSysIdAndTypes(param);
//判断取值是否在误差范围内
return isQualified(dev, pqErrSysDtls, U, sourceIssue, dataRule);
//获得对应的误差体系
// switch (errSysEnum) {
// case VOL:
// return isQualified(dev, pqErrSysDtls, U, sourceIssue, dataRule);
// case Freq:
// return isQualified(dev, pqErrSysDtls, I, sourceIssue, dataRule);
// case MSQI_U:
// break;
// case MSQI_I:
// break;
// case Flicker:
// break;
// case Harm_V:
// isHarmQualified(dev, pqErrSysDtls, U, sourceIssue, dataRule);
// break;
// case Harm_I:
// isHarmQualified(dev, pqErrSysDtls, I, sourceIssue, dataRule);
// break;
// case Harm_P:
// break;
// case InHarm_V:
// isHarmQualified(dev, pqErrSysDtls, U, sourceIssue, dataRule);
// break;
// case InHarm_I:
// isHarmQualified(dev, pqErrSysDtls, I, sourceIssue, dataRule);
// break;
// case CUR:
// return isQualified(dev, pqErrSysDtls, F, sourceIssue, dataRule);
// case Dip:
// break;
//
// }
// return null;
switch (sourceIssue.getType()) {
/**
* 频率
*/
case "FREQ":
return isQualified(dev, pqErrSysDtls, F, sourceIssue, dataRule, "FREQ");
/**
* 电压
*/
case "V":
return isQualified(dev, pqErrSysDtls, U, sourceIssue, dataRule, "VRMS");
/**
* 电流
*/
case "I":
return isQualified(dev, pqErrSysDtls, I, sourceIssue, dataRule, "IRMS");
/**
* 谐波类
*/
case "H":
return isHarmQualified(dev, pqErrSysDtls, U, sourceIssue, dataRule, 2);
/**
* 功率
*/
case "P":
break;
/**
* 闪变
*/
case "F":
/**
* 暂态
*/
case "VOLTAGE":
break;
}
return null;
}
/**
@@ -107,14 +120,15 @@ public class DetectionServiceImpl {
* @param dev
* @param dataRule
*/
public Map<String, List<Double>> devListMap(List<DevData> dev, DictDataEnum dataRule) {
public Map<String, List<Double>> devListMap(List<DevData> dev, DictDataEnum dataRule, String code) {
//设置
Map<String, List<Double>> map = new HashMap<>(3);
List<Double> a = new ArrayList<>();
List<Double> b = new ArrayList<>();
List<Double> c = new ArrayList<>();
List<Double> t = new ArrayList<>();
List<DevData.SqlDataDTO> sqlDataDTOS = dev.stream().flatMap(x -> x.getSqlData().stream()).collect(Collectors.toList());
List<DevData.SqlDataDTO> sqlDataDTOS = dev.stream().flatMap(x -> x.getSqlData().stream().filter(j -> code.equals(j.getDesc())))
.collect(Collectors.toList());
if (CollUtil.isNotEmpty(sqlDataDTOS)) {
List<DevData.SqlDataDTO.ListDTO> list = sqlDataDTOS.stream().map(DevData.SqlDataDTO::getList).collect(Collectors.toList());
a = list.stream()
@@ -177,8 +191,8 @@ public class DetectionServiceImpl {
* @param dataRule 数据处理原则
* @return
*/
public Boolean isQualified(List<DevData> dev, List<PqErrSysDtls> pqErrSysDtls, String type, SourceIssue sourceIssue, DictDataEnum dataRule) {
Map<String, List<Double>> map = devListMap(dev, dataRule);
public Boolean isQualified(List<DevData> dev, List<PqErrSysDtls> pqErrSysDtls, String type, SourceIssue sourceIssue, DictDataEnum dataRule, String code) {
Map<String, List<Double>> map = devListMap(dev, dataRule, code);
Double fData = 1.0;
if (U.equals(type)) {
fData = sourceIssue.getFUn();
@@ -224,10 +238,11 @@ public class DetectionServiceImpl {
* @param type (电压还是电流)
* @param sourceIssue 源下发所对应的参数
* @param dataRule 数据处理原则
* @param num 处理数组下标位数
* @return
*/
public Boolean isHarmQualified(List<DevData> dev, List<PqErrSysDtls> pqErrSysDtls, String type, SourceIssue sourceIssue, DictDataEnum dataRule) {
Map<String, Map<Integer, List<Double>>> devMap = devHarmListMap(dev, sourceIssue, dataRule);
public Boolean isHarmQualified(List<DevData> dev, List<PqErrSysDtls> pqErrSysDtls, String type, SourceIssue sourceIssue, DictDataEnum dataRule, Integer num) {
Map<String, Map<Integer, List<Double>>> devMap = devHarmListMap(dev, sourceIssue, dataRule, num);
Double fData = 1.0;
if (U.equals(type)) {
fData = sourceIssue.getFUn();
@@ -256,6 +271,45 @@ public class DetectionServiceImpl {
return null;
}
/**
* 判断值是否在误差范围内,有则进行判断否则则不进行计算(闪变)
*
* @param dev 处理过后的数据
* @param pqErrSysDtls 误差体系
* @param type (电压还是电流)
* @param sourceIssue 源下发所对应的参数
* @param dataRule 数据处理原则
* @return
*/
public Boolean isFlickerQualified(List<DevData> dev, List<PqErrSysDtls> pqErrSysDtls, String type, SourceIssue sourceIssue, DictDataEnum dataRule) {
return null;
}
/**
* 判断值是否在误差范围内,有则进行判断否则则不进行计算(暂态)
*
* @param dev 处理过后的数据
* @param pqErrSysDtls 误差体系
* @param type (电压还是电流)
* @param sourceIssue 源下发所对应的参数
* @param dataRule 数据处理原则
* @return
*/
public Boolean isVoltageQualified(List<DevData> dev, List<PqErrSysDtls> pqErrSysDtls, String type, SourceIssue sourceIssue, DictDataEnum dataRule) {
//电压幅值处理数据
Map<String, List<Double>> MAG = devListMap(dev, dataRule, "MAG");
//暂降时间处理数据
Map<String, List<Double>> DUR = devListMap(dev, dataRule, "DUR");
//理论上根据检测脚本,能知道误差体系,可以知道多个误差体系
return null;
}
/**
* @param pqErrSysDtls 误差体系
* @param type U,I
@@ -326,22 +380,22 @@ public class DetectionServiceImpl {
return null;
}
public Map<String, Map<Integer, List<Double>>> devHarmListMap(List<DevData> dev, SourceIssue sourceIssue, DictDataEnum dataRule) {
public Map<String, Map<Integer, List<Double>>> devHarmListMap(List<DevData> dev, SourceIssue sourceIssue, DictDataEnum dataRule, Integer num) {
List<Integer> harmNum = sourceIssue.getChannelList().stream()
.flatMap(x -> x.getHarmList().stream().map(f -> f.getHarm()))
.sorted().distinct().collect(Collectors.toList());
Map<String, Map<Integer, List<Double>>> map = new HashMap<>(3);
for (DevData devData : dev) {
DevData.SqlDataHarmDTO fund = devData.getSqlDataHarm().stream().filter(x -> 1 == x.getNum()).collect(Collectors.toList()).stream().findFirst().get();
DevData.SqlDataDTO fund = devData.getSqlData().stream().collect(Collectors.toList()).stream().findFirst().get();
DevData.SqlDataHarmDTO harm = devData.getSqlDataHarm().stream().filter(x -> 49 == x.getNum()).collect(Collectors.toList()).stream().findFirst().get();
if(ObjectUtil.isNotNull(fund)){
harmPut(TYPE_A, map, harmNum, harm, fund.getList().getA().get(0));
harmPut(TYPE_B, map, harmNum, harm, fund.getList().getA().get(0));
harmPut(TYPE_C, map, harmNum, harm, fund.getList().getA().get(0));
}else{
harmPut(TYPE_A, map, harmNum, harm, "1.0");
harmPut(TYPE_B, map, harmNum, harm, "1.0");
harmPut(TYPE_C, map, harmNum, harm, "1.0");
if (ObjectUtil.isNotNull(fund)) {
harmPut(TYPE_A, map, harmNum, harm, String.valueOf(fund.getList().getA()), num);
harmPut(TYPE_B, map, harmNum, harm, String.valueOf(fund.getList().getA()), num);
harmPut(TYPE_C, map, harmNum, harm, String.valueOf(fund.getList().getA()), num);
} else {
harmPut(TYPE_A, map, harmNum, harm, "1.0", num);
harmPut(TYPE_B, map, harmNum, harm, "1.0", num);
harmPut(TYPE_C, map, harmNum, harm, "1.0", num);
}
}
map.forEach((typeKey, typeValue) -> {
@@ -407,6 +461,7 @@ public class DetectionServiceImpl {
}
break;
}
return false;
}
return null;
}
@@ -502,19 +557,19 @@ public class DetectionServiceImpl {
* @param harm 基波信息
* @param fund 2-50次谐波信息
*/
public void harmPut(String type, Map<String, Map<Integer, List<Double>>> map, List<Integer> harmNum, DevData.SqlDataHarmDTO harm, String fund) {
public void harmPut(String type, Map<String, Map<Integer, List<Double>>> map, List<Integer> harmNum, DevData.SqlDataHarmDTO harm, String fund, Integer num) {
if (map.containsKey(type)) {
Map<Integer, List<Double>> integerListMap = map.get(type);
for (Integer i : harmNum) {
if (integerListMap.containsKey(i)) {
if (type.equals("A")) {
integerListMap.get(i).add(multiply(harm.getList().getA().get(i - 2), fund));
integerListMap.get(i).add(multiply(harm.getList().getA().get(i - num), fund));
}
if (type.equals("B")) {
integerListMap.get(i).add(multiply(harm.getList().getB().get(i - 2), fund));
integerListMap.get(i).add(multiply(harm.getList().getB().get(i - num), fund));
}
if (type.equals("C")) {
integerListMap.get(i).add(multiply(harm.getList().getC().get(i - 2), fund));
integerListMap.get(i).add(multiply(harm.getList().getC().get(i - num), fund));
}
}
}
@@ -523,13 +578,13 @@ public class DetectionServiceImpl {
for (Integer i : harmNum) {
List<Double> integerList = new ArrayList<>();
if (type.equals("A")) {
integerList.add(multiply(harm.getList().getA().get(i - 2), fund));
integerList.add(multiply(harm.getList().getA().get(i - num), fund));
}
if (type.equals("B")) {
integerList.add(multiply(harm.getList().getB().get(i - 2), fund));
integerList.add(multiply(harm.getList().getB().get(i - num), fund));
}
if (type.equals("C")) {
integerList.add(multiply(harm.getList().getC().get(i - 2), fund));
integerList.add(multiply(harm.getList().getC().get(i - num), fund));
}
integerListMap.put(i, integerList);
}