From 661d3c6bd42733aeb0ca83aee72f6b83bef4de36 Mon Sep 17 00:00:00 2001
From: buhuazhen <hua100783@gmail.com>
Date: 星期三, 18 三月 2026 16:30:56 +0800
Subject: [PATCH] fix(sales): 修复导出合同文件名编码及空指针问题
---
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java | 17 ++++++++++++-----
1 files changed, 12 insertions(+), 5 deletions(-)
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
index 94fbcd4..0e9f52f 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -3,7 +3,6 @@
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.LocalDateTimeUtil;
-import cn.hutool.core.io.FileUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -25,7 +24,10 @@
import com.ruoyi.common.enums.FileNameType;
import com.ruoyi.common.enums.SaleEnum;
import com.ruoyi.common.exception.base.BaseException;
-import com.ruoyi.common.utils.*;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.EnumUtil;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.security.LoginUser;
import com.ruoyi.framework.web.domain.AjaxResult;
@@ -65,6 +67,8 @@
import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.math.RoundingMode;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
@@ -531,7 +535,7 @@
}
@SneakyThrows
- private void exportProcessContractToWord(@NotNull ExportProcessContractVo exportProcessContract){
+ private void exportProcessContractToWord(@NotNull ExportProcessContractVo exportProcessContract) {
// 纭繚 saleProducts 涓嶄负 null
if (exportProcessContract.getSaleProducts() == null) {
exportProcessContract.setSaleProducts(new ArrayList<>());
@@ -558,9 +562,12 @@
HttpServletResponse response =
((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes()))
.getResponse();
+ String rawFileName = StrUtil.format("{}-{}鍚堝悓.docx",
+ exportProcessContract.getPartyAClientName(),
+ exportProcessContract.getCreateTime());
+ String encodedFileName = URLEncoder.encode(rawFileName, StandardCharsets.UTF_8.toString());
+ response.setHeader("Content-Disposition", "attachment; filename*=UTF-8''" + encodedFileName);
response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document");
- response.setHeader("Content-Disposition", "attachment;filename="+ StrUtil.format("{}-{}",exportProcessContract.getPartyAClientName(),exportProcessContract.getCreateTime()) +"鍚堝悓.docx");
-
template.write(response.getOutputStream());
template.close();
response.flushBuffer();
--
Gitblit v1.9.3