From eda0e26bcb7125bc500b8121a6f84f15f4eeadf9 Mon Sep 17 00:00:00 2001 From: htjcAdmin Date: Mon, 21 Apr 2025 21:16:25 +0800 Subject: [PATCH] =?UTF-8?q?/*=E4=BF=AE=E6=94=B9=E4=B8=80=E4=B8=AA=E9=A2=84?= =?UTF-8?q?=E7=BD=AE=E4=BD=8D=E7=BB=8F=E8=BF=87=E5=88=9D=E7=AD=9B=E7=AE=97?= =?UTF-8?q?=E6=B3=95=E5=92=8C=E5=A4=A7=E6=A8=A1=E5=9E=8B=E7=AE=97=E6=B3=95?= =?UTF-8?q?=E8=B0=83=E7=94=A8=E4=B9=8B=E5=90=8E=EF=BC=8Cresult=5Fanalysis?= =?UTF-8?q?=E5=8F=AA=E6=9C=89=E4=B8=80=E6=9D=A1=E5=A4=A7=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E7=9A=84bug=EF=BC=8C=E6=8C=89=E7=85=A7?= =?UTF-8?q?=E5=B8=B8=E7=90=86=EF=BC=8C=E5=BA=94=E8=AF=A5=E6=9C=89=E4=B8=A4?= =?UTF-8?q?=E6=9D=A1=E7=BB=93=E6=9E=9C=EF=BC=8C=E4=B8=80=E6=9D=A1=E6=98=AF?= =?UTF-8?q?=E5=88=9D=E7=AD=9B=E7=BB=93=E6=9E=9C=EF=BC=8C=E4=B8=80=E6=9D=A1?= =?UTF-8?q?=E6=98=AF=E5=A4=A7=E6=A8=A1=E5=9E=8B=E7=BB=93=E6=9E=9C=E3=80=82?= =?UTF-8?q?*/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/AnalysisServiceImpl.java | 332 +++++++++--------- .../mapper/task/ResultAnalysisMapper.xml | 2 + 2 files changed, 176 insertions(+), 158 deletions(-) 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 f6bc659..068b5d7 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,7 +64,7 @@ public class AnalysisServiceImpl implements IAnalysisService { @Override public void picAnalyseRetNotify(AnalyseResult analyseResult) { - log.info(Color.CYAN + "###### 分析算法模块返回的表计识别结果 start, isTest={} ######" + Color.END, analyseResult.isTest()); + log.info(Color.CYAN + "###### 分析算法模块返回的表计识别结果 start, analyseResult:{} ######" + Color.END, analyseResult); String requestId = analyseResult.getRequestId(); String keyId = AnalyseConstants.ANALYSE_REQUEST_ID.concat(requestId); if (!redisService.hasKey(keyId)) { @@ -80,9 +80,11 @@ public class AnalysisServiceImpl implements IAnalysisService { analyseResult.setTaskPatrolId(patrolTaskIdObj); String keyFilterRequest = AnalyseConstants.ANALYSE_FILTER_REQUEST + requestId; log.info("picAnalyseRetNotify keyFilterRequest={}", keyFilterRequest); + boolean flag = false; + AnalyseRequest analyseRequest = null; if (redisService.hasKey(keyFilterRequest)) { // 初筛结果 analyseResult.setFilter("1"); // 设置初筛标志 - AnalyseRequest analyseRequest = (AnalyseRequest) redisService.redisTemplate.opsForValue().getAndDelete(keyFilterRequest); + 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()); @@ -101,8 +103,9 @@ public class AnalysisServiceImpl implements IAnalysisService { * 如果无缺陷,再去判断算法,如果算法是meter就继续调用大模型。* */ analyseResult.setResult("0"); - log.info("picAnalyseRetNotify CALL BIG_MODEL REQUEST_ID={}", requestId); - ispAlgorithmRequestService.sendRequest(analyseRequest); + flag = true; +// log.info("picAnalyseRetNotify CALL BIG_MODEL REQUEST_ID={}", requestId); +// ispAlgorithmRequestService.sendRequest(analyseRequest); } else { //初筛结果无缺陷并且非表计算法,不用调用大模型,流程就此结束 log.info("picAnalyseRetNotify NO BIG_MODEL WOULD CALLED REQUEST_ID={}", requestId); @@ -110,6 +113,7 @@ public class AnalysisServiceImpl implements IAnalysisService { } else { // 大模型结果 log.info("picAnalyseRetNotify BIG_MODEL CALLBACK REQUEST_ID={}", requestId); + analyseResult.setFilter("0"); // 设置大模型标志为0 } //qinyl @@ -118,9 +122,14 @@ public class AnalysisServiceImpl implements IAnalysisService { doAlgorithmAnalysis(analyseResult); //calculateProcess(analyseResult); log.info(Color.CYAN + "###### 分析算法模块返回的表计识别结果 end ######" + Color.END); + + if(flag) { + log.info("picAnalyseRetNotify CALL BIG_MODEL REQUEST_ID={}", requestId); + ispAlgorithmRequestService.sendRequest(analyseRequest); + } } - public void doAlgorithmAnalysis(AnalyseResult analyseResult) { + public synchronized void doAlgorithmAnalysis(AnalyseResult analyseResult) { log.info("doAlgorithmAnalysis analyseResult: {}", analyseResult); int size = 0; String taskId = ""; @@ -149,185 +158,192 @@ public class AnalysisServiceImpl implements IAnalysisService { Map resMap = selectObj2PatrolResultMap(analyseResult.getTaskPatrolId()); log.info(Color.GREEN + "doAlgorithmAnalysis meter algorithm resContentList: {}" + Color.END, resContentList); log.info(Color.GREEN + "doAlgorithmAnalysis meter algorithm resMap: {}" + Color.END, JSONObject.toJSONString(resMap)); - if (!resContentList.isEmpty()) { - List websocketDataArrayList = new ArrayList<>(); - for (AnalyseResItem algorithmResult : resContentList) { - Long lineId = deviceIdLineIdMap.get(algorithmResult.getObjectId()); - log.info("doAlgorithmAnalysis resultList lineId: {}, objectId: {}", lineId, algorithmResult.getObjectId()); - ResultAnalysis resultAnalysis = new ResultAnalysis(); - resultAnalysis.setBusinessId(String.valueOf(lineId)); - resultAnalysis.setResultContent(new Gson().toJson(analyseResult)); - resultAnalysis.setResultType("1"); - resultAnalysis.setObjectId(algorithmResult.getObjectId()); - List resultsList = algorithmResult.getResults(); - String value = ""; - List typeList = new ArrayList<>(); - String description; - String objectId; - for (Iterator iterator = resultsList.iterator(); iterator.hasNext(); resultAnalysis.setDescription(description)) { - AnalyseResPoint algorithmInnerResult = iterator.next(); - value = algorithmInnerResult.getValue(); - String code = algorithmInnerResult.getCode(); - description = algorithmInnerResult.getDesc(); - objectId = algorithmInnerResult.getType(); - if (StringUtils.isNotEmpty(objectId)) { - typeList.add(objectId); - } + try { + if (!resContentList.isEmpty()) { + List websocketDataArrayList = new ArrayList<>(); + for (AnalyseResItem algorithmResult : resContentList) { + Long lineId = deviceIdLineIdMap.get(algorithmResult.getObjectId()); + log.info("doAlgorithmAnalysis resultList lineId: {}, objectId: {}", lineId, algorithmResult.getObjectId()); + ResultAnalysis resultAnalysis = new ResultAnalysis(); + resultAnalysis.setBusinessId(String.valueOf(lineId)); + resultAnalysis.setResultContent(new Gson().toJson(analyseResult)); + resultAnalysis.setResultType("1"); + resultAnalysis.setObjectId(algorithmResult.getObjectId()); + List resultsList = algorithmResult.getResults(); + String value = ""; + List typeList = new ArrayList<>(); + String description; + String objectId; + for (Iterator iterator = resultsList.iterator(); iterator.hasNext(); resultAnalysis.setDescription(description)) { + AnalyseResPoint algorithmInnerResult = iterator.next(); + value = algorithmInnerResult.getValue(); + String code = algorithmInnerResult.getCode(); + description = algorithmInnerResult.getDesc(); + objectId = algorithmInnerResult.getType(); + if (StringUtils.isNotEmpty(objectId)) { + typeList.add(objectId); + } - log.info("doAlgorithmAnalysis RESULT CODE: {}, DESC: {}", code, description); - if ("meter normal".equals(description)) { - description = "识别完成"; - } + log.info("doAlgorithmAnalysis RESULT CODE: {}, DESC: {}", code, description); + if ("meter normal".equals(description)) { + description = "识别完成"; + } - resultAnalysis.setCreateTime(new Date()); - switch (value) { - case "0": - resultAnalysis.setPointStatus("1"); - resultAnalysis.setResultType("1"); - resultAnalysis.setResStatus("1"); - break; - case "1": - resultAnalysis.setPointStatus("0"); - resultAnalysis.setResultType("0"); - resultAnalysis.setResStatus("0"); - break; - case "-1": - resultAnalysis.setPointStatus("0"); - resultAnalysis.setResultType("2"); - resultAnalysis.setResStatus("0"); - break; - default: - resultAnalysis.setPointStatus("1"); - resultAnalysis.setResultType("1"); - resultAnalysis.setResStatus("1"); - break; - } + resultAnalysis.setCreateTime(new Date()); + switch (value) { + case "0": + resultAnalysis.setPointStatus("1"); + resultAnalysis.setResultType("1"); + resultAnalysis.setResStatus("1"); + break; + case "1": + resultAnalysis.setPointStatus("0"); + resultAnalysis.setResultType("0"); + resultAnalysis.setResStatus("0"); + break; + case "-1": + resultAnalysis.setPointStatus("0"); + resultAnalysis.setResultType("2"); + resultAnalysis.setResStatus("0"); + break; + default: + resultAnalysis.setPointStatus("1"); + resultAnalysis.setResultType("1"); + resultAnalysis.setResStatus("1"); + break; + } - if (!code.equals("2000")) { - resultAnalysis.setResultType("3"); - description = "GET PICTURE FAIL"; - } + if (!code.equals("2000")) { + resultAnalysis.setResultType("3"); + description = "GET PICTURE FAIL"; + } - resultAnalysis.setTaskPatrolId(analyseResult.getTaskPatrolId()); - resultAnalysis.setRequestId(analyseResult.getRequestId()); - resultAnalysis.setAlgType(algorithmInnerResult.getType()); - resultAnalysis.setResValue(algorithmInnerResult.getValue()); - resultAnalysis.setResCode(algorithmInnerResult.getCode()); - resultAnalysis.setResConf(algorithmInnerResult.getConf()); - resultAnalysis.setResDesc(algorithmInnerResult.getDesc()); - resultAnalysis.setResult(analyseResult.getResult()); - if (StringUtils.isEmpty(algorithmInnerResult.getResImageUrl())) { - PatrolResult patrolResult = resMap.get(algorithmResult.getObjectId()); - log.info(Color.GREEN + "------------------------doAlgorithmAnalysis patrolResult: {}" + Color.END, JSONObject.toJSONString(patrolResult)); - resultAnalysis.setResImgUrl(patrolResult.getFilePath()); - } else { - resultAnalysis.setResImgUrl(algorithmInnerResult.getResImageUrl()); + resultAnalysis.setTaskPatrolId(analyseResult.getTaskPatrolId()); + resultAnalysis.setRequestId(analyseResult.getRequestId()); + resultAnalysis.setAlgType(algorithmInnerResult.getType()); + resultAnalysis.setResValue(algorithmInnerResult.getValue()); + resultAnalysis.setResCode(algorithmInnerResult.getCode()); + resultAnalysis.setResConf(algorithmInnerResult.getConf()); + resultAnalysis.setResDesc(algorithmInnerResult.getDesc()); + resultAnalysis.setResult(analyseResult.getResult()); + if (StringUtils.isEmpty(algorithmInnerResult.getResImageUrl())) { + PatrolResult patrolResult = resMap.get(algorithmResult.getObjectId()); + log.info(Color.GREEN + "------------------------doAlgorithmAnalysis patrolResult: {}" + Color.END, JSONObject.toJSONString(patrolResult)); + resultAnalysis.setResImgUrl(patrolResult.getFilePath()); + } else { + resultAnalysis.setResImgUrl(algorithmInnerResult.getResImageUrl()); + } + resultAnalysis.setImageNormalUrlPath(algorithmInnerResult.getImageNormalUrlPath()); + resultAnalysis.setResPos(algorithmInnerResult.getPos() == null ? StringUtils.EMPTY : JSONObject.toJSONString(algorithmInnerResult.getPos())); + resultAnalysis.setFilter(analyseResult.getFilter()); } - resultAnalysis.setImageNormalUrlPath(algorithmInnerResult.getImageNormalUrlPath()); - resultAnalysis.setResPos(algorithmInnerResult.getPos() == null ? StringUtils.EMPTY : JSONObject.toJSONString(algorithmInnerResult.getPos())); - resultAnalysis.setFilter(analyseResult.getFilter()); - } - log.info("doAlgorithmAnalysis BEFORE resultAnalysis: {}", resultAnalysis); - try { - setAllStatus(resultAnalysis); - } catch (Exception e) { - log.error("error", e); - } + log.info("doAlgorithmAnalysis BEFORE resultAnalysis: {}", resultAnalysis); + try { + setAllStatus(resultAnalysis); + } catch (Exception e) { + log.error("error", e); + } - log.info("doAlgorithmAnalysis AFTER resultAnalysis: {}", resultAnalysis); - if (StringUtils.isNotEmpty(resultAnalysis.getBusinessId())) { - ResultAnalysis analysis = new ResultAnalysis(); - analysis.setBusinessId(resultAnalysis.getBusinessId()); - List resultAnalyses = resultAnalysisService.selectResultAnalysisList(analysis); - if (resultAnalyses.isEmpty()) { - int analysisRes = resultAnalysisService.insertResultAnalysis(resultAnalysis); - log.info(Color.GREEN + "doAlgorithmAnalysis CRUD insert analysisRes: {}, lineId: {}" + Color.END, analysisRes, resultAnalysis.getLineId()); - } else { - resultAnalysis.setLineId(resultAnalyses.get(0).getLineId()); - int analysisRes = resultAnalysisService.updateResultAnalysis(resultAnalysis); - log.info(Color.GREEN + "doAlgorithmAnalysis CRUD update analysisRes: {}, lineId: {}" + Color.END, analysisRes, resultAnalysis.getLineId()); + log.info("doAlgorithmAnalysis AFTER resultAnalysis: {}", resultAnalysis); + if (StringUtils.isNotEmpty(resultAnalysis.getBusinessId())) { + ResultAnalysis analysis = new ResultAnalysis(); + analysis.setBusinessId(resultAnalysis.getBusinessId()); + analysis.setFilter(resultAnalysis.getFilter()); + analysis.setAlgType(resultAnalysis.getAlgType()); + log.info("doAlgorithmAnalysis selectResultAnalysisList analysis: {}", analysis); + List resultAnalyses = resultAnalysisService.selectResultAnalysisList(analysis); + if (resultAnalyses.isEmpty()) { + int analysisRes = resultAnalysisService.insertResultAnalysis(resultAnalysis); + log.info(Color.GREEN + "doAlgorithmAnalysis CRUD insert analysisRes: {}, lineId: {}" + Color.END, analysisRes, resultAnalysis.getLineId()); + } else { + resultAnalysis.setLineId(resultAnalyses.get(0).getLineId()); + int analysisRes = resultAnalysisService.updateResultAnalysis(resultAnalysis); + log.info(Color.GREEN + "doAlgorithmAnalysis CRUD update analysisRes: {}, lineId: {}" + Color.END, analysisRes, resultAnalysis.getLineId()); + } } - } - PatrolResult patrolResult = patrolResultService.selectPatrolResultByLineId(lineId); - if (StringUtils.isNotEmpty(value) && patrolResult != null) { - patrolResult.setValue(value); - } + PatrolResult patrolResult = patrolResultService.selectPatrolResultByLineId(lineId); + if (StringUtils.isNotEmpty(value) && patrolResult != null) { + patrolResult.setValue(value); + } - String isAlgType = ""; - if (!typeList.isEmpty()) { - List typeListAgain = new ArrayList<>(); - Iterator iterator = typeList.iterator(); - while (true) { - if (!iterator.hasNext()) { - if (!typeListAgain.isEmpty()) { - patrolResult.setRecognitionType(String.join(StringUtils.COMMA, typeListAgain)); + String isAlgType = ""; + if (!typeList.isEmpty()) { + List typeListAgain = new ArrayList<>(); + Iterator iterator = typeList.iterator(); + while (true) { + if (!iterator.hasNext()) { + if (!typeListAgain.isEmpty()) { + patrolResult.setRecognitionType(String.join(StringUtils.COMMA, typeListAgain)); + } + break; } - break; - } - objectId = iterator.next(); - String[] types = objectId.split(StringUtils.COMMA); - for (String type : types) { - Map algType = patrolResultService.selectAlgTypeByCode(type); - if (StringUtils.isEmpty(isAlgType) && algType != null && algType.get("alg_name") != null && algType.get("alg_name").equals("缺陷识别")) { - isAlgType = "1"; - } + objectId = iterator.next(); + String[] types = objectId.split(StringUtils.COMMA); + for (String type : types) { + Map algType = patrolResultService.selectAlgTypeByCode(type); + if (StringUtils.isEmpty(isAlgType) && algType != null && algType.get("alg_name") != null && algType.get("alg_name").equals("缺陷识别")) { + isAlgType = "1"; + } - System.out.println(type); - Map algmap = patrolResultService.selectAlgTypeDataType(type); - if (algmap != null && StringUtils.isNotEmpty(algmap.get("remark"))) { - typeListAgain.add(algmap.get("remark")); + System.out.println(type); + Map algmap = patrolResultService.selectAlgTypeDataType(type); + if (algmap != null && StringUtils.isNotEmpty(algmap.get("remark"))) { + typeListAgain.add(algmap.get("remark")); + } } } } - } - if (StringUtils.isNotEmpty(isAlgType) && isAlgType.equals("1")) { - if (resultAnalysis.getResultType().equals("1")) { - patrolResult.setValueUnit("无缺陷"); - } else { - patrolResult.setValueUnit("有缺陷"); + if (StringUtils.isNotEmpty(isAlgType) && isAlgType.equals("1")) { + if (resultAnalysis.getResultType().equals("1")) { + patrolResult.setValueUnit("无缺陷"); + } else { + patrolResult.setValueUnit("有缺陷"); + } } - } - Map valueMap = patrolResultService.getPatrolResultValue(patrolResult); - if (null != valueMap && !valueMap.isEmpty()) { - if (valueMap.containsKey("value") && null != valueMap.get("value")) { - description = valueMap.get("value"); - patrolResult.setValue(description); - } + Map valueMap = patrolResultService.getPatrolResultValue(patrolResult); + if (null != valueMap && !valueMap.isEmpty()) { + if (valueMap.containsKey("value") && null != valueMap.get("value")) { + description = valueMap.get("value"); + patrolResult.setValue(description); + } - if (valueMap.containsKey("value_unit") && null != valueMap.get("value_unit")) { - description = valueMap.get("value_unit"); - patrolResult.setValueUnit(description); + if (valueMap.containsKey("value_unit") && null != valueMap.get("value_unit")) { + description = valueMap.get("value_unit"); + patrolResult.setValueUnit(description); + } } - } - patrolResultService.updatePatrolResult(patrolResult); - WebsocketData webData = new WebsocketData(); - webData.setTime(DateUtils.format(DateUtils.yyyyMMddHHmmss2, new Date())); - objectId = algorithmResult.getObjectId(); - webData.setDevId(objectId); - webData.setDesc(resultAnalysis.getDescription()); - websocketDataArrayList.add(webData); - } + patrolResultService.updatePatrolResult(patrolResult); + WebsocketData webData = new WebsocketData(); + webData.setTime(DateUtils.format(DateUtils.yyyyMMddHHmmss2, new Date())); + objectId = algorithmResult.getObjectId(); + webData.setDevId(objectId); + webData.setDesc(resultAnalysis.getDescription()); + websocketDataArrayList.add(webData); + } - PatrolTaskInfo patrolTaskInfo = new PatrolTaskInfo(); - patrolTaskInfo.setTaskMajorId(taskId); - List arr = patrolTaskInfoService.selectPatrolTaskInfoList(patrolTaskInfo); - Set point = new HashSet<>(); - for (PatrolTaskInfo ass : arr) { - if (StringUtils.isNotEmpty(ass.getDeviceId())) { - point.add(ass.getDeviceId()); + PatrolTaskInfo patrolTaskInfo = new PatrolTaskInfo(); + patrolTaskInfo.setTaskMajorId(taskId); + List arr = patrolTaskInfoService.selectPatrolTaskInfoList(patrolTaskInfo); + Set point = new HashSet<>(); + for (PatrolTaskInfo ass : arr) { + if (StringUtils.isNotEmpty(ass.getDeviceId())) { + point.add(ass.getDeviceId()); + } } - } - if (point.size() == size) { - boolean bRes = redisService.deleteObject(requestId); - log.info("doAlgorithmAnalysis CLEAR requestId FROM REDIS: {}", bRes); + if (point.size() == size) { + boolean bRes = redisService.deleteObject(requestId); + log.info("doAlgorithmAnalysis CLEAR requestId FROM REDIS: {}", bRes); + } } + } catch (Exception e) { + e.printStackTrace(); } } diff --git a/inspect-main/inspect-main-task/src/main/resources/mapper/task/ResultAnalysisMapper.xml b/inspect-main/inspect-main-task/src/main/resources/mapper/task/ResultAnalysisMapper.xml index 7b65755..adbb5b0 100644 --- a/inspect-main/inspect-main-task/src/main/resources/mapper/task/ResultAnalysisMapper.xml +++ b/inspect-main/inspect-main-task/src/main/resources/mapper/task/ResultAnalysisMapper.xml @@ -107,6 +107,8 @@ ('%',#{resultContent},'%') and res_status = #{resStatus} + and alg_type = #{algType} + and filter = #{filter} and point_status = #{pointStatus} and objectId = #{objectId} and description = #{description}