From aa604167e03887994b678e8dfe9f850a67ae2f9e Mon Sep 17 00:00:00 2001 From: yinhuaiwei Date: Fri, 23 Oct 2026 15:16:48 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=B1=87=E8=81=9A?= =?UTF-8?q?=E7=BC=BA=E9=99=B7=E8=AE=B0=E5=BD=95=E6=8C=89=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2;=E6=9A=82=E6=97=B6=E4=B8=8D=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E8=BD=BB=E5=BE=AE=E7=BC=BA=E9=99=B7=E6=95=B0=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/inspect/agg/config/AggProperties.java | 8 ++++ .../agg/mapper/AggDefectRecordMapper.java | 7 +-- .../agg/service/AggStatisticService.java | 21 +++++++-- .../agg/service/DefectRecordSyncService.java | 4 +- .../agg/web/AggDefectRecordController.java | 44 +++++++++++++++++-- .../mapper/AggDefectRecordMapper.xml | 11 +++-- 6 files changed, 79 insertions(+), 16 deletions(-) diff --git a/inspect-main/inspect-main-agg/src/main/java/com/inspect/agg/config/AggProperties.java b/inspect-main/inspect-main-agg/src/main/java/com/inspect/agg/config/AggProperties.java index b8293e5..7575605 100644 --- a/inspect-main/inspect-main-agg/src/main/java/com/inspect/agg/config/AggProperties.java +++ b/inspect-main/inspect-main-agg/src/main/java/com/inspect/agg/config/AggProperties.java @@ -24,6 +24,8 @@ public class AggProperties { private Http http = new Http(); + private Statistic statistic = new Statistic(); + @Data public static class Sync { /** 基础数据同步公共配置(轮询周期见 SyncDefaults,已写死在代码) */ @@ -92,4 +94,10 @@ public class AggProperties { private int connectTimeoutMs = 10_000; private int readTimeoutMs = 30_000; } + + @Data + public static class Statistic { + /** 是否统计轻微缺陷;false 时 minorCount 恒为 0,且不计入 defectCount */ + private boolean minorDefectEnabled = false; + } } diff --git a/inspect-main/inspect-main-agg/src/main/java/com/inspect/agg/mapper/AggDefectRecordMapper.java b/inspect-main/inspect-main-agg/src/main/java/com/inspect/agg/mapper/AggDefectRecordMapper.java index 2bdb229..257a023 100644 --- a/inspect-main/inspect-main-agg/src/main/java/com/inspect/agg/mapper/AggDefectRecordMapper.java +++ b/inspect-main/inspect-main-agg/src/main/java/com/inspect/agg/mapper/AggDefectRecordMapper.java @@ -17,9 +17,10 @@ public interface AggDefectRecordMapper { List selectList(@Param("stationCode") String stationCode, @Param("pointName") String pointName, - @Param("patrolTimeBegin") String patrolTimeBegin, - @Param("patrolTimeEnd") String patrolTimeEnd, - @Param("algName") String algName); + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("algName") String algName, + @Param("defectLevel") Integer defectLevel); List selectDistinctAlgNames(@Param("stationCode") String stationCode); } diff --git a/inspect-main/inspect-main-agg/src/main/java/com/inspect/agg/service/AggStatisticService.java b/inspect-main/inspect-main-agg/src/main/java/com/inspect/agg/service/AggStatisticService.java index 635ade6..4bc6e45 100644 --- a/inspect-main/inspect-main-agg/src/main/java/com/inspect/agg/service/AggStatisticService.java +++ b/inspect-main/inspect-main-agg/src/main/java/com/inspect/agg/service/AggStatisticService.java @@ -13,6 +13,7 @@ import java.util.Map; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; +import com.inspect.agg.config.AggProperties; import com.inspect.agg.entity.AggAnalysisDefectMonth; import com.inspect.agg.entity.AggStation; import com.inspect.agg.enums.AlgCategory; @@ -34,6 +35,7 @@ public class AggStatisticService { private final AggAnalysisDefectMonthMapper defectMonthMapper; private final AggPatrolTaskStatusMapper taskStatusMapper; private final AggStationMapper stationMapper; + private final AggProperties props; public List> defectStatistic(String stationCode, String algCategory, String dateType) { @@ -159,12 +161,12 @@ public class AggStatisticService { item.put("stationCode", stationCode); item.put("stationName", stationName != null ? stationName : stationCode); } - item.put("minorCount", counts.minor); + item.put("minorCount", minorCount(counts)); item.put("generalCount", counts.general); item.put("seriousCount", counts.serious); item.put("urgentCount", counts.urgent); item.put("normalCount", counts.normal); - item.put("defectCount", counts.defectCount()); + item.put("defectCount", defectCount(counts)); return item; } @@ -179,14 +181,25 @@ public class AggStatisticService { } result.put("inspectedTaskCount", number(taskStats, "inspected_task_count")); result.put("completedTaskCount", number(taskStats, "completed_task_count")); - result.put("defectCount", defectStats.defectCount()); - result.put("minorCount", defectStats.minor); + result.put("defectCount", defectCount(defectStats)); + result.put("minorCount", minorCount(defectStats)); result.put("generalCount", defectStats.general); result.put("seriousCount", defectStats.serious); result.put("urgentCount", defectStats.urgent); return result; } + private int minorCount(Counts counts) { + return props.getStatistic().isMinorDefectEnabled() ? counts.minor : 0; + } + + private long defectCount(Counts counts) { + if (props.getStatistic().isMinorDefectEnabled()) { + return counts.defectCount(); + } + return (long) counts.general + counts.serious + counts.urgent; + } + private String stationDisplayName(String stationCode) { if (!StringUtils.hasText(stationCode)) { return null; diff --git a/inspect-main/inspect-main-agg/src/main/java/com/inspect/agg/service/DefectRecordSyncService.java b/inspect-main/inspect-main-agg/src/main/java/com/inspect/agg/service/DefectRecordSyncService.java index cee1508..190fed9 100644 --- a/inspect-main/inspect-main-agg/src/main/java/com/inspect/agg/service/DefectRecordSyncService.java +++ b/inspect-main/inspect-main-agg/src/main/java/com/inspect/agg/service/DefectRecordSyncService.java @@ -95,8 +95,8 @@ public class DefectRecordSyncService { String message = null; try { Map query = new HashMap<>(); - query.put("patrolTimeBegin", LocalDate.now().minusDays(7).toString()); - query.put("patrolTimeEnd", LocalDate.now().toString()); + query.put("beginTime", LocalDate.now().minusDays(7).toString()); + query.put("endTime", LocalDate.now().toString()); List rows = stationApiClient.fetchAllRows(station, PATH, props.getSync().getBase().getPageSize(), 200, query, "lineId"); for (JsonNode row : rows) { diff --git a/inspect-main/inspect-main-agg/src/main/java/com/inspect/agg/web/AggDefectRecordController.java b/inspect-main/inspect-main-agg/src/main/java/com/inspect/agg/web/AggDefectRecordController.java index e3b540b..164ea47 100644 --- a/inspect-main/inspect-main-agg/src/main/java/com/inspect/agg/web/AggDefectRecordController.java +++ b/inspect-main/inspect-main-agg/src/main/java/com/inspect/agg/web/AggDefectRecordController.java @@ -33,19 +33,27 @@ public class AggDefectRecordController { return AjaxResult.success(defectRecordMapper.selectDistinctAlgNames(stationCode)); } + /** + * 缺陷记录分页查询。 + * beginTime / endTime 按 patrol_time 过滤,支持 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss; + * 只传日期时自动补 00:00:00 / 23:59:59。 + */ @GetMapping("/defect/list") public TableDataInfo defectList(@RequestParam(required = false) String stationCode, @RequestParam(required = false) String pointName, - @RequestParam(required = false) String patrolTimeBegin, - @RequestParam(required = false) String patrolTimeEnd, + @RequestParam(required = false) String beginTime, + @RequestParam(required = false) String endTime, @RequestParam(required = false) String algName, + @RequestParam(required = false) Integer defectLevel, @RequestParam(defaultValue = "1") Integer pageNum, @RequestParam(defaultValue = "10") Integer pageSize) { int safePageNum = pageNum == null || pageNum < 1 ? 1 : pageNum; int safePageSize = pageSize == null || pageSize < 1 ? 10 : pageSize; + String rangeBegin = beginOf(beginTime); + String rangeEnd = endOf(endTime); PageHelper.startPage(safePageNum, safePageSize); List list = defectRecordMapper.selectList( - stationCode, pointName, patrolTimeBegin, patrolTimeEnd, algName); + stationCode, pointName, rangeBegin, rangeEnd, algName, defectLevel); rewriteImageUrls(stationCode, list); PageInfo pageInfo = new PageInfo<>(list); TableDataInfo result = new TableDataInfo(); @@ -56,6 +64,36 @@ public class AggDefectRecordController { return result; } + /** 日期 -> 当天 00:00:00;带时分秒时原样使用。 */ + private static String beginOf(String value) { + String normalized = normalize(value); + if (normalized == null) { + return null; + } + return normalized.length() <= 10 ? normalized + " 00:00:00" : normalized; + } + + /** 日期 -> 当天 23:59:59;带时分秒时原样使用。 */ + private static String endOf(String value) { + String normalized = normalize(value); + if (normalized == null) { + return null; + } + return normalized.length() <= 10 ? normalized + " 23:59:59" : normalized; + } + + private static String normalize(String value) { + if (value == null) { + return null; + } + String trimmed = value.trim(); + if (trimmed.isEmpty()) { + return null; + } + return trimmed.replace('T', ' '); + } + + /** * 出参图片字段仍是站端 SFTP 相对路径,按 stationCode 统一拼为集控 nginx 反代地址, * 前端字段名和用法不变,直接作为 使用。 diff --git a/inspect-main/inspect-main-agg/src/main/resources/mapper/AggDefectRecordMapper.xml b/inspect-main/inspect-main-agg/src/main/resources/mapper/AggDefectRecordMapper.xml index fa7108e..74a8f62 100644 --- a/inspect-main/inspect-main-agg/src/main/resources/mapper/AggDefectRecordMapper.xml +++ b/inspect-main/inspect-main-agg/src/main/resources/mapper/AggDefectRecordMapper.xml @@ -133,15 +133,18 @@ AND d.point_name LIKE CONCAT('%', #{pointName}, '%') - - AND d.patrol_time >= CONCAT(#{patrolTimeBegin}, ' 00:00:00') + + AND d.patrol_time >= #{beginTime} - - AND d.patrol_time <= CONCAT(#{patrolTimeEnd}, ' 23:59:59') + + AND d.patrol_time <= #{endTime} AND d.alg_name = #{algName} + + AND d.defect_level = #{defectLevel} + ORDER BY d.patrol_time DESC, d.id DESC