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