From bdb1d3e4bb2d44a50f7c9f5cafdb30a8ebb8ee32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=B3=89=E4=BD=B3?= <1107186916@qq.com> Date: Tue, 27 Oct 2026 19:19:07 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=87=91=E8=9D=B6=E4=B8=8E=E5=89=8D?= =?UTF-8?q?=E7=AB=AF=E5=B1=95=E7=A4=BA=E7=BB=9F=E4=B8=80=E7=89=B9=E6=89=B9?= =?UTF-8?q?=E9=99=84=E4=BB=B6=E5=90=8D=E4=B8=BA=E4=BB=98=E6=AC=BE=E7=89=B9?= =?UTF-8?q?=E6=89=B9=E6=B5=81=E7=A8=8B=E9=99=84=E4=BB=B6.pdf?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit resolveHcsFileName 改为统一业务名+扩展名(扩展名仍取C103-5响应头Content-Disposition后缀,其次Content-Type映射,兜底.pdf),不再上送合规侧原始名(文档内容.pdf);名称收敛为常量 PAYMENT_SPEC_ATTACH_NAME 供金蝶上送与前端展示行共用 --- .../transport/constant/HcsSyncConstant.java | 5 ++++ .../impl/PaymentApplicationServiceImpl.java | 7 ++--- .../support/KingdeeAttachmentSyncSupport.java | 27 ++++++++++++------- 3 files changed, 27 insertions(+), 12 deletions(-) diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/constant/HcsSyncConstant.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/constant/HcsSyncConstant.java index 5585ea46..26c54bb0 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/constant/HcsSyncConstant.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/constant/HcsSyncConstant.java @@ -195,6 +195,11 @@ public final class HcsSyncConstant { */ public static final String PAYMENT_ATTACH_TYPE_SPEC_RESULT = "spec_result"; + /** + * 合规特批结果附件统一业务名(金蝶上送与前端展示用,上传时按 C103-5 响应头补扩展名) + */ + public static final String PAYMENT_SPEC_ATTACH_NAME = "付款特批流程附件"; + /** * 附件类型:用印附件(双章归档文件,取值沿用 ContractManageServiceImpl#FILE_TYPE_SEAL_ARCHIVE) */ diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/PaymentApplicationServiceImpl.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/PaymentApplicationServiceImpl.java index e91c6ba1..63da966d 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/PaymentApplicationServiceImpl.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/PaymentApplicationServiceImpl.java @@ -606,11 +606,11 @@ public class PaymentApplicationServiceImpl extends BaseServiceImpl row instanceof Map map && HcsSyncConstant.PAYMENT_ATTACH_TYPE_SPEC_RESULT.equals(map.get("attachmentType"))); Map specRow = new LinkedHashMap<>(); - specRow.put("name", "付款特批附件.pdf"); + specRow.put("name", HcsSyncConstant.PAYMENT_SPEC_ATTACH_NAME + ".pdf"); specRow.put("attachmentType", HcsSyncConstant.PAYMENT_ATTACH_TYPE_SPEC_RESULT); // 网关按服务名前缀路由(口径同 nacos skip-url);inline 内嵌预览 pdf,浏览器可直接查看/另存 specRow.put("url", "/blade-transport/hcs/attachment/download?fdId=" + vo.getHcsSpecAttachFdId() - + "&inline=true&name=" + URLEncoder.encode("付款特批附件.pdf", StandardCharsets.UTF_8)); + + "&inline=true&name=" + URLEncoder.encode(HcsSyncConstant.PAYMENT_SPEC_ATTACH_NAME + ".pdf", StandardCharsets.UTF_8)); rows.add(specRow); vo.setAttachmentsJson(JsonUtil.toJson(rows)); } catch (Exception exception) { @@ -636,7 +636,8 @@ public class PaymentApplicationServiceImpl extends BaseServiceImpl 0) { return name; } - String fromDisposition = fileNameFromDisposition(firstHeader(response, "Content-Disposition")); - if (Func.isNotBlank(fromDisposition) && fromDisposition.lastIndexOf('.') > 0) { - return fromDisposition; + String extension = extensionOf(fileNameFromDisposition(firstHeader(response, "Content-Disposition"))); + if (Func.isBlank(extension)) { + extension = extensionOfContentType(firstHeader(response, "Content-Type")); } - return name + extensionOfContentType(firstHeader(response, "Content-Type")); + return name + extension; + } + + /** 取文件名扩展名(含点,无扩展名返回空串) */ + private String extensionOf(String fileName) { + String name = Func.isBlank(fileName) ? "" : fileName.trim(); + int index = name.lastIndexOf('.'); + return index > 0 && index < name.length() - 1 ? name.substring(index) : ""; } /**