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/java/com/ruoyi/device/service/impl/DeviceMaintenanceImpl.java |  165 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 165 insertions(+), 0 deletions(-)

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;
+    }
 }

--
Gitblit v1.9.3