From 618ece4b9b22c2b9a4e85b46f0b3ec99c53e200b Mon Sep 17 00:00:00 2001
From: linwei <872216696@qq.com>
Date: Thu, 02 Apr 2026 16:38:55 +0800
Subject: [PATCH] opt: sql改造其他模块改造12
---
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/mapper/GdManageDeviceMapper.xml | 58 ++++++++++++++++++++++++++++++++--------------------------
1 files changed, 32 insertions(+), 26 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 2c1f565..bb6d1e5 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
@@ -19,30 +19,32 @@
<select id="selectGdManageDevicePage" resultMap="gdManageDeviceResultMap">
select
- md.*,
- bd.dept_name as device_dept_name
+ md.*,
+ bd.dept_name as device_dept_name
from
- ja_gd_manage_device md
+ ja_gd_manage_device md
left join
- blade_dept bd on md.create_dept = bd.id
+ /* 修改点1:双向转型对齐,确保 bigint 和 varchar 都能匹配 */
+ blade_dept bd on md.create_dept::text = bd.id::text
<where>
- and md.is_deleted = 0
+ /* 修改点2:去掉开头多余的 and,保持 SQL 语法严谨 */
+ md.is_deleted = 0
<if test="param2.nickname != null and param2.nickname != ''">
and md.nickname like concat('%',#{param2.nickname},'%')
</if>
<if test="param2.deptId != null">
- and md.create_dept = #{param2.deptId}
+ /* 修改点3:参数过滤也建议加转型,防止 param2.deptId 被 MyBatis 传为 String */
+ and md.create_dept::text = #{param2.deptId}::text
</if>
<if test="param2.location != null and param2.location != ''">
and md.location like concat('%',#{param2.location},'%')
</if>
<if test="param2.modeCode != null and param2.modeCode != ''">
- and md.mode_code = #{param2.modeCode}
+ and md.mode_code::text = #{param2.modeCode}::text
</if>
<if test="param2.deviceType != null and param2.deviceType != ''">
- and md.device_type = #{param2.deviceType}
+ and md.device_type::text = #{param2.deviceType}::text
</if>
-
</where>
</select>
@@ -56,35 +58,39 @@
<select id="selectGdManageDevice" resultType="org.sxkj.gd.workorder.vo.GdManageDeviceVO">
select
- md.id,
- md.device_sn,
- md.device_name,
- md.nickname,
- md.device_payload,
- md.longitude,
- md.latitude,
- md.geom,
- d2.height as height
+ md.id,
+ md.device_sn,
+ md.device_name,
+ md.nickname,
+ md.device_payload,
+ md.longitude,
+ md.latitude,
+ md.geom,
+ d2.height as height
from
- ja_gd_manage_device md
- left join ja_gd_manage_device d2 on md.device_sn = d2.device_sn and d2.device_type = '0'
+ ja_gd_manage_device md
+ left join ja_gd_manage_device d2
+ on md.device_sn::text = d2.device_sn::text
+ and d2.device_type = '0'
<where>
<if test="deviceIds != null and deviceIds.size() > 0">
- and md.id in
+ and md.id::text in
<foreach item="item" collection="deviceIds" index="index" open="(" close=")" separator=",">
- #{item}
+ #{item}::text
</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 != ''">
- and ST_Intersects(md.geom, ST_GeomFromText(#{geom}))
+ /* 确保这里是第一个条件时,and 能被 MyBatis 正确处理,或者直接去掉这个 and */
+ and ST_Intersects(md.geom, ST_GeomFromText(#{geom}::text))
</if>
<if test="deviceType != null and deviceType != '' ">
- and md.device_type = #{deviceType}
+ and md.device_type::text = #{deviceType}::text
</if>
- and md.is_deleted = 0
+ /* 将固定条件放在最前面或最后面,确保逻辑严健 */
+ and md.is_deleted = 0
</where>
</select>
--
Gitblit v1.9.3