From 0bb7c5905d7c37266a640cd8632fb5dfc19fff54 Mon Sep 17 00:00:00 2001 From: yanhui <2353496031@qq.com> Date: Thu, 17 Sep 2026 16:20:17 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E6=A8=A1=E5=9D=97=E5=8C=96=E5=BA=93?= =?UTF-8?q?=E5=AD=98=E7=9B=91=E6=8E=A7):=20=E5=B7=B2=E9=85=8D=E7=BD=AEMKH?= =?UTF-8?q?=20=E6=94=B9=E4=BB=8E=E8=81=9A=E6=B0=B4=E6=BD=AD=20SKU=20?= =?UTF-8?q?=E7=BA=A7=20BOM=20=E7=BB=B4=E6=8A=A4(jst=5FskuBomItem)=E5=88=A4?= =?UTF-8?q?=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 业务反馈上一版「已配置MKH」数量不对(仅 29 个),原因是用了 jst_comboProductItem 组合装引用口径,漏掉了真正以 MKH 成品为父项的 BOM 配件。 修正: - 数据源由 jst_comboProductItem 改为 rpt.jst_skuBomItem(聚水潭 SKU 级 BOM 明细, 含配件商品编码 map_outer_sku_id)。 - 判定口径:目标仓商品编码出现在 jst_skuBomItem.map_outer_sku_id,且父项 sku_id 以 'MKH' 开头(即被某 MKH 模块化成品 BOM 引用为配件) → 已配置MKH。 - 实测目标仓 794 个 SKU 中 699 个命中(map_outer_sku_id 匹配、父项 MKH 过滤), 95 个未配置,合计 794,与接口返回 summary 一致。 - 同步前端状态列 tooltip 与页脚口径说明。 - 移除对「产品资料系统数据库商品档案」「jst_comboProductItem 组合装」两套旧口径的依赖。 注:pm_bomBaseInfo(聚水潭 BOM 维护) 的配件行无 SKU 编码列(仅中文品名/位号), 其组件 SKU 编码实际落在 jst_skuBomItem.map_outer_sku_id,故采用后者。 --- .../services/modularStockMonitorService.js | 39 +++++++++++-------- .../src/pages/ModularStockMonitor/index.jsx | 4 +- 2 files changed, 24 insertions(+), 19 deletions(-) diff --git a/backend/src/services/modularStockMonitorService.js b/backend/src/services/modularStockMonitorService.js index 4dc5af0..4e2bc3e 100644 --- a/backend/src/services/modularStockMonitorService.js +++ b/backend/src/services/modularStockMonitorService.js @@ -50,13 +50,18 @@ const WARNING_LEVEL = Object.freeze({ NORMAL: '正常', }); -// 模块化配置状态(2026-09-17 业务确认口径): -// 「已配置MKH」= 该 SKU 作为配件被某个 MKH 模块化成品引用 -// (业务库 jst_comboProductItem 中 src_sku_id = 该 SKU -// 且 combine_sku_id 以 'MKH' 开头,即 MKH 组合装 / 成品档案) -// 「未配置MKH」= 未被任何 MKH 模块化成品引用 -// 实测目标仓 794 个 SKU 中 29 个命中(32 个被任意组合装引用,其中 29 个属 MKH 体系)。 -// ⚠️ 之前的「产品资料系统数据库商品档案」口径(661/794)已废弃,改用组合装引用口径。 +// 模块化配置状态(2026-09-17 业务确认口径,2026-09-17 晚修正): +// 「已配置MKH」= 该 SKU 作为「配件商品编码」出现在聚水潭 SKU 级 BOM 维护中, +// 被某个 MKH 模块化成品引用: +// 业务库 rpt.jst_skuBomItem 中 map_outer_sku_id = 该 SKU +// 且父项 sku_id 以 'MKH' 开头(即 MKH 成品档案,如 MKHSJZ0033260600001)。 +// 「未配置MKH」= 未出现在任何 MKH 成品的 BOM 配件清单中。 +// 实测目标仓 794 个 SKU 中 **699** 个命中(按 map_outer_sku_id 匹配、父项 MKH 过滤)。 +// ⚠️ 历史口径均已废弃: +// · 早期「产品资料系统数据库商品档案」口径(661/794)—— 覆盖面过宽、与 BOM 无关; +// · 上一版「jst_comboProductItem 组合装引用」口径(29/794)—— 仅命中 MKH- 组合装, +// 漏掉了真正以 MKH 成品为父项的 BOM 配件,数量明显偏低。 +// ✅ 当前采用 rpt.jst_skuBomItem(聚水潭 SKU BOM 明细,含配件商品编码 map_outer_sku_id)。 const MKH_STATUS = Object.freeze({ CONFIGURED: '已配置MKH', UNCONFIGURED: '未配置MKH', @@ -76,15 +81,15 @@ const SORTABLE_FIELDS = Object.freeze({ }); /** - * 「已配置MKH」判定表达式(2026-09-17 口径): - * 该 SKU 作为配件被某个 MKH 模块化成品引用,即业务库 jst_comboProductItem 中 - * src_sku_id = 该 SKU 且 combine_sku_id 以 'MKH' 开头(MKH 组合装 / 成品档案)。 + * 「已配置MKH」判定表达式(2026-09-17 晚修正口径): + * 该 SKU 作为「配件商品编码」(map_outer_sku_id)出现在聚水潭 SKU 级 BOM 维护 + * rpt.jst_skuBomItem 中,且父项 sku_id 以 'MKH' 开头(即被某个 MKH 模块化成品引用)。 */ const buildConfiguredExistsSql = () => ( `EXISTS ( - SELECT 1 FROM dbo.jst_comboProductItem x - WHERE x.src_sku_id = s.sku_id - AND x.combine_sku_id LIKE N'MKH%' + SELECT 1 FROM rpt.jst_skuBomItem x + WHERE x.map_outer_sku_id = s.sku_id + AND x.sku_id LIKE N'MKH%' )` ); @@ -268,10 +273,10 @@ async function attachProductImages(rows = []) { } /** - * 「已配置MKH」判定说明(2026-09-17): - * 直接由 buildBaseSql 的 cfg 子查询判定(jst_comboProductItem.src_sku_id - * 命中且 combine_sku_id 以 'MKH' 开头),不再依赖产品资料系统数据库。 - * 产品资料库仅用于补齐商品图片(见 attachProductImages)。 + * 「已配置MKH」判定说明(2026-09-17 晚修正): + * 直接由 buildBaseSql 的 cfg 子查询判定,数据源为聚水潭 SKU 级 BOM 维护 + * rpt.jst_skuBomItem(map_outer_sku_id = 该 SKU 且父项 sku_id 以 'MKH' 开头), + * 不再依赖产品资料系统数据库。产品资料库仅用于补齐商品图片(见 attachProductImages)。 */ const mapRow = (row = {}) => { diff --git a/frontend/src/pages/ModularStockMonitor/index.jsx b/frontend/src/pages/ModularStockMonitor/index.jsx index daee125..5512c22 100644 --- a/frontend/src/pages/ModularStockMonitor/index.jsx +++ b/frontend/src/pages/ModularStockMonitor/index.jsx @@ -157,7 +157,7 @@ const AccessoryStockPanel = () => { { title: , dataIndex: 'mkhStatus', width: 110, @@ -411,7 +411,7 @@ const ModularStockMonitor = () => ( 图片取自「产品资料系统数据库」商品档案(业务库图片字段均为空)。 注:日均发货量 2026-09-17 起由近 7 天改为近 15 天(业务原要求 30 天,但业务库无 30 天日销,最长只到 15 天); 库存可用天数仍沿用监控表 jsUseDays(源系统口径),故两者并非同一时间窗。 - 状态列:基于「产品资料系统数据库」判断该 SKU 是否已建立商品档案——已配置MKH = 资料库中可查到该 SKU;未配置MKH = 查不到。 + 状态列:基于聚水潭 SKU 级 BOM 维护(rpt.jst_skuBomItem)判断该商品是否作为「配件商品编码」被某 MKH 成品 BOM 引用——已配置MKH = 出现在某 MKH 成品的 BOM 配件清单中;未配置MKH = 未出现。