From 5b23a8cb9294506d88330f0750f39b9a2cbabbdc Mon Sep 17 00:00:00 2001
From: rain <1679827795@qq.com>
Date: Thu, 29 Jan 2026 18:06:19 +0800
Subject: [PATCH] 区域划分调整

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

diff --git a/drone-service/drone-fw/src/main/java/org/sxkj/fw/device/mapper/FwDeviceMapper.xml b/drone-service/drone-fw/src/main/java/org/sxkj/fw/device/mapper/FwDeviceMapper.xml
index a4a2dae..0e8b838 100644
--- a/drone-service/drone-fw/src/main/java/org/sxkj/fw/device/mapper/FwDeviceMapper.xml
+++ b/drone-service/drone-fw/src/main/java/org/sxkj/fw/device/mapper/FwDeviceMapper.xml
@@ -152,6 +152,72 @@
         </where>
     </select>
 
+    <select id="selectFwDeviceListByPolygons" resultMap="fwDeviceResultMap">
+        select * from ja_fw_device
+        <where>
+            is_deleted = 0
+            <if test="query.isAreaSelect != null and query.isAreaSelect == 1">
+                and (
+                    <choose>
+                        <when test="query.areaId != null">
+                            exists (
+                                select 1
+                                from ja_fw_area_divide ad
+                                where ad.is_deleted = 0
+                                  and ad.id = #{query.areaId}
+                                  and ad.device_ids is not null
+                                  and ad.device_ids != ''
+                                  and find_in_set(ja_fw_device.id, ad.device_ids)
+                            )
+                            or not exists (
+                                select 1
+                                from ja_fw_area_divide ad
+                                where ad.is_deleted = 0
+                                  and ad.device_ids is not null
+                                  and ad.device_ids != ''
+                                  and find_in_set(ja_fw_device.id, ad.device_ids)
+                                  and ad.id != #{query.areaId}
+                            )
+                        </when>
+                        <otherwise>
+                            not exists (
+                                select 1
+                                from ja_fw_area_divide ad
+                                where ad.is_deleted = 0
+                                  and ad.device_ids is not null
+                                  and ad.device_ids != ''
+                                  and find_in_set(ja_fw_device.id, ad.device_ids)
+                            )
+                        </otherwise>
+                    </choose>
+                )
+            </if>
+            <if test="query.status != null">
+                and status = #{query.status}
+            </if>
+            <if test="query.isTrack != null and query.isTrack == 1">
+                and (SELECT COUNT(*) FROM ja_fw_device_track tmp WHERE ja_fw_device.id = tmp.device_id) > 0
+            </if>
+            <if test="query.isTrack != null and query.isTrack == 2">
+                and (SELECT COUNT(*) FROM ja_fw_device_track tmp WHERE ja_fw_device.id = tmp.device_id) = 0
+            </if>
+            and longitude is not null
+            and longitude != ''
+            and latitude is not null
+            and latitude != ''
+            <if test="query.polygons != null and query.polygons.size > 0">
+                and (
+                    <foreach collection="query.polygons" item="polygon" separator=" OR ">
+                        ST_Contains(
+                            ST_SRID(ST_GeomFromText(#{polygon}), 4326),
+                            ST_GeomFromText(CONCAT('POINT(', latitude, ' ', longitude, ')'), 4326)
+                        )
+                    </foreach>
+                )
+            </if>
+        </where>
+    </select>
+
 
     <select id="exportFwDevice" resultType="org.sxkj.fw.device.excel.FwDeviceExcel">
         SELECT * FROM ja_fw_device ${ew.customSqlSegment}

--
Gitblit v1.9.3