2.1 KiB
2.1 KiB
Project 51 预警人数异常修复记录
本次改动
- 修复
ccdi-project模块中采购类规则未按项目人员范围过滤的问题。 - 在
ccdi-project/src/main/resources/mapper/ccdi/project/CcdiBankTagAnalysisMapper.xml新增projectScopedDirectStaffSql片段,统一收敛“当前项目流水中已识别员工”的范围。 - 将
selectLargePurchaseTransactionStatements改为仅统计当前项目员工对应的采购记录。 - 将
selectSupplierConcentrationObjects改为仅统计当前项目员工对应的采购记录,避免把其他项目或全局采购数据映射进当前项目预警结果。 - 在
ccdi-project/src/test/java/com/ruoyi/ccdi/project/mapper/CcdiBankTagAnalysisMapperXmlTest.java新增回归测试,约束采购规则必须引用项目员工范围片段。
根因说明
project_id = 51的项目总人数来自ccdi_project.target_count,当前值为1。- 预警人数来自
ccdi_project_overview_employee_result聚合结果,排查发现其中除了上传文件对应员工韩桂英外,还混入了罗洋。 - 进一步核对
ccdi_bank_statement_tag_result后确认,多出的罗洋来自SUPPLIER_CONCENTRATION规则生成的对象命中结果。 - 原始 SQL 直接扫描
ccdi_purchase_transaction全表,并通过员工工号映射到ccdi_base_staff,没有任何projectId或项目人员范围限制,导致全局采购数据串入当前项目。
变更文件
ccdi-project/src/main/resources/mapper/ccdi/project/CcdiBankTagAnalysisMapper.xmlccdi-project/src/test/java/com/ruoyi/ccdi/project/mapper/CcdiBankTagAnalysisMapperXmlTest.java
验证结果
- 通过数据库核对确认:
project_id = 51当前仅上传成功 1 个文件,但ccdi_project_overview_employee_result中存在 2 名员工,异常现象可复现。 - 执行
mvn -pl ccdi-project -Dtest=CcdiBankTagAnalysisMapperXmlTest test - 结果:
BUILD SUCCESS - 新增回归测试已覆盖采购规则项目范围约束,防止后续再次把全局采购员工带入单个项目的预警统计。