From 234b0ac195934b34c06045b2d2ef0f10e239dd8e Mon Sep 17 00:00:00 2001
From: zhuo <2089219845@qq.com>
Date: 星期三, 23 四月 2025 00:06:54 +0800
Subject: [PATCH] 系统合并

---
 cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceImpl.java |  168 ++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 139 insertions(+), 29 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 7c28152..47ec658 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,18 +1,34 @@
 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.ruoyi.device.excel.DeviceMaintenanceExport;
+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 org.apache.commons.lang3.ObjectUtils;
+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;
@@ -20,57 +36,99 @@
 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;
+
+    /**
+     * 璁惧缁存姢鍒嗛〉鏌ヨ
+     * @return
+     */
     @Override
-    public IPage<DeviceMaintenance> getDeviceMaintenancePage(Page page, Integer deviceId, String deviceNumber) {
-        if (ObjectUtils.isEmpty(deviceNumber)){
-            return baseMapper.selectPage(page, Wrappers.<DeviceMaintenance>lambdaQuery()
-                    .eq(DeviceMaintenance::getDeviceId, deviceId));
+    public IPage<DeviceMaintenanceDto> selectDeviceMaintenancePage(Page page, DeviceMaintenanceDto deviceMaintenance) {
+        if (deviceMaintenance.getDeviceId() == null) {
+            return new Page();
         }
-       else return baseMapper.selectPage(page, Wrappers.<DeviceMaintenance>lambdaQuery()
-                .eq(DeviceMaintenance::getDeviceId, deviceId)
-                .like(DeviceMaintenance::getDeviceNumber, deviceNumber));
+        return baseMapper.selectDeviceMaintenancePage(page, QueryWrappers.queryWrappers(deviceMaintenance));
     }
 
+    /**
+     * 瀵煎嚭璁惧缁存姢淇濆吇
+     * @param deviceId
+     * @param response
+     */
     @Override
-    public void exportMaintenanceRecord(Integer deviceId, HttpServletResponse response) {
-        // 鏌ヨcnas璁惧缁翠慨璁板綍
+    public void exportDeviceMaintenance(Integer deviceId, HttpServletResponse response) {
+        // 鏌ヨ璁惧缁存姢淇濆吇
         List<DeviceMaintenance> deviceMaintenanceList = baseMapper.selectList(Wrappers.<DeviceMaintenance>lambdaQuery()
-                .eq(DeviceMaintenance::getDeviceId, deviceId)
-                .select(DeviceMaintenance::getDate,
-                        DeviceMaintenance::getDeviceNumber,
-                        DeviceMaintenance::getDeviceName,
-                        DeviceMaintenance::getManagementNumber,
-                        DeviceMaintenance::getContent,
-                        DeviceMaintenance::getName,
-                        DeviceMaintenance::getComments));
+                .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/maintenance-records.docx");
+        InputStream inputStream = this.getClass().getResourceAsStream("/static/word/device-maintenance.docx");
         Configure configure = Configure.builder()
-                .bind("deviceMaintenanceList", new HackLoopTableRenderPolicy())
+                .bind("deviceMaintenances", new HackLoopTableRenderPolicy())
                 .build();
-        // 鑾峰彇璁惧 鍚嶇О 鍜� 缂栧彿
-        DeviceMaintenance deviceMaintenance = deviceMaintenanceList.get(0);
-        String deviceName = deviceMaintenance.getDeviceName();
-        String managementNumber = deviceMaintenance.getManagementNumber();
         XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
                 new HashMap<String, Object>() {{
-                    put("deviceMaintenanceList", deviceMaintenanceList);
-                    put("deviceName", deviceName);
-                    put("managementNumber", managementNumber);
+                    put("device", deviceMaintenanceDto);
+                    put("deviceMaintenances", deviceMaintenanceList);
                 }});
 
         try {
             response.setContentType("application/msword");
             String fileName = URLEncoder.encode(
-                    "璁惧缁存姢淇濆吇璁板綍", "UTF-8");
+                    "璁惧淇濆吇缁存姢", "UTF-8");
             response.setHeader("Content-disposition",
                     "attachment;filename=" + fileName + ".docx");
             OutputStream os = response.getOutputStream();
@@ -81,6 +139,58 @@
             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