出入库明细 空字段 × 库存可补 · 数据统计

数据源:生产库每日备份 jiu_db_20260626_020210.sql.gz(2026-06-26 02:02)· 单租户(鼎晟酒行)
出库明细 26,693
入库明细 28,443
库存批次 13,120
商品 9,525
口径说明:「库存能找到值」= 该字段在库存表的显示值非空,即 COALESCE(NULLIF(sii.batch_no,''), inv.batch_no)(用户在库存页看到的值)。出库明细按 product_id 匹配库存;入库明细按 stock_in_item_id 直连。
「打印必空白」= 明细行快照为空 该行 product 主记录也为空(两者都空,打印才会留白)。

一、核心结论

二、出库明细 stock_out_items

product_id 全部有值(无占位行)。

① 宽口径:明细字段为空 ÷ 其中库存能找到值

字段明细为空占比其中库存有值
batch_no 批次号5,55720.8%46
production_date 生产日期660.25%48
product_code 商品编号620.23%48
series 系列630.24%48
spec 规格630.24%48

② 打印口径:明细空 且 product 主记录也空(= 打印必空白)÷ 库存可补

字段打印空白行库存可补涉及出库单
batch_no 批次号5,528181,207
production_date 生产日期372022

三、入库明细 stock_in_items

与出库完全同口径:库存按 product_id 匹配;并额外列出能否从 product 主记录补值。

字段明细为空库存可补product 主记录可补
batch_no 批次号6,87600
production_date 生产日期1600
product_code 商品编号251025
series 系列271226
spec 规格271225
入库单批次号/生产日期:可补数 = 0(库存、product 主记录都补不出)。这是结构性的——入库是数据录入的源头:批次若在入库时就空着,由它建的 product 也空、由它生成的库存批次同样空,没有任何上游能反过来填。出库之所以能补,是因为出库引用的是「别的、已录过批次的库存批次」。
入库空批次跨度 2023-04 ~ 2026-06(整段历史都有,非 App 期专属),属源头从未录入,不是显示 bug,与出库的「显示对齐库存口径」无关。商品编号/系列/规格少量空行(25~27)可从 product 主记录补,但属商品身份字段、与本次批次问题无关。

四、受影响(打印空白但库存可补)出库单清单

20 个明细行,13 张单,全部为近期 App 新建单。这些单据打印时批次/生产日期留白,但库存里有值。

出库单号日期product_id库存批次库存生产日期
CK202606240000212026-06-24477920156746002009-04-16
CK202606230000012026-06-2394482023-003/AI0134532025-02-27
CK202606230000012026-06-23443012012-01-01
CK202606230000012026-06-2394492023-003/AI0134412025-02-27
CK202606230000012026-06-2394862006-01/030082006-12-01
CK202606230000032026-06-2346172026-001/YC0254002026-03-19
CK202606230000042026-06-2394772025-023/AA0073332025-12-18
CK202606230000042026-06-2394782025-023/AA0071912025-12-18
CK202606230000042026-06-2347222025-127/4410661454892026-03-14
CK20260623000007 截图2026-06-2343822022-001/AH0001082023-12-28
CK202606230000092026-06-234247(批次空)2024-08-21
CK202606230000102026-06-2347172022-014/6646676000532024-01-31
CK202606230000102026-06-2395032023-004/6541052509042024-07-11
CK202606230000132026-06-2340262022-091/AA0198352023-07-25
CK202606230000142026-06-2394992022-006/AI0084382024-05-11
CK202606230000142026-06-2395002022-005/AH0036302024-03-28
CK202606230000152026-06-234645(批次空)2026-01-19
CK202606230000162026-06-2347322022-030/7996894088202023-02-14
CK202606230000172026-06-2347572025-102/0066792405922026-02-13
CK202606200000012026-06-203510RK20260613000004-012026-06-09

五、对修复方案的指向

「出库单显示对齐库存口径」(已选方案)足以覆盖真实问题:对近期 App 出库单(上表 13 张)打印时按 product → inventory 取批次/生产日期即可即时补全,无需动数据、无需重发。
历史海量空批次(5,500+ 行)不在修复范围:它们在 product / 库存 / 入库明细中均无值,属源数据从未录入,任何「显示口径」都补不出来。
入库单方向收益≈0:入库明细与库存几乎无可用关联,且入库明细空批次同样源数据缺失。

统计方法:将备份导入临时库 jiu_analyze,按上述口径 SQL 聚合,完成后删除临时库。生成时间 2026-06-26。