diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/AnalyseResPoint.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/AnalyseResPoint.java index 975cb22..6f9202e 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/AnalyseResPoint.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/AnalyseResPoint.java @@ -19,7 +19,21 @@ public class AnalyseResPoint implements Serializable { private String desc; private List pos; - public boolean checkSuccess() { +// public boolean checkSuccess() { +// return "2000".equals(this.code) && "1".equals(this.value); +// } + /** + * 根据电力57号协议规定: + * code定义如下 + * 2000 - 正确 + * 2001 - 图像数据错误 + * 2002 - 算法分析失败 + * value定义如下 + * 0 - 无缺陷 + * 1 - 有缺陷 + * @return + */ + public boolean isDefect() { return "2000".equals(this.code) && "1".equals(this.value); } diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/AnalyseResult.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/AnalyseResult.java index 71cf15f..7694da9 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/AnalyseResult.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/AnalyseResult.java @@ -18,6 +18,7 @@ public class AnalyseResult implements Serializable { private String taskPatrolId; private String filter = "0"; private String result = "1"; + private boolean isTest = false; public void setResultsList(List resultsList) { this.resultsList = resultsList; @@ -68,6 +69,10 @@ public class AnalyseResult implements Serializable { this.result = result; } + public void setTest(boolean test) { + this.isTest = test; + } + @Override public boolean equals(Object object) { if (this == object) return true; 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 d8d402d..0826519 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 @@ -64,39 +64,60 @@ public class AnalysisServiceImpl implements IAnalysisService { @Override public void picAnalyseRetNotify(AnalyseResult analyseResult) { - log.info(Color.CYAN + "###### 分析算法模块返回的表计识别结果 start ######" + Color.END); + log.info(Color.CYAN + "###### 分析算法模块返回的表计识别结果 start, isTest={} ######" + Color.END, analyseResult.isTest()); String requestId = analyseResult.getRequestId(); - if (!redisService.hasKey(AnalyseConstants.ANALYSE_REQUEST_ID.concat(requestId))) { - log.error("picAnalyseRetNotify NO REQUEST_ID={} in REDIS!", requestId); - } else { - String patrolTaskIdObj = redisService.getCacheObject(AnalyseConstants.ANALYSE_REQUEST_ID.concat(requestId)); - analyseResult.setTaskPatrolId(patrolTaskIdObj); - String key = AnalyseConstants.ANALYSE_FILTER_REQUEST + requestId; - if (redisService.hasKey(key)) { - analyseResult.setFilter("1"); - AnalyseRequest analyseRequest = (AnalyseRequest) redisService.redisTemplate.opsForValue().getAndDelete(key); - AnalyseResPoint analyseResPoint = analyseResult.getResultList().get(0).getResults().get(0); - boolean bSuccess = analyseResPoint.checkSuccess(); - log.info("picAnalyseRetNotify bSuccess={}, type={}", bSuccess, analyseResPoint.getType()); - analyseResult.reloadReq(analyseRequest); - if (!bSuccess && !"meter".equals(analyseResPoint.getType())) { - log.info("picAnalyseRetNotify NO BIG_MODEL WOULD CALLED REQUEST_ID={}", requestId); - } else { - analyseResult.setResult("0"); - log.info("picAnalyseRetNotify CALL BIG_MODEL REQUEST_ID={}", requestId); - ispAlgorithmRequestService.sendRequest(analyseRequest); - } - } else { - log.info("picAnalyseRetNotify BIG_MODEL CALLBACK REQUEST_ID={}", requestId); + String keyId = AnalyseConstants.ANALYSE_REQUEST_ID.concat(requestId); + if (!redisService.hasKey(keyId)) { + log.error("picAnalyseRetNotify isTest: {}, NO keyId={}, REQUEST_ID={} in REDIS!", analyseResult.isTest(), keyId, requestId); + if(!analyseResult.isTest()) { + return; } + redisService.setCacheObject(keyId, "123456789"); + } - //qinyl - analysisLogService.log(new AnalyseLog(analyseResult.toString(), "1", analyseResult.getTaskPatrolId(), analyseResult.getFilter(), requestId)); - //analysis(analyseResult); - doAlgorithmAnalysis(analyseResult); - //calculateProcess(analyseResult); - log.info(Color.CYAN + "###### 分析算法模块返回的表计识别结果 end ######" + Color.END); + String patrolTaskIdObj = redisService.getCacheObject(keyId); + log.info("picAnalyseRetNotify keyId={}, requestId={}, patrolTaskIdObj={}", keyId, requestId, patrolTaskIdObj); + analyseResult.setTaskPatrolId(patrolTaskIdObj); + String keyFilterRequest = AnalyseConstants.ANALYSE_FILTER_REQUEST + requestId; + log.info("picAnalyseRetNotify keyFilterRequest={}", keyFilterRequest); + if (redisService.hasKey(keyFilterRequest)) { // 初筛结果 + analyseResult.setFilter("1"); // 设置初筛标志 + AnalyseRequest analyseRequest = (AnalyseRequest) redisService.redisTemplate.opsForValue().getAndDelete(keyFilterRequest); + AnalyseResPoint analyseResPoint = analyseResult.getResultList().get(0).getResults().get(0); + boolean bDefect = analyseResPoint.isDefect(); // code=2000代表初筛结果返回正常,value=1代表有缺陷 + log.info("picAnalyseRetNotify FILTER bDefect={}, algorithmType={}", bDefect, analyseResPoint.getType()); + analyseResult.reloadReq(analyseRequest); + /* + *大致两种情况:1. 算法是表计(meter); 2. 算法不是表计(meter) + * 1. 算法不是表计(meter) + * 1.1 初筛结果有缺陷:继续发给大模型处理 + * 1.2 初筛结果无缺陷:不用调用大模型,流程就此结束 + * 2. 算法是表计(meter) + * 不论初筛结果有没有缺陷,都要继续调用大模型,因为大模型调用了表计(meter)识别算法 + */ + if (bDefect || "meter".equals(analyseResPoint.getType())) { + /* + * 先检查结果有缺无缺陷,如果有缺陷不用判断算法直接调用大模型;* + * 如果无缺陷,再去判断算法,如果算法是meter就继续调用大模型。* + */ + analyseResult.setResult("0"); + log.info("picAnalyseRetNotify CALL BIG_MODEL REQUEST_ID={}", requestId); + ispAlgorithmRequestService.sendRequest(analyseRequest); + } else { + //初筛结果无缺陷并且非表计算法,不用调用大模型,流程就此结束 + log.info("picAnalyseRetNotify NO BIG_MODEL WOULD CALLED REQUEST_ID={}", requestId); + } + } else { + // 大模型结果 + log.info("picAnalyseRetNotify BIG_MODEL CALLBACK REQUEST_ID={}", requestId); } + + //qinyl + analysisLogService.log(new AnalyseLog(analyseResult.toString(), "1", analyseResult.getTaskPatrolId(), analyseResult.getFilter(), requestId)); + //analysis(analyseResult); + doAlgorithmAnalysis(analyseResult); + //calculateProcess(analyseResult); + log.info(Color.CYAN + "###### 分析算法模块返回的表计识别结果 end ######" + Color.END); } public void doAlgorithmAnalysis(AnalyseResult analyseResult) {