|
|
|
@ -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) { |
|
|
|
|