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) : ""; } /**