|
|
|
@ -5,11 +5,10 @@ import com.fasterxml.jackson.databind.ObjectMapper; |
|
|
|
import com.inspect.analysis.constant.AnalyseConstants; |
|
|
|
import com.inspect.analysis.domain.AlgValue; |
|
|
|
import com.inspect.analysis.domain.ResultAnalysis; |
|
|
|
import com.inspect.base.core.constant.AlgConstants; |
|
|
|
import com.inspect.base.core.utils.StringUtils; |
|
|
|
import com.inspect.message.MessageUtils; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.slf4j.Logger; |
|
|
|
import org.slf4j.LoggerFactory; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Component; |
|
|
|
|
|
|
|
@ -24,6 +23,10 @@ public class ResultAnalysisUtils { |
|
|
|
@Autowired |
|
|
|
private MessageUtils messageUtils; |
|
|
|
|
|
|
|
/** |
|
|
|
* 检查返回结果 |
|
|
|
* code除了2000,其他值均为异常 |
|
|
|
*/ |
|
|
|
public boolean checkCode(String code, String desc, ResultAnalysis resultAnalysis) { |
|
|
|
if (AnalyseConstants.ANALYSE_OK.equals(code)) { |
|
|
|
resultAnalysis.setCreateTime(new Date()); |
|
|
|
@ -31,7 +34,6 @@ public class ResultAnalysisUtils { |
|
|
|
resultAnalysis.setResStatus("0"); |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
if (AnalyseConstants.ANALYSE_FAIL_NO_FILE.equals(code) |
|
|
|
|| AnalyseConstants.ANALYSE_FAIL_FILE_EXCEPT.equals(code) |
|
|
|
|| AnalyseConstants.ANALYSE_FAIL_FILE_INCOMPATIBLE.equals(code)) { |
|
|
|
@ -50,6 +52,12 @@ public class ResultAnalysisUtils { |
|
|
|
return false; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 解析算法结果 |
|
|
|
* pointStatus点位状态: 0-异常 1-正常 2-待人工确认 |
|
|
|
* resultType分析结果: 0-缺陷 1-正常 2-异常 |
|
|
|
* resStatus告警确认状态: 0-未确认 1-已确认 2-已撤销 |
|
|
|
*/ |
|
|
|
public void parseAlg(String algType, AlgValue algValue, String value, String defaultDesc, ResultAnalysis resultAnalysis) { |
|
|
|
log.info("PARSE_ALG algType: {}, algValue: {}, value: {}, defaultDesc: {}", algType, algValue, value, defaultDesc); |
|
|
|
|
|
|
|
@ -75,6 +83,7 @@ public class ResultAnalysisUtils { |
|
|
|
} |
|
|
|
|
|
|
|
final String correctionValue = value; |
|
|
|
// 读取字符串中的整数或浮点数(注意集合下只取第一个值,有坑,原值使用correctionValue) |
|
|
|
value = algValue.formatValue(value); |
|
|
|
// 这个不知道为什么加上 |
|
|
|
if ("1".equals(resultAnalysis.getFilter())) { |
|
|
|
@ -184,6 +193,55 @@ public class ResultAnalysisUtils { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} else if (algType.equals(AlgConstants.GIS_METER_2)) { |
|
|
|
// 华软无机人表计算法 |
|
|
|
log.info("parseAlg : gis_meter2 correctionValue: {} code: {}", correctionValue, resultAnalysis.getResCode()); |
|
|
|
// 异常 |
|
|
|
boolean hasDefect = false; |
|
|
|
boolean hasAbnormal = false; |
|
|
|
try { |
|
|
|
ObjectMapper mapper = new ObjectMapper(); |
|
|
|
// 1. 解析 JSON |
|
|
|
List<String> originalList = mapper.readValue(correctionValue, new TypeReference<List<String>>() { |
|
|
|
}); |
|
|
|
// 2. 转换:非空 → "正常",空值 → "读数失败",超限 → "表计超限" |
|
|
|
List<String> descList = new ArrayList<>(originalList.size()); |
|
|
|
for (String item : originalList) { |
|
|
|
if (StringUtils.isEmpty(item)) { |
|
|
|
hasAbnormal = true; |
|
|
|
descList.add("读数失败"); |
|
|
|
} else { |
|
|
|
if (algValue.isAlarm(item)) { |
|
|
|
hasDefect = true; |
|
|
|
descList.add("表计超限"); |
|
|
|
} else { |
|
|
|
descList.add("正常"); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
String descStr = mapper.writeValueAsString(descList); |
|
|
|
if (hasDefect) { |
|
|
|
resultAnalysis.setPointStatus("0"); |
|
|
|
resultAnalysis.setResStatus("0"); |
|
|
|
resultAnalysis.setResultType("0"); |
|
|
|
defaultDesc = descStr; |
|
|
|
} else { |
|
|
|
if (hasAbnormal) { |
|
|
|
resultAnalysis.setPointStatus("0"); |
|
|
|
resultAnalysis.setResStatus("0"); |
|
|
|
resultAnalysis.setResultType("2"); |
|
|
|
defaultDesc = descStr; |
|
|
|
} else { |
|
|
|
resultAnalysis.setPointStatus("1"); |
|
|
|
resultAnalysis.setResStatus("0"); |
|
|
|
resultAnalysis.setResultType("1"); |
|
|
|
defaultDesc = messageUtils.get("正常"); |
|
|
|
} |
|
|
|
} |
|
|
|
} catch (Exception e) { |
|
|
|
log.error("PARSE_ALG_GIS_METER_2_ERROR correctionValue: {}", correctionValue, e); |
|
|
|
defaultDesc = "解析异常"; |
|
|
|
} |
|
|
|
} else if (algType.equals("sound")) { |
|
|
|
if (value.equals("1")) { |
|
|
|
resultAnalysis.setResStatus("1"); |
|
|
|
@ -264,11 +322,11 @@ public class ResultAnalysisUtils { |
|
|
|
} |
|
|
|
} else if (algType.equals("correction")) { |
|
|
|
log.info("parseAlg algType correction 2000 resCode: {}, correctionValue: {}", resultAnalysis.getResCode(), correctionValue); |
|
|
|
if("2000".equals(resultAnalysis.getResCode())) { |
|
|
|
if ("2000".equals(resultAnalysis.getResCode())) { |
|
|
|
ObjectMapper mapper = new ObjectMapper(); |
|
|
|
List<List<Double>> list; |
|
|
|
try { |
|
|
|
log.info("parseAlg algType correction 2000 correctionValue: {}", correctionValue); |
|
|
|
log.info("parseAlg algType correction 2000 correctionValue: {}", correctionValue); |
|
|
|
list = mapper.readValue(correctionValue, new TypeReference<List<List<Double>>>() { |
|
|
|
}); |
|
|
|
log.info("parseAlg algType correction 2000 correctionValue: {}", list); |
|
|
|
@ -277,7 +335,7 @@ public class ResultAnalysisUtils { |
|
|
|
list = new ArrayList<>(); |
|
|
|
} |
|
|
|
|
|
|
|
if(list.size() == 2 && list.get(0).size() == 2 && list.get(1).size() == 2) { |
|
|
|
if (list.size() == 2 && list.get(0).size() == 2 && list.get(1).size() == 2) { |
|
|
|
final double EPSILON = 1e-8; |
|
|
|
double value0 = list.get(0).get(0); |
|
|
|
double value1 = list.get(0).get(1); |
|
|
|
@ -291,8 +349,8 @@ public class ResultAnalysisUtils { |
|
|
|
resultAnalysis.setPointStatus("1"); |
|
|
|
resultAnalysis.setResultType("1"); |
|
|
|
resultAnalysis.setResStatus("2"); |
|
|
|
resultAnalysis.setResValue(""); |
|
|
|
defaultDesc = messageUtils.get("正常"); |
|
|
|
resultAnalysis.setResDesc(defaultDesc); |
|
|
|
} else { |
|
|
|
log.info("2000 correction need value0: {}, value1: {}, value2: {}, value3: {}", value0, value1, value2, value3); |
|
|
|
resultAnalysis.setPointStatus("1"); |
|
|
|
@ -300,6 +358,7 @@ public class ResultAnalysisUtils { |
|
|
|
//resultAnalysis.setResStatus("3"); |
|
|
|
//defaultDesc = "请进行纠偏"; |
|
|
|
resultAnalysis.setResStatus("2"); |
|
|
|
resultAnalysis.setResValue(""); |
|
|
|
defaultDesc = "正常"; |
|
|
|
} |
|
|
|
} else { |
|
|
|
@ -309,11 +368,11 @@ public class ResultAnalysisUtils { |
|
|
|
resultAnalysis.setResStatus("0"); |
|
|
|
defaultDesc = "纠偏结果异常"; |
|
|
|
} |
|
|
|
} else if("2001".equals(resultAnalysis.getResCode())) { |
|
|
|
} else if ("2001".equals(resultAnalysis.getResCode())) { |
|
|
|
ObjectMapper mapper = new ObjectMapper(); |
|
|
|
List<List<Double>> list; |
|
|
|
try { |
|
|
|
log.info("parseAlg algType correction 2001 correctionValue: {}", correctionValue); |
|
|
|
log.info("parseAlg algType correction 2001 correctionValue: {}", correctionValue); |
|
|
|
list = mapper.readValue(correctionValue, new TypeReference<List<List<Double>>>() { |
|
|
|
}); |
|
|
|
log.info("parseAlg algType correction 2001 correctionValue: {}", list); |
|
|
|
@ -322,7 +381,7 @@ public class ResultAnalysisUtils { |
|
|
|
list = new ArrayList<>(); |
|
|
|
} |
|
|
|
|
|
|
|
if(list.size() == 2 && list.get(0).size() == 2 && list.get(1).size() == 2) { |
|
|
|
if (list.size() == 2 && list.get(0).size() == 2 && list.get(1).size() == 2) { |
|
|
|
final double EPSILON = 1e-8; |
|
|
|
double value0 = list.get(0).get(0); |
|
|
|
double value1 = list.get(0).get(1); |
|
|
|
@ -353,12 +412,12 @@ public class ResultAnalysisUtils { |
|
|
|
defaultDesc = "纠偏码和值均异常"; |
|
|
|
} |
|
|
|
|
|
|
|
} else if("2002".equals(resultAnalysis.getResCode())) { |
|
|
|
} else if ("2002".equals(resultAnalysis.getResCode())) { |
|
|
|
resultAnalysis.setPointStatus("0"); |
|
|
|
resultAnalysis.setResultType("0"); |
|
|
|
resultAnalysis.setResStatus("0"); |
|
|
|
defaultDesc = "超出比对范围"; |
|
|
|
} else if("2003".equals(resultAnalysis.getResCode())) { |
|
|
|
} else if ("2003".equals(resultAnalysis.getResCode())) { |
|
|
|
resultAnalysis.setPointStatus("0"); |
|
|
|
resultAnalysis.setResultType("0"); |
|
|
|
resultAnalysis.setResStatus("0"); |
|
|
|
@ -393,7 +452,6 @@ public class ResultAnalysisUtils { |
|
|
|
log.info("------------------parseAlg resultAnalysis: {}", resultAnalysis); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public static void main(String[] args) { |
|
|
|
String value = "[[121,108],[121,108]]"; |
|
|
|
ObjectMapper mapper = new ObjectMapper(); |
|
|
|
|