From beaed6d077e7c3e9abfad68acb8c587835b5a406 Mon Sep 17 00:00:00 2001
From: baoshiwei <baoshiwei@shlanbao.cn>
Date: 星期六, 12 四月 2025 16:17:16 +0800
Subject: [PATCH] feat(eims): 添加点检计划和保养计划的导入功能

---
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsMaintPlanController.java |   60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 59 insertions(+), 1 deletions(-)

diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsMaintPlanController.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsMaintPlanController.java
index d2005dc..c00d56b 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsMaintPlanController.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsMaintPlanController.java
@@ -1,11 +1,17 @@
 package org.dromara.eims.controller;
 
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URLEncoder;
 import java.util.List;
 
+import jakarta.servlet.ServletOutputStream;
 import lombok.RequiredArgsConstructor;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.constraints.*;
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.validation.annotation.Validated;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
@@ -21,6 +27,7 @@
 import org.dromara.eims.domain.bo.EimsMaintPlanBo;
 import org.dromara.eims.service.IEimsMaintPlanService;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.springframework.web.multipart.MultipartFile;
 
 /**
  * 淇濆吇璁″垝
@@ -65,7 +72,7 @@
     @SaCheckPermission("eims:maintPlan:query")
     @GetMapping("/{id}")
     public R<EimsMaintPlanVo> getInfo(@NotNull(message = "涓婚敭涓嶈兘涓虹┖")
-                                     @PathVariable Long id) {
+                                      @PathVariable Long id) {
         return R.ok(eimsMaintPlanService.queryById(id));
     }
 
@@ -103,4 +110,55 @@
                           @PathVariable Long[] ids) {
         return toAjax(eimsMaintPlanService.deleteWithValidByIds(List.of(ids), true));
     }
+
+    /**
+     * 瀵煎叆鏁版嵁
+     *
+     * @param file          瀵煎叆鏂囦欢
+     * @param updateSupport 鏄惁鏇存柊宸插瓨鍦ㄦ暟鎹�
+     */
+    @Log(title = "淇濆吇璁″垝", businessType = BusinessType.IMPORT)
+    @SaCheckPermission("eims:maintPlan:import")
+    @PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
+    public R<Void> importData(@RequestPart("file") MultipartFile file, boolean updateSupport) throws Exception {
+        //ExcelResult<MaintCheckItemVo> result = ExcelUtil.importExcel(file.getInputStream(), MaintCheckItemVo.class, new MaintCheckItemImportListener(updateSupport));
+
+
+        String res = eimsMaintPlanService.importData(file, updateSupport);
+
+        return R.ok(res);
+    }
+
+    /**
+     * 鑾峰彇瀵煎叆妯℃澘
+     */
+    @PostMapping("/importTemplate")
+    public void importTemplate(HttpServletResponse response) throws IOException {
+        // 璁剧疆鍝嶅簲绫诲瀷
+        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+        response.setCharacterEncoding("utf-8");
+
+        // 璁剧疆鏂囦欢鍚�
+        String fileName = URLEncoder.encode("淇濆吇璁″垝瀵煎叆妯℃澘", "UTF-8");
+        response.setHeader("Content-Disposition",
+            "attachment;filename=" + fileName + ".xls");
+
+        // 璇诲彇妯℃澘鏂囦欢
+        ClassPathResource templateResource = new ClassPathResource("template/by.xls");
+        try (InputStream inputStream = templateResource.getInputStream();
+             ServletOutputStream outputStream = response.getOutputStream()) {
+
+            // 娴佹嫹璐�
+            byte[] buffer = new byte[1024];
+            int bytesRead;
+            while ((bytesRead = inputStream.read(buffer)) != -1) {
+                outputStream.write(buffer, 0, bytesRead);
+            }
+        } catch (IOException e) {
+            throw new RuntimeException("妯℃澘鏂囦欢璇诲彇澶辫触", e);
+        }
+    }
 }
+
+
+

--
Gitblit v1.9.3