fix: MKH-BOM 配件仓位仓名改用 wms_co_id 关联,修正误显示「常州简尚家居有限公司」 #22
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "codex/mkh-pack-warehouse-join-0919"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
目的与范围
修复 MKH-BOM 页「配件仓位」列把仓名显示成 常州简尚家居有限公司 的问题。
根因:
rpt.jst_packInventoryInfo.wh_id与rpt.jst_warehouseInfo.Id左连会命中错误的仓档案行;仓名的正确关联列是wms_co_id(jst_warehouseInfo.wms_co_id)。该表是小时级增量刷新的箱/货位表,只在 MKH-BOM 页的「配件仓位」文本上暴露。改动范围(3 文件,+13/-10):
backend/src/services/mkhBomService.jsloadComponentLocations()SQL:p.wh_id AS warehouseId→p.wms_co_id AS warehouseId;ON w.Id = p.wh_id→ON w.wms_co_id = p.wms_co_id;GROUP BY同步换列formatPackLocation()头部注释同步更正backend/src/services/modularStockMonitorService.js:仅注释。说明配件库存监控页的仓位表达式只取bin、不 join 仓名,因此不受该关联列问题影响,避免后来者误改。backend/test/mkhBomService.test.js:测试夹具由占位值warehouseId: 1 / 常州简尚家居有限公司换成真实值15718196 / 简尚-崔桥工厂半成品包装项目仓(原值正好是被修正的那个错误仓名,等于把 bug 当成了期望值)。同步与兼容性
jst_packInventoryInfo、仍用bin非空过滤、查不到仍返回「未维护」而不回退其它源。wms_co_id本就是该表的分仓条件列,执行计划与改前同级。验证
node scripts/check-syntax.js:通过(151 个 JS 文件)node --test test/*.test.js(backend):345 项 / 344 通过 / 1 失败。唯一失败为resilientSecretStore.test.js的权限断言(Windows 实测0o666vs 期望0o600),平台差异、既有失败,与本改动无关node --test test/*.test.mjs(仓库根):7/7 通过origin/main(bbabda5) + 本分支 + PR #20 + PR #21 三方顺序自动合并,零冲突p.wh_id/w.id = p.wh_id旧写法残留 0 处风险与回退
wms_co_id关联不到仓档案,warehouseName为空 → 退化为显示仓库 <id>,不会显示错误仓名,即最坏情况也比现状更安全。根因 - rpt.jst_packInventoryInfo.wh_id **不是** rpt.jst_warehouseInfo.Id: 全表只有 6 个取值(1/2/3/4/6/7),90% 的行都是 wh_id=1, 按 `w.Id = p.wh_id` 关联后,727 个配件的仓位仓名被统一显示成「常州简尚家居有限公司」。 - 该表的仓 id 列是自带的 `wms_co_id`: 09-19 实测 30,236 行 **0 NULL**、14 个仓取值,按 `w.wms_co_id = p.wms_co_id` 关联即得到正确仓名「简尚-崔桥工厂半成品包装项目仓」。 - 旧结论「该表 wms_co_id 全表 NULL,必须用 wh_id」只对 09-17 的表状态成立 (当时 85,152 行、只有 3 个箱、bin 全空、与 MKH 配件零交集); 该表由上游**小时级增量刷新**(业务确认 09-19),09-18 重建后 wms_co_id 已全部有值。 改动 - backend/src/services/mkhBomService.js · loadComponentLocations() 的 JOIN 与 GROUP BY:p.wh_id → p.wms_co_id · 文件头 ⑤ 与 formatPackLocation() 注释更新为正确关联列,并记录该表的小时级 增量刷新特性(行级 updateTime 只反映「有变化的行」,不能当表的更新频率; 行数/箱数/命中数会随上游变化,不要写死)。 - backend/src/services/modularStockMonitorService.js · 补注:该页只取 bin、不 join 仓名,不受此关联列问题影响;命中数会随上游变化。 - backend/test/mkhBomService.test.js · 仓位格式化用例的 fixture 改回真实仓名,避免继续固化错误仓名。 影响与验证 - 仅影响 MKH-BOM 页「配件仓位」列与导出配件明细的仓名文本; A4 打印预览本就会去掉仓名前缀(stripWarehousePrefix),不受影响。 - 配件监控页不 join 仓名,无影响。 - 实测:修正后 15 个真实配件编码输出「简尚-崔桥工厂半成品包装项目仓 · BCP01-01-1」。 - 后端:check-syntax 151 文件通过;node --test 337/338 通过 (唯一失败为既有环境问题 resilientSecretStore 权限断言,与本改动无关)。