From b4a9e30287ff8e987f878ea5a1979dd6b6050f71 Mon Sep 17 00:00:00 2001 From: b2894lxlx <517289602@qq.com> Date: Tue, 8 Sep 2026 11:54:46 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=A7=A3=E5=8E=8B=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/VoucherManageServiceImpl.java | 74 +++++++++++++++---- 1 file changed, 61 insertions(+), 13 deletions(-) diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/VoucherManageServiceImpl.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/VoucherManageServiceImpl.java index 0a8e28e..a9a1d23 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/VoucherManageServiceImpl.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/VoucherManageServiceImpl.java @@ -49,8 +49,12 @@ import java.util.Objects; import java.util.stream.Collectors; import java.io.BufferedInputStream; import java.io.InputStream; +import java.io.OutputStream; import java.net.URLConnection; +import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.HashMap; import java.util.HashSet; import java.util.Set; @@ -247,8 +251,12 @@ public class VoucherManageServiceImpl extends BaseServiceImpl relatedWaybillIds = new HashSet<>(); - try (InputStream source = openSourceFile(voucher.getFileUrl()); - ZipInputStream zipInputStream = new ZipInputStream(new BufferedInputStream(source), StandardCharsets.UTF_8)) { + Path archivePath = downloadSourceFile(voucher.getFileUrl()); + try { + Charset archiveCharset = detectArchiveCharset(archivePath); + log.info("[凭证处理] 已识别压缩包文件名编码 voucherId={}, charset={}", voucherId, archiveCharset.name()); + try (InputStream source = Files.newInputStream(archivePath); + ZipInputStream zipInputStream = new ZipInputStream(new BufferedInputStream(source), archiveCharset)) { ZipEntry entry; while ((entry = zipInputStream.getNextEntry()) != null) { if (entry.isDirectory()) { @@ -322,17 +330,20 @@ public class VoucherManageServiceImpl extends BaseServiceImpl