:feat: 合同附件挂载按 eopCdraft 枚举分类(fdEntityKey)

- HcsSyncConstant 新增 CONTRACT_ATTACH_KEY_SPECIAL/SEAL/OTHER(eopCdraftSpecial/eopCdraftSign/eopCdraftOther)
- 转传接口返回 HcsAttachmentRefDTO(fdId+fdEntityKey+fdFileName),替代纯 fdId 列表
- 合同链路:主文件 approved=true 挂 eopCdraftSign、其它附件挂 eopCdraftOther、特批说明挂 eopCdraftSpecial
- buildDraftParam 直接消费引用列表统一补 fdBindType=ADD;特批付款/履约记录/收票单/开票登记四个挂载点改为在返回引用上补各自字段,行为不变
This commit is contained in:
刘泉佳
2026-10-12 16:52:39 +08:00
parent 9e4b8a6d58
commit 63c2f7ed1e
8 changed files with 192 additions and 169 deletions
@@ -82,7 +82,7 @@ org.springblade.transport
│ ├── HcsSpecPaySyncSupport.java # 特批 C106-3/4
│ ├── HcsInvoiceRegSyncSupport.java # 开票登记 C111
│ ├── HcsReceiptBillSyncSupport.java # 收票单 C109
│ └── HcsAttachmentSupport.java # 附件转传 + TMS→HCS 附件ID映射缓存
│ └── HcsAttachmentSupport.java # 附件转传 + TMS→HCS 附件ID映射同步表(blade_hcs_attachment_sync)
├── task/HcsPushTask.java # @Scheduled 扫描首推/补偿(照 PaymentKingdeeResultTask 模式)
├── controller/HcsSyncController.java # 手动推送/重推、校验重放、对账查询端点
└── entity/HcsContractExeStage.java # 履约规则实体(blade-transport-api)
@@ -338,7 +338,7 @@ flowchart LR
1. 输入:单据 `attachmentsJson`/`contractFileJson`(JSON 元素含 url/fileType/approved 等,去重键照 `attachmentKey` 惯例 url|link|fileUrl|downloadUrl|uid|originalName)。
2. 下载:按元数据 URL 从文件服务拉取流(文件服务基址可配 `attachment.file-download-base`)。
3. 上传:C103-2 multipart(fdFile、fdAnonymous=false、fdLoginName=操作人)→ 附件 `fdId`。
4. 映射缓存:Redis `hcs:att:{attachmentKey}` → 合规 fdId(TTL 7d),未命中重传(重复上传仅浪费存储,无业务风险,故不做持久化映射表)。
4. 映射同步表:`blade_hcs_attachment_sync`(biz_type+biz_id+attachment_key 唯一,照金蝶附件同步表设计)落业务单据 → 合规 fdId 映射,转传前查命中即复用;仅落成功记录(失败整单重试,原因落单据 hcs_sync_msg)。
5. 任一附件转传失败 → 整单推送失败进补偿重试。
---