修复流水异常标签展示与导出

This commit is contained in:
wkc
2026-03-19 10:20:58 +08:00
parent e058cec78e
commit 144897237b
17 changed files with 530 additions and 5 deletions

View File

@@ -0,0 +1,26 @@
# 流水明细异常标签后端实施记录
## 修改内容
- 流水列表/详情返回异常标签
- 导出流水返回异常标签列
- 流水标签结果批量查询能力
- 后端单元测试补充
## 实施说明
- 新增 `CcdiBankStatementHitTagVO`,统一承载流水命中的异常标签编码、名称、风险等级和命中原因。
-`CcdiBankStatementListVO``CcdiBankStatementDetailVO` 中新增 `hitTags` 字段,作为流水列表页和详情弹窗的统一返回结构。
-`CcdiBankStatementExcel` 中新增“异常标签”导出列,导出时将命中的标签名称按顺序拼接为文本。
-`CcdiBankTagResultMapper` 中新增按 `projectId + bankStatementIds` 批量查询命中标签的方法,并在 XML 中补充对应 SQL。
-`CcdiBankStatementServiceImpl` 中补充标签挂载逻辑:
- 列表查询完成后,按当前页流水 ID 批量回查标签并分组挂载到每条记录。
- 详情查询完成后,按当前流水 ID 回查标签并挂载到详情对象。
- 导出查询完成后,复用同一套标签回查逻辑,将命中标签名称写入 Excel 导出对象。
- 本次未改动流水标签判定规则,只修复“标签结果已入库但接口未返回”的数据链路缺口。
## 问题定位结论
- 数据库中 `project_id = 43`、摘要为 `ATM现金存款` 的流水记录已存在 `LARGE_CASH_DEPOSIT` 等命中结果。
- 原因是 `ccdi_bank_statement` 列表接口与详情接口此前未将 `ccdi_bank_statement_tag_result` 的命中标签组装到返回 VO 中,导致前端无法展示。
## 验证执行
- 执行 `mvn -pl ccdi-project test -Dtest=CcdiBankTagResultMapperXmlTest,CcdiBankStatementHitTagsContractTest,CcdiBankStatementServiceImplTest`,结果通过。
- 执行 `mvn -pl ccdi-project test -Dtest=CcdiBankStatementHitTagsContractTest,CcdiBankStatementServiceImplTest,CcdiBankStatementControllerTest`,结果通过。

View File

@@ -0,0 +1,22 @@
# 流水明细异常标签前端实施记录
## 修改内容
- 列表异常标签列
- 详情异常标签模块
- 静态测试与构建验证
## 实施说明
-`DetailQuery.vue` 的列表表格中新增“异常标签”列,仅展示 `hitTags` 中的标签名称,并根据风险等级映射标签颜色。
- 在详情弹窗中新增“命中异常标签”模块,展示标签名称、风险等级中文文案和命中原因摘要。
- 列表接口返回值与详情接口返回值统一对 `hitTags` 做数组归一化,避免后端返回 `null` 时影响空态展示。
- 为空标签场景补充统一空态文案,保持列表和详情展示一致。
## 验证执行
- 执行 `node tests/unit/detail-query-filter-layout.test.js`,结果通过。
- 执行 `node tests/unit/detail-query-detail-dialog.test.js`,结果通过。
- 执行 `node tests/unit/detail-query-hit-tags-list.test.js`,结果通过。
- 执行 `npm run build:prod`,结果通过,存在项目既有体积告警,但无新增编译错误。
## 接口说明
- 本次未修改 `ruoyi-ui/src/api/ccdiProjectBankStatement.js`
- 原因:继续复用现有列表与详情接口,仅消费后端扩展后的响应数据结构,不新增前端请求入口。

View File

@@ -0,0 +1,27 @@
# 流水明细异常标签后端验证记录
## 验证范围
- 流水列表返回 `hitTags`
- 流水详情返回 `hitTags`
- 导出流水返回异常标签列
- 标签结果 Mapper 查询能力
- 已入库标签结果的链路核对
## 数据核对
- 2026-03-19 查询 `ccdi_bank_statement``project_id = 43` 下存在摘要为 `ATM现金存款` 的流水记录 `bank_statement_id=51274``bank_statement_id=49342`
- 2026-03-19 查询 `ccdi_bank_statement_tag_result`:上述两条流水均存在 `LARGE_CASH_DEPOSIT``SINGLE_LARGE_INCOME` 命中结果。
## 自动验证
- 2026-03-19 执行 `mvn -pl ccdi-project test -Dtest=CcdiBankTagResultMapperXmlTest,CcdiBankStatementHitTagsContractTest,CcdiBankStatementServiceImplTest`,结果:通过
- 2026-03-19 执行 `mvn -pl ccdi-project test -Dtest=CcdiBankStatementHitTagsContractTest,CcdiBankStatementServiceImplTest,CcdiBankStatementControllerTest`,结果:通过
## 验证结果
- [x] 列表查询结果可挂载命中异常标签
- [x] 详情查询结果可挂载命中异常标签
- [x] 导出对象包含“异常标签”文本列
- [x] 标签结果 Mapper 支持按项目和流水 ID 批量回查
- [x] `ATM现金存款` 对应流水的标签数据已在库内存在
## 联调建议
- 前端刷新 `project_id=43` 的流水明细页面后,重点核对 `bank_statement_id=51274``bank_statement_id=49342` 是否显示“大额存现交易”等异常标签。
- 使用相同筛选条件执行“导出流水”,核对导出文件中的“异常标签”列是否包含“大额存现交易”等标签名称。

View File

@@ -0,0 +1,22 @@
# 流水明细异常标签前端验证记录
## 验证范围
- 列表异常标签列
- 详情异常标签模块
- 空态展示
- 导出入口回归
## 自动验证
- 2026-03-19 执行 `node tests/unit/detail-query-filter-layout.test.js`,结果:通过
- 2026-03-19 执行 `node tests/unit/detail-query-detail-dialog.test.js`,结果:通过
- 2026-03-19 执行 `node tests/unit/detail-query-hit-tags-list.test.js`,结果:通过
- 2026-03-19 执行 `npm run build:prod`,结果:通过
## 验证结果
- [x] 列表显示命中标签名称
- [x] 详情显示名称、风险等级、命中原因摘要
- [x] 无标签时显示空态
- [ ] 导出入口仍可触发下载
## 联调待确认
- 点击“导出流水”按钮后是否仍能正常触发下载