## 2026-07-09 08:20:52 - 入库记录导出功能列名数据错位修复 ### 提问 用户反馈 WarehousingRecord 组件的导出功能导出的 Excel 表格列名和数据对不上,提供了正确和错误两个 Excel 文件对比。 ### 排查过程 1. 读取正确的表和错误的表,对比发现:错误的表中"物料名称"值出现在"类型"列下,"图号/型号"值出现在"物料编号"列下,全部列偏移。 2. 读取 WarehousingRecord.vue,发现导出调用 his.exportExcel_NPOI(Data),存储过程名为 仓储管理_入库记录_导出表格_查询。 3. 查看 exportExcel_NPOI 定义(curd.js),确认导出是通过 NPOI 后端处理器按位置映射列。 4. 查询存储过程定义,发现动态 SQL 使用 A.* 返回 UNION ALL 视图的全部24列 + JOIN 的6列 = 30列数据,但导出表头只定义了16列。 5. 查询6个视图的列顺序,确认视图首列是"物料名称"而非"类型",导致按位置映射时全部错位。 6. 对比正常工作的 仓储管理_外协到货记录_导出表格_查询,确认其使用显式列选择。 ### 根因 存储过程 仓储管理_入库记录_导出表格_查询 的动态 SQL 使用 A.* 返回全部列,NPOI 导出处理器按位置将数据映射到表头,但视图列顺序(物料名称, 图号或型号, 入库数, 单位, 入库日期, ...)与表头顺序(类型, 物料编号, 物料名称, 图号/型号, 单位, 入库数, ...)不一致,导致列名和数据错位。 ### 结论与修复 将存储过程中 A.* 改为显式选择16列,按表头顺序排列并使用 AS 别名匹配表头名称: - A.类型 - 库存管理_物料主文件_基本.物料编码 as 物料编号 - A.物料名称 - A.图号或型号 as [图号/型号] - A.单位 - A.入库数 - 库存管理_货位主文件.货位名称 as 库位 - A.入库日期 - 入库单去重.入库单号 - A.批次编号 - 采购管理_供应商.供应商编号 - A.供应商 - A.采购合同编号 as 采购合同 - A.订单号 - A.产品名称 as [产品/组件名称] - A.备注 as 采购备注 已在数据库 ERPTOOL_JY 上执行 ALTER PROCEDURE 修复,验证修复后数据列顺序正确。 ### 修改的数据库对象 - 存储过程:仓储管理_入库记录_导出表格_查询(ERPTOOL_JY 数据库,192.168.1.27)