From 8b4d7246fb735d965195201e80178b5d1528a486 Mon Sep 17 00:00:00 2001
From: zhuo <2089219845@qq.com>
Date: 星期五, 18 四月 2025 14:48:49 +0800
Subject: [PATCH] 1.设备使用授权导出 2.设备维护保养导出

---
 cnas-device/src/main/resources/static/word/device-impower.docx                         |    0 
 cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMaintenanceController.java |   10 +
 cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceImpl.java     |  165 +++++++++++++++++++++++
 cnas-device/src/main/resources/static/word/device-maintenance.docx                     |    0 
 cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenanceService.java       |   11 +
 ruoyi-common/src/main/java/com/ruoyi/common/constant/DeviceImpowerConstants.java       |   65 +++++++++
 cnas-device/src/main/java/com/ruoyi/device/controller/DeviceImpowerController.java     |    6 
 cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceImpowerServiceImpl.java  |  115 ++++++++-------
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java  |    3 
 ruoyi-system/src/main/resources/mapper/system/UserMapper.xml                           |    4 
 cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceImpower.java                     |    4 
 cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceMaintenance.java                 |    6 
 cnas-device/src/main/java/com/ruoyi/device/dto/DeviceImpowerDto.java                   |    7 
 13 files changed, 331 insertions(+), 65 deletions(-)

diff --git a/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceImpowerController.java b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceImpowerController.java
index 354aaf1..092f7c5 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceImpowerController.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceImpowerController.java
@@ -81,7 +81,7 @@
     /**
      * 鎻愪氦鎵瑰噯
      */
