Files
JY1.0/gptlog-process/gptlog.md

41 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 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)