From d2c50dcf06663b3de17e582ab96c961deaa31022 Mon Sep 17 00:00:00 2001 From: wangguangyuan Date: Wed, 8 Apr 2026 14:49:02 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E7=BC=BA=E9=99=B7=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E5=8D=A1=E7=89=87=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ResultAnalysisController.java | 114 ++++++++++++++++++ .../analysis/domain/ResultAnalysis.java | 2 + .../InspectionReportController.java | 21 ++-- .../com/inspect/task/domain/PatrolData.java | 11 ++ .../mapper/task/PatrolResultMapper.xml | 9 +- 5 files changed, 147 insertions(+), 10 deletions(-) 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 1dde4f6..4bb9275 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 @@ -639,6 +639,120 @@ public class ResultAnalysisController extends BaseController { // } } + /** + * 缺陷记录(将确认缺陷的数据展示在这) + * @return + */ + @GetMapping({"/defect/list"}) + public TableDataInfo defectList() { + ResultAnalysis resultAnalysis = new ResultAnalysis(); + resultAnalysis.setPointStatusList(Arrays.asList(PointStatusEnum.CONFIRMED.getCode(), PointStatusEnum.TRACKING.getCode())); + // 查出全部数据 + List allList = patrolResultService.selectPatrolDataResultByTaskCodeV2(resultAnalysis); + + Map imageNormalMap = allList.parallelStream() + .filter(patrolData -> StringUtils.isNotEmpty(patrolData.getImageNormalUrlPath())) + .collect(Collectors.toMap( + patrolData -> patrolData.getTaskPatrolId() + "_" + patrolData.getObjectId() + "_" + patrolData.getAlgType(), + PatrolData::getImageNormalUrlPath, + (existing, replacement) -> existing + )); + // 筛出缺陷数据 + List filterList = allList.parallelStream().filter(patrolData -> "0".equals(patrolData.getWarnStatus())).collect(Collectors.toList()); + List algInfos = patrolResultService.selectAlgInfo(new PatrolResult()); + filterList.forEach((item) -> { + item.setAlgName((algInfos.stream().anyMatch((alg) -> { + return alg.getAlgSubtypeCode().equals(item.getAlgType()); + }) ? algInfos.stream().filter((alg) -> { + return alg.getAlgSubtypeCode().equals(item.getAlgType()); + }).findFirst().get().getAlgSubtypeName() : "")); + if ("1".equals(item.getFilter())) { + item.setImg(item.getImageNormalUrlPath()); + } + + AlgValue algValue = new AlgValue(); + if(item.getResValue() != null) { + String str = algValue.formatValue(item.getResValue()); + if ("meter".equals(item.getAlgType())) { + if (str.equals("-1")) { + item.setResValue("空值"); + } + } + } + }); + Map> groupedFilterList = filterList.stream().collect(Collectors.groupingBy(item -> item.getTaskPatrolId() + "|" + item.getObjectId() + "|" + item.getAlgType())); + List resultList = new ArrayList<>(); + groupedFilterList.forEach((key, value) -> { + PatrolData patrolData = new PatrolData(); + String[] keys = key.split("\\|"); + if(keys.length != 3) { + logger.error("key format error: " + key); + } + String taskPatrolId = keys[0]; + String objectId = keys[1]; + String algType = keys[2]; + patrolData.setTaskPatrolId(taskPatrolId); + patrolData.setObjectId(objectId); + patrolData.setAlgType(algType); + patrolData.setDesc(value.stream().map(PatrolData::getDesc).distinct().collect(Collectors.joining(","))); + for (PatrolData data : value) { + // 初筛有缺陷 展示初筛结果图片 + if ("1".equals(data.getFilter()) && StringUtils.isEmpty(patrolData.getImgAnalyse())) { + patrolData.setImgAnalyse(data.getImgAnalyse()); + } + if ("1".equals(data.getFilter()) && StringUtils.isEmpty(patrolData.getImg())) { + patrolData.setImg(data.getImg()); + } + // 大模型有缺陷 展示大模型结果图片 + if ("0".equals(data.getFilter())) { + patrolData.setImgAnalyse(data.getImgAnalyse()); + patrolData.setImg(data.getImg()); + } + } + String imageNormalPath = imageNormalMap.getOrDefault(taskPatrolId + "_" + objectId + "_" + algType, ""); + patrolData.setImageNormalUrlPath(imageNormalPath); + patrolData.setAlgName(value.stream().map(item -> item.getAlgName() != null ? item.getAlgName() : "").distinct().findFirst().orElse("")); + patrolData.setAreaName(value.stream().map(item -> item.getAreaName() != null ? item.getAreaName() : "").distinct().findFirst().orElse("")); + patrolData.setBrightDesc(value.stream().map(item -> item.getBrightDesc() != null ? item.getBrightDesc() : "").distinct().findFirst().orElse("")); + patrolData.setBrightImgAnalyse(value.stream().map(item -> item.getBrightImgAnalyse() != null ? item.getBrightImgAnalyse() : "").distinct().findFirst().orElse("")); + patrolData.setBrightResStatus(value.stream().map(item -> item.getBrightResStatus() != null ? item.getBrightResStatus() : "").distinct().findFirst().orElse("")); + patrolData.setChannelName(value.stream().map(item -> item.getChannelName() != null ? item.getChannelName() : "").distinct().findFirst().orElse("")); + patrolData.setDataType(value.stream().map(item -> item.getDataType() != null ? item.getDataType() : "").distinct().findFirst().orElse("")); + patrolData.setDeviceName(value.stream().map(item -> item.getDeviceName() != null ? item.getDeviceName() : "").distinct().findFirst().orElse("")); + patrolData.setDeviceSource(value.stream().map(item -> item.getDeviceSource() != null ? item.getDeviceSource() : "").distinct().findFirst().orElse("")); + patrolData.setImgType(value.stream().map(item -> item.getImgType() != null ? item.getImgType() : "").distinct().findFirst().orElse("")); + patrolData.setLineId(value.stream().map(PatrolData::getLineId).distinct().collect(Collectors.joining(","))); + patrolData.setPatrolTime(value.stream().map(item -> item.getPatrolTime() != null ? item.getPatrolTime() : "").distinct().findFirst().orElse("")); + patrolData.setPointId(value.stream().map(item -> item.getPointId() != null ? item.getPointId() : "").distinct().findFirst().orElse("")); + patrolData.setPointName(value.stream().map(item -> item.getPointName() != null ? item.getPointName() : "").distinct().findFirst().orElse("")); + patrolData.setPointStatus(value.stream().map(item -> item.getPointStatus() != null ? item.getPointStatus() : "").distinct().findFirst().orElse("")); + patrolData.setRequestId(value.stream().map(item -> item.getRequestId() != null ? item.getRequestId() : "").distinct().findFirst().orElse("")); + patrolData.setResValue(value.stream().map(item -> item.getResValue() != null ? item.getResValue() : "").distinct().findFirst().orElse("")); + 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("")); + + resultList.add(patrolData); + }); + // 非 null 的值按降序排列(最新的时间在前),null的在最后面排列 + resultList.sort(Comparator.comparing(PatrolData::getPatrolTime, + Comparator.nullsLast(Comparator.reverseOrder()))); + + PageDomain pageDomain = TableSupport.buildPageRequest(); + int pageNum = pageDomain.getPageNum(); + int pageSize = pageDomain.getPageSize(); + int toNum = Math.min(resultList.size(), pageNum * pageSize); + List pageList = resultList.subList((pageNum - 1) * pageSize, toNum); + + TableDataInfo rspData = new TableDataInfo(); + rspData.setCode(200); + rspData.setRows(pageList); + rspData.setMsg("查询成功"); + rspData.setTotal((new PageInfo<>(resultList)).getTotal()); + + return rspData; + } + //初筛大模型一起查询 @GetMapping({"/list_v2_ex"}) public TableDataInfo listV2Ex(PatrolTaskStatus patrolTaskStatus) { diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/ResultAnalysis.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/ResultAnalysis.java index a51e325..9d4da3e 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/ResultAnalysis.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/domain/ResultAnalysis.java @@ -10,6 +10,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.Date; +import java.util.List; @Setter @Getter @@ -35,6 +36,7 @@ public class ResultAnalysis extends BaseEntity { * 点位状态 0-异常 1-正常 2-待人工确认 3-已撤销(忽略) 4-跟踪(告警) 5-确认(告警) 6-缺陷 */ private String pointStatus; + private List pointStatusList; private String beginTime; private String endTime; private String suggestion; diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/insreport/controller/InspectionReportController.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/insreport/controller/InspectionReportController.java index fad4f11..0f01a9f 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/insreport/controller/InspectionReportController.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/insreport/controller/InspectionReportController.java @@ -126,10 +126,12 @@ public class InspectionReportController extends BaseController { return map; } - @GetMapping({"/{lineId}/{filter}"}) - public AjaxResult getInfo(@PathVariable("lineId") Long lineId, @PathVariable(value = "filter",required = false) String filter) { - InspectionReport inspectionReport = inspectionReportService.selectInspectionReportByLineId(lineId); - if(inspectionReport == null) { + @GetMapping({"/{type}/{lineId}/{filter}"}) + public AjaxResult getInfo(@PathVariable("type") String type, @PathVariable("lineId") Long lineId, @PathVariable(value = "filter",required = false) String filter) { + InspectionReport inspectionReport = new InspectionReport(); + if ("report".equals(type)) { + inspectionReport = inspectionReportService.selectInspectionReportByLineId(lineId); + } else if("taskStatus".equals(type)) { // 暂时这么处理(进度条报告入口,lineId传的是patrolTaskStatus的lineId) PatrolTaskStatus patrolTaskStatus = patrolTaskStatusService.selectPatrolTaskStatusByLineId(lineId); String taskPatrolledId = patrolTaskStatus.getTaskPatrolledId(); @@ -192,14 +194,15 @@ public class InspectionReportController extends BaseController { return AjaxResult.success(inspectionReport); } - @GetMapping({"/shaoxing/{lineId}/{filter}"}) - public AjaxResult getInfo_shaoxing(@PathVariable("lineId") Long lineId, @PathVariable(value = "filter",required = false) String filter) { - InspectionReport inspectionReport = inspectionReportService.selectInspectionReportByLineId(lineId); - if(inspectionReport == null) { + @GetMapping({"/shaoxing/{type}/{lineId}/{filter}"}) + public AjaxResult getInfo_shaoxing(@PathVariable("type") String type, @PathVariable("lineId") Long lineId, @PathVariable(value = "filter",required = false) String filter) { + InspectionReport inspectionReport = new InspectionReport(); + if ("report".equals(type)) { + inspectionReport = inspectionReportService.selectInspectionReportByLineId(lineId); + } else if("taskStatus".equals(type)) { // 暂时这么处理(进度条报告入口,lineId传的是patrolTaskStatus的lineId) PatrolTaskStatus patrolTaskStatus = patrolTaskStatusService.selectPatrolTaskStatusByLineId(lineId); String taskPatrolledId = patrolTaskStatus.getTaskPatrolledId(); - inspectionReport = new InspectionReport(); inspectionReport.setTaskPatrolledId(taskPatrolledId); inspectionReport.setFilter(filter); logger.info("进度条报告查看,filter:{},taskPatrolledId:{}", filter, taskPatrolledId); 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 29c086f..63c66b3 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 @@ -83,6 +83,8 @@ public class PatrolData implements Comparable { // 纠偏后的图片 private String originalValue; + private String taskPatrolId; + public String warnStatus(String ws) { byte var3 = -1; @@ -364,6 +366,14 @@ public class PatrolData implements Comparable { this.originalValue = originalValue; } + public String getTaskPatrolId() { + return taskPatrolId; + } + + public void setTaskPatrolId(String taskPatrolId) { + this.taskPatrolId = taskPatrolId; + } + protected boolean canEqual(Object other) { return other instanceof PatrolData; } @@ -415,6 +425,7 @@ public class PatrolData implements Comparable { ", filePath='" + filePath + '\'' + ", suggestion='" + suggestion + '\'' + ", originalValue='" + originalValue + '\'' + + ", taskPatrolId='" + taskPatrolId + '\'' + '}'; } } 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 321eba8..ebb6f19 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 @@ -184,6 +184,7 @@ +