|
|
|
@ -81,21 +81,30 @@ public class AnalyseRespServiceImpl implements IAnalyseRespService { |
|
|
|
|
|
|
|
@Override |
|
|
|
public void picAnalyseRetNotify(AnalyseResult analyseResult) { |
|
|
|
log.info("Algorithm Result To Redis!"); |
|
|
|
log.info("RESULT_TO_ALGORITHM_RESPONSE_QUEUE: patrolPointId: {}, isCompensate: {}, requestId: {}, RESULT: {}", |
|
|
|
analyseResult.getTaskPatrolId(), |
|
|
|
analyseResult.isCompensate(), |
|
|
|
analyseResult.getRequestId(), |
|
|
|
analyseResult |
|
|
|
); |
|
|
|
redisService.redisTemplate.opsForList().rightPush( |
|
|
|
AnalyseConstants.ALGORITHM_RESPONSE_QUEUE, |
|
|
|
new Gson().toJson(analyseResult) |
|
|
|
); |
|
|
|
} |
|
|
|
|
|
|
|
public void handleAlgorithmResult(final AnalyseResult analyseResult) { |
|
|
|
String logLabel = UUID.randomUUID().toString().trim().replaceAll(StringUtils.DASH, StringUtils.EMPTY); |
|
|
|
|
|
|
|
log.info(Color.CYAN + "ALGO_RES_UUID: {}, ###### 分析算法模块返回的表计识别结果 start, analyseResult:{} ######" + Color.END, logLabel, analyseResult); |
|
|
|
public void handleAlgorithmResult(final AnalyseResult analyseResult) throws IOException { |
|
|
|
//String logLabel = UUID.randomUUID().toString().trim().replaceAll(StringUtils.DASH, StringUtils.EMPTY); |
|
|
|
String requestId = analyseResult.getRequestId(); |
|
|
|
log.info(Color.GREEN + "HANDLE_ALGORITHM_RESULT_S patrolPointId: {}, filter: {}, requestId: {}, analyseResult:{}" + Color.END, |
|
|
|
analyseResult.getTaskPatrolId(), |
|
|
|
analyseResult.getFilter(), |
|
|
|
requestId, |
|
|
|
analyseResult); |
|
|
|
|
|
|
|
String keyId = AnalyseConstants.ANALYSE_REQUEST_ID.concat(requestId); |
|
|
|
if (!redisService.hasKey(keyId)) { |
|
|
|
log.error("ALGO_RES_UUID: {}, picAnalyseRetNotify isTest: {}, NO keyId={}, REQUEST_ID={} in REDIS!", logLabel, analyseResult.isTest(), keyId, requestId); |
|
|
|
log.error("ALGO_RES_UUID: {}, picAnalyseRetNotify isTest: {}, NO keyId={}, REQUEST_ID={} in REDIS!", requestId, analyseResult.isTest(), keyId, requestId); |
|
|
|
if (!analyseResult.isTest()) { |
|
|
|
return; |
|
|
|
} |
|
|
|
@ -103,31 +112,33 @@ public class AnalyseRespServiceImpl implements IAnalyseRespService { |
|
|
|
} |
|
|
|
|
|
|
|
String patrolTaskIdObj = redisService.getCacheObject(keyId); |
|
|
|
log.info("ALGO_RES_UUID: {}, picAnalyseRetNotify keyId={}, requestId={}, patrolTaskIdObj={}", logLabel, keyId, requestId, patrolTaskIdObj); |
|
|
|
log.info("ALGO_RES_UUID: {}, picAnalyseRetNotify keyId={}, requestId={}, patrolTaskIdObj={}", requestId, keyId, requestId, patrolTaskIdObj); |
|
|
|
analyseResult.setTaskPatrolId(patrolTaskIdObj); |
|
|
|
final String filterRequestRedisKey = AnalyseConstants.ANALYSE_FILTER_REQUEST + requestId; |
|
|
|
final String bigModelRequestRedisKey = AnalyseConstants.ANALYSE_AI_REQUEST + requestId; |
|
|
|
log.info("ALGO_RES_UUID: {}, picAnalyseRetNotify filterRequestRedisKey={}, bigModelRequestRedisKey={}", logLabel, filterRequestRedisKey, bigModelRequestRedisKey); |
|
|
|
log.info("ALGO_RES_UUID: {}, picAnalyseRetNotify filterRequestRedisKey={}, bigModelRequestRedisKey={}", requestId, filterRequestRedisKey, bigModelRequestRedisKey); |
|
|
|
boolean bBigModelExecFlag = false; |
|
|
|
String[] algTypeList = {}; |
|
|
|
AnalyseRequest analyseRequest = null; |
|
|
|
if (redisService.hasKey(filterRequestRedisKey)) { // 初筛结果 |
|
|
|
analyseResult.setFilter("1"); // 设置初筛标志 |
|
|
|
analyseRequest = (AnalyseRequest) redisService.redisTemplate.opsForValue().getAndDelete(filterRequestRedisKey); |
|
|
|
log.info("ALGO_RES_UUID: {}, FILTER_RESULT picAnalyseRetNotify analyseRequest IN REDIS: {}", logLabel, analyseRequest); |
|
|
|
boolean isRemoved = delayQueueService.removeRequest(AnalyseConstants.ANALYSE_REQ_DELAY_QUEUE, analyseRequest); |
|
|
|
log.info("Redisson Removed Result: {}, analyseRequest: {}", isRemoved? "success" : "fail", analyseRequest); |
|
|
|
|
|
|
|
AnalyseResPoint analyseResPoint = analyseResult.getResultList().get(0).getResults().get(0); |
|
|
|
if (analyseRequest != null && analyseRequest.getObjectList() != null && !analyseRequest.getObjectList().isEmpty()) { |
|
|
|
log.info("ALGORITHM_FILTER_RESULT taskPatrolId: {}, requestId: {}, DATA IN REDIS: {}", |
|
|
|
analyseRequest.getTaskPatrolId(), |
|
|
|
requestId, |
|
|
|
analyseRequest); |
|
|
|
boolean isRemoved = delayQueueService.removeRequest(AnalyseConstants.ANALYSE_REQ_DELAY_QUEUE, analyseRequest); |
|
|
|
log.info("ALGORITHM_FILTER_RESULT Redisson Removed requestId: {}, Result: {}, analyseRequest: {}", requestId, isRemoved ? "success" : "fail", analyseRequest); |
|
|
|
|
|
|
|
algTypeList = analyseRequest.getObjectList().get(0).getTypeList(); |
|
|
|
analyseResult.reloadReq(analyseRequest);//只有一个,analyseReq.getObjectList().get(0) |
|
|
|
log.info("ALGO_RES_UUID: {}, FILTER_RESULT picAnalyseRetNotify algTypeList: {}, analyseResult reload: {}", logLabel, algTypeList, analyseResult); |
|
|
|
log.info("ALGORITHM_FILTER_RESULT RELOAD requestId: {}, algTypeList: {}, analyseResult: {}", |
|
|
|
requestId, |
|
|
|
algTypeList, |
|
|
|
analyseResult); |
|
|
|
} |
|
|
|
|
|
|
|
boolean bDefect = analyseResPoint.isDefect(); // code=2000代表初筛结果返回正常,value=1代表有缺陷 |
|
|
|
log.info("ALGO_RES_UUID: {}, picAnalyseRetNotify FILTER bDefect={}, algorithmType={}", logLabel, bDefect, analyseResPoint.getType()); |
|
|
|
|
|
|
|
/* |
|
|
|
*大致两种情况:1. 算法是表计(meter); 2. 算法不是表计(meter) |
|
|
|
* 1. 算法不是表计(meter) |
|
|
|
@ -136,8 +147,15 @@ public class AnalyseRespServiceImpl implements IAnalyseRespService { |
|
|
|
* 2. 算法是表计(meter) |
|
|
|
* 不论初筛结果有没有缺陷,都要继续调用大模型,因为大模型调用了表计(meter)识别算法 |
|
|
|
*/ |
|
|
|
AnalyseResPoint analyseResPoint = analyseResult.getResultList().get(0).getResults().get(0); |
|
|
|
boolean bDefect = analyseResPoint.isDefect(); // code=2000代表初筛结果返回正常,value=1代表有缺陷 |
|
|
|
|
|
|
|
final String algType = analyseRequest.getObjectList().get(0).getTypeList()[0]; |
|
|
|
log.info("ALGO_RES_UUID: {}, picAnalyseRetNotify algType IN REDIS: {}", logLabel, algType); |
|
|
|
log.info("ALGORITHM_FILTER_RESULT CHECK DEFECT requestId: {}, bDefect: {}, algType: {}, algTypeInRedis: {}", |
|
|
|
requestId, |
|
|
|
bDefect, |
|
|
|
analyseResPoint.getType(), |
|
|
|
algType); |
|
|
|
if (bDefect || (AlgConstants.METER.equals(algType) |
|
|
|
|| AlgConstants.XB.equals(algType) |
|
|
|
|| AlgConstants.INFRA_1800.equals(algType) |
|
|
|
@ -155,18 +173,16 @@ public class AnalyseRespServiceImpl implements IAnalyseRespService { |
|
|
|
// ispAlgorithmRequestService.sendRequest(analyseRequest); |
|
|
|
} else { |
|
|
|
//初筛结果无缺陷并且非表计算法,不用调用大模型,流程就此结束 |
|
|
|
log.info("ALGO_RES_UUID: {}, picAnalyseRetNotify NO BIG_MODEL WOULD CALLED REQUEST_ID={}", logLabel, requestId); |
|
|
|
log.info("ALGORITHM_FILTER_RESULT CALL_NO_BIG_MODEL requestId: {}", requestId); |
|
|
|
} |
|
|
|
} else if (redisService.hasKey(bigModelRequestRedisKey)) { // 大模型结果 |
|
|
|
analyseRequest = (AnalyseRequest) redisService.redisTemplate.opsForValue().getAndDelete(bigModelRequestRedisKey); |
|
|
|
log.info("ALGO_RES_UUID: {}, BIG_MODEL_RESULT picAnalyseRetNotify analyseRequest IN REDIS: {}", logLabel, analyseRequest); |
|
|
|
if(analyseRequest != null) { |
|
|
|
if (analyseRequest != null) { |
|
|
|
analyseResult.reloadReq(analyseRequest); |
|
|
|
log.info("ALGO_RES_UUID: {}, BIG_MODEL_RESULT picAnalyseRetNotify type: {}, analyseResult reload: {}", |
|
|
|
logLabel, |
|
|
|
analyseResult.getResultList().get(0).getResults().get(0).getType(), |
|
|
|
analyseResult |
|
|
|
); |
|
|
|
log.info("ALGORITHM_BIG_MODEL_RESULT taskPatrolId: {}, requestId: {}, DATA IN REDIS: {}", |
|
|
|
analyseRequest.getTaskPatrolId(), |
|
|
|
requestId, |
|
|
|
analyseRequest); |
|
|
|
|
|
|
|
// 发给光明大模型处理 |
|
|
|
redisService.redisTemplate.opsForList().rightPush( |
|
|
|
@ -177,8 +193,10 @@ public class AnalyseRespServiceImpl implements IAnalyseRespService { |
|
|
|
|
|
|
|
analyseResult.setFilter("0"); // 设置大模型标志为0 |
|
|
|
} else { |
|
|
|
log.info("ALGO_RES_UUID: {}, UNKNOWN_RESULT, OR TIMEOUT BEYOND A DAY FROM REMOTE ALGORITHM, requestId: {}, analyseResult: {}", |
|
|
|
logLabel, requestId, analyseResult); |
|
|
|
log.info("ALGORITHM_UNKNOWN_RESULT taskPatrolId: {}, requestId: {}, result: {}", |
|
|
|
analyseResult.getTaskPatrolId(), |
|
|
|
requestId, |
|
|
|
analyseResult); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
@ -191,20 +209,22 @@ public class AnalyseRespServiceImpl implements IAnalyseRespService { |
|
|
|
} |
|
|
|
//doAlgorithmAnalysis(analyseResult); |
|
|
|
//calculateProcess(analyseResult); |
|
|
|
log.info(Color.CYAN + "ALGO_RES_UUID: {}, ###### 分析算法模块返回的表计识别结果 end ######" + Color.END, logLabel); |
|
|
|
//log.info(Color.CYAN + "ALGO_RES_UUID: {}, ###### 分析算法模块返回的表计识别结果 end ######" + Color.END, requestId); |
|
|
|
|
|
|
|
if (bBigModelExecFlag) { |
|
|
|
// ispAlgorithmRequestService.sendRequest(analyseRequest); |
|
|
|
log.info("ALGO_RES_UUID: {}, picAnalyseRetNotify CALL BIG_MODEL REQUEST_ID={}", logLabel, requestId); |
|
|
|
// final long requestTimeout = 1L; |
|
|
|
// final String analyzeBigModelRequestIdRedisKey = AnalyseConstants.ANALYSE_AI_REQUEST.concat(requestId); |
|
|
|
// redisService.setCacheObject(analyzeBigModelRequestIdRedisKey, analyseRequest.clone(), requestTimeout, TimeUnit.DAYS); |
|
|
|
log.info("ALGORITHM_RESULT CALL_BIG_MODEL , taskPatrolId: {}, requestId: {}", analyseResult.getTaskPatrolId(), requestId); |
|
|
|
try { |
|
|
|
analyseRequest.setFilter(false); |
|
|
|
analyseRemoteService.sendRequest(analyseRequest, algTypeList, Boolean.FALSE); |
|
|
|
} catch (IOException e) { |
|
|
|
log.error("大模型算法调用异常: ", e); |
|
|
|
log.info("ALGORITHM_RESULT BIG_MODEL_CALL Exception requestId: {}, Msg: {}", requestId, e.getMessage()); |
|
|
|
throw e; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
log.info(Color.GREEN + "HANDLE_ALGORITHM_RESULT_E patrolPointId: {}, requestId: {}" + Color.END, |
|
|
|
analyseResult.getTaskPatrolId(), |
|
|
|
requestId); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -769,7 +789,7 @@ public class AnalyseRespServiceImpl implements IAnalyseRespService { |
|
|
|
} |
|
|
|
|
|
|
|
// 计算初筛算法的进度 |
|
|
|
if("1".equals(analyseResult.getFilter())) { |
|
|
|
if ("1".equals(analyseResult.getFilter())) { |
|
|
|
calcRemoteAlgorithmProgress(analyseResult.getTotalNumber(), analyseResult.getTaskPatrolId()); |
|
|
|
} |
|
|
|
|
|
|
|
@ -831,10 +851,10 @@ public class AnalyseRespServiceImpl implements IAnalyseRespService { |
|
|
|
PatrolTaskStatus patrolTaskStatus = new PatrolTaskStatus(); |
|
|
|
patrolTaskStatus.setTaskPatrolledId(taskPatrolledId); |
|
|
|
List<PatrolTaskStatus> patrolTaskStatusList = patrolTaskStatusService.selectPatrolTaskStatusList(patrolTaskStatus); |
|
|
|
if(!patrolTaskStatusList.isEmpty()) { |
|
|
|
if (!patrolTaskStatusList.isEmpty()) { |
|
|
|
patrolTaskStatus = patrolTaskStatusList.get(0); |
|
|
|
patrolTaskStatus.setTaskEstimatedTime(algorithmProgress); |
|
|
|
if("100.0".equals(algorithmProgress)) { |
|
|
|
if ("100.0".equals(algorithmProgress)) { |
|
|
|
patrolTaskStatus.setEndTime(DateUtil.formatDateTime(new Date())); |
|
|
|
log.info(Color.GREEN + "DONE calcRemoteAlgorithmProgress: curNumber: {}, totalNumer: {}, algorithmProgress: {}, taskPatrolledId: {}, db-taskProgress: {}" + Color.END, |
|
|
|
resultAnalysisList.size(), totalNumber, algorithmProgress, taskPatrolledId, patrolTaskStatus.getTaskProgress()); |
|
|
|
@ -845,7 +865,7 @@ public class AnalyseRespServiceImpl implements IAnalyseRespService { |
|
|
|
log.info(Color.GREEN + "RUNNING calcRemoteAlgorithmProgress: curNumber: {}, totalNumer: {}, algorithmProgress: {}, taskPatrolledId: {}, status: {}" + Color.END, |
|
|
|
resultAnalysisList.size(), totalNumber, algorithmProgress, taskPatrolledId, patrolTaskStatus.getTaskState()); |
|
|
|
|
|
|
|
if(TaskStatus.RUNNING.getCode().equals(patrolTaskStatus.getTaskState())) { |
|
|
|
if (TaskStatus.RUNNING.getCode().equals(patrolTaskStatus.getTaskState())) { |
|
|
|
patrolTaskStatus.setTaskState(TaskStatus.RUNNING.getCode()); |
|
|
|
patrolTaskStatusService.updatePatrolTaskStatus(patrolTaskStatus); |
|
|
|
} |
|
|
|
|