From 9cd4074a456fd5c422506279191b6015836347e5 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期五, 30 十月 2026 10:08:35 +0800
Subject: [PATCH] feat: 设备台账启用状态、审批签核展示与导入健壮性

---
 src/main/resources/mapper/device/DeviceLedgerMapper.xml |   53 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 52 insertions(+), 1 deletions(-)

diff --git a/src/main/resources/mapper/device/DeviceLedgerMapper.xml b/src/main/resources/mapper/device/DeviceLedgerMapper.xml
index f3b674e..dedfe08 100644
--- a/src/main/resources/mapper/device/DeviceLedgerMapper.xml
+++ b/src/main/resources/mapper/device/DeviceLedgerMapper.xml
@@ -16,6 +16,7 @@
         dl.unit,
         dl.number,
         dl.status,
+        dl.is_enabled,
         dl.plan_runtime_time,
         dl.start_runtime_time,
         dl.end_runtime_time,
@@ -31,9 +32,12 @@
         dl.tenant_id,
         dl.is_depr,
         dl.annual_depreciation_amount,
-        dl.type
+        dl.type,
+        dl.area_id,
+        da.name AS area_name
         FROM device_ledger dl
         left join sys_user su on dl.create_user = su.user_id
+        left join device_area da on dl.area_id = da.id
         <where>
             <!-- 璁惧鍚嶇О -->
             <if test="deviceLedger.deviceName != null and deviceLedger.deviceName != ''">
@@ -76,9 +80,56 @@
             <if test="deviceLedger.tenantId != null">
                 AND tenant_id = #{deviceLedger.tenantId}
             </if>
+
+            <!-- 鍖哄煙ID锛氬惈璇ュ尯鍩熷強鍏舵墍鏈夊瓙绾э紙閫氳繃绁栫骇璺緞鍖归厤锛� -->
+            <if test="deviceLedger.areaId != null">
+                AND (
+                    dl.area_id = #{deviceLedger.areaId}
+                    OR EXISTS (
+                        SELECT 1 FROM device_area da2
+                        WHERE da2.id = dl.area_id
+                          AND (da2.ancestors = #{deviceLedger.areaId}
+                               OR da2.ancestors LIKE CONCAT(#{deviceLedger.areaId}, ',%')
+                               OR da2.ancestors LIKE CONCAT('%,', #{deviceLedger.areaId}, ',%')
+                               OR da2.ancestors LIKE CONCAT('%,', #{deviceLedger.areaId}))
+                    )
+                )
+            </if>
         </where>
         ORDER BY create_time DESC
     </select>
+    <select id="selectDeviceOptions" resultType="com.ruoyi.device.dto.DeviceLedgerDto">
+        SELECT
+        dl.id,
+        dl.device_name,
+        dl.device_model,
+        dl.device_brand,
+        dl.type,
+        dl.area_id,
+        dl.is_enabled,
+        da.name AS area_name
+        FROM device_ledger dl
+        left join device_area da on dl.area_id = da.id
+        <where>
+            <!-- 鍋滅敤璁惧涓嶅弬涓庡贰妫�锛岄�夋嫨璁惧鏃跺彧杩斿洖鍚敤璁惧 -->
+            AND COALESCE(dl.is_enabled, 1) = 1
+            <if test="areaId != null">
+                AND (
+                    dl.area_id = #{areaId}
+                    OR EXISTS (
+                        SELECT 1 FROM device_area da2
+                        WHERE da2.id = dl.area_id
+                          AND (da2.ancestors = #{areaId}
+                               OR da2.ancestors LIKE CONCAT(#{areaId}, ',%')
+                               OR da2.ancestors LIKE CONCAT('%,', #{areaId}, ',%')
+                               OR da2.ancestors LIKE CONCAT('%,', #{areaId}))
+                    )
+                )
+            </if>
+        </where>
+        ORDER BY dl.create_time DESC
+    </select>
+
     <select id="deviceLedgerExportList" resultType="com.ruoyi.device.execl.DeviceLedgerExeclDto">
 
     </select>

--
Gitblit v1.9.3