From e2e757012eadfdab855d3b27d64cbc9f765b8cb0 Mon Sep 17 00:00:00 2001 From: gjh <1421wake> Date: Mon, 24 Mar 2025 14:57:44 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E6=9C=8D=E5=8A=A1=E5=86=85?= =?UTF-8?q?=E5=AE=B9=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AgreementInfoController.java | 53 +++++++++++++++++- .../resources/服务内容导入模版.xlsx | Bin 0 -> 9226 bytes 2 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 ruoyi-modules/guoyan-platform/src/main/resources/服务内容导入模版.xlsx diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/AgreementInfoController.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/AgreementInfoController.java index 68bff48..84db97a 100644 --- a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/AgreementInfoController.java +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/AgreementInfoController.java @@ -1,18 +1,20 @@ package org.dromara.platform.controller; -import java.io.IOException; +import java.io.*; +import java.net.URLEncoder; import java.util.List; import com.alibaba.excel.EasyExcel; +import jakarta.mail.internet.MimeUtility; +import jakarta.servlet.ServletOutputStream; import lombok.RequiredArgsConstructor; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.*; import cn.dev33.satoken.annotation.SaCheckPermission; import lombok.extern.slf4j.Slf4j; import org.dromara.platform.domain.AgreementInfo; -import org.dromara.platform.domain.ProjectManager; import org.dromara.platform.listener.AgreementInfoListener; -import org.dromara.platform.listener.ProjectManagerListener; +import org.springframework.core.io.ClassPathResource; import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; import org.dromara.common.idempotent.annotation.RepeatSubmit; @@ -125,4 +127,49 @@ public class AgreementInfoController extends BaseController { log.info("导入协议信息表数据成功! 共用时:{}ms",(t2-t1)); } + + + @GetMapping("downLoadTemplate") + public void downLoadTemplate(HttpServletResponse httpServletResponse) { + InputStream inputStream = null; + try (ServletOutputStream outputStream = httpServletResponse.getOutputStream()) { + //设置响应头信息,包括下载后的文件名和编码等 + String fileName = "服务内容导入模版.xlsx"; + String encodedFileName = MimeUtility.encodeText(fileName, "UTF-8", "B"); // 使用 MIME 编码 + httpServletResponse.addHeader("Content-Disposition", "attachment; filename=\"" + encodedFileName + "\"; filename*=utf-8''" + URLEncoder.encode(fileName, "UTF-8")); + httpServletResponse.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + httpServletResponse.setCharacterEncoding("UTF-8"); + //在文件夹里获取到文件并转为流 + inputStream = new ClassPathResource("/服务内容导入模版.xlsx").getInputStream(); + byte[] b = streamToByteArray(inputStream); + httpServletResponse.getOutputStream().write(b); + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (inputStream != null) { + try { + inputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + //文件流转字节方法 + public static byte[] streamToByteArray(InputStream in) throws Exception { + ByteArrayOutputStream output = new ByteArrayOutputStream(); + byte[] buffer = new byte[4096]; + int n; + while (-1 != (n = in.read(buffer))) { + output.write(buffer, 0, n); + } + return output.toByteArray(); + } + + + + + + } diff --git a/ruoyi-modules/guoyan-platform/src/main/resources/服务内容导入模版.xlsx b/ruoyi-modules/guoyan-platform/src/main/resources/服务内容导入模版.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..38c2305a3b09b06318d916c62a0a72dafdd34785 GIT binary patch literal 9226 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 literal 0 HcmV?d00001