diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/support/hcs/HcsContractSyncSupport.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/support/hcs/HcsContractSyncSupport.java
index 28465d7c..c527c9b6 100644
--- a/blade-service/blade-transport/src/main/java/org/springblade/transport/support/hcs/HcsContractSyncSupport.java
+++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/support/hcs/HcsContractSyncSupport.java
@@ -74,7 +74,7 @@ import java.util.Objects;
* HCS 合同同步支撑组件(C103-1 发起 / C103-11 更新,设计文档 §5.2)
*
* 扫描任务按序执行:⓪ 特批挂起门禁 → ① 客商风险校验(可配开关,仅留痕,高风险不再阻断)→
- * ② 附件转传(v4 挂载点 fdFieldJson.attachment,随 C103-1 挂载)→ ③ C103-3 判重(§9-U4 查询能力联调确认)→
+ * ② 附件转传(挂载点为与 fdFieldJson 同级的顶层 attachment,随 C103-1 挂载)→ ③ C103-3 判重(§9-U4 查询能力联调确认)→
* ④ C103-1 起草 / 变更单 C103-11 更新(§9-U5 定位方式待联调)→ ⑤ 履约计划 C103-9 行级同步({@link HcsExeStageSyncSupport},
* 仅依赖 hcs_fd_id,先于特批挂起执行,失败补偿不被特批门禁阻塞)→ ⑥ 高风险/黑名单挂起"特批审核"
* (外部客商管控:报文随 fdSepcailContract=true 在合规侧走特批,{@link HcsContractSpecSyncSupport} 接收结果)。
@@ -129,7 +129,7 @@ public class HcsContractSyncSupport {
if (hcsProperties.getContract().isRequireRiskCheck()) {
risky = checkRelativeRisk(contractManage);
}
- // ② 附件转传(v4 已明确挂载点:C103-1 fdFieldJson.attachment,转传取得合规附件引用后随发起报文挂载)
+ // ② 附件转传(v4 已明确挂载点:C103-1 顶层 attachment,与 fdFieldJson 同级,转传取得合规附件引用后随发起报文挂载)
List attachmentRefs = transferAttachmentsIfEnabled(contractManage);
// ③④ 首推判重后起草(C103-1);已有合规ID(变更单)走更新(C103-11)
String resultMessage;
@@ -307,7 +307,7 @@ public class HcsContractSyncSupport {
/**
* 组装 C103-1/C103-11 入参(字段标注照 §3.4 规范,映射表见设计文档 §5.2);
- * attachmentRefs 新建传合规附件引用列表(fdId+fdEntityKey,必填,无附件传空列表),更新传 null 不挂载
+ * attachmentRefs 新建传合规附件引用列表(顶层 attachment,fdId+fdEntityKey,必填,无附件传空列表),更新传 null 不挂载
*/
private HcsContractDraftDTO buildDraftParam(ContractManage contractManage, List attachmentRefs, boolean risky) {
HcsContractDraftDTO param = new HcsContractDraftDTO();
@@ -325,11 +325,11 @@ public class HcsContractSyncSupport {
fieldJson.setXformFields(buildXformFields(contractManage, risky));
// 相对方(签署方):甲方/乙方,编号按名称反查 CustomerArchive(§9-U6)
fieldJson.setSigner(buildSigners(contractManage));
- // 【必填】附件数据:C103-1 必填(无附件传空列表),fdEntityKey=特批 eopCdraftSpecial/用印 eopCdraftSign/其他 eopCdraftOther,
+ // 【必填】附件数据:与 fdFieldJson 同级的顶层 attachment,C103-1 必填(无附件传空列表),fdEntityKey=特批 eopCdraftSpecial/用印 eopCdraftSign/其他 eopCdraftOther,
// fdBindType=ADD;更新不挂载(传 null)
if (attachmentRefs != null) {
- fieldJson.setAttachment(new ArrayList<>(attachmentRefs));
- for (HcsAttachmentRefDTO attachment : fieldJson.getAttachment()) {
+ param.setAttachment(new ArrayList<>(attachmentRefs));
+ for (HcsAttachmentRefDTO attachment : param.getAttachment()) {
// 【必填】操作类型:ADD 新增
attachment.setFdBindType("ADD");
}
@@ -449,7 +449,7 @@ public class HcsContractSyncSupport {
/**
* 附件转传(可配开关):合同主文件 approved=true(挂 eopCdraftSign)+ 其它附件(挂 eopCdraftOther),
- * 返回合规附件引用列表(挂载 C103-1 fdFieldJson.attachment)
+ * 返回合规附件引用列表(挂载 C103-1 顶层 attachment,与 fdFieldJson 同级)
*/
private List transferAttachmentsIfEnabled(ContractManage contractManage) {
if (!hcsProperties.getAttachment().isTransferEnabled()) {
diff --git a/blade-third-party-api/blade-hcs-api/src/main/java/org/springblade/hcs/dto/HcsContractDraftDTO.java b/blade-third-party-api/blade-hcs-api/src/main/java/org/springblade/hcs/dto/HcsContractDraftDTO.java
index d105f8ba..56717899 100644
--- a/blade-third-party-api/blade-hcs-api/src/main/java/org/springblade/hcs/dto/HcsContractDraftDTO.java
+++ b/blade-third-party-api/blade-hcs-api/src/main/java/org/springblade/hcs/dto/HcsContractDraftDTO.java
@@ -31,6 +31,7 @@ import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
+import java.util.List;
/**
* 合同合规系统(HCS)C103-1 合同发起入参(C103-11 合同更新入参结构相同,复用本 DTO)
@@ -67,4 +68,8 @@ public class HcsContractDraftDTO implements Serializable {
* 合同字段(模板字段 + 签署方)
*/
private HcsContractFieldJsonDTO fdFieldJson;
+ /**
+ * 附件数据(与 fdFieldJson 同级;C103-1 必填,无附件传空列表,C103-11 更新不传;fdEntityKey 普通附件枚举待合规方给出,暂不传)
+ */
+ private List attachment;
}
diff --git a/blade-third-party-api/blade-hcs-api/src/main/java/org/springblade/hcs/dto/HcsContractFieldJsonDTO.java b/blade-third-party-api/blade-hcs-api/src/main/java/org/springblade/hcs/dto/HcsContractFieldJsonDTO.java
index 718c39b4..addf81ae 100644
--- a/blade-third-party-api/blade-hcs-api/src/main/java/org/springblade/hcs/dto/HcsContractFieldJsonDTO.java
+++ b/blade-third-party-api/blade-hcs-api/src/main/java/org/springblade/hcs/dto/HcsContractFieldJsonDTO.java
@@ -36,7 +36,7 @@ import java.util.List;
/**
* 合同合规系统(HCS)C103-1 合同发起 fdFieldJson 节点(C103-1 新建 / C103-11 更新共用)
*
- * v4 文档已定义 attachment 附件挂载(fdId/fdBindType 必填,fdEntityKey 仅给出特批附件枚举 eopCdraftSpecial)。
+ * 附件挂载在顶层报文 attachment(与 fdFieldJson 同级),见 HcsContractDraftDTO。
*
* @author Chill
*/
@@ -54,8 +54,4 @@ public class HcsContractFieldJsonDTO implements Serializable {
* 签署方(相对方)列表
*/
private List signer;
- /**
- * 附件数据(C103-1 必填,C103-11 更新不传;fdEntityKey 普通附件枚举待合规方给出,暂不传)
- */
- private List attachment;
}