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 | 25 +++++++++++++++++++------
1 files changed, 19 insertions(+), 6 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 eca1a1e..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;
@@ -493,7 +497,13 @@
// 濉啓涔欐柟淇℃伅
ExportProcessContractVo.Customer partyB = new ExportProcessContractVo.Customer();
- exportProcessContract.setPartyBClientName("");//todo@ 涔欐柟鍏徃鍚嶇О
+ exportProcessContract.setPartyBClientName("澶╂触闃冲厜褰╁嵃鑲′唤鏈夐檺鍏徃");
+ partyB.setBankName("鍐滆澶╂触姝︽竻寮�鍙戝尯鏀");
+ partyB.setBankCode("02061601040014681");
+ partyB.setTaxpayerIdentificationNumber("91120000562687393p");
+ partyB.setAddress("澶╂触姝︽竻鍖哄紑鍙戝尯娉夊窞鍖楄矾29鍙�");
+ partyB.setFax("022-82126666");
+ partyB.setPostCode("301700");
exportProcessContract.setPartyB(partyB);
// 濉啓鍟嗗搧淇℃伅
@@ -525,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<>());
@@ -552,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