:fix: 合同发起附件attachment上移至顶层与fdFieldJson同级并同步接口文档

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