|
|
|
@ -24,6 +24,7 @@ import java.util.Arrays; |
|
|
|
import java.util.Date; |
|
|
|
import java.util.List; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
import java.util.stream.IntStream; |
|
|
|
|
|
|
|
@Slf4j |
|
|
|
@Component |
|
|
|
@ -60,7 +61,7 @@ public class ResultAnalysisUtils { |
|
|
|
resultAnalysis.setResultType("2"); |
|
|
|
resultAnalysis.setResStatus("0"); |
|
|
|
resultAnalysis.setCreateTime(new Date()); |
|
|
|
if(!Arrays.asList(AlgConstants.CORRECTION, AlgConstants.GIS_METER_2).contains(resultAnalysis.getAlgType())) { |
|
|
|
if (!Arrays.asList(AlgConstants.CORRECTION, AlgConstants.GIS_METER_2).contains(resultAnalysis.getAlgType())) { |
|
|
|
resultAnalysis.setResValue("--"); |
|
|
|
} |
|
|
|
return false; |
|
|
|
@ -76,7 +77,7 @@ public class ResultAnalysisUtils { |
|
|
|
log.info("PARSE_ALG algType: {}, algValue: {}, value: {}, defaultDesc: {}", algType, algValue, value, defaultDesc); |
|
|
|
|
|
|
|
// 初筛红外 |
|
|
|
if ("1".equals(resultAnalysis.getFilter()) && AlgConstants.ALG_INFRARED_LIST.contains(algType)) { |
|
|
|
if ("1".equals(resultAnalysis.getFilter()) && !AlgConstants.INFRARED.equals(algType) && AlgConstants.ALG_INFRARED_LIST.contains(algType)) { |
|
|
|
// 绍兴初筛红外改成正常 |
|
|
|
resultAnalysis.setResultType("1"); |
|
|
|
resultAnalysis.setPointStatus("1"); |
|
|
|
@ -93,8 +94,8 @@ public class ResultAnalysisUtils { |
|
|
|
final String correctionValue = value; |
|
|
|
// 读取字符串中的整数或浮点数(注意集合下只取第一个值,有坑,原值使用correctionValue) |
|
|
|
value = algValue.formatValue(value); |
|
|
|
// 初筛时不做算法值的具体解析 |
|
|
|
if ("1".equals(resultAnalysis.getFilter())) { |
|
|
|
// 初筛时, infrared算法要做阈值判断 |
|
|
|
if ("1".equals(resultAnalysis.getFilter()) && !AlgConstants.INFRARED.equals(algType)) { |
|
|
|
algType = ""; |
|
|
|
} |
|
|
|
|
|
|
|
@ -103,6 +104,17 @@ public class ResultAnalysisUtils { |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
if ("meter".equals(algType)) { |
|
|
|
boolean hasErrorValue = Arrays.stream(correctionValue.split(StringUtils.COMMA)).anyMatch(v -> StringUtils.isEmpty(v) || "null".equals(v)) ; |
|
|
|
if (hasErrorValue) { |
|
|
|
resultAnalysis.setResStatus("0"); |
|
|
|
resultAnalysis.setPointStatus(PointStatusEnum.DEFECT.getCode()); |
|
|
|
resultAnalysis.setResultType(ResultTypeEnum.DEFECT.getCode()); |
|
|
|
resultAnalysis.setDescription("读数失败"); |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (value.isEmpty() || value.equals("-1") || "null".equals(value)) { |
|
|
|
log.info("PARSE_ALG_EMPTY algType: {}, algValue: {}, value: {}, defaultDesc: {}", algType, algValue, value, defaultDesc); |
|
|
|
resultAnalysis.setPointStatus("0"); |
|
|
|
@ -154,12 +166,13 @@ public class ResultAnalysisUtils { |
|
|
|
resultAnalysis.setResultType(ResultTypeEnum.NORMAL.getCode()); |
|
|
|
resultAnalysis.setResStatus(ResStatusEnum.CONFIRM.getCode()); |
|
|
|
} |
|
|
|
resultAnalysis.setDescription(resultAnalysis.getResValue()); |
|
|
|
} else if (algType.equals("light")) { |
|
|
|
resultAnalysis.setResStatus("1"); |
|
|
|
resultAnalysis.setPointStatus("1"); |
|
|
|
resultAnalysis.setResultType("1"); |
|
|
|
} else if (algType.equals("meter") || algType.equals("gis_meter")) { |
|
|
|
log.info("------------------parseAlg : meter|gis_meter value: {}", value); |
|
|
|
log.info("------------------parseAlg : meter|gis_meter value: {}, originalValue: {}", value, correctionValue); |
|
|
|
if ("open".equalsIgnoreCase(value) |
|
|
|
|| "closed".equalsIgnoreCase(value) || "Off".equalsIgnoreCase(value) || "On".equalsIgnoreCase(value)) { |
|
|
|
resultAnalysis.setResStatus("0"); |
|
|
|
@ -349,23 +362,22 @@ public class ResultAnalysisUtils { |
|
|
|
Math.abs(value2) < EPSILON && |
|
|
|
Math.abs(value3) < EPSILON) { |
|
|
|
log.info("2000 correction no need value0: {}, value1: {}, value2: {}, value3: {}", value0, value1, value2, value3); |
|
|
|
resultAnalysis.setPointStatus("1"); |
|
|
|
resultAnalysis.setResultType("1"); |
|
|
|
resultAnalysis.setPointStatus(PointStatusEnum.NORMAL.getCode()); |
|
|
|
resultAnalysis.setResultType(ResultTypeEnum.NORMAL.getCode()); |
|
|
|
resultAnalysis.setResStatus("2"); |
|
|
|
resultAnalysis.setResValue(""); |
|
|
|
defaultDesc = messageUtils.get("无需纠偏"); |
|
|
|
} else { |
|
|
|
log.info("2000 correction need value0: {}, value1: {}, value2: {}, value3: {}", value0, value1, value2, value3); |
|
|
|
resultAnalysis.setPointStatus("1"); |
|
|
|
resultAnalysis.setResultType("1"); |
|
|
|
//defaultDesc = "请进行纠偏"; |
|
|
|
resultAnalysis.setPointStatus(PointStatusEnum.NORMAL.getCode()); |
|
|
|
resultAnalysis.setResultType(ResultTypeEnum.NORMAL.getCode()); |
|
|
|
resultAnalysis.setResStatus("2"); |
|
|
|
resultAnalysis.setResValue(""); |
|
|
|
defaultDesc = "无需纠偏"; |
|
|
|
} |
|
|
|
} else { |
|
|
|
log.info("parseAlg algType correction correctionValue abnormal"); |
|
|
|
resultAnalysis.setPointStatus(PointStatusEnum.DEFECT.getCode()); |
|
|
|
resultAnalysis.setPointStatus(PointStatusEnum.ABNORMAL.getCode()); |
|
|
|
resultAnalysis.setResultType("0"); |
|
|
|
resultAnalysis.setResStatus("0"); |
|
|
|
defaultDesc = "纠偏结果异常"; |
|
|
|
@ -408,24 +420,24 @@ public class ResultAnalysisUtils { |
|
|
|
} |
|
|
|
} else { |
|
|
|
log.info("2001 parseAlg algType correction correctionValue abnormal"); |
|
|
|
resultAnalysis.setPointStatus(PointStatusEnum.DEFECT.getCode()); |
|
|
|
resultAnalysis.setPointStatus(PointStatusEnum.ABNORMAL.getCode()); |
|
|
|
resultAnalysis.setResultType("0"); |
|
|
|
resultAnalysis.setResStatus("0"); |
|
|
|
defaultDesc = "纠偏码和值均异常"; |
|
|
|
} |
|
|
|
|
|
|
|
} else if ("2002".equals(resultAnalysis.getResCode())) { |
|
|
|
resultAnalysis.setPointStatus(PointStatusEnum.DEFECT.getCode()); |
|
|
|
resultAnalysis.setPointStatus(PointStatusEnum.ABNORMAL.getCode()); |
|
|
|
resultAnalysis.setResultType("0"); |
|
|
|
resultAnalysis.setResStatus("0"); |
|
|
|
defaultDesc = "超出比对范围"; |
|
|
|
} else if ("2003".equals(resultAnalysis.getResCode())) { |
|
|
|
resultAnalysis.setPointStatus(PointStatusEnum.DEFECT.getCode()); |
|
|
|
resultAnalysis.setPointStatus(PointStatusEnum.ABNORMAL.getCode()); |
|
|
|
resultAnalysis.setResultType("0"); |
|
|
|
resultAnalysis.setResStatus("0"); |
|
|
|
defaultDesc = "图像数据错误"; |
|
|
|
} else { |
|
|
|
resultAnalysis.setPointStatus(PointStatusEnum.DEFECT.getCode()); |
|
|
|
resultAnalysis.setPointStatus(PointStatusEnum.ABNORMAL.getCode()); |
|
|
|
resultAnalysis.setResultType("0"); |
|
|
|
resultAnalysis.setResStatus("0"); |
|
|
|
defaultDesc = messageUtils.get("未知异常"); |
|
|
|
@ -433,7 +445,6 @@ public class ResultAnalysisUtils { |
|
|
|
} |
|
|
|
// 纠偏分析结果均为正常 |
|
|
|
resultAnalysis.setResultType(ResultTypeEnum.NORMAL.getCode()); |
|
|
|
resultAnalysis.setPointStatus(PointStatusEnum.NORMAL.getCode()); |
|
|
|
} else { |
|
|
|
log.info("parseAlg algType: {}", algType); |
|
|
|
if (value.equals("0")) { |
|
|
|
@ -478,27 +489,36 @@ public class ResultAnalysisUtils { |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 添加单位 |
|
|
|
* 给可读数算法的值添加单位 |
|
|
|
* |
|
|
|
* @param resValue 读数 |
|
|
|
* @param algType 算法类型 |
|
|
|
* @param unit 单位 |
|
|
|
* @param algType 算法类型 |
|
|
|
* @param unit 单位 |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
public String addUnit2Value(String resValue, String algType, String unit) { |
|
|
|
if (StringUtils.isNotEmpty(resValue) && StringUtils.isNotEmpty(unit) && AlgConstants.READABLE_ALG_LIST.contains(algType)) { |
|
|
|
log.info("addUnit2Value resValue: {}, algType: {}, unit: {}", resValue, algType, unit); |
|
|
|
String[] valueArr = resValue.split(","); |
|
|
|
String values = Arrays.stream(valueArr).map(val -> { |
|
|
|
boolean isNumber = val.matches("^-?\\d+(\\.\\d+)?$"); |
|
|
|
if (isNumber) { |
|
|
|
if (AlgConstants.ALG_INFRARED_LIST.contains(algType)) { |
|
|
|
return BigDecimalUtil.toOneDecimal(val, 1) + unit; |
|
|
|
} |
|
|
|
return val + unit; |
|
|
|
} |
|
|
|
return val; |
|
|
|
}).collect(Collectors.joining(",")); |
|
|
|
String values = IntStream.range(0, valueArr.length) |
|
|
|
.mapToObj(i -> { |
|
|
|
String val = valueArr[i]; |
|
|
|
if (!NumberUtils.isCreatable(val)) { |
|
|
|
return val; |
|
|
|
} |
|
|
|
|
|
|
|
if (AlgConstants.ALG_INFRARED_LIST.contains(algType)) { |
|
|
|
return BigDecimalUtil.toOneDecimal(val, 1) + unit; |
|
|
|
} |
|
|
|
|
|
|
|
// 表计算法:避雷器只有第一个值带单位 |
|
|
|
if (AlgConstants.METER.equals(algType)) { |
|
|
|
return i == 0 ? val + unit : val; |
|
|
|
} |
|
|
|
|
|
|
|
return val + unit; |
|
|
|
}) |
|
|
|
.collect(Collectors.joining(",")); |
|
|
|
return values; |
|
|
|
} |
|
|
|
return resValue; |
|
|
|
|