生成时间: 2026-08-03 · 数据来源: xnybw平台需求及工作计划.xlsx(南网在线绿能云缺陷跟踪表)· 仅针对 backup730/730backup 分支代码

Row 43:项目信息查询,通过"类型"筛选条件查询出来的数据不准

一般 已更新待验证 全部类型 模块:项目信息查询 处理人:陈键泽

1基本信息

问题描述项目信息查询,通过类型筛选条件查询出来的数据不准。
所属模块项目信息查询
严重程度一般
涉及类型全部类型
提出人刘向诚
处理人 / 状态陈键泽 / 5.1.已关闭(已更新待验证)

2问题截图

类型筛选为集中式光伏但列表混杂多种类型
图1:"类型"筛选框已选中"集中式光伏",但下方列表"类型"列仍展示海上风电、陆上风电、集中式光伏等多种类型混杂的数据,与筛选条件不符

3代码核查(backup730 分支)

前端"类型"筛选字段配置:xnybw5f · src/views/projectNew/json/list.jsonprojectInfoListFormInline.types,第 2278 行起),key: "types"multiple: true,与后端参数名一致。

前端请求构造:projectInfoSearchList.vue 第 203-206 行:

if (!query.types || query.types.length == 0) {
  query.types = ListDataUtils.getTypesTextByType(this.type)   // 仅在"未选择任何类型"时才用大类默认值兜底
}
query.typeWatch = query.types

后端过滤:xnybw5b · ProjectImplAppService.selectAll() 第 268-306 行,会把 types 转换成 type in (...)energy_type in (...) 的 SQL 片段(typeSql),逻辑上如果 query.types = ["集中式光伏"],应生成 and type in ('集中式光伏'),能正确过滤。

核查结论(如实说明):仅从静态代码走查看,"类型"筛选从前端字段命名(types)、传参逻辑,到后端 typeSql 拼接,链路本身没有发现明显的逻辑错误——单选一个类型时应当能正确生成 type in (...) 过滤条件。没能在现有代码走查范围内 100% 复现"选了集中式光伏却查出海上风电"的具体触发路径,需要结合线上实际请求报文(Network 面板里 /newProject/getQuery 请求体的 types 字段实际值)才能进一步确认。以下给出两个基于代码结构的高概率成因,供开发定位时优先排查:
成因假设一:截图可能是"已勾选筛选值但尚未点击查询按钮"的中间状态——表格数据是上一次(未筛选)查询遗留的结果,而不是"筛选生效后仍然不准"。建议复测时明确记录"选择类型 → 点击查询按钮 → 观察结果"的完整操作序列,排除误判。
成因假设二:"类型"下拉是通用 OMS 搜索表单组件whetherSlot: "select" 插槽渲染)负责双向绑定,本次代码走查未深入该共享组件内部实现;若该组件在 multiple: true 场景下把选中值同步回 queryData.types 存在时序问题(例如 change 事件晚于"查询"按钮的 click 事件触发,导致提交时 types 还是上一次的旧值/空值),也会表现为"筛选看似选中了,但请求里没生效"。

4建议的定位与修复步骤

第一步(定位):复测时用浏览器开发者工具 Network 面板抓取点击"查询"按钮后实际发出的 /th-new-energy-grid-zd-web/newenergy/newProject/getQuery 请求体,核对 types 字段的值是否为 ["集中式光伏"]
// 若请求体 types 为空数组或 undefined → 问题出在前端"类型"下拉值未正确同步进 queryData(成因假设二)
// 若请求体 types 确实是 ["集中式光伏"] → 问题在后端 typeSql 拼接或 SQL 执行环节,需要在
//   ProjectImplAppService.selectAll() 里对 sql 变量打印日志,核对最终拼出的 SQL 文本
第二步(前端加固,即使问题最终定位在后端也建议顺带做):getDataList() 里对提交的 query.types 做一次显式日志/断言,方便后续复测时直接在控制台确认实际传参,不必每次都抓包:
console.log('[类型筛选] 提交的 types 参数:', query.types)
结论:本条问题的代码结构性走查未发现确定性 bug,属于需要结合线上抓包复现的问题;已将排查方向和验证步骤整理如上,避免后续处理人重复做无效的静态代码分析。