From a561d27fb9ec4ca0407a8131ec2edc9c4efefcc2 Mon Sep 17 00:00:00 2001
From: xiebin <vip_xiaobin810@163.com>
Date: Fri, 03 Apr 2026 15:54:50 +0800
Subject: [PATCH] opt: ST_GeomFromText-替换人大金仓-ST_SetSRID

---
 drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/mapper/GdManageDeviceMapper.xml |   13 +++++++------
 1 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/mapper/GdManageDeviceMapper.xml b/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/mapper/GdManageDeviceMapper.xml
index fdb9d76..aabc40b 100644
--- a/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/mapper/GdManageDeviceMapper.xml
+++ b/drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/mapper/GdManageDeviceMapper.xml
@@ -69,9 +69,11 @@
         d2.height as height
         from
         ja_gd_manage_device md
-        /* 修改点1:关联条件双向转型 text(规避之前的 bigint = varchar 错误) */
-        left join ja_gd_manage_device d2 on md.device_sn::text = d2.device_sn::text and d2.device_type = '0'
+        left join ja_gd_manage_device d2
+        on md.device_sn::text = d2.device_sn::text
+        and d2.device_type = '0'
         <where>
+             md.is_deleted = 0
             <if test="deviceIds != null and deviceIds.size() > 0">
                 and md.id::text in
                 <foreach item="item" collection="deviceIds" index="index" open="(" close=")" separator=",">
@@ -79,16 +81,15 @@
                 </foreach>
             </if>
             <if test="devicePayload != null and devicePayload != ''">
-                and md.device_payload like concat('%',#{devicePayload},'%')
+                and md.device_payload like concat('%', #{devicePayload}, '%')
             </if>
             <if test="geom != null and geom != ''">
-                /* 修改点2:增加显式类型转换 ::text,并建议指定 SRID (如 4326) */
-                and ST_Intersects(md.geom, ST_GeomFromText(#{geom}::text, 4326))
+                /* 确保这里是第一个条件时,and 能被 MyBatis 正确处理,或者直接去掉这个 and */
+                AND ST_Intersects ( ST_SetSRID ( md.geom, 4326 ), ST_SetSRID ( ST_GeomFromText ( ${geom} ), 4326 ) )
             </if>
             <if test="deviceType != null and deviceType != '' ">
                 and md.device_type::text = #{deviceType}::text
             </if>
-            and md.is_deleted = 0
         </where>
     </select>
 

--
Gitblit v1.9.3