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

前端"类型"筛选字段配置:xnybw5f · src/views/projectNew/json/list.json(projectInfoListFormInline.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 字段实际值)才能进一步确认。以下给出两个基于代码结构的高概率成因,供开发定位时优先排查:whetherSlot: "select" 插槽渲染)负责双向绑定,本次代码走查未深入该共享组件内部实现;若该组件在 multiple: true 场景下把选中值同步回 queryData.types 存在时序问题(例如 change 事件晚于"查询"按钮的 click 事件触发,导致提交时 types 还是上一次的旧值/空值),也会表现为"筛选看似选中了,但请求里没生效"。/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)