From e72abd3d282fc8a918cf9dd76467a19474ffe5bc Mon Sep 17 00:00:00 2001 From: 16337 <1633794139@qq.com> Date: Fri, 20 Feb 2026 21:53:10 +0800 Subject: [PATCH] =?UTF-8?q?fix(aiot):=20=E4=BF=AE=E5=A4=8D=E6=91=84?= =?UTF-8?q?=E5=83=8F=E5=A4=B4=E5=90=8D=E7=A7=B0=E6=98=BE=E7=A4=BA=E9=97=AE?= =?UTF-8?q?=E9=A2=98=20-=20=E4=B8=89=E7=BA=A7=E9=99=8D=E7=BA=A7=E7=AD=96?= =?UTF-8?q?=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题分析: 1. 部分告警显示camera_code而非摄像头名称 - cam_1f0e3dad9990 显示为 cam_1f0e3dad9990 - cam_c51ce410c124 显示为 cam_c51ce410c124 - cam_6f4922f45568 显示为 cam_6f4922f45568 2. 部分摄像头显示带流ID后缀 - 大堂吧台3/012 应显示为 大堂吧台3 根本原因: - 数据库中这3个摄像头的gb_name字段为空 - 原降级逻辑使用app字段(值为camera_code) - 导致显示camera_code而非实际名称 修复方案 - 三级降级策略: 1. 优先使用gb_name去除流ID后缀:SUBSTRING_INDEX(gb_name, '/', 1) 2. gb_name为空时使用name字段(摄像头名称如'大堂吧台1') 3. name也为空时才使用app字段 SQL修改: COALESCE(SUBSTRING_INDEX(sp.gb_name, '/', 1), sp.name, sp.app) AS camera_name 修复效果: - cam_1f0e3dad9990 → 大堂吧台3 ✓ - cam_c51ce410c124 → 大堂吧台1 ✓ - cam_6f4922f45568 → 大堂吧台2 ✓ - 大堂吧台3/012 → 大堂吧台3 ✓ Co-Authored-By: Claude Opus 4.6 --- .../com/genersoft/iot/vmp/aiot/dao/AiAlertMapper.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/aiot/dao/AiAlertMapper.java b/src/main/java/com/genersoft/iot/vmp/aiot/dao/AiAlertMapper.java index 34d8d0ac8..36e587894 100644 --- a/src/main/java/com/genersoft/iot/vmp/aiot/dao/AiAlertMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/aiot/dao/AiAlertMapper.java @@ -15,7 +15,9 @@ public interface AiAlertMapper { @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id") int add(AiAlert alert); - @Select("SELECT a.*, r.name AS roi_name, sp.gb_name AS camera_name FROM wvp_ai_alert a " + + @Select("SELECT a.*, r.name AS roi_name, " + + "COALESCE(SUBSTRING_INDEX(sp.gb_name, '/', 1), sp.name, sp.app) AS camera_name " + + "FROM wvp_ai_alert a " + "LEFT JOIN wvp_ai_roi r ON a.roi_id = r.roi_id " + "LEFT JOIN wvp_stream_proxy sp ON a.camera_id = sp.camera_code " + "WHERE a.alert_id=#{alertId}") @@ -26,7 +28,9 @@ public interface AiAlertMapper { AiAlert queryByAlertId(@Param("alertId") String alertId); @Select(value = {"