1.源参数下发增加装置下发参数
2.调整数据返回信息
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user