From de775139ac660c9d2e38ae54364f25e6724ca668 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期五, 28 八月 2026 15:41:38 +0800
Subject: [PATCH] feat(device): 1.添加设备导入导出功能并优化数据库关联查询 2.计量溯源性-标准物质清单导入导出

---
 cnas-device/src/main/resources/mapper/DeviceMapper.xml |   41 ++++++++++++++++++++++++-----------------
 1 files changed, 24 insertions(+), 17 deletions(-)

diff --git a/cnas-device/src/main/resources/mapper/DeviceMapper.xml b/cnas-device/src/main/resources/mapper/DeviceMapper.xml
index 2d5c6c8..5460a17 100644
--- a/cnas-device/src/main/resources/mapper/DeviceMapper.xml
+++ b/cnas-device/src/main/resources/mapper/DeviceMapper.xml
@@ -89,13 +89,8 @@
              , #{createUser}
              , #{createTime})
     </select>
-    <select id="selectDevicePrincipal" resultType="com.ruoyi.device.pojo.Device">
-        select id,
-               equipment_manager
-        from device
-    </select>
 
-    <select id="selectDeviceParameterPage" resultType="com.ruoyi.device.pojo.Device">
+    <select id="selectDeviceParameterPage" resultType="com.ruoyi.device.dto.DeviceDto">
         select * from(
         SELECT
         d.*,
@@ -103,22 +98,22 @@
         cmr.next_calibration_date as next_calibration_date_two,
         GROUP_CONCAT(distinct inspection_item SEPARATOR ';') AS insProductItem,
         u.name ,
-        l.laboratory_name
+        sd.dept_name AS laboratory_name
         FROM
         device d
         LEFT JOIN `user` u ON u.id = d.equipment_manager
-        LEFT JOIN laboratory l ON l.id = d.subordinate_departments_id
+        LEFT JOIN sys_dept sd ON sd.dept_id = d.subordinate_departments_id AND sd.del_flag = '0'
         LEFT JOIN device_metric_record cmr ON d.id = cmr.device_id
         LEFT JOIN structure_item_parameter sip ON FIND_IN_SET(sip.id, d.ins_product_ids)
         <where>
             <if test="laboratoryNameIsNull != null and laboratoryNameIsNull == true">
-                l.laboratory_name is null
+                sd.dept_name is null
             </if>
             AND cmr.type = 'calibrate' or cmr.type is null or cmr.type = ''
         </where>
         GROUP BY
         d.id,
-        u.name, l.laboratory_name
+        u.name, sd.dept_name
         ) a
         <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
             ${ew.customSqlSegment}
@@ -147,43 +142,55 @@
     <resultMap id="deviceNameMap" type="map">
         <result property="value" column="id"/>
         <result property="label" column="device_name"/>
+        <result property="activationDate" column="activation_date"/>
         <result property="managementNumber" column="management_number"/>
     </resultMap>
 
     <select id="treeDevice" resultMap="treeDeviceDto">
         select
         d.id,
-        case when l.laboratory_name is null || l.laboratory_name ='' then '鍏朵粬' else l.laboratory_name end as laboratory_name,
+        case when sd.dept_name is null || sd.dept_name ='' then '鍏朵粬' else sd.dept_name end as laboratory_name,
         case when d.storage_point is null || d.storage_point ='' then '鍏朵粬' else d.storage_point end as storage_point,
         d.device_name,
         d.management_number,
-        null as value
+        null as value,
+        d.activation_date
         from device d
-        LEFT JOIN laboratory l ON l.id = d.subordinate_departments_id
+        LEFT JOIN sys_dept sd ON sd.dept_id = d.subordinate_departments_id AND sd.del_flag = '0'
         <where>
             <if test="deviceName!=null and deviceName!=''">
                 and device_name like concat('%',#{deviceName},'%')
             </if>
         </where>
-        order by l.laboratory_name desc, d.storage_point desc
     </select>
 
     <select id="selectDeviceByCode" resultType="com.ruoyi.device.dto.DeviceDto">
         SELECT d.*,
                GROUP_CONCAT(DISTINCT inspection_item SEPARATOR ';') AS ins_product_item,
-               l.laboratory_name,
+               sd.dept_name AS laboratory_name,
                u1.name                                                 equipmentManager_name,
                u2.name                                                 authorized_person_name
         FROM device d
                  LEFT JOIN structure_item_parameter sip ON FIND_IN_SET(sip.id, d.ins_product_ids)
-                 LEFT JOIN laboratory l ON d.subordinate_departments_id = l.id
+                 LEFT JOIN sys_dept sd ON d.subordinate_departments_id = sd.dept_id AND sd.del_flag = '0'
                  LEFT JOIN user u1 ON u1.id = d.equipment_manager
                  LEFT JOIN user u2 ON u2.id = d.authorized_person
         WHERE d.id = #{id}
 
         GROUP BY d.id,
-                 l.laboratory_name,
+                 sd.dept_name,
                  u1.name,
                  u2.name
     </select>
+
+    <!-- 鏌ヨ鍒拌揪鏍″噯鏈夋晥鏈熺殑璁惧-鎻愬墠5澶� -->
+    <select id="selectOverdueDevice" resultType="com.ruoyi.device.pojo.Device">
+        SELECT *
+        FROM device
+        WHERE
+        -- 绛涢�夊嚭 activation_date 鍦ㄥ綋鍓嶆棩鏈熷墠浜斿ぉ鍐呯殑鏁版嵁
+        activation_date BETWEEN now() AND now() + INTERVAL 5 DAY
+        -- 绛涢�夊嚭 activation_date 宸茬粡瓒呰繃褰撳墠鏃ユ湡鐨勬暟鎹�
+        OR activation_date &lt; now()
+    </select>
 </mapper>

--
Gitblit v1.9.3