From 9e57c59ef51e3baf6999eb8936ac27c1774d416f Mon Sep 17 00:00:00 2001
From: linwei <872216696@qq.com>
Date: Fri, 30 Jan 2026 19:55:18 +0800
Subject: [PATCH] 设备出库+入库+场景管理优化

---
 drone-service/drone-fw/src/main/java/org/sxkj/fw/area/mapper/FwDefenseSceneManageMapper.xml |   22 ++++++++++++++++++++++
 1 files changed, 22 insertions(+), 0 deletions(-)

diff --git a/drone-service/drone-fw/src/main/java/org/sxkj/fw/area/mapper/FwDefenseSceneManageMapper.xml b/drone-service/drone-fw/src/main/java/org/sxkj/fw/area/mapper/FwDefenseSceneManageMapper.xml
index 3e5e20b..571b201 100644
--- a/drone-service/drone-fw/src/main/java/org/sxkj/fw/area/mapper/FwDefenseSceneManageMapper.xml
+++ b/drone-service/drone-fw/src/main/java/org/sxkj/fw/area/mapper/FwDefenseSceneManageMapper.xml
@@ -62,4 +62,26 @@
         SELECT * FROM ja_fw_defense_scene_manage ${ew.customSqlSegment}
     </select>
 
+    <select id="selectDeviceId" parameterType="java.lang.Long" resultType="java.lang.Long">
+        <!-- 步骤1: 根据输入的ja_fw_defense_scene_manage.id获取对应的defense_scene_id -->
+        <!-- 步骤2: 通过defense_scene_id获取ja_fw_defense_scene中的area_divide_ids -->
+        <!-- 步骤3: 根据area_divide_ids获取所有ja_fw_area_divide记录的device_ids -->
+        <!-- 步骤4: 解析逗号分隔的device_ids并返回所有设备ID -->
+        SELECT DISTINCT CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(ad.device_ids, ',', numbers.n), ',', -1) AS UNSIGNED) AS device_id
+        FROM (
+            SELECT 1 n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5
+            UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10
+            UNION ALL SELECT 11 UNION ALL SELECT 12 UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL SELECT 15
+        ) numbers
+        INNER JOIN (
+            SELECT
+                ad.device_ids
+            FROM ja_fw_defense_scene_manage dsm
+            LEFT JOIN ja_fw_defense_scene ds ON ds.id = dsm.defense_scene_id AND ds.is_deleted = 0
+            LEFT JOIN ja_fw_area_divide ad ON FIND_IN_SET(ad.id, ds.area_divide_ids) > 0 AND ad.is_deleted = 0
+            WHERE dsm.id = #{id} AND dsm.is_deleted = 0
+        ) ad ON CHAR_LENGTH(ad.device_ids) - CHAR_LENGTH(REPLACE(ad.device_ids, ',', '')) >= numbers.n - 1
+        WHERE ad.device_ids IS NOT NULL AND ad.device_ids != ''
+    </select>
+
 </mapper>

--
Gitblit v1.9.3