-    @ApiOperation("鎻愪氦鎵瑰噯")
+    @ApiOperation("鎻愪氦鎵瑰噯閫氱煡")
     @PostMapping("/submitReviewImpowerStatus")
     public Result submitReviewImpowerStatus(@RequestBody DeviceImpowerDto deviceImpowerDto) {
         return deviceImpowerService.submitReviewImpowerStatus(deviceImpowerDto);
@@ -90,7 +90,7 @@
     /**
      * 浣跨敤鎺堟潈鎵瑰噯
      */
-    @ApiOperation("浣跨敤鎺堟潈鎵瑰噯")
+    @ApiOperation("鎺堟潈鎵瑰噯")
     @PostMapping("/reviewImpowerStatus")
     public Result reviewImpowerStatus(@RequestBody DeviceImpowerDto deviceImpowerDto) {
         return deviceImpowerService.reviewImpowerStatus(deviceImpowerDto);
@@ -101,7 +101,7 @@
      */
     @ApiOperation("瀵煎嚭浣跨敤鎺堟潈")
     @GetMapping("/exportDeviceImpower")
-    public Result exportDeviceImpower(@RequestParam("ImpowerId") Integer impowerId, HttpServletResponse response) {
+    public Result exportDeviceImpower(@RequestParam("impowerId") Integer impowerId, HttpServletResponse response) {
         return deviceImpowerService.exportDeviceImpowerDto(impowerId, response);
     }
 
diff --git a/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMaintenanceController.java b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMaintenanceController.java
index 7eb0f3a..46fadff 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMaintenanceController.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMaintenanceController.java
@@ -12,6 +12,8 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletResponse;
+
 /**
  * todo: 瀛欐渤婊�
  */
@@ -67,5 +69,13 @@
         return Result.success(deviceMaintenanceService.removeById(id));
     }
 
+    /**
+     * 瀵煎嚭璁惧缁存姢淇濆吇
+     */
+    @ApiOperation("瀵煎嚭璁惧缁存姢淇濆吇")
+    @GetMapping("/exportDeviceMaintenance")
+    public void exportDeviceMaintenance(@RequestParam("deviceId") Integer deviceId, HttpServletResponse response) {
+        deviceMaintenanceService.exportDeviceMaintenance(deviceId, response);
+    }
 
 }
diff --git a/cnas-device/src/main/java/com/ruoyi/device/dto/DeviceImpowerDto.java b/cnas-device/src/main/java/com/ruoyi/device/dto/DeviceImpowerDto.java
index ec362ab..67ad3aa 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/dto/DeviceImpowerDto.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/dto/DeviceImpowerDto.java
@@ -13,7 +13,12 @@
 @Data
 public class DeviceImpowerDto extends DeviceImpower {
 
-
     @ApiModelProperty("璇︽儏")
     private List<DeviceImpowerDetailsDto> deviceImpowerDetails;
+
+    @ApiModelProperty("鎺堟潈鏃ユ湡涓枃")
+    private String auditDateCH;
+
+    @ApiModelProperty("鎺堟潈鏃ユ湡鑻辨枃")
+    private String auditDateEN;
 }
diff --git a/cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceImpower.java b/cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceImpower.java
index dc8b6d6..5851883 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceImpower.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceImpower.java
@@ -14,7 +14,7 @@
 
 /**
  * <p>
- * 璁惧閲忓�兼函婧愯鍒掕〃
+ * 璁惧浣跨敤鎺堟潈琛�
  * </p>
  *
  * @author
@@ -23,7 +23,7 @@
 @Getter
 @Setter
 @TableName("device_impower")
-@ApiModel(value = "DeviceImpower瀵硅薄", description = "璁惧閲忓�兼函婧愯鍒掕〃")
+@ApiModel(value = "DeviceImpower瀵硅薄", description = "璁惧浣跨敤鎺堟潈琛�")
 public class DeviceImpower implements Serializable {
 
     @ApiModelProperty("鎺堟潈id")
diff --git a/cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceMaintenance.java b/cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceMaintenance.java
index d8d1017..598a08c 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceMaintenance.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceMaintenance.java
@@ -5,6 +5,7 @@
 import java.util.Date;
 
 import com.baomidou.mybatisplus.annotation.*;
+import com.deepoove.poi.data.PictureRenderData;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -55,5 +56,10 @@
     @TableField(fill = FieldFill.INSERT_UPDATE)
     private Integer updateUser;
 
+    @TableField(select = false, exist = false)
+    @ApiModelProperty("缁存姢浜哄浘鐗�")
+    private PictureRenderData maintenanceUserUrlRender;
+
+
 }
 
diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenanceService.java b/cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenanceService.java
index 8f17d28..8830d9f 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenanceService.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenanceService.java
@@ -3,8 +3,11 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.core.domain.Result;
 import com.ruoyi.device.dto.DeviceMaintenanceDto;
 import com.ruoyi.device.pojo.DeviceMaintenance;
+
+import javax.servlet.http.HttpServletResponse;
 
 /**
  * 璁惧缁存姢淇濆吇
@@ -16,4 +19,12 @@
      * @return
      */
     IPage<DeviceMaintenanceDto> selectDeviceMaintenancePage(Page page, DeviceMaintenanceDto deviceMaintenance);
+
+    /**
+     * 瀵煎嚭璁惧缁存姢淇濆吇
+     * @param deviceId
+     * @param response
+     * @return
+     */
+    void exportDeviceMaintenance(Integer deviceId, HttpServletResponse response);
 }
diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceImpowerServiceImpl.java b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceImpowerServiceImpl.java
index 6ce3e62..b42a809 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceImpowerServiceImpl.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceImpowerServiceImpl.java
@@ -39,6 +39,7 @@
 import java.io.OutputStream;
 import java.net.URLEncoder;
 import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.HashMap;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -182,17 +183,17 @@
      */
     @Override
     public Result submitReviewImpowerStatus(DeviceImpowerDto deviceImpowerDto) {
-//        User audit = userMapper.selectById(deviceImpowerDto.getAuditId());
-//        this.update(Wrappers.<DeviceImpower>lambdaUpdate()
-//                .eq(DeviceImpower::getImpowerId, deviceImpowerDto.getImpowerId())
-//                .set(DeviceImpower::getAuditId, audit.getId())
-//                .set(DeviceImpower::getAudit, audit.getName())
-//                .set(DeviceImpower::getAuditDate, null)
-//                .set(DeviceImpower::getStatus, null)
-//                .set(DeviceImpower::getAuditRemark, null));
-//
-//        DeviceImpower deviceImpower = baseMapper.selectById(deviceImpowerDto.getImpowerId());
-//
+        User audit = userMapper.selectById(deviceImpowerDto.getAuditId());
+        this.update(Wrappers.<DeviceImpower>lambdaUpdate()
+                .eq(DeviceImpower::getImpowerId, deviceImpowerDto.getImpowerId())
+                .set(DeviceImpower::getAuditId, audit.getId())
+                .set(DeviceImpower::getAudit, audit.getName())
+                .set(DeviceImpower::getAuditDate, null)
+                .set(DeviceImpower::getStatus, null)
+                .set(DeviceImpower::getAuditRemark, null));
+
+        DeviceImpower deviceImpower = baseMapper.selectById(deviceImpowerDto.getImpowerId());
+
 //        // 鍙戦�佹秷鎭�
 //        Integer userId = SecurityUtils.getUserId().intValue();
 //        User user = userMapper.selectById(userId);
@@ -226,9 +227,9 @@
     }
 
     /**
-     * 瀹℃牳璁惧浣跨敤
      *
-     * @param deviceImpowerDto 璁惧浣跨敤
+     *
+     * @param deviceImpowerDto
      */
     @Override
     public Result reviewImpowerStatus(DeviceImpowerDto deviceImpowerDto) {
@@ -245,50 +246,54 @@
     /**
      * 瀵煎嚭璁惧浣跨敤
      *
-     * @param ImpowerId 璁惧浣跨敤id
+     * @param impowerId 璁惧浣跨敤id
      */
     @Override
-    public Result exportDeviceImpowerDto(Integer ImpowerId, HttpServletResponse response) {
-//        // 鏌ヨ璁惧淇濆吇璁″垝
-//        DeviceImpowerDto deviceImpower = baseMapper.selectDeviceImpowerById(ImpowerId);
-//
-//        // 鏌ヨ璁惧淇濆吇璁″垝璇︽儏
-//        List<DeviceImpowerDetailsDto> deviceImpowerDetailsDtoList = deviceImpowerDetailsMapper.deviceImpowerDetailsList(ImpowerId);
-//        // 璁剧疆搴忓彿
-//        deviceImpowerDetailsDtoList.forEach(deviceImpowerDetails -> {
-//            deviceImpowerDetails.setIndex(deviceImpowerDetailsDtoList.indexOf(deviceImpowerDetails) + 1);
-//        });
-//
-//        // 鑾峰彇璺緞
-//        InputStream inputStream = this.getClass().getResourceAsStream("/static/word/traceability-management-details.docx");
-//        Configure configure = Configure.builder()
-//                .bind("deviceImpowerDetailsDtoList", new HackLoopTableRenderPolicy())
-//                .build();
-//        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
-//                new HashMap<String, Object>() {{
-//                    put("deviceImpower", deviceImpower);
-//                    put("deviceImpowerDetailsDtoList", deviceImpowerDetailsDtoList);
-//                    // 缂栧埗浜虹鍚嶅湴鍧�
-//                    put("compilerUrl", UserUtils.getFinalUserSignatureUrl(deviceImpower.getCompilerId()));
-//                    // 瀹℃牳浜虹鍚嶅湴鍧�
-//                    put("auditUrl", UserUtils.getFinalUserSignatureUrl(deviceImpower.getAuditId()));
-//                }});
-//
-//        try {
-//            response.setContentType("application/msword");
-//            String finalFileName = deviceImpower.getFileName() == null ? "" : deviceImpower.getFileName() + "_";
-//            String fileName = URLEncoder.encode(
-//                    finalFileName+ "璁惧浣跨敤", "UTF-8");
-//            response.setHeader("Content-disposition",
-//                    "attachment;filename=" + fileName + ".docx");
-//            OutputStream os = response.getOutputStream();
-//            template.write(os);
-//            os.flush();
-//            os.close();
-//        } catch (Exception e) {
-//            e.printStackTrace();
-//            throw new RuntimeException("瀵煎嚭澶辫触");
-//        }
+    public Result exportDeviceImpowerDto(Integer impowerId, HttpServletResponse response) {
+        // 鏌ヨ璁惧浣跨敤鎺堟潈璁″垝
+        DeviceImpower deviceImpower = baseMapper.selectById(impowerId);
+        DeviceImpowerDto deviceImpowerDto = new DeviceImpowerDto();
+        BeanUtils.copyProperties(deviceImpower, deviceImpowerDto);
+        // 鏍煎紡鍖栨棩鏈熶腑鑻辨枃
+        DateTimeFormatter formatterCH = DateTimeFormatter.ofPattern("yyyy 骞� MM 鏈� dd 鏃�");
+        DateTimeFormatter formatterEN = DateTimeFormatter.ofPattern("yyyy 'Year' MM 'Month' dd 'Day'");
+        deviceImpowerDto.setAuditDateCH(deviceImpower.getAuditDate() == null ? null : deviceImpower.getAuditDate().format(formatterCH));
+        deviceImpowerDto.setAuditDateEN(deviceImpower.getAuditDate() == null ? null : deviceImpower.getAuditDate().format(formatterEN));
+
+        // 鏌ヨ璁惧淇濆吇璁″垝璇︽儏
+        List<DeviceImpowerDetailsDto> deviceImpowerDetailsDtoList = deviceImpowerDetailsMapper.deviceImpowerDetailsList(impowerId);
+        // 璁剧疆搴忓彿
+        deviceImpowerDetailsDtoList.forEach(deviceImpowerDetails -> {
+            deviceImpowerDetails.setIndex(deviceImpowerDetailsDtoList.indexOf(deviceImpowerDetails) + 1);
+        });
+
+        // 鑾峰彇璺緞
+        InputStream inputStream = this.getClass().getResourceAsStream("/static/word/device-impower.docx");
+        Configure configure = Configure.builder()
+                .bind("deviceImpowerDetailsDtoList", new HackLoopTableRenderPolicy())
+                .build();
+        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
+                new HashMap<String, Object>() {{
+                    put("deviceImpower", deviceImpowerDto);
+                    put("deviceImpowerDetailsDtoList", deviceImpowerDetailsDtoList);
+                    // 鎺堟潈浜哄湴鍧�
+                    put("auditUrl", UserUtils.getFinalUserSignatureUrl(deviceImpower.getAuditId()));
+                }});
+
+        try {
+            response.setContentType("application/msword");
+            String fileName = URLEncoder.encode(
+                    "璁惧浣跨敤鎺堟潈", "UTF-8");
+            response.setHeader("Content-disposition",
+                    "attachment;filename=" + fileName + ".docx");
+            OutputStream os = response.getOutputStream();
+            template.write(os);
+            os.flush();
+            os.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new RuntimeException("瀵煎嚭澶辫触");
+        }
         return Result.success();
     }
 }
diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceImpl.java b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceImpl.java
index e658b6b..02ca6cc 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceImpl.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceImpl.java
@@ -1,21 +1,58 @@
 package com.ruoyi.device.service.impl;
 
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.deepoove.poi.data.Pictures;
+import com.ruoyi.common.core.domain.entity.SysDictData;
 import com.ruoyi.common.utils.QueryWrappers;
+import com.ruoyi.device.dto.DeviceImpowerDetailsDto;
+import com.ruoyi.device.dto.DeviceImpowerDto;
 import com.ruoyi.device.dto.DeviceMaintenanceDto;
 import com.ruoyi.device.mapper.DeviceMaintenanceMapper;
+import com.ruoyi.device.mapper.DeviceMapper;
+import com.ruoyi.device.pojo.Device;
+import com.ruoyi.device.pojo.DeviceImpower;
 import com.ruoyi.device.pojo.DeviceMaintenance;
 import com.ruoyi.device.service.DeviceMaintenanceService;
+import com.ruoyi.device.service.DeviceService;
+import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
+import com.ruoyi.inspect.util.UserUtils;
+import com.ruoyi.system.service.ISysDictDataService;
+import com.ruoyi.system.service.ISysDictTypeService;
+import lombok.AllArgsConstructor;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
 
 /**
  * 璁惧缁存姢淇濆吇
  */
 @Service
 public class DeviceMaintenanceImpl extends ServiceImpl<DeviceMaintenanceMapper, DeviceMaintenance> implements DeviceMaintenanceService {
+    @Resource
+    private DeviceService deviceService;
+    @Resource
+    private ISysDictTypeService iSysDictTypeService;
 
+    @Value("${file.path}")
+    private String imgUrl;
 
     /**
      * 璁惧缁存姢鍒嗛〉鏌ヨ
@@ -28,4 +65,132 @@
         }
         return baseMapper.selectDeviceMaintenancePage(page, QueryWrappers.queryWrappers(deviceMaintenance));
     }
+
+    /**
+     * 瀵煎嚭璁惧缁存姢淇濆吇
+     * @param deviceId
+     * @param response
+     */
+    @Override
+    public void exportDeviceMaintenance(Integer deviceId, HttpServletResponse response) {
+        // 鏌ヨ璁惧缁存姢淇濆吇
+        List<DeviceMaintenance> deviceMaintenanceList = baseMapper.selectList(Wrappers.<DeviceMaintenance>lambdaQuery()
+                .eq(DeviceMaintenance::getDeviceId, deviceId));
+
+        // 鑾峰彇鍒扮涓�涓澶囦娇鐢ㄦ巿鏉�
+        DeviceMaintenanceDto deviceMaintenanceDto = new DeviceMaintenanceDto();
+
+        List<SysDictData> sysDictDataList = null;
+        if (CollectionUtils.isNotEmpty(deviceMaintenanceList)) {
+            BeanUtils.copyProperties(deviceMaintenanceList.get(0), deviceMaintenanceDto);
+            // 鏌ヨ璁惧淇℃伅
+            Device device = deviceService.getById(deviceId);
+            deviceMaintenanceDto.setDeviceName(device.getDeviceName());
+            deviceMaintenanceDto.setManagementNumber(device.getManagementNumber());
+
+            //鏌ヨ缁存姢淇濆吇瀵煎嚭瀛楀吀鍊�
+            sysDictDataList = getDeviceMaintenanceDict(device);
+        }
+
+        // 娣诲姞瀛楀吀鏋氫妇鍊�
+        for (DeviceMaintenance deviceMaintenance : deviceMaintenanceList) {
+            StringBuilder maintenanceContent = new StringBuilder(deviceMaintenance.getMaintenanceContent());
+            if (CollectionUtils.isNotEmpty(sysDictDataList) && StringUtils.isNotBlank(deviceMaintenance.getMaintenanceContent())) {
+                maintenanceContent = new StringBuilder();
+                List<String> splitList = StrUtil.split(deviceMaintenance.getMaintenanceContent(), ',');
+                // 寰幆鍒ゆ柇鏄惁鏈変竴鏍穔ey
+                for (SysDictData sysDictData : sysDictDataList) {
+                    if (splitList.contains(sysDictData.getDictLabel())) {
+                        maintenanceContent.append("鈽�").append(sysDictData.getDictLabel()).append(" ");
+                    } else {
+                        maintenanceContent.append("鈻�").append(sysDictData.getDictLabel()).append(" ");
+                    }
+                }
+            }
+            deviceMaintenance.setMaintenanceContent(maintenanceContent.toString());
+            // 娣诲姞缁存姢浜哄浘鐗�
+            deviceMaintenance.setMaintenanceUserUrlRender(UserUtils.getFinalUserSignatureUrl(deviceMaintenance.getMaintenanceUserId()));
+
+        }
+
+
+        // 鑾峰彇璺緞
+        InputStream inputStream = this.getClass().getResourceAsStream("/static/word/device-maintenance.docx");
+        Configure configure = Configure.builder()
+                .bind("deviceMaintenances", new HackLoopTableRenderPolicy())
+                .build();
+        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
+                new HashMap<String, Object>() {{
+                    put("device", deviceMaintenanceDto);
+                    put("deviceMaintenances", deviceMaintenanceList);
+                }});
+
+        try {
+            response.setContentType("application/msword");
+            String fileName = URLEncoder.encode(
+                    "璁惧浣跨敤鎺堟潈", "UTF-8");
+            response.setHeader("Content-disposition",
+                    "attachment;filename=" + fileName + ".docx");
+            OutputStream os = response.getOutputStream();
+            template.write(os);
+            os.flush();
+            os.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new RuntimeException("瀵煎嚭澶辫触");
+        }
+
+    }
+
+    /**
+     * ****鏌ヨ缁存姢淇濆吇瀵煎嚭瀛楀吀鍊�***
+     * @param device
+     */
+    private List<SysDictData> getDeviceMaintenanceDict(Device device) {
+        List<SysDictData> sysDictDataList = new ArrayList<>();
+        // 鏌ヨ缁存姢淇濆吇瀵煎嚭瀛楀吀鍊�
+        if (StringUtils.isNotBlank(device.getStoragePoint())) {
+            String dictType = null;
+            switch (device.getStoragePoint()) {
+                case "鑰佸寲瀹�":
+                    dictType = "aging_maintenance_content";
+                    break;
+                case "鑰佸寲瀹為獙瀹�":
+                    dictType = "aging_maintenance_content";
+                    break;
+                case "鐢垫�ц兘瀹為獙瀹�":
+                    dictType = "electrical_maintenance_content";
+                    break;
+                case "鐜瀹為獙瀹�":
+                    dictType = "environmental_maintenance_content";
+                    break;
+                case "鐕冪儳瀹為獙瀹�":
+                    dictType = "burn_maintenance_content";
+                    break;
+                case "娣风偧瀹為獙瀹�":
+                    dictType = "mixing_maintenance_content";
+                    break;
+                case "妫�娴嬩腑蹇冪數鎬ц兘瀹為獙瀹�":
+                    dictType = "center_electrical_maintenance_content";
+                    break;
+                case "鎭掓俯浜�":
+                    dictType = "temperature2_maintenance_content";
+                    break;
+                case "鎭掓俯涓�":
+                    dictType = "temperature1_maintenance_content";
+                    break;
+                case "鍖栧瀹為獙瀹�":
+                    dictType = "chemistry_maintenance_content";
+                    break;
+                case "鍒舵牱瀹�":
+                    dictType = "sample_maintenance_content";
+                    break;
+                case "浣庢俯瀹為獙瀹�":
+                    dictType = "hypothermia_maintenance_content";
+                    break;
+            }
+            sysDictDataList = iSysDictTypeService.selectDictDataByType(dictType);
+        }
+        return sysDictDataList;
+    }
 }
