From 14a83d4fdc08d1fe35660d4c485609ef52f65c48 Mon Sep 17 00:00:00 2001 From: htjcAdmin Date: Fri, 27 Jun 2025 10:11:07 +0800 Subject: [PATCH] =?UTF-8?q?/*=201.=20=E8=AF=B7=E6=B1=82=E7=AE=97=E6=B3=95?= =?UTF-8?q?=E5=BC=82=E6=AD=A5=E9=98=9F=E5=88=97=E5=8F=91=E9=80=81=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E9=97=B4=E9=9A=94=E9=BB=98=E8=AE=A4=E7=94=B11000ms?= =?UTF-8?q?=E6=94=B9=E6=88=903000=E6=AF=AB=E7=A7=92=EF=BC=9B=202.=20?= =?UTF-8?q?=E6=8E=A5=E6=94=B6=E7=AE=97=E6=B3=95=E5=BC=82=E6=AD=A5=E9=98=9F?= =?UTF-8?q?=E5=88=97=E5=A4=84=E7=90=86=E6=97=B6=E9=97=B4=E9=97=B4=E9=9A=94?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E7=94=B11000ms=E6=94=B9=E6=88=903000?= =?UTF-8?q?=E6=AF=AB=E7=A7=92=EF=BC=9B=203.=20=E5=A4=A7=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E8=AF=B7=E6=B1=82=E8=BF=94=E5=9B=9E=E5=88=B0=E6=99=BA=E5=B7=A1?= =?UTF-8?q?=EF=BC=8C=E6=99=BA=E5=B7=A1=E6=B2=A1=E6=9C=89=E5=A4=84=E7=90=86?= =?UTF-8?q?bug=E4=BF=AE=E6=94=B9=E3=80=82=20*/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../analysis/constant/AnalyseConstants.java | 1 + .../impl/AlgorithmRequestProcessConsumer.java | 2 +- .../AlgorithmResponseProcessConsumer.java | 2 +- .../service/impl/AnalysisServiceImpl.java | 60 ++++++++++++------- .../service/AnalyseRemoteService.java | 15 +++-- 5 files changed, 53 insertions(+), 27 deletions(-) diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/constant/AnalyseConstants.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/constant/AnalyseConstants.java index 4936b93..e54d570 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/constant/AnalyseConstants.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/constant/AnalyseConstants.java @@ -2,6 +2,7 @@ package com.inspect.analysis.constant; public class AnalyseConstants { public static final String ANALYSE_FILTER_REQUEST = "ANALYSE_FILTER_REQUEST:"; + public static final String ANALYSE_AI_REQUEST = "ANALYSE_AI_REQUEST:"; public static final String ANALYSE_REQUEST_ALG = "ANALYSE_REQUEST_ALG:"; public static final String ANALYSE_TASK_REQUEST = "ANALYSE_TASK_REQUEST:"; public static final String ANALYSE_REQUEST_ID = "ANALYSE_REQUEST_ID:"; diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/AlgorithmRequestProcessConsumer.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/AlgorithmRequestProcessConsumer.java index e5fe523..4906724 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/AlgorithmRequestProcessConsumer.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/AlgorithmRequestProcessConsumer.java @@ -26,7 +26,7 @@ public class AlgorithmRequestProcessConsumer { private AnalyseRemoteService analyseRemoteService; //@Scheduled(fixedDelay = 1000) - @Scheduled(fixedDelayString = "${task.scheduler.request.delay-ms:1000}") + @Scheduled(fixedDelayString = "${task.scheduler.request.delay-ms:3000}") public void pollAndProcess() { //logger.info(Color.YELLOW + "AlgorithmRequestProcessConsumerTracer" + Color.END); String requestDataInRedis; diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/AlgorithmResponseProcessConsumer.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/AlgorithmResponseProcessConsumer.java index b419fd6..0231149 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/AlgorithmResponseProcessConsumer.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/AlgorithmResponseProcessConsumer.java @@ -26,7 +26,7 @@ public class AlgorithmResponseProcessConsumer { private IAnalysisService analysisService; //@Scheduled(fixedDelay = 1000) - @Scheduled(fixedDelayString = "${task.scheduler.response.delay-ms:1000}") + @Scheduled(fixedDelayString = "${task.scheduler.response.delay-ms:3000}") public void pollAndProcess() { //logger.info(Color.CYAN + "AlgorithmResponseProcessConsumerTracer" + Color.END); String responseDataInRedis; 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 9e928e4..ccf2ed5 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 @@ -36,6 +36,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.*; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @Service @@ -168,12 +169,13 @@ public class AnalysisServiceImpl implements IAnalysisService { } public void handleAlgorithmResult(final String analyseResultJson) { + String logLabel = UUID.randomUUID().toString().trim().replaceAll(StringUtils.DASH, StringUtils.EMPTY); AnalyseResult analyseResult = new Gson().fromJson(analyseResultJson, AnalyseResult.class); - log.info(Color.CYAN + "###### 分析算法模块返回的表计识别结果 start, analyseResult:{} ######" + Color.END, analyseResult); + log.info(Color.CYAN + "ALGO_RES_UUID: {}, ###### 分析算法模块返回的表计识别结果 start, analyseResult:{} ######" + Color.END, logLabel, analyseResult); String requestId = analyseResult.getRequestId(); 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); + log.error("ALGO_RES_UUID: {}, picAnalyseRetNotify isTest: {}, NO keyId={}, REQUEST_ID={} in REDIS!", logLabel, analyseResult.isTest(), keyId, requestId); if (!analyseResult.isTest()) { return; } @@ -181,25 +183,28 @@ public class AnalysisServiceImpl implements IAnalysisService { } String patrolTaskIdObj = redisService.getCacheObject(keyId); - log.info("picAnalyseRetNotify keyId={}, requestId={}, patrolTaskIdObj={}", keyId, requestId, patrolTaskIdObj); + log.info("ALGO_RES_UUID: {}, picAnalyseRetNotify keyId={}, requestId={}, patrolTaskIdObj={}", logLabel, keyId, requestId, patrolTaskIdObj); analyseResult.setTaskPatrolId(patrolTaskIdObj); - String keyFilterRequest = AnalyseConstants.ANALYSE_FILTER_REQUEST + requestId; - log.info("picAnalyseRetNotify keyFilterRequest={}", keyFilterRequest); + 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); boolean bBigModelExecFlag = false; String[] algTypeList = {}; AnalyseRequest analyseRequest = null; - if (redisService.hasKey(keyFilterRequest)) { // 初筛结果 + if (redisService.hasKey(filterRequestRedisKey)) { // 初筛结果 analyseResult.setFilter("1"); // 设置初筛标志 - analyseRequest = (AnalyseRequest) redisService.redisTemplate.opsForValue().getAndDelete(keyFilterRequest); - log.info("FILTER_RESULT picAnalyseRetNotify analyseRequest IN REDIS: {}", analyseRequest); + analyseRequest = (AnalyseRequest) redisService.redisTemplate.opsForValue().getAndDelete(filterRequestRedisKey); + log.info("ALGO_RES_UUID: {}, FILTER_RESULT picAnalyseRetNotify analyseRequest IN REDIS: {}", logLabel, analyseRequest); AnalyseResPoint analyseResPoint = analyseResult.getResultList().get(0).getResults().get(0); if (analyseRequest != null && analyseRequest.getObjectList() != null && !analyseRequest.getObjectList().isEmpty()) { 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); } boolean bDefect = analyseResPoint.isDefect(); // code=2000代表初筛结果返回正常,value=1代表有缺陷 - log.info("picAnalyseRetNotify FILTER bDefect={}, algorithmType={}", bDefect, analyseResPoint.getType()); - analyseResult.reloadReq(analyseRequest);//只有一个,analyseReq.getObjectList().get(0) + log.info("ALGO_RES_UUID: {}, picAnalyseRetNotify FILTER bDefect={}, algorithmType={}", logLabel, bDefect, analyseResPoint.getType()); + /* *大致两种情况:1. 算法是表计(meter); 2. 算法不是表计(meter) * 1. 算法不是表计(meter) @@ -209,7 +214,7 @@ public class AnalysisServiceImpl implements IAnalysisService { * 不论初筛结果有没有缺陷,都要继续调用大模型,因为大模型调用了表计(meter)识别算法 */ final String algType = analyseRequest.getObjectList().get(0).getTypeList()[0]; - log.info("picAnalyseRetNotify algType IN REDIS: {}", algType); + log.info("ALGO_RES_UUID: {}, picAnalyseRetNotify algType IN REDIS: {}", logLabel, algType); if (bDefect || (AlgConstants.METER.equals(algType) || AlgConstants.XB.equals(algType) || AlgConstants.INFRA_1800.equals(algType) @@ -227,12 +232,24 @@ public class AnalysisServiceImpl implements IAnalysisService { // ispAlgorithmRequestService.sendRequest(analyseRequest); } else { //初筛结果无缺陷并且非表计算法,不用调用大模型,流程就此结束 - log.info("picAnalyseRetNotify NO BIG_MODEL WOULD CALLED REQUEST_ID={}", requestId); + log.info("ALGO_RES_UUID: {}, picAnalyseRetNotify NO BIG_MODEL WOULD CALLED REQUEST_ID={}", logLabel, requestId); } - } else { - // 大模型结果 - log.info("BIG_MODEL_RESULT CALLBACK picAnalyseRetNotify REQUEST_ID={}", 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) { + 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 + ); + } + 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); } //qinyl @@ -244,12 +261,15 @@ public class AnalysisServiceImpl implements IAnalysisService { } //doAlgorithmAnalysis(analyseResult); //calculateProcess(analyseResult); - log.info(Color.CYAN + "###### 分析算法模块返回的表计识别结果 end ######" + Color.END); + log.info(Color.CYAN + "ALGO_RES_UUID: {}, ###### 分析算法模块返回的表计识别结果 end ######" + Color.END, logLabel); if (bBigModelExecFlag) { - log.info("picAnalyseRetNotify CALL BIG_MODEL REQUEST_ID={}", requestId); // ispAlgorithmRequestService.sendRequest(analyseRequest); - analyseRemoteService.sendRequest(analyseRequest, algTypeList, false); + 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); + analyseRemoteService.sendRequest(analyseRequest, algTypeList, Boolean.FALSE); } } @@ -877,7 +897,7 @@ public class AnalysisServiceImpl implements IAnalysisService { } } - if(algValue == null) { + if (algValue == null) { Map threshold = patrolResultService.selectPatrolPresetParam(devId); if (threshold != null) { log.info("selectAlgMap patrolpreset threshold: {}", JSONObject.toJSONString(threshold)); @@ -885,7 +905,7 @@ public class AnalysisServiceImpl implements IAnalysisService { } } - if(algValue == null) { + if (algValue == null) { log.info("selectAlgMap threshold is not set"); algValue = new AlgValue(); } diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/service/AnalyseRemoteService.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/service/AnalyseRemoteService.java index f5bead8..283beca 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/service/AnalyseRemoteService.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/service/AnalyseRemoteService.java @@ -37,25 +37,26 @@ public class AnalyseRemoteService { //qinyl public void sendRequest(AnalyseRequest analyseReq, String[] typeList, boolean isFilter) { + final long requestTimeout = 1L; String requestId = UUID.randomUUID().toString().trim().replaceAll(StringUtils.DASH, StringUtils.EMPTY); String taskPatrolId = analyseReq.getTaskPatrolId(); - redisService.setCacheObject(RedisConst.REQUEST_UUID + requestId, taskPatrolId, 1L, TimeUnit.DAYS); + redisService.setCacheObject(RedisConst.REQUEST_UUID + requestId, taskPatrolId, requestTimeout, TimeUnit.DAYS); log.info("CALL_REMOTE_ANALYZE isFilter: {}, requestId: {}, taskPatrolId: {}", isFilter, requestId, taskPatrolId); analyseReq.setRequestId(requestId); String taskSetKey = AnalyseConstants.ANALYSE_TASK_REQUEST + taskPatrolId; String requestSetKey = AnalyseConstants.ANALYSE_REQUEST_ALG + requestId; - final long requestTimeout = 720; - redisService.setCacheObject(AnalyseConstants.ANALYSE_REQUEST_ID.concat(requestId), taskPatrolId, requestTimeout, TimeUnit.MINUTES); + + redisService.setCacheObject(AnalyseConstants.ANALYSE_REQUEST_ID.concat(requestId), taskPatrolId, requestTimeout, TimeUnit.DAYS); redisService.redisTemplate.opsForSet().add(taskSetKey, requestId); - redisService.expire(taskSetKey, requestTimeout, TimeUnit.MINUTES); + redisService.expire(taskSetKey, requestTimeout, TimeUnit.DAYS); String requestUrl; String analyseFilter = patrolTaskService.selectConfigByKey(AnalyseConstants.ANALYSE_IS_FILTER); if ("1".equals(analyseFilter) && isFilter) { final String analyzeFilterRequestIdRedisKey = AnalyseConstants.ANALYSE_FILTER_REQUEST.concat(requestId); log.info("[FILTER] sendRequest analyseFilterRequestIdRedisKey: {}, analyseReq: {}", analyzeFilterRequestIdRedisKey, analyseReq); - this.redisService.setCacheObject(analyzeFilterRequestIdRedisKey, analyseReq.clone(), 1L, TimeUnit.HOURS); + this.redisService.setCacheObject(analyzeFilterRequestIdRedisKey, analyseReq.clone(), requestTimeout, TimeUnit.DAYS); AnalyseReqItem analyseReqItem = analyseReq.getObjectList().get(0);//只取第一个 analyseReqItem.setTypeList(typeList); analyseReq.setObjectList(Collections.singletonList(analyseReqItem)); @@ -68,6 +69,10 @@ public class AnalyseRemoteService { } }); requestUrl = patrolTaskService.selectConfigByKey(AnalyseConstants.ANALYSIS_BIG_URL); + + final String analyzeBigModelRequestIdRedisKey = AnalyseConstants.ANALYSE_AI_REQUEST.concat(requestId); + log.info("[BIG_MODEL] sendRequest analyzeBigModelRequestIdRedisKey: {}, analyseReq: {}", analyzeBigModelRequestIdRedisKey, analyseReq); + redisService.setCacheObject(analyzeBigModelRequestIdRedisKey, analyseReq.clone(), requestTimeout, TimeUnit.DAYS); } if(StringUtil.isEmpty(requestUrl)) {