From 8b7b8c340fbd39c20c3e7d3af269906dcc6a9d1b Mon Sep 17 00:00:00 2001 From: wangguangyuan Date: Tue, 22 Sep 2026 17:09:32 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=BC=BA=E9=99=B7=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=AE=97=E6=B3=95=E7=AD=9B=E9=80=89=EF=BC=8C?= =?UTF-8?q?=E6=8C=89=E7=AE=97=E6=B3=95=E5=90=8D=E7=B2=BE=E7=A1=AE=E5=8C=B9?= =?UTF-8?q?=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ResultAnalysisController.java | 68 +++++++++---------- .../analysis/domain/DefectListQuery.java | 2 + .../analysis/domain/DefectRecordQuery.java | 22 ------ .../service/DefectListAggregator.java | 1 + .../com/inspect/task/domain/PatrolData.java | 2 + .../mapper/task/PatrolResultMapper.xml | 47 ++----------- .../controller/PatrolPresetPosController.java | 2 +- 7 files changed, 42 insertions(+), 102 deletions(-) delete mode 100644 inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/DefectRecordQuery.java 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 d02e955..5b76671 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 @@ -647,21 +647,12 @@ public class ResultAnalysisController extends BaseController { /** * 缺陷记录(将确认缺陷的数据展示在这) - * @param query 查询条件:点位名称、缺陷描述(下拉,选项见 /defect/descOptions)、采集时间范围 + * @param query 查询条件:点位名称、算法名称(下拉,选项见 /defect/algNameOptions)、采集时间范围 * @return */ @GetMapping({"/defect/list"}) - public TableDataInfo defectList(DefectRecordQuery query) { - ResultAnalysis resultAnalysis = new ResultAnalysis(); - resultAnalysis.setPointStatusList(Arrays.asList(PointStatusEnum.CONFIRMED.getCode(), PointStatusEnum.TRACKING.getCode())); - if (query != null) { - resultAnalysis.setPointName(query.getPointName()); - // 采集时间即 patrol_result.create_time(返回字段 patrolTime) - resultAnalysis.setBeginTime(query.getPatrolTimeBegin()); - resultAnalysis.setEndTime(query.getPatrolTimeEnd()); - } - // 查出全部数据 - List allList = patrolResultService.selectPatrolDataResultByTaskCodeV2(resultAnalysis); + public TableDataInfo defectList(DefectListQuery query) { + List allList = patrolResultService.selectDefectList(query); Map imageNormalMap = allList.parallelStream() .filter(patrolData -> StringUtils.isNotEmpty(patrolData.getImageNormalUrlPath())) @@ -749,17 +740,14 @@ public class ResultAnalysisController extends BaseController { patrolData.setResStatus(value.stream().map(item -> item.getResStatus() != null ? item.getResStatus() : "").distinct().findFirst().orElse("")); patrolData.setSuggestion(value.stream().map(item -> item.getSuggestion() != null ? item.getSuggestion() : "").distinct().findFirst().orElse("")); patrolData.setWarnStatus(value.stream().map(item -> item.getWarnStatus() != null ? item.getWarnStatus() : "").distinct().findFirst().orElse("")); + patrolData.setTaskName(value.stream().map(item -> item.getTaskName() != null ? item.getTaskName() : "").distinct().findFirst().orElse("")); resultList.add(patrolData); }); - // 缺陷描述筛选:按明细行的 desc 精确匹配确定命中的分组,命中分组整条保留(一条记录聚合的多条缺陷描述不会丢失) - if (query != null && StringUtils.isNotEmpty(query.getDesc())) { - String selectedDesc = query.getDesc(); - Set matchedKeys = filterList.stream() - .filter(data -> selectedDesc.equals(data.getDesc())) - .map(data -> data.getTaskPatrolId() + "|" + data.getObjectId() + "|" + data.getAlgType()) - .collect(Collectors.toSet()); - resultList.removeIf(item -> !matchedKeys.contains(item.getTaskPatrolId() + "|" + item.getObjectId() + "|" + item.getAlgType())); + // 算法名称筛选:algType 属于聚合分组维度,按聚合记录的 algName 精确匹配,命中记录整条保留(多条缺陷描述不会丢失) + if (query != null && StringUtils.isNotEmpty(query.getAlgName())) { + String selectedAlgName = query.getAlgName(); + resultList.removeIf(item -> !selectedAlgName.equals(item.getAlgName())); } // 非 null 的值按降序排列(最新的时间在前),null的在最后面排列 resultList.sort(Comparator.comparing(PatrolData::getPatrolTime, @@ -781,29 +769,37 @@ public class ResultAnalysisController extends BaseController { } /** - * 缺陷记录-缺陷描述下拉选项(返回去重后的 desc 值,供 /defect/list 的缺陷描述下拉筛选使用) - * @param query 查询条件:点位名称、采集时间范围(不含缺陷描述,避免选项被自身过滤) + * 缺陷记录-算法名称下拉选项(返回去重后的 algName 值,供 /defect/list 的算法名称下拉筛选使用) + * @param query 查询条件:点位名称、采集时间范围(algName 不参与查询,避免选项被自身过滤) * @return */ - @GetMapping({"/defect/descOptions"}) - public AjaxResult defectDescOptions(DefectRecordQuery query) { - ResultAnalysis resultAnalysis = new ResultAnalysis(); - resultAnalysis.setPointStatusList(Arrays.asList(PointStatusEnum.CONFIRMED.getCode(), PointStatusEnum.TRACKING.getCode())); - if (query != null) { - resultAnalysis.setPointName(query.getPointName()); - resultAnalysis.setBeginTime(query.getPatrolTimeBegin()); - resultAnalysis.setEndTime(query.getPatrolTimeEnd()); - } - List allList = patrolResultService.selectPatrolDataResultByTaskCodeV2(resultAnalysis); - // 仅取缺陷数据(与 /defect/list 口径一致)的非空 desc,去重后按字典序返回 - List descOptions = allList.stream() + @GetMapping({"/defect/algNameOptions"}) + public AjaxResult defectAlgNameOptions(DefectListQuery query) { + List allList = patrolResultService.selectDefectList(query); + List algInfos = patrolResultService.selectAlgInfo(new PatrolResult()); + // 仅取缺陷数据(与 /defect/list 口径一致),按 algType 解析出 algName 后去重、按字典序返回 + List algNameOptions = allList.stream() .filter(data -> "0".equals(data.getWarnStatus())) - .map(PatrolData::getDesc) + .map(data -> resolveAlgName(algInfos, data.getAlgType())) .filter(StringUtils::isNotEmpty) .distinct() .sorted() .collect(Collectors.toList()); - return AjaxResult.success(descOptions); + return AjaxResult.success(algNameOptions); + } + + /** + * 按算法类型解析算法名称,口径与 /defect/list 明细行分配的 algName 一致(未匹配到时返回空串)。 + */ + private String resolveAlgName(List algInfos, String algType) { + if (algInfos == null) { + return ""; + } + return algInfos.stream() + .filter(alg -> alg.getAlgSubtypeCode() != null && alg.getAlgSubtypeCode().equals(algType)) + .map(AlgInfo::getAlgSubtypeName) + .findFirst() + .orElse(""); } /** diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/DefectListQuery.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/DefectListQuery.java index c6fe00d..af555b2 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/DefectListQuery.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/DefectListQuery.java @@ -21,6 +21,8 @@ public class DefectListQuery { private String filter; /** 算法类型。 */ private String algType; + /** 算法名称(前端下拉筛选,精确匹配聚合记录的 algName),选项见 /defect/algNameOptions。 */ + private String algName; /** 区域 ID。 */ private String areaId; /** 主设备 ID。 */ diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/DefectRecordQuery.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/DefectRecordQuery.java deleted file mode 100644 index 0f78981..0000000 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/DefectRecordQuery.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.inspect.analysis.domain; - -import lombok.Getter; -import lombok.Setter; -import lombok.ToString; - -/** - * 缺陷记录列表查询条件。 - */ -@Getter -@Setter -@ToString -public class DefectRecordQuery { - /** 点位名称(模糊匹配)。 */ - private String pointName; - /** 采集开始时间(patrol_time 起始日期),格式 yyyy-MM-dd。 */ - private String patrolTimeBegin; - /** 采集结束时间(patrol_time 截止日期),格式 yyyy-MM-dd。 */ - private String patrolTimeEnd; - /** 缺陷描述(result_analysis.description),下拉筛选按缺陷描述精确匹配(选项见 /defect/descOptions),聚合记录整条保留。 */ - private String desc; -} diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/DefectListAggregator.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/DefectListAggregator.java index c6defbc..b6b5333 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/DefectListAggregator.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/DefectListAggregator.java @@ -141,6 +141,7 @@ public final class DefectListAggregator { result.setResStatus(firstNonEmpty(values, PatrolData::getResStatus)); result.setSuggestion(firstNonEmpty(values, PatrolData::getSuggestion)); result.setWarnStatus("0"); + result.setTaskName(firstNonEmpty(values,PatrolData::getTaskName)); return result; } 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 87b683c..e753afa 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 @@ -91,6 +91,8 @@ public class PatrolData implements Comparable { private String originalValue; private String taskPatrolId; + + private String taskName; // 缺陷等级 private Integer defectLevel = DefectLevel.NONE.getCode(); @JsonInclude(JsonInclude.Include.NON_NULL) diff --git a/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolResultMapper.xml b/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolResultMapper.xml index aba554a..cbca75f 100644 --- a/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolResultMapper.xml +++ b/inspect-main/inspect-main-task/src/main/resources/mapper/task/PatrolResultMapper.xml @@ -187,6 +187,7 @@ +