diff --git a/cnas-device/src/main/resources/static/word/device-impower.docx b/cnas-device/src/main/resources/static/word/device-impower.docx
new file mode 100644
index 0000000..84f72bd
--- /dev/null
+++ b/cnas-device/src/main/resources/static/word/device-impower.docx
Binary files differ
diff --git a/cnas-device/src/main/resources/static/word/device-maintenance.docx b/cnas-device/src/main/resources/static/word/device-maintenance.docx
new file mode 100644
index 0000000..87ad5ee
--- /dev/null
+++ b/cnas-device/src/main/resources/static/word/device-maintenance.docx
Binary files differ
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java
index 9c08968..568a0ec 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java
@@ -1005,9 +1005,6 @@
      */
     @Override
     public void reportAllExport(ReportPageDto dto, HttpServletResponse response) throws UnsupportedEncodingException {
-        //鏌ヨ瀵煎嚭鐨勮垂鐢ㄧ粺璁℃暟鎹�
-
-        //鑾峰彇褰撳墠浜烘墍灞炲疄楠屽id
 
         Integer createOrderUser = dto.getCreateOrderUser();
         String queryStatus = dto.getQueryStatus();
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/constant/DeviceImpowerConstants.java b/ruoyi-common/src/main/java/com/ruoyi/common/constant/DeviceImpowerConstants.java
new file mode 100644
index 0000000..1971195
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/constant/DeviceImpowerConstants.java
@@ -0,0 +1,65 @@
+package com.ruoyi.common.constant;
+
+/**
+ * @Author zhuo
+ * @Date 2025/4/18
+ */
+public class DeviceImpowerConstants {
+
+    /**
+     * 鑰佸寲瀹ょ淮鎶ゅ唴瀹�
+     */
+    public static final String AGING_MAINTENANCE_CONTENT = "aging_maintenance_content";
+
+    /**
+     * 鐢垫�ц兘瀹為獙瀹ょ淮鎶ゅ唴瀹�
+     */
+    public static final String ELECTRICAL_MAINTENANCE_CONTENT = "electrical_maintenance_content";
+
+    /**
+     * 鐜瀹為獙瀹ょ淮鎶ゅ唴瀹�
+     */
+    public static final String ENVIRONMENTAL_MAINTENANCE_CONTENT = "environmental_maintenance_content";
+
+    /**
+     * 鐕冪儳瀹為獙瀹ょ淮鎶ゅ唴瀹�
+     */
+    public static final String BURN_MAINTENANCE_CONTENT = "burn_maintenance_content";
+
+    /**
+     * 娣风偧瀹為獙瀹ょ淮鎶ゅ唴瀹�
+     */
+    public static final String MIXING_MAINTENANCE_CONTENT = "mixing_maintenance_content";
+
+    /**
+     * 妫�娴嬩腑蹇冪數鎬ц兘瀹為獙瀹ょ淮鎶ゅ唴瀹�
+     */
+    public static final String CENTER_ELECTRICAL_MAINTENANCE_CONTENT = "center_electrical_maintenance_content";
+
+    /**
+     * 鎭掓俯浜岀淮鎶ゅ唴瀹�
+     */
+    public static final String TEMPERATURE2_MAINTENANCE_CONTENT = "temperature2_maintenance_content";
+
+
+    /**
+     * 鎭掓俯涓�缁存姢鍐呭
+     */
+    public static final String TEMPERATURE1_MAINTENANCE_CONTENT = "temperature1_maintenance_content";
+
+    /**
+     * 鍖栧瀹為獙瀹ょ淮鎶ゅ唴瀹�
+     */
+    public static final String CHEMISTRY_MAINTENANCE_CONTENT = "chemistry_maintenance_content";
+
+    /**
+     * 鍒舵牱瀹ょ淮鎶ゅ唴瀹�
+     */
+    public static final String SAMPLE_MAINTENANCE_CONTENT = "sample_maintenance_content";
+
+
+    /**
+     * 浣庢俯瀹為獙瀹ょ淮鎶ゅ唴瀹�
+     */
+    public static final String HYPOTHERMIA_MAINTENANCE_CONTENT = "hypothermia_maintenance_content";
+}
diff --git a/ruoyi-system/src/main/resources/mapper/system/UserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/UserMapper.xml
index 4a16c32..e3a4e6e 100644
--- a/ruoyi-system/src/main/resources/mapper/system/UserMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/UserMapper.xml
@@ -91,7 +91,9 @@
                name_en,
                status
         from user u
-        where depart_lims_id = (select u2.depart_lims_id
+        where depart_lims_id is not null
+          and depart_lims_id != ''
+          and depart_lims_id = (select u2.depart_lims_id
                                 from user u2
                                 where u2.id = #{userId})
     </select>

--
Gitblit v1.9.3