From fd3b61318ce13b3beec0b2e0b17e497db32b0a87 Mon Sep 17 00:00:00 2001 From: yinhuaiwei Date: Fri, 22 May 2026 15:02:03 +0800 Subject: [PATCH] =?UTF-8?q?fix:=201.meter=E7=AE=97=E6=B3=95=E9=81=BF?= =?UTF-8?q?=E9=9B=B7=E5=99=A8=E5=8F=AA=E6=9C=89=E7=AC=AC=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E8=AF=BB=E6=95=B0=E5=8A=A0=E5=8D=95=E4=BD=8D,=E4=BB=BB?= =?UTF-8?q?=E6=84=8F=E5=80=BC=E4=B8=BAnull=E8=BF=94=E5=9B=9E=E7=BC=BA?= =?UTF-8?q?=E9=99=B7;2.switch=E7=AE=97=E6=B3=95=E6=96=B0=E5=A2=9E=E6=8F=8F?= =?UTF-8?q?=E8=BF=B0=E5=86=85=E5=AE=B9;3.=E7=BA=A0=E5=81=8F=E7=AE=97?= =?UTF-8?q?=E6=B3=95=E5=BC=82=E5=B8=B8=E5=92=8C=E7=BC=BA=E9=99=B7=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E4=B8=8D=E5=9C=A8=E7=BC=BA=E9=99=B7=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E5=86=85=E5=B1=95=E7=A4=BA;4.=E7=BC=BA=E9=99=B7=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E8=8B=A5imageNormalUrlPath=E4=B8=BA=E7=A9=BA=E5=88=99?= =?UTF-8?q?=E8=B5=8B=E5=80=BC=E4=B8=BAimgAnalyse=E5=85=9C=E5=BA=95;5.?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=81=94=E5=90=88=E4=BB=BB=E5=8A=A1=E5=88=A4?= =?UTF-8?q?=E6=96=AD=E7=9A=84=E9=80=BB=E8=BE=91;6.infrared=E7=AE=97?= =?UTF-8?q?=E6=B3=95=E9=98=80=E5=8E=85T100=E5=88=9D=E7=AD=9B=E6=97=B6?= =?UTF-8?q?=E4=B9=9F=E9=9C=80=E8=A6=81=E5=88=A4=E6=96=AD=E9=98=88=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/core/constant/AlgConstants.java | 1 + .../controller/ResultAnalysisController.java | 5 +- .../analysis/utils/ResultAnalysisUtils.java | 78 ++++++++++++------- .../controller/PatrolResultController.java | 2 +- .../task/controller/PatrolTaskController.java | 11 --- .../com/inspect/task/domain/PatrolData.java | 40 +--------- .../PatrolTaskStatusController.java | 3 +- 7 files changed, 57 insertions(+), 83 deletions(-) diff --git a/inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/constant/AlgConstants.java b/inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/constant/AlgConstants.java index 27773ba..f481fe2 100644 --- a/inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/constant/AlgConstants.java +++ b/inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/constant/AlgConstants.java @@ -13,6 +13,7 @@ public class AlgConstants { public static final String INFRA_YU3 = "infra_yu3"; public static final String INFRA_CAMERA = "infra_camera"; public static final String INFRA_CAMERA_REVERSE = "infra_camera_reverse"; + // 红外算法(如绍兴T100):在初筛阶段由设备直接将温度和图片传过来我们直接展示 public static final String INFRARED = "infrared"; public static final String INFRARED2 = "infrared2"; public static final String XB = "xb"; diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/controller/ResultAnalysisController.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/controller/ResultAnalysisController.java index 113d5f8..1fa2e42 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/controller/ResultAnalysisController.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/controller/ResultAnalysisController.java @@ -782,10 +782,11 @@ public class ResultAnalysisController extends BaseController { List allList = patrolResultService.selectPatrolDataResultByTaskCodeV2(resultAnalysis); Map imageNormalMap = allList.parallelStream() - .filter(patrolData -> StringUtils.isNotEmpty(patrolData.getImageNormalUrlPath())) .collect(Collectors.toMap( patrolData -> patrolData.getObjectId() + "_" + patrolData.getAlgType(), - PatrolData::getImageNormalUrlPath, + patrolData -> StringUtils.isNotEmpty(patrolData.getImageNormalUrlPath()) + ?patrolData.getImageNormalUrlPath() + :patrolData.getImgAnalyse(), (existing, replacement) -> existing )); // 筛出缺陷数据 diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/utils/ResultAnalysisUtils.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/utils/ResultAnalysisUtils.java index 355ce8d..6a847ef 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/utils/ResultAnalysisUtils.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/utils/ResultAnalysisUtils.java @@ -24,6 +24,7 @@ import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.stream.Collectors; +import java.util.stream.IntStream; @Slf4j @Component @@ -60,7 +61,7 @@ public class ResultAnalysisUtils { resultAnalysis.setResultType("2"); resultAnalysis.setResStatus("0"); resultAnalysis.setCreateTime(new Date()); - if(!Arrays.asList(AlgConstants.CORRECTION, AlgConstants.GIS_METER_2).contains(resultAnalysis.getAlgType())) { + if (!Arrays.asList(AlgConstants.CORRECTION, AlgConstants.GIS_METER_2).contains(resultAnalysis.getAlgType())) { resultAnalysis.setResValue("--"); } return false; @@ -76,7 +77,7 @@ public class ResultAnalysisUtils { log.info("PARSE_ALG algType: {}, algValue: {}, value: {}, defaultDesc: {}", algType, algValue, value, defaultDesc); // 初筛红外 - if ("1".equals(resultAnalysis.getFilter()) && AlgConstants.ALG_INFRARED_LIST.contains(algType)) { + if ("1".equals(resultAnalysis.getFilter()) && !AlgConstants.INFRARED.equals(algType) && AlgConstants.ALG_INFRARED_LIST.contains(algType)) { // 绍兴初筛红外改成正常 resultAnalysis.setResultType("1"); resultAnalysis.setPointStatus("1"); @@ -93,8 +94,8 @@ public class ResultAnalysisUtils { final String correctionValue = value; // 读取字符串中的整数或浮点数(注意集合下只取第一个值,有坑,原值使用correctionValue) value = algValue.formatValue(value); - // 初筛时不做算法值的具体解析 - if ("1".equals(resultAnalysis.getFilter())) { + // 初筛时, infrared算法要做阈值判断 + if ("1".equals(resultAnalysis.getFilter()) && !AlgConstants.INFRARED.equals(algType)) { algType = ""; } @@ -103,6 +104,17 @@ public class ResultAnalysisUtils { return; } + if ("meter".equals(algType)) { + boolean hasErrorValue = Arrays.stream(correctionValue.split(StringUtils.COMMA)).anyMatch(v -> StringUtils.isEmpty(v) || "null".equals(v)) ; + if (hasErrorValue) { + resultAnalysis.setResStatus("0"); + resultAnalysis.setPointStatus(PointStatusEnum.DEFECT.getCode()); + resultAnalysis.setResultType(ResultTypeEnum.DEFECT.getCode()); + resultAnalysis.setDescription("读数失败"); + return; + } + } + if (value.isEmpty() || value.equals("-1") || "null".equals(value)) { log.info("PARSE_ALG_EMPTY algType: {}, algValue: {}, value: {}, defaultDesc: {}", algType, algValue, value, defaultDesc); resultAnalysis.setPointStatus("0"); @@ -154,12 +166,13 @@ public class ResultAnalysisUtils { resultAnalysis.setResultType(ResultTypeEnum.NORMAL.getCode()); resultAnalysis.setResStatus(ResStatusEnum.CONFIRM.getCode()); } + resultAnalysis.setDescription(resultAnalysis.getResValue()); } else if (algType.equals("light")) { resultAnalysis.setResStatus("1"); resultAnalysis.setPointStatus("1"); resultAnalysis.setResultType("1"); } else if (algType.equals("meter") || algType.equals("gis_meter")) { - log.info("------------------parseAlg : meter|gis_meter value: {}", value); + log.info("------------------parseAlg : meter|gis_meter value: {}, originalValue: {}", value, correctionValue); if ("open".equalsIgnoreCase(value) || "closed".equalsIgnoreCase(value) || "Off".equalsIgnoreCase(value) || "On".equalsIgnoreCase(value)) { resultAnalysis.setResStatus("0"); @@ -349,23 +362,22 @@ public class ResultAnalysisUtils { Math.abs(value2) < EPSILON && Math.abs(value3) < EPSILON) { log.info("2000 correction no need value0: {}, value1: {}, value2: {}, value3: {}", value0, value1, value2, value3); - resultAnalysis.setPointStatus("1"); - resultAnalysis.setResultType("1"); + resultAnalysis.setPointStatus(PointStatusEnum.NORMAL.getCode()); + resultAnalysis.setResultType(ResultTypeEnum.NORMAL.getCode()); resultAnalysis.setResStatus("2"); resultAnalysis.setResValue(""); defaultDesc = messageUtils.get("无需纠偏"); } else { log.info("2000 correction need value0: {}, value1: {}, value2: {}, value3: {}", value0, value1, value2, value3); - resultAnalysis.setPointStatus("1"); - resultAnalysis.setResultType("1"); - //defaultDesc = "请进行纠偏"; + resultAnalysis.setPointStatus(PointStatusEnum.NORMAL.getCode()); + resultAnalysis.setResultType(ResultTypeEnum.NORMAL.getCode()); resultAnalysis.setResStatus("2"); resultAnalysis.setResValue(""); defaultDesc = "无需纠偏"; } } else { log.info("parseAlg algType correction correctionValue abnormal"); - resultAnalysis.setPointStatus(PointStatusEnum.DEFECT.getCode()); + resultAnalysis.setPointStatus(PointStatusEnum.ABNORMAL.getCode()); resultAnalysis.setResultType("0"); resultAnalysis.setResStatus("0"); defaultDesc = "纠偏结果异常"; @@ -408,24 +420,24 @@ public class ResultAnalysisUtils { } } else { log.info("2001 parseAlg algType correction correctionValue abnormal"); - resultAnalysis.setPointStatus(PointStatusEnum.DEFECT.getCode()); + resultAnalysis.setPointStatus(PointStatusEnum.ABNORMAL.getCode()); resultAnalysis.setResultType("0"); resultAnalysis.setResStatus("0"); defaultDesc = "纠偏码和值均异常"; } } else if ("2002".equals(resultAnalysis.getResCode())) { - resultAnalysis.setPointStatus(PointStatusEnum.DEFECT.getCode()); + resultAnalysis.setPointStatus(PointStatusEnum.ABNORMAL.getCode()); resultAnalysis.setResultType("0"); resultAnalysis.setResStatus("0"); defaultDesc = "超出比对范围"; } else if ("2003".equals(resultAnalysis.getResCode())) { - resultAnalysis.setPointStatus(PointStatusEnum.DEFECT.getCode()); + resultAnalysis.setPointStatus(PointStatusEnum.ABNORMAL.getCode()); resultAnalysis.setResultType("0"); resultAnalysis.setResStatus("0"); defaultDesc = "图像数据错误"; } else { - resultAnalysis.setPointStatus(PointStatusEnum.DEFECT.getCode()); + resultAnalysis.setPointStatus(PointStatusEnum.ABNORMAL.getCode()); resultAnalysis.setResultType("0"); resultAnalysis.setResStatus("0"); defaultDesc = messageUtils.get("未知异常"); @@ -433,7 +445,6 @@ public class ResultAnalysisUtils { } // 纠偏分析结果均为正常 resultAnalysis.setResultType(ResultTypeEnum.NORMAL.getCode()); - resultAnalysis.setPointStatus(PointStatusEnum.NORMAL.getCode()); } else { log.info("parseAlg algType: {}", algType); if (value.equals("0")) { @@ -478,27 +489,36 @@ public class ResultAnalysisUtils { } /** - * 添加单位 + * 给可读数算法的值添加单位 * * @param resValue 读数 - * @param algType 算法类型 - * @param unit 单位 + * @param algType 算法类型 + * @param unit 单位 * @return */ public String addUnit2Value(String resValue, String algType, String unit) { if (StringUtils.isNotEmpty(resValue) && StringUtils.isNotEmpty(unit) && AlgConstants.READABLE_ALG_LIST.contains(algType)) { log.info("addUnit2Value resValue: {}, algType: {}, unit: {}", resValue, algType, unit); String[] valueArr = resValue.split(","); - String values = Arrays.stream(valueArr).map(val -> { - boolean isNumber = val.matches("^-?\\d+(\\.\\d+)?$"); - if (isNumber) { - if (AlgConstants.ALG_INFRARED_LIST.contains(algType)) { - return BigDecimalUtil.toOneDecimal(val, 1) + unit; - } - return val + unit; - } - return val; - }).collect(Collectors.joining(",")); + String values = IntStream.range(0, valueArr.length) + .mapToObj(i -> { + String val = valueArr[i]; + if (!NumberUtils.isCreatable(val)) { + return val; + } + + if (AlgConstants.ALG_INFRARED_LIST.contains(algType)) { + return BigDecimalUtil.toOneDecimal(val, 1) + unit; + } + + // 表计算法:避雷器只有第一个值带单位 + if (AlgConstants.METER.equals(algType)) { + return i == 0 ? val + unit : val; + } + + return val + unit; + }) + .collect(Collectors.joining(",")); return values; } return resValue; diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/controller/PatrolResultController.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/controller/PatrolResultController.java index 8c86cd2..2643341 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/controller/PatrolResultController.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/controller/PatrolResultController.java @@ -1228,7 +1228,7 @@ public class PatrolResultController extends BaseController { String taskCode = patrolTaskDb.getTaskCode(); String[] devTypeArray = Arrays.stream(devType.split(",")).distinct().toArray(String[]::new); // note 联合任务:任务包含多个设备类型 或者 单个非摄像头的设备类型有多个设备编码 - if (devTypeArray.length > 1 || (devTypeArray.length == 1 && devTypeArray[0]!= "2" && patrolTaskDb.getDevNo().split(",").length > 1 )) { + if (devTypeArray.length > 1 || (devTypeArray.length == 1 && !"2".equals(devTypeArray[0]) && patrolTaskDb.getDevNo().split(",").length > 1)) { // 当taskCode为多设备且redis中正在执行该taskCode的任务时,新增或ignore主任务 final String taskCurrentCode = redisService.getCacheObjectOfTask(RedisConst.TASK_CURRENT_CODE, taskCode); logger.info(Color.CYAN + "task is union task, taskCode: {}, devType: {}, taskCurrentCode: {}" + Color.END, taskCode, devType, taskCurrentCode); diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/task/controller/PatrolTaskController.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/task/controller/PatrolTaskController.java index 039db8b..825e3b3 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/task/controller/PatrolTaskController.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/task/controller/PatrolTaskController.java @@ -357,17 +357,6 @@ public class PatrolTaskController extends BaseController { } } - // 6.1 纠偏算法的状态处理 - for (PatrolData item : newList) { - if (AlgConstants.CORRECTION.equals(item.getAlgType())) { - // 纠偏状态包装:异常→点位异常,需要纠偏→点位缺陷,其他→点位正常(无需处理) - if (ResStatusEnum.UNCONFIRM.getCode().equals(item.getResStatus())) { - item.setPointStatus(PointStatusEnum.ABNORMAL.getCode()); - } else if (ResStatusEnum.CORRECT.getCode().equals(item.getResStatus())) { - item.setPointStatus(PointStatusEnum.DEFECT.getCode()); } - } - } - // 7. 所有过滤条件合并为一个 stream(避免多次 filter + collect) newList = newList.stream() .filter(element -> StringUtils.isEmpty(patrolTaskStatus.getAlgName()) diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/task/domain/PatrolData.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/task/domain/PatrolData.java index ed598a8..d21583e 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/task/domain/PatrolData.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/task/domain/PatrolData.java @@ -1,9 +1,10 @@ package com.inspect.task.domain; import com.inspect.base.core.annotation.Excel; - +import lombok.ToString; import java.util.Objects; +@ToString public class PatrolData implements Comparable { @Excel( name = "设备" @@ -400,41 +401,4 @@ public class PatrolData implements Comparable { public int hashCode() { return Objects.hash(deviceName, channelName, deviceSource, pointName, pointId, warnStatus, algName, resValue, img, filterDesc, brightDesc, imgAnalyse, brightImgAnalyse, desc, lineId, patrolTime, pointStatus, imgType, dataType, filter, requestId, resStatus, brightResStatus, areaName, algType, objectId, imageNormalUrlPath, suggestion, filePath); } - - @Override - public String toString() { - return "PatrolDataEx{" + - "deviceName='" + deviceName + '\'' + - ", channelName='" + channelName + '\'' + - ", deviceSource='" + deviceSource + '\'' + - ", pointName='" + pointName + '\'' + - ", pointId='" + pointId + '\'' + - ", warnStatus='" + warnStatus + '\'' + - ", algName='" + algName + '\'' + - ", resValue='" + resValue + '\'' + - ", img='" + img + '\'' + - ", filterDesc='" + filterDesc + '\'' + - ", brightDesc='" + brightDesc + '\'' + - ", imgAnalyse='" + imgAnalyse + '\'' + - ", brightImgAnalyse='" + brightImgAnalyse + '\'' + - ", desc='" + desc + '\'' + - ", lineId='" + lineId + '\'' + - ", patrolTime='" + patrolTime + '\'' + - ", pointStatus='" + pointStatus + '\'' + - ", imgType='" + imgType + '\'' + - ", dataType='" + dataType + '\'' + - ", filter='" + filter + '\'' + - ", requestId='" + requestId + '\'' + - ", resStatus='" + resStatus + '\'' + - ", brightResStatus='" + brightResStatus + '\'' + - ", areaName='" + areaName + '\'' + - ", algType='" + algType + '\'' + - ", objectId='" + objectId + '\'' + - ", imageNormalUrlPath='" + imageNormalUrlPath + '\'' + - ", filePath='" + filePath + '\'' + - ", suggestion='" + suggestion + '\'' + - ", originalValue='" + originalValue + '\'' + - ", taskPatrolId='" + taskPatrolId + '\'' + - '}'; - } } diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/controller/PatrolTaskStatusController.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/controller/PatrolTaskStatusController.java index c87e069..c3b493d 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/controller/PatrolTaskStatusController.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/controller/PatrolTaskStatusController.java @@ -819,7 +819,7 @@ public class PatrolTaskStatusController extends BaseController { } } - if (!(pilotTaskCmds.isEmpty() || devTypeList.isEmpty() || devNoList.isEmpty())) { + if (!pilotTaskCmds.isEmpty() || (!devTypeList.isEmpty() && !devNoList.isEmpty())) { String immediatelyExecTaskTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS")); redisService.setCacheObjectOfTask(RedisConst.TASK_CURRENT_CODE, patrolTask.getTaskCode(), RedisConst.TASK_CODE + patrolTask.getTaskCode() + StringUtils.AT + immediatelyExecTaskTime, 1L, TimeUnit.HOURS); } @@ -1079,7 +1079,6 @@ public class PatrolTaskStatusController extends BaseController { .devNo(devNo) .build(); List patrolTaskInfoList = patrolTaskInfoService.selectPatrolTask(patrolTaskInfo); - log.info("[TASK] PATROL TASK INFO: {}", patrolTaskInfoList); boolean isWithin = false; for (PatrolTaskInfo info : patrolTaskInfoList) { final Long areaId = info.getAreaId();