diff --git a/backend/src/services/mkhBomService.js b/backend/src/services/mkhBomService.js index 0c7528b..b6694c8 100644 --- a/backend/src/services/mkhBomService.js +++ b/backend/src/services/mkhBomService.js @@ -8,7 +8,10 @@ // // ① MKH 商品编码(列表主数据)—— 业务库 JSReportReplica(MSSQL / schema=rpt) // rpt.jst_sku WHERE sku_id LIKE N'MKH%' AND item_type = N'成品' -// AND other_3 = N'简尚-崔桥工厂品牌仓' (当前 4408 条) +// AND other_3 = N'简尚-崔桥工厂品牌仓' +// AND 该编码存在正式 BOM 配件明细 (当前 4223 条) +// · 商品档案里的 item_type/labels 不能单独作为成品依据:上游也会把部分配件 +// 标成“成品/模块化成品”。只有 jst_skuBomItem 的父项才进入本页面。 // · 形态 MKH + 款号 + 序列,例 MKHDNZ0409260600198 // // ② 配件明细(BOM)—— 聚水潭商品 BOM(主来源) @@ -59,9 +62,18 @@ const officialBomDetailCache = new Map(); const componentLocationCache = new Map(); let productBomCache = null; -// MKH 商品编码 = 模块化成品 +// MKH 模块化成品必须同时是指定仓库商品档案和正式 BOM 父项。 +// 上游存在被 item_type/labels 误标为成品的配件,不能仅依赖商品档案标签。 const DESIGNATED_WAREHOUSE = '简尚-崔桥工厂品牌仓'; -const MKH_WHERE = `s.sku_id LIKE N'MKH%' AND s.item_type = N'成品' AND s.other_3 = N'${DESIGNATED_WAREHOUSE}'`; +const MKH_WHERE = `s.sku_id LIKE N'MKH%' + AND s.item_type = N'成品' + AND s.other_3 = N'${DESIGNATED_WAREHOUSE}' + AND EXISTS ( + SELECT 1 + FROM rpt.jst_skuBomItem parent_bom WITH (NOLOCK) + WHERE parent_bom.sku_id = s.sku_id + AND NULLIF(LTRIM(RTRIM(parent_bom.map_outer_sku_id)), N'') IS NOT NULL + )`; const toText = (value) => { if (value === null || value === undefined) return null; diff --git a/frontend/src/pages/MkhBomData/index.jsx b/frontend/src/pages/MkhBomData/index.jsx index 57cc591..85e265f 100644 --- a/frontend/src/pages/MkhBomData/index.jsx +++ b/frontend/src/pages/MkhBomData/index.jsx @@ -337,7 +337,7 @@ const MkhBomData = () => { 模块化(MKH 开头)成品的编码与配件明细:配件明细、数量、配件仓位 - 数据口径:MKH 商品编码仅取自业务库 jst_sku 中“简尚-崔桥工厂品牌仓”的成品(当前 4408 条); + 数据口径:MKH 商品编码取自业务库 jst_sku 中“简尚-崔桥工厂品牌仓”,并且必须是聚水潭正式 BOM 的父项; 配件明细与数量优先取自聚水潭商品 BOM,业务中台组合商品 BOM 与产品资料系统数据库中维护的配件作为补充; 无指定仓库商品档案的 BOM 组合编码不会进入列表;配件仓位只取 rpt.jst_packInventoryInfo, 优先显示具体仓位,没有具体仓位时显示箱号,表中没有有效记录时显示「未维护」。 @@ -371,7 +371,7 @@ const MkhBomData = () => { : '聚水潭商品 BOM 及补充来源中尚无可用的模块化商品配件明细'} description={( - MKH 商品编码({data.total || 0} 条)仅取自业务库 jst_sku 中“简尚-崔桥工厂品牌仓”; + MKH 商品编码({data.total || 0} 条)取自业务库 jst_sku 中“简尚-崔桥工厂品牌仓”的正式 BOM 父项; 配件明细优先取自聚水潭商品 BOM({data.bomOfficialRowCount || 0} 个), 业务组合 BOM({data.bomBusinessRowCount || 0} 个)与产品资料系统({data.bomProductDbRowCount || 0} 个)作为补充。 BOM 中没有指定仓库商品档案的组合编码不会加入商品列表。