From 05e5ffa3d347218cfa12e8c4a58fae78d7146ff4 Mon Sep 17 00:00:00 2001
From: 吴羡 <16976746+Xian-TT3@user.noreply.gitee.com>
Date: 星期五, 16 十月 2026 14:57:30 +0800
Subject: [PATCH] 设备导出支持按筛选条件导出 - 仪器设备一览表导出: 支持设备名称/管理编号/状态/设备分类筛选, 无筛选时导出全部 - 设备使用记录导出: 支持样品编号/管理编号筛选; 未选中具体设备时可导出全部设备记录

---
 cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java       |    5 +++--
 cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceRecordMapper.java            |    4 +++-
 cnas-device/src/main/java/com/ruoyi/device/service/DeviceRecordService.java          |    5 ++++-
 cnas-device/src/main/resources/mapper/InsOrderDeviceRecordMapper.xml                 |    7 +++++++
 cnas-device/src/main/java/com/ruoyi/device/service/DeviceService.java                |    3 ++-
 cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceRecordServiceImpl.java |   16 ++++++++--------
 cnas-device/src/main/java/com/ruoyi/device/controller/DeviceController.java          |    4 ++--
 cnas-device/src/main/java/com/ruoyi/device/controller/DeviceRecordController.java    |    4 ++--
 8 files changed, 31 insertions(+), 17 deletions(-)

diff --git a/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceController.java b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceController.java
index 7022e75..a26a6d5 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceController.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceController.java
@@ -210,8 +210,8 @@
 
     @Operation(summary = "浠櫒璁惧涓�瑙堣〃瀵煎嚭")
     @GetMapping("/exportEquipmentDetails")
-    public void exportEquipmentDetails(HttpServletResponse response) {
-        deviceService.exportEquipmentDetails(response);
+    public void exportEquipmentDetails(DeviceDto itemParameter, HttpServletResponse response) {
+        deviceService.exportEquipmentDetails(itemParameter, response);
     }
 
     @Operation(summary = "涓嬭浇璁惧瀵煎叆妯℃澘")
diff --git a/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceRecordController.java b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceRecordController.java
index cec5390..4a844be 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceRecordController.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceRecordController.java
@@ -57,7 +57,7 @@
 
     @Operation(summary = "璁惧浣跨敤璁板綍瀵煎嚭")
     @GetMapping("/exportUseRecord")
-    public void exportUseRecord(Integer deviceId, String exportDate, HttpServletResponse response){
-        deviceRecordService.exportUseRecord(deviceId, exportDate, response);
+    public void exportUseRecord(Integer deviceId, String sampleCode, String managementNumber, String exportDate, HttpServletResponse response){
+        deviceRecordService.exportUseRecord(deviceId, sampleCode, managementNumber, exportDate, response);
     }
 }
diff --git a/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceRecordMapper.java b/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceRecordMapper.java
index 66e47cf..cce6942 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceRecordMapper.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceRecordMapper.java
@@ -31,8 +31,10 @@
     /**
      * 鏌ヨ瀵煎嚭璁惧浣跨敤璁板綍
      * @param deviceId
+     * @param sampleCode 鏍峰搧缂栧彿绛涢��
+     * @param managementNumber 绠$悊缂栧彿绛涢��
      * @param exportDate
      * @return
      */
-    List<DeviceRecord> selectExportList(@Param("deviceId") Integer deviceId, @Param("exportDate") String exportDate);
+    List<DeviceRecord> selectExportList(@Param("deviceId") Integer deviceId, @Param("sampleCode") String sampleCode, @Param("managementNumber") String managementNumber, @Param("exportDate") String exportDate);
 }
diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/DeviceRecordService.java b/cnas-device/src/main/java/com/ruoyi/device/service/DeviceRecordService.java
index 7366e74..c0560c6 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/service/DeviceRecordService.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/service/DeviceRecordService.java
@@ -25,7 +25,10 @@
      * 瀵煎嚭璁惧浣跨敤璁板綍
      *
      * @param deviceId
+     * @param sampleCode 鏍峰搧缂栧彿绛涢��
+     * @param managementNumber 绠$悊缂栧彿绛涢��
+     * @param exportDate 瀵煎嚭鏈堜唤
      * @param response
      */
-    void exportUseRecord(Integer deviceId, String exportDate, HttpServletResponse response);
+    void exportUseRecord(Integer deviceId, String sampleCode, String managementNumber, String exportDate, HttpServletResponse response);
 }
diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/DeviceService.java b/cnas-device/src/main/java/com/ruoyi/device/service/DeviceService.java
index 5258d6c..b1233f5 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/service/DeviceService.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/service/DeviceService.java
@@ -52,9 +52,10 @@
 
     /**
      * 瀵煎嚭璁惧宸ュ叿鏄庣粏
+     * @param itemParameter 瀵煎嚭绛涢�夋潯浠�(璁惧鍚嶇О/绠$悊缂栧彿/鐘舵��/璁惧鍒嗙被), 涓虹┖鏃跺鍑哄叏閮�
      * @param response
      */
-    void exportEquipmentDetails(HttpServletResponse response);
+    void exportEquipmentDetails(DeviceDto itemParameter, HttpServletResponse response);
 
     void downloadImportTemplate(HttpServletResponse response);
 
diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceRecordServiceImpl.java b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceRecordServiceImpl.java
index 75ac0af..d49ccbb 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceRecordServiceImpl.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceRecordServiceImpl.java
@@ -64,11 +64,11 @@
 
 
     @Override
-    public void exportUseRecord(Integer deviceId, String exportDate, HttpServletResponse response) {
-        // 鏌ヨcnas璁惧浣跨敤璁板綍
-        List<DeviceRecord> deviceList = baseMapper.selectExportList(deviceId, exportDate);
-        // 璁惧淇℃伅
-        Device device = deviceMapper.selectById(deviceId);
+    public void exportUseRecord(Integer deviceId, String sampleCode, String managementNumber, String exportDate, HttpServletResponse response) {
+        // 鏌ヨcnas璁惧浣跨敤璁板綍(鎸夊綋鍓嶇瓫閫夋潯浠�, 鏉′欢涓虹┖鏃跺鍑哄叏閮�)
+        List<DeviceRecord> deviceList = baseMapper.selectExportList(deviceId, sampleCode, managementNumber, exportDate);
+        // 璁惧淇℃伅(鏈�変腑鍏蜂綋璁惧鏃跺鍑哄叏閮ㄨ澶囩殑璁板綍, 璁惧淇℃伅鐣欑┖)
+        Device device = deviceId == null ? null : deviceMapper.selectById(deviceId);
 
 
         // 鏌ヨ璁惧灞炰簬鍝釜瀹為獙瀹�
@@ -118,13 +118,13 @@
         Configure configure = Configure.builder()
                 .bind("useRecord", new HackLoopTableRenderPolicy())
                 .build();
-        String deviceName = device.getDeviceName();
-        String managementNumber = device.getManagementNumber();
+        String deviceName = device == null ? "" : device.getDeviceName();
+        String deviceManagementNumber = device == null ? "" : device.getManagementNumber();
         XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
                 new HashMap<String, Object>() {{
                     put("useRecord", deviceExportList);
                     put("deviceName", deviceName);
-                    put("managementNumber", managementNumber);
+                    put("managementNumber", deviceManagementNumber);
                     put("laboratory", laboratoryName);
                 }});
 
diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java
index e006b84..5a007c1 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java
@@ -619,8 +619,9 @@
     }
 
     @Override
-    public void exportEquipmentDetails(HttpServletResponse response) {
-        List<Device> deviceList = baseMapper.selectList(null);
+    public void exportEquipmentDetails(DeviceDto itemParameter, HttpServletResponse response) {
+        // 鎸夊綋鍓嶇瓫閫夋潯浠跺鍑�(鏉′欢涓虹┖鏃跺鍑哄叏閮�)
+        List<Device> deviceList = baseMapper.selectList(QueryWrappers.<Device>queryWrappers(itemParameter));
         List<DeviceExport> deviceExportList = new ArrayList<>();
 
         int index = 1;
diff --git a/cnas-device/src/main/resources/mapper/InsOrderDeviceRecordMapper.xml b/cnas-device/src/main/resources/mapper/InsOrderDeviceRecordMapper.xml
index 8a5e3cf..26dc79b 100644
--- a/cnas-device/src/main/resources/mapper/InsOrderDeviceRecordMapper.xml
+++ b/cnas-device/src/main/resources/mapper/InsOrderDeviceRecordMapper.xml
@@ -39,10 +39,17 @@
     <select id="selectExportList" resultType="com.ruoyi.device.dto.DeviceRecordDto">
         select dr.*
         from device_record dr
+                 left join device d on d.id = dr.device_id
         where dr.use_start_date is not null
         <if test="deviceId != null">
             and dr.device_id = #{deviceId}
         </if>
+        <if test="sampleCode != '' and sampleCode != null">
+            and dr.sample_code like concat('%', #{sampleCode}, '%')
+        </if>
+        <if test="managementNumber != '' and managementNumber != null">
+            and d.management_number like concat('%', #{managementNumber}, '%')
+        </if>
         <if test="exportDate != '' and exportDate != null">
             and DATE_FORMAT(dr.use_start_date, '%Y-%m') = #{exportDate}
         </if>

--
Gitblit v1.9.3