From caf9d837bc7b2bb6de6b7ba0aac72c3ab7ae93a8 Mon Sep 17 00:00:00 2001
From: linwei <872216696@qq.com>
Date: Wed, 05 Aug 2026 11:19:31 +0800
Subject: [PATCH] fix(workorder): 修复管理员查询状态列表权限问题

---
 drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/mapper/GdManageDeviceMapper.xml |   82 +++++++++++++++++++++++++---------------
 1 files changed, 51 insertions(+), 31 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 6e1b1f4..8befe64 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
@@ -14,38 +14,49 @@
          <result column="mode_code" property="modeCode"/>
         <result column="create_time" property="createTime"/>
         <result column="device_dept_name" property="deviceDeptName"/>
+        <result column="maintenance_state" property="maintenanceState"/>
     </resultMap>
 
 
     <select id="selectGdManageDevicePage" resultMap="gdManageDeviceResultMap">
         select
-            md.id,
-            md.device_sn,
-            md.device_name,
-            md.nickname,
-            md.mode_code,
-            md.device_payload,
-            md.longitude,
-            md.latitude,
-            md.location,
-            bd.dept_name as device_dept_name
+        md.id,
+        md.device_sn,
+        md.device_name,
+        md.nickname,
+        md.device_payload,
+        md.longitude,
+        md.latitude,
+        md.mode_code,
+        md.create_time,
+        md.maintenance_state,
+        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
-            <if test="param2.deviceName != null and param2.deviceName != ''">
-                and md.device_name like concat('%',#{param2.deviceName},'%')
-            </if>
+            /* 修改点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::text = #{param2.modeCode}::text
+            </if>
+            <if test="param2.deviceType != null and param2.deviceType != ''">
+                and md.device_type::text = #{param2.deviceType}::text
+            </if>
+            <if test="param2.maintenanceState != null">
+                and md.maintenance_state = #{param2.maintenanceState}
             </if>
         </where>
     </select>
@@ -60,30 +71,39 @@
 
     <select id="selectGdManageDevice" resultType="org.sxkj.gd.workorder.vo.GdManageDeviceVO">
         select
-            id,
-            device_sn,
-            device_name,
-            nickname,
-            device_payload,
-            longitude,
-            latitude,
-            geom
+        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
+        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>
+             md.is_deleted = 0
+            AND md.child_sn IS NOT NULL
+            AND trim(md.child_sn) != ''
             <if test="deviceIds != null and deviceIds.size() > 0">
-                and 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 device_payload like concat('%',#{devicePayload},'%')
+                and md.device_payload like concat('%', #{devicePayload}, '%')
             </if>
             <if test="geom != null and geom != ''">
-                and ST_Intersects(geom, ST_GeomFromText(#{geom}))
+                AND public.st_intersects ( md.geom, public.st_geomfromtext(#{geom}::text, 4326))
             </if>
-                and is_deleted = 0
+            <if test="deviceType != null and deviceType != '' ">
+                and md.device_type::text = #{deviceType}::text
+            </if>
         </where>
     </select>
 

--
Gitblit v1.9.3