diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/ResultAnalysis.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/ResultAnalysis.java index 6aeb67c..d2f1a80 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/ResultAnalysis.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/ResultAnalysis.java @@ -76,15 +76,15 @@ public class ResultAnalysis extends BaseEntity { } public boolean checkCode(String code, String desc) { - if(AnalyseConstants.ANALYSE_OK.equals(code)) { + if (AnalyseConstants.ANALYSE_OK.equals(code)) { return true; } - if(AnalyseConstants.ANALYSE_FAIL_NO_FILE.equals(code) + if (AnalyseConstants.ANALYSE_FAIL_NO_FILE.equals(code) || AnalyseConstants.ANALYSE_FAIL_FILE_EXCEPT.equals(code) || AnalyseConstants.ANALYSE_FAIL_FILE_INCOMPATIBLE.equals(code)) { setDescription(desc); - } else if(AnalyseConstants.ANALYSE_FAIL_ALG_EXCEPT.equals(code)) { + } else if (AnalyseConstants.ANALYSE_FAIL_ALG_EXCEPT.equals(code)) { setDescription("算法内部异常"); } else { setDescription("未知错误"); @@ -102,7 +102,7 @@ public class ResultAnalysis extends BaseEntity { ResultAnalysis resultAnalysis = new ResultAnalysis(); resultAnalysis.setBusinessId(businessId); resultAnalysis.setResultContent("{\"requestId\": \"123\", \"resultList\": [{\"objectId\": \"" + deviceId + "\", \"results\": [{\"type\": \"infrared\", \"value\": \"0\", \"code\": \"2000\", \"resImageUrl\": \"\", \"pos\": [], \"conf\": 0.8, \"desc\": \"\"}]}]}"); - if(StringUtils.isNotEmpty(deviceId)) { + if (StringUtils.isNotEmpty(deviceId)) { resultAnalysis.setObjectId(deviceId); } @@ -114,193 +114,303 @@ public class ResultAnalysis extends BaseEntity { return resultAnalysis; } +// public void parseAlg(String algType, AlgValue algValue, String value, String defaultDesc) { +// if(value == null) { +// value = ""; +// } +// +// value = algValue.formatValue(value); +// if("1".equals(this.filter)) { +// algType = ""; +// } +// +// byte var6 = -1; +// switch(value.hashCode()) { +// case 0: +// if(value.isEmpty()) { +// var6 = 0; +// } +// break; +// case 1444: +// if(value.equals("-1")) { +// var6 = 1; +// } +// } +// +// switch(var6) { +// case 0: +// case 1: +// this.setPointStatus("0"); +// this.setResultType("2"); +// this.setResStatus("0"); +// if("meter".equals(algType)) { +// defaultDesc = "与样本有差异"; +// } else { +// defaultDesc = "算法内部异常"; +// } +// +// this.setDescription(defaultDesc); +// this.setCreateTime(new Date()); +// return; +// default: +// var6 = -1; +// switch(algType.hashCode()) { +// case -951532658: +// if(algType.equals("qrcode")) { +// var6 = 2; +// } +// break; +// case -889473228: +// if(algType.equals("switch")) { +// var6 = 1; +// } +// break; +// case 102970646: +// if(algType.equals("light")) { +// var6 = 3; +// } +// break; +// case 103787401: +// if(algType.equals("meter")) { +// var6 = 4; +// } +// break; +// case 109627663: +// if(algType.equals("sound")) { +// var6 = 6; +// } +// break; +// case 181105857: +// if(algType.equals("infrared")) { +// var6 = 5; +// } +// break; +// case 575780445: +// if(algType.equals("isolator")) { +// var6 = 0; +// } +// } +// +// byte var8; +// label83: +// switch(var6) { +// case 0: +// var8 = -1; +// switch(value.hashCode()) { +// case 51: +// if(value.equals("3")) { +// var8 = 0; +// } +// break; +// case 52: +// if(value.equals("4")) { +// var8 = 1; +// } +// } +// +// switch(var8) { +// case 0: +// case 1: +// this.setPointStatus("1"); +// this.setResultType("1"); +// this.setResStatus("0"); +// break label83; +// default: +// this.setPointStatus("0"); +// this.setResultType("2"); +// this.setResStatus("0"); +// break label83; +// } +// case 1: +// case 2: +// case 3: +// this.setResStatus("1"); +// this.setPointStatus("1"); +// this.setResultType("1"); +// break; +// case 4: +// if(!algValue.isAlarm(value)) { +// this.setResStatus("0"); +// this.setPointStatus("1"); +// this.setResultType("1"); +// defaultDesc = "正常"; +// } else { +// this.setResStatus("0"); +// this.setPointStatus("0"); +// this.setResultType("0"); +// defaultDesc = "表计超限"; +// } +// break; +// case 5: +// if(algValue.isAlarm(value)) { +// this.setResStatus("1"); +// this.setPointStatus("1"); +// this.setResultType("1"); +// defaultDesc = "正常"; +// } else { +// this.setResStatus("0"); +// this.setPointStatus("2"); +// this.setResultType("0"); +// defaultDesc = "温度告警"; +// } +// break; +// case 6: +// if(value.equals("1")) { +// this.setResStatus("1"); +// this.setPointStatus("1"); +// this.setResultType("1"); +// defaultDesc = "正常"; +// } else { +// this.setResStatus("0"); +// this.setPointStatus("0"); +// this.setResultType("0"); +// defaultDesc = "异常"; +// } +// break; +// default: +// var8 = -1; +// switch(value.hashCode()) { +// case 48: +// if(value.equals("0")) { +// var8 = 0; +// } +// break; +// case 49: +// if(value.equals("1")) { +// var8 = 1; +// } +// } +// +// switch(var8) { +// case 0: +// this.setPointStatus("1"); +// this.setResultType("1"); +// this.setResStatus("2"); +// defaultDesc = "正常"; +// this.setResDesc(defaultDesc); +// this.setSuggestion("系统审核"); +// break; +// case 1: +// this.setPointStatus("0"); +// this.setResultType("0"); +// this.setResStatus("0"); +// } +// } +// +// this.setDescription(defaultDesc); +// this.setCreateTime(new Date()); +// } +// } public void parseAlg(String algType, AlgValue algValue, String value, String defaultDesc) { - if(value == null) { + log.warn("parseAlg algType: {}, algValue: {}, value: {}, defaultDesc: {}", algType, algValue, value, defaultDesc); + if (value == null) { value = ""; } value = algValue.formatValue(value); - if("1".equals(this.filter)) { + if ("1".equals(this.filter)) { algType = ""; } - byte var6 = -1; - switch(value.hashCode()) { - case 0: - if(value.isEmpty()) { - var6 = 0; - } - break; - case 1444: - if(value.equals("-1")) { - var6 = 1; - } + if(StringUtils.isNull(algType)) { + log.warn("parseAlg algType is null!"); + return; } - switch(var6) { - case 0: - case 1: + if (value.isEmpty() || value.equals("-1")) { + this.setPointStatus("0"); + this.setResultType("2"); + this.setResStatus("0"); + if ("meter".equals(algType)) { + defaultDesc = "与样本有差异"; + } else { + defaultDesc = "算法内部异常"; + } + + this.setDescription(defaultDesc); + this.setCreateTime(new Date()); + return; + } + + if (algType.equals("qrcode")) { + this.setResStatus("1"); + this.setPointStatus("1"); + this.setResultType("1"); + } else if (algType.equals("switch")) { + this.setResStatus("1"); + this.setPointStatus("1"); + this.setResultType("1"); + } else if (algType.equals("light")) { + this.setResStatus("1"); + this.setPointStatus("1"); + this.setResultType("1"); + } else if (algType.equals("meter")) { + if (!algValue.isAlarm(value)) { + this.setResStatus("0"); + this.setPointStatus("1"); + this.setResultType("1"); + defaultDesc = "正常"; + } else { + this.setResStatus("0"); + this.setPointStatus("0"); + this.setResultType("0"); + defaultDesc = "表计超限"; + } + } else if (algType.equals("sound")) { + if (value.equals("1")) { + this.setResStatus("1"); + this.setPointStatus("1"); + this.setResultType("1"); + defaultDesc = "正常"; + } else { + this.setResStatus("0"); + this.setPointStatus("0"); + this.setResultType("0"); + defaultDesc = "异常"; + } + } else if (algType.equals("infrared")) { + if (algValue.isAlarm(value)) { + this.setResStatus("1"); + this.setPointStatus("1"); + this.setResultType("1"); + defaultDesc = "正常"; + } else { + this.setResStatus("0"); + this.setPointStatus("2"); + this.setResultType("0"); + defaultDesc = "温度告警"; + } + } else if (algType.equals("isolator")) { + if (value.equals("3")) { + this.setPointStatus("1"); + this.setResultType("1"); + this.setResStatus("0"); + } else if (value.equals("4")) { + this.setPointStatus("1"); + this.setResultType("1"); + this.setResStatus("0"); + } else { this.setPointStatus("0"); this.setResultType("2"); this.setResStatus("0"); - if("meter".equals(algType)) { - defaultDesc = "与样本有差异"; - } else { - defaultDesc = "算法内部异常"; - } - - this.setDescription(defaultDesc); - this.setCreateTime(new Date()); - return; - default: - var6 = -1; - switch(algType.hashCode()) { - case -951532658: - if(algType.equals("qrcode")) { - var6 = 2; - } - break; - case -889473228: - if(algType.equals("switch")) { - var6 = 1; - } - break; - case 102970646: - if(algType.equals("light")) { - var6 = 3; - } - break; - case 103787401: - if(algType.equals("meter")) { - var6 = 4; - } - break; - case 109627663: - if(algType.equals("sound")) { - var6 = 6; - } - break; - case 181105857: - if(algType.equals("infrared")) { - var6 = 5; - } - break; - case 575780445: - if(algType.equals("isolator")) { - var6 = 0; - } - } - - byte var8; - label83: - switch(var6) { - case 0: - var8 = -1; - switch(value.hashCode()) { - case 51: - if(value.equals("3")) { - var8 = 0; - } - break; - case 52: - if(value.equals("4")) { - var8 = 1; - } - } - - switch(var8) { - case 0: - case 1: - this.setPointStatus("1"); - this.setResultType("1"); - this.setResStatus("0"); - break label83; - default: - this.setPointStatus("0"); - this.setResultType("2"); - this.setResStatus("0"); - break label83; - } - case 1: - case 2: - case 3: - this.setResStatus("1"); - this.setPointStatus("1"); - this.setResultType("1"); - break; - case 4: - if(!algValue.isAlarm(value)) { - this.setResStatus("0"); - this.setPointStatus("1"); - this.setResultType("1"); - defaultDesc = "正常"; - } else { - this.setResStatus("0"); - this.setPointStatus("0"); - this.setResultType("0"); - defaultDesc = "表计超限"; - } - break; - case 5: - if(algValue.isAlarm(value)) { - this.setResStatus("1"); - this.setPointStatus("1"); - this.setResultType("1"); - defaultDesc = "正常"; - } else { - this.setResStatus("0"); - this.setPointStatus("2"); - this.setResultType("0"); - defaultDesc = "温度告警"; - } - break; - case 6: - if(value.equals("1")) { - this.setResStatus("1"); - this.setPointStatus("1"); - this.setResultType("1"); - defaultDesc = "正常"; - } else { - this.setResStatus("0"); - this.setPointStatus("0"); - this.setResultType("0"); - defaultDesc = "异常"; - } - break; - default: - var8 = -1; - switch(value.hashCode()) { - case 48: - if(value.equals("0")) { - var8 = 0; - } - break; - case 49: - if(value.equals("1")) { - var8 = 1; - } - } - - switch(var8) { - case 0: - this.setPointStatus("1"); - this.setResultType("1"); - this.setResStatus("2"); - defaultDesc = "正常"; - this.setResDesc(defaultDesc); - this.setSuggestion("系统审核"); - break; - case 1: - this.setPointStatus("0"); - this.setResultType("0"); - this.setResStatus("0"); - } - } - - this.setDescription(defaultDesc); - this.setCreateTime(new Date()); + } + } else { + if (value.equals("0")) { + this.setPointStatus("1"); + this.setResultType("1"); + this.setResStatus("2"); + defaultDesc = "正常"; + this.setResDesc(defaultDesc); + this.setSuggestion("系统审核"); + } else if (value.equals("1")) { + this.setPointStatus("0"); + this.setResultType("0"); + this.setResStatus("0"); + } } + this.setDescription(defaultDesc); + this.setCreateTime(new Date()); } @Override diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/AnalysisServiceImpl.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/AnalysisServiceImpl.java index 740a9a5..e11b517 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/AnalysisServiceImpl.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/AnalysisServiceImpl.java @@ -119,8 +119,12 @@ public class AnalysisServiceImpl implements IAnalysisService { //qinyl analysisLogService.log(new AnalyseLog(analyseResult.toString(), "1", analyseResult.getTaskPatrolId(), analyseResult.getFilter(), requestId)); - //analysis(analyseResult); - doAlgorithmAnalysis(analyseResult); + try { + analysis(analyseResult); + } catch (Exception e) { + e.printStackTrace(); + } + //doAlgorithmAnalysis(analyseResult); //calculateProcess(analyseResult); log.info(Color.CYAN + "###### 分析算法模块返回的表计识别结果 end ######" + Color.END); @@ -628,21 +632,24 @@ public class AnalysisServiceImpl implements IAnalysisService { List resultList = analyseResult.getResultList(); PatrolResult patrolResult; - for (Iterator iterator = resultList.iterator(); iterator.hasNext(); patrolResultService.updatePatrolResult(patrolResult)) { + for (Iterator iterator = resultList.iterator(); + iterator.hasNext(); + patrolResultService.updatePatrolResult(patrolResult)) { AnalyseResItem resItem = iterator.next(); patrolResult = resMap.get(resItem.getObjectId()); List resultAnalysisList = new ArrayList<>(); StringJoiner valueJoiner = new StringJoiner(StringUtils.COMMA); - for (AnalyseResPoint resPoint : resItem.getResults()) { + for (AnalyseResPoint analyseResPoint : resItem.getResults()) { ResultAnalysis resultAnalysis = combineAnalyse(analyseResult, String.valueOf(resMap.get(resItem.getObjectId()).getLineId()), resItem.getObjectId(), patrolResult.getFilePath(), - resPoint); + analyseResPoint); resultAnalysisList.add(resultAnalysis); valueJoiner.add(resultAnalysis.getResValue()); + log.info(Color.MAGENTA + "[analysis] insertResultAnalysis: {}" + Color.END, resultAnalysis); resultAnalysisService.insertResultAnalysis(resultAnalysis); } @@ -672,35 +679,40 @@ public class AnalysisServiceImpl implements IAnalysisService { //this.senWebsocket(websocketDataList); } - private ResultAnalysis combineAnalyse(AnalyseResult analyseResult, String patrolResultId, String objectId, String filePath, AnalyseResPoint resPoint) { + private ResultAnalysis combineAnalyse( + AnalyseResult analyseResult, + String patrolResultId, + String objectId, + String filePath, + AnalyseResPoint analyseResPoint) { ResultAnalysis resultAnalysis = new ResultAnalysis(); resultAnalysis.setTaskPatrolId(analyseResult.getTaskPatrolId()); resultAnalysis.setRequestId(analyseResult.getRequestId()); resultAnalysis.setBusinessId(patrolResultId); - resultAnalysis.setResultContent(resPoint.toString()); + resultAnalysis.setResultContent(analyseResPoint.toString()); resultAnalysis.setObjectId(objectId); - resultAnalysis.setAlgType(resPoint.getType()); - resultAnalysis.setResValue(resPoint.getValue()); - resultAnalysis.setResCode(resPoint.getCode()); - resultAnalysis.setResConf(resPoint.getConf()); - resultAnalysis.setResDesc(resPoint.getDesc()); + resultAnalysis.setAlgType(analyseResPoint.getType()); + resultAnalysis.setResValue(analyseResPoint.getValue()); + resultAnalysis.setResCode(analyseResPoint.getCode()); + resultAnalysis.setResConf(analyseResPoint.getConf()); + resultAnalysis.setResDesc(analyseResPoint.getDesc()); resultAnalysis.setResult(analyseResult.getResult()); - if (StringUtils.isEmpty(resPoint.getResImageUrl())) { - resPoint.setResImageUrl(filePath); + if (StringUtils.isEmpty(analyseResPoint.getResImageUrl())) { + analyseResPoint.setResImageUrl(filePath); } - if (StringUtils.isEmpty(resPoint.getImageNormalUrlPath())) { - resPoint.setImageNormalUrlPath(resPoint.getImageNormalUrlPath()); + if (StringUtils.isEmpty(analyseResPoint.getImageNormalUrlPath())) { + analyseResPoint.setImageNormalUrlPath(analyseResPoint.getImageNormalUrlPath()); } - resultAnalysis.setResImgUrl(resPoint.getResImageUrl()); - resultAnalysis.setImageNormalUrlPath(resPoint.getImageNormalUrlPath()); - resultAnalysis.setResPos(resPoint.getPos() == null ? StringUtils.EMPTY : JSONObject.toJSONString(resPoint.getPos())); - String value = resPoint.getValue(); + resultAnalysis.setResImgUrl(analyseResPoint.getResImageUrl()); + resultAnalysis.setImageNormalUrlPath(analyseResPoint.getImageNormalUrlPath()); + resultAnalysis.setResPos(analyseResPoint.getPos() == null ? StringUtils.EMPTY : JSONObject.toJSONString(analyseResPoint.getPos())); + String value = analyseResPoint.getValue(); resultAnalysis.setFilter(analyseResult.getFilter()); - if (resultAnalysis.checkCode(resPoint.getCode(), resPoint.getDesc())) { - AlgValue algValue = selectAlgMap(objectId, resPoint.getType()); - resultAnalysis.parseAlg(resPoint.getType(), algValue, value, resPoint.getDesc()); + if (resultAnalysis.checkCode(analyseResPoint.getCode(), analyseResPoint.getDesc())) { + AlgValue algValue = selectAlgMap(objectId, analyseResPoint.getType()); + resultAnalysis.parseAlg(analyseResPoint.getType(), algValue, value, analyseResPoint.getDesc()); } return resultAnalysis; @@ -713,7 +725,8 @@ public class AnalysisServiceImpl implements IAnalysisService { JSONArray thresholdList = JSONArray.parseArray(alarmThreshold); for (int i = 0; i < thresholdList.size(); ++i) { JSONObject threshold = thresholdList.getJSONObject(i); - if (type.equals(threshold.getString(AnalyseConstants.ANALYSE_CODE))) { + log.info("selectAlgMap type: {}, threshold: {}", type, threshold); + if (StringUtils.isNotEmpty(type) && type.equals(threshold.getString(AnalyseConstants.ANALYSE_CODE))) { return new AlgValue(threshold.getString(AnalyseConstants.ANALYSE_UPPER_VALUE), threshold.getString(AnalyseConstants.ANALYSE_LOWER_VALUE)); } }