# 与客户之间非正常资金往来实施记录 ## 本次修改 - 调整 `ABNORMAL_CUSTOMER_TRANSACTION` 模型执行 SQL。 - 调整“涉疑交易明细 -> 名单库命中” SQL。 - 调整涉疑交易明细前端标签展示。 - 补充 SQL 口径测试,不改表结构。 ## 模型 SQL 口径 - 位置:`ccdi-project/src/main/resources/mapper/ccdi/project/CcdiBankTagAnalysisMapper.xml` - 主体范围:员工本人、`ccdi_staff_fmy_relation.status = 1` 的有效亲属。 - 金额口径:`GREATEST(IFNULL(amount_dr, 0), IFNULL(amount_cr, 0)) > 1000`。 - 信贷客户命中:对手方账号命中 `ccdi_account_info.owner_type = 'CREDIT_CUSTOMER'`。 - 中介账号命中:对手方账号命中 `ccdi_account_info.owner_type = 'INTERMEDIARY'`。 - 中介企业命中:对手方名称精确命中 `ccdi_enterprise_base_info.enterprise_name`,且企业来源为中介。 - 中介人员精确命中:对手方名称精确命中 `ccdi_biz_intermediary.name`。 - 中介人员模糊命中:对手方名称包含 `ccdi_biz_intermediary.name`,仅限 `bank in ('ALIPAY', 'WECHAT')`。 - 明确不再使用对手方证件号、对手方统一社会信用代码命中。 ## 名单库命中口径 - 位置:`ccdi-project/src/main/resources/mapper/ccdi/project/CcdiProjectOverviewMapper.xml` - 信贷客户账号命中时,`nameListHitType` 返回“信贷客户”。 - 中介账号、人员名称、企业名称命中时,`nameListHitType` 返回“中介”。 - 名单库命中同样要求交易金额大于 1000。 - 涉疑交易明细和 PDF 导出按 `bank_statement_id` 聚合,避免同一流水因“模型规则命中”和“名单库命中”重复展示。 ## 前端展示 - 位置:`ruoyi-ui/src/views/ccdiProject/components/detail/RiskDetailSection.vue` - `ABNORMAL_CUSTOMER_TRANSACTION` 在异常标签中优先展示。 - 如果同一流水名单库类型为“中介”,该标签展示为“疑似与中介往来”。 - 如果同一流水名单库类型为“信贷客户”,该标签展示为“与信贷客户之间非正常资金往来”。 - 如果没有名单库类型,兜底展示为“与客户之间非正常资金往来”。 - 不再把“中介/信贷客户”追加成额外异常标签,避免重复展示。 ## 报告展示 - 结果总览 PDF 报告中的涉疑交易明细表同步使用上述标签展示口径。 - 同一条流水只替换 `ABNORMAL_CUSTOMER_TRANSACTION` 的展示文案,不额外追加“中介/信贷客户”标签。 ## 影响文件 - `ccdi-project/src/main/resources/mapper/ccdi/project/CcdiBankTagAnalysisMapper.xml` - `ccdi-project/src/main/resources/mapper/ccdi/project/CcdiProjectOverviewMapper.xml` - `ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiProjectSuspiciousTransactionItemVO.java` - `ccdi-project/src/test/java/com/ruoyi/ccdi/project/mapper/CcdiBankTagAnalysisMapperXmlTest.java` - `ccdi-project/src/test/java/com/ruoyi/ccdi/project/mapper/CcdiProjectOverviewMapperSqlTest.java` - `ruoyi-ui/src/views/ccdiProject/components/detail/RiskDetailSection.vue` - `docs/reports/implementation/2026-05-21-abnormal-customer-transaction-implementation.md` ## 验证情况 - `mvn -pl ccdi-project -am -DskipTests compile` 通过。 - `mvn -pl ccdi-project "-Dtest=CcdiBankTagAnalysisMapperXmlTest,CcdiProjectOverviewMapperSqlTest" test` 通过,21 个测试。 - 测试覆盖的伪造场景口径: - 信贷客户账号命中。 - 中介账号命中。 - 中介人员名称精确命中。 - 中介人员名称模糊命中仅限 `ALIPAY/WECHAT`。 - 名单库命中金额门槛大于 1000。 - 涉疑交易明细按 `bank_statement_id` 聚合去重。 - 涉疑交易明细和 PDF 报告按名单库类型细分展示异常标签,且不重复展示。