From ba12d5d8e844146c334223ef5939a51c8e5d76ca Mon Sep 17 00:00:00 2001
From: linwei <872216696@qq.com>
Date: Thu, 29 Jan 2026 20:18:26 +0800
Subject: [PATCH] 反无-权限控制

---
 drone-service/drone-fw/src/main/java/org/sxkj/fw/record/mapper/FwDroneAlarmRecordMapper.xml |   89 ++++++++++++++++++++++++++++++++------------
 1 files changed, 65 insertions(+), 24 deletions(-)

diff --git a/drone-service/drone-fw/src/main/java/org/sxkj/fw/record/mapper/FwDroneAlarmRecordMapper.xml b/drone-service/drone-fw/src/main/java/org/sxkj/fw/record/mapper/FwDroneAlarmRecordMapper.xml
index bed35c8..ebf9d42 100644
--- a/drone-service/drone-fw/src/main/java/org/sxkj/fw/record/mapper/FwDroneAlarmRecordMapper.xml
+++ b/drone-service/drone-fw/src/main/java/org/sxkj/fw/record/mapper/FwDroneAlarmRecordMapper.xml
@@ -38,6 +38,7 @@
             dar.*,
             d.device_name,
             d.status deviceStatus,
+            t.out_target,
             /* 1=已关注,0=未关注 */
             EXISTS (
                 SELECT
@@ -53,8 +54,38 @@
             ja_fw_drone_alarm_record dar
         left join
             ja_fw_device d on dar.device_id = d.id
+        /* 关联出库去向表,看设备去了哪里  */
+        LEFT JOIN (
+            SELECT
+                device_id,
+                out_target,
+                ROW_NUMBER() OVER (
+                PARTITION BY
+                device_id
+                ORDER BY
+                create_time DESC
+            ) AS rn
+            FROM
+                ja_fw_device_track
+            WHERE
+                out_target IS NOT NULL
+            ) t
+            ON d.id = t.device_id AND t.rn = 1
         <where>
-            dar.is_deleted = 0
+                dar.is_deleted = 0
+                and d.track_status = 1
+            <if test="param2.regionName != null and param2.regionName != ''">
+                and (t.out_target = #{param2.regionName}
+                <!-- 或者设备是共享给当前部门的 -->
+                <if test="param2.currentDeptId != null and param2.currentDeptId != '' ">
+                    or dar.device_id in (
+                    SELECT device_id FROM ja_fw_device_per_share
+                    WHERE loan_to_dept_id = #{param2.currentDeptId}
+                    AND is_deleted = 0
+                    )
+                </if>
+                )
+            </if>
             <if test="param2.deviceId != null and param2.deviceId != ''">
                 and dar.device_id = #{param2.deviceId}
             </if>
@@ -117,21 +148,13 @@
             <if test="param2.areaName != null and param2.areaName != ''">
                 and dar.area_name like CONCAT('%', #{param2.areaName}, '%')
             </if>
-            <if test="param2.deptList != null and param2.deptList.size > 0">
-                and (dar.create_dept in
-                <foreach collection="param2.deptList" item="deptId" open="(" separator="," close=")">
-                    #{deptId}
-                </foreach>
-                <!-- 或者设备是共享给当前部门的 -->
-                <if test="param2.currentDeptId != null and param2.currentDeptId != '' ">
-                    or dar.device_id in (
-                    SELECT device_id FROM ja_fw_device_per_share
-                    WHERE loan_to_dept_id = #{param2.currentDeptId}
-                    AND is_deleted = 0
-                    )
-                </if>
-                )
-            </if>
+            <!-- <if test="param2.deptList != null and param2.deptList.size > 0"> -->
+            <!--     and (dar.create_dept in -->
+            <!--     <foreach collection="param2.deptList" item="deptId" open="(" separator="," close=")"> -->
+            <!--         #{deptId} -->
+            <!--     </foreach> -->
+            <!--     ) -->
+            <!-- </if>  -->
         </where>
                 order by favorited desc
     </select>
@@ -161,16 +184,34 @@
         COUNT(CASE WHEN alarm_type = 1 THEN 1 END) AS realTimeAlarmCount,
         COUNT(CASE WHEN alarm_type = 2 THEN 2 END) AS historyAlarmCount
         FROM
-            ja_fw_drone_alarm_record
-        WHERE is_deleted = 0
-        <if test="deptList != null and deptList.size > 0">
-            and (create_dept in
-            <foreach collection="deptList" item="deptId" open="(" separator="," close=")">
-                #{deptId}
-            </foreach>
+            ja_fw_drone_alarm_record  dar
+        left join
+            ja_fw_device d on dar.device_id = d.id
+        /* 关联出库去向表,看设备去了哪里  */
+        LEFT JOIN (
+            SELECT
+                device_id,
+                out_target,
+                ROW_NUMBER() OVER (
+                PARTITION BY
+                device_id
+                ORDER BY
+                create_time DESC
+                ) AS rn
+            FROM
+                ja_fw_device_track
+            WHERE
+            out_target IS NOT NULL
+            ) t
+            ON d.id = t.device_id AND t.rn = 1
+        WHERE dar.is_deleted = 0
+            AND d.track_status = 1
+            AND d.is_deleted = 0
+        <if test="regionName != null and regionName != ''">
+            and (t.out_target = #{regionName}
             <!-- 或者设备是共享给当前部门的 -->
             <if test="currentDeptId != null and currentDeptId != '' ">
-                or device_id in (
+                or dar.device_id in (
                 SELECT device_id FROM ja_fw_device_per_share
                 WHERE loan_to_dept_id = #{currentDeptId}
                 AND is_deleted = 0

--
Gitblit v1.9.3