From 2291ad94887c724209ce42a03443476324d7bd00 Mon Sep 17 00:00:00 2001
From: rain <1679827795@qq.com>
Date: Thu, 29 Jan 2026 14:38:39 +0800
Subject: [PATCH] 派出所根据区域面查询

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

diff --git a/drone-service/drone-fw/src/main/java/org/sxkj/fw/area/mapper/FwPoliceStationMapper.xml b/drone-service/drone-fw/src/main/java/org/sxkj/fw/area/mapper/FwPoliceStationMapper.xml
index fe2ddb7..38283de 100644
--- a/drone-service/drone-fw/src/main/java/org/sxkj/fw/area/mapper/FwPoliceStationMapper.xml
+++ b/drone-service/drone-fw/src/main/java/org/sxkj/fw/area/mapper/FwPoliceStationMapper.xml
@@ -83,4 +83,26 @@
         SELECT * FROM ja_fw_police_station ${ew.customSqlSegment}
     </select>
 
+    <!-- 根据多边形区域查询派出所 -->
+    <!--
+        历史遗留问题:数据库表中 longitude 字段实际存储的是纬度值,latitude 字段实际存储的是经度值
+        解决方案:
+        1. POLYGON:用户输入是标准格式(经度 纬度),不做坐标交换
+        2. POINT:数据库字段存反,构建时交换为 POINT(latitude, longitude)
+    -->
+    <select id="selectByPolygons" resultMap="fwPoliceStationResultMap">
+        SELECT * FROM ja_fw_police_station
+        WHERE is_deleted = 0
+          AND longitude IS NOT NULL
+          AND latitude IS NOT NULL
+          AND (
+            <foreach collection="polygons" item="polygon" separator=" OR ">
+                ST_Contains(
+                    ST_SRID(ST_GeomFromText(#{polygon}), 4326),
+                    ST_GeomFromText(CONCAT('POINT(', latitude, ' ', longitude, ')'), 4326)
+                )
+            </foreach>
+          )
+    </select>
+
 </mapper>

--
Gitblit v1.9.3