修复金综流水多文件拉取处理

This commit is contained in:
wjj
2026-07-21 16:42:45 +08:00
parent ffaa2fb2a0
commit 2bcba71259
4 changed files with 156 additions and 20 deletions

View File

@@ -0,0 +1,20 @@
# 金综流水多 logId 处理后端实施计划
## 背景
金综 `dataChannelCode=JZL` 拉取链路可能在一次请求中返回多个 XML 文件对应的多个 `logId`。接入端如果只处理首个 `logId`,会导致同一证件号下后续金综 XML 文件未进入解析状态轮询、上传状态查询和流水明细落库。
## 实施内容
- 将金综拉取响应处理从单个 `logId` 改为遍历 `response.data` 中全部非空 `logId`
- 第一个 `logId` 复用拉取提交时创建的上传记录。
- 第二个及后续 `logId` 自动创建独立上传记录,避免多个 XML 的文件名、账号、解析状态相互覆盖。
- 每个 `logId` 独立执行解析状态轮询、文件状态查询、流水明细获取和落库。
- 继续沿用最新代码中的 `CallerContext`,确保流水平台调用仍写入外部接口日志。
- 单个 `logId` 失败只标记对应记录失败,不中断其余 `logId`;本次证件号任务至少一个 `logId` 成功即视为成功。
## 验证计划
- 补充单元测试模拟金综返回 3 个 `logId`
- 验证 3 个 `logId` 均调用解析状态轮询和流水明细查询。
- 验证后续 `logId` 会新增独立上传记录,并保留证件号、上传人和上传中状态。

View File

@@ -0,0 +1,23 @@
# 金综流水多 logId 处理实施记录
## 修改内容
- 修复拉取金综流水时只处理首个 `logId` 的问题。
- `FetchInnerFlowResponse.data` 中多个 `logId` 现在会逐个进入解析状态轮询、上传状态查询和流水明细落库。
- 第一个 `logId` 复用原上传记录,后续 `logId` 自动新增独立上传记录。
- 单个 `logId` 处理失败时只更新对应记录为失败,不影响其余 `logId` 继续处理。
- 基于最新 `origin/dev-ui` 实施,保留 `CallerContext` 外部接口日志链路。
## 影响范围
- `/ccdi/file-upload/pull-bank-info` 金综 `JZL` 拉取后的异步处理链路。
- 项目详情上传数据列表中金综多 XML 文件对应的上传记录展示。
- 后续流水明细保存与自动打标触发判断。
## 验证情况
- 后端单测通过:
- `mvn -pl ccdi-project -am test "-Dtest=CcdiFileUploadServiceImplTest" "-Dsurefire.failIfNoSpecifiedTests=false"`
- 结果36 个测试通过。
- 新增用例覆盖金综返回 3 个 `logId` 的场景,确认 3 个 `logId` 均进入解析状态轮询和流水明细查询,且后续 `logId` 会新增独立上传记录。
- 验证多 `logId` 处理继续传递同一个 `CallerContext`,兼容最新外部接口日志链路。