From a82347906ceaab4c438ac6942ff106d5e83eb584 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=87=E7=9D=BF=20=E5=BC=A0?= Date: Thu, 15 Oct 2026 16:10:21 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20init.sql=20=E8=A1=A5=E5=85=A5=2032=20?= =?UTF-8?q?=E6=9D=A1=E8=A2=AB=E6=88=AA=E6=96=AD=E7=9A=84=E5=A4=9A=E4=BE=9B?= =?UTF-8?q?=E5=BA=94=E5=95=86=E8=B4=A7=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 源库 supplier 字段用 7 种分隔符写了多家供应商,迁移时目标字段是单值, 每家物料只保留了第一家,其余被丢弃。回源核对后共 32 条,每条恰好 2 家, 全在武汉。被丢弃的第二家其伙伴档案早已由迁移脚本建好(对拆分后的每个 名字都建了伙伴),故本次只补货源行,不新增伙伴。 在 DROP TEMPORARY TABLE tmp_materials; 之后追加独立一段 32 条 INSERT ... SELECT,按 material_code 关联 materials 取 material_id。 新增行一律 is_preferred = FALSE(第一家已由分流 3 标为 TRUE)、 material_manufacturer_id 为 NULL。用到的 @p_wh_007/008/010/017/029 均已在伙伴 id 段落定义,未新增变量。 隔离库 wms_verify 空库重建后 material_suppliers = 161(129 基础 + 32 补入), materials = 199、material_manufacturers = 10 不变;32 条物料各 2 行, 每物料至多一条 preferred。 --- scripts/init.sql | 164 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 164 insertions(+) diff --git a/scripts/init.sql b/scripts/init.sql index 78ed1adf..2bafd40a 100644 --- a/scripts/init.sql +++ b/scripts/init.sql @@ -1532,6 +1532,170 @@ ON DUPLICATE KEY UPDATE is_preferred = material_suppliers.is_preferred; DROP TEMPORARY TABLE tmp_materials; +-- ---------- 多供应商补入:源里用分隔符写了多家,迁移时只留了第一家 ---------- +-- 见设计文档 7.4。32 条,每条 2 家,故每条补 1 行,全在武汉。 + +INSERT INTO material_suppliers + (organization_id, material_id, supplier_id, material_manufacturer_id, is_preferred, status) +SELECT @org_wh, m.id, @p_wh_010, NULL, FALSE, 'active' + FROM materials m WHERE m.organization_id = @org_wh AND m.material_code = 'A020001' +ON DUPLICATE KEY UPDATE is_preferred = material_suppliers.is_preferred; +INSERT INTO material_suppliers + (organization_id, material_id, supplier_id, material_manufacturer_id, is_preferred, status) +SELECT @org_wh, m.id, @p_wh_010, NULL, FALSE, 'active' + FROM materials m WHERE m.organization_id = @org_wh AND m.material_code = 'A020002' +ON DUPLICATE KEY UPDATE is_preferred = material_suppliers.is_preferred; +INSERT INTO material_suppliers + (organization_id, material_id, supplier_id, material_manufacturer_id, is_preferred, status) +SELECT @org_wh, m.id, @p_wh_010, NULL, FALSE, 'active' + FROM materials m WHERE m.organization_id = @org_wh AND m.material_code = 'A020003' +ON DUPLICATE KEY UPDATE is_preferred = material_suppliers.is_preferred; +INSERT INTO material_suppliers + (organization_id, material_id, supplier_id, material_manufacturer_id, is_preferred, status) +SELECT @org_wh, m.id, @p_wh_010, NULL, FALSE, 'active' + FROM materials m WHERE m.organization_id = @org_wh AND m.material_code = 'A020004' +ON DUPLICATE KEY UPDATE is_preferred = material_suppliers.is_preferred; +INSERT INTO material_suppliers + (organization_id, material_id, supplier_id, material_manufacturer_id, is_preferred, status) +SELECT @org_wh, m.id, @p_wh_010, NULL, FALSE, 'active' + FROM materials m WHERE m.organization_id = @org_wh AND m.material_code = 'A020005' +ON DUPLICATE KEY UPDATE is_preferred = material_suppliers.is_preferred; +INSERT INTO material_suppliers + (organization_id, material_id, supplier_id, material_manufacturer_id, is_preferred, status) +SELECT @org_wh, m.id, @p_wh_010, NULL, FALSE, 'active' + FROM materials m WHERE m.organization_id = @org_wh AND m.material_code = 'A030001' +ON DUPLICATE KEY UPDATE is_preferred = material_suppliers.is_preferred; +INSERT INTO material_suppliers + (organization_id, material_id, supplier_id, material_manufacturer_id, is_preferred, status) +SELECT @org_wh, m.id, @p_wh_010, NULL, FALSE, 'active' + FROM materials m WHERE m.organization_id = @org_wh AND m.material_code = 'A030002' +ON DUPLICATE KEY UPDATE is_preferred = material_suppliers.is_preferred; +INSERT INTO material_suppliers + (organization_id, material_id, supplier_id, material_manufacturer_id, is_preferred, status) +SELECT @org_wh, m.id, @p_wh_010, NULL, FALSE, 'active' + FROM materials m WHERE m.organization_id = @org_wh AND m.material_code = 'A030003' +ON DUPLICATE KEY UPDATE is_preferred = material_suppliers.is_preferred; +INSERT INTO material_suppliers + (organization_id, material_id, supplier_id, material_manufacturer_id, is_preferred, status) +SELECT @org_wh, m.id, @p_wh_010, NULL, FALSE, 'active' + FROM materials m WHERE m.organization_id = @org_wh AND m.material_code = 'A030004' +ON DUPLICATE KEY UPDATE is_preferred = material_suppliers.is_preferred; +INSERT INTO material_suppliers + (organization_id, material_id, supplier_id, material_manufacturer_id, is_preferred, status) +SELECT @org_wh, m.id, @p_wh_010, NULL, FALSE, 'active' + FROM materials m WHERE m.organization_id = @org_wh AND m.material_code = 'A030005' +ON DUPLICATE KEY UPDATE is_preferred = material_suppliers.is_preferred; +INSERT INTO material_suppliers + (organization_id, material_id, supplier_id, material_manufacturer_id, is_preferred, status) +SELECT @org_wh, m.id, @p_wh_010, NULL, FALSE, 'active' + FROM materials m WHERE m.organization_id = @org_wh AND m.material_code = 'A030006' +ON DUPLICATE KEY UPDATE is_preferred = material_suppliers.is_preferred; +INSERT INTO material_suppliers + (organization_id, material_id, supplier_id, material_manufacturer_id, is_preferred, status) +SELECT @org_wh, m.id, @p_wh_008, NULL, FALSE, 'active' + FROM materials m WHERE m.organization_id = @org_wh AND m.material_code = 'B010019' +ON DUPLICATE KEY UPDATE is_preferred = material_suppliers.is_preferred; +INSERT INTO material_suppliers + (organization_id, material_id, supplier_id, material_manufacturer_id, is_preferred, status) +SELECT @org_wh, m.id, @p_wh_007, NULL, FALSE, 'active' + FROM materials m WHERE m.organization_id = @org_wh AND m.material_code = 'B010020' +ON DUPLICATE KEY UPDATE is_preferred = material_suppliers.is_preferred; +INSERT INTO material_suppliers + (organization_id, material_id, supplier_id, material_manufacturer_id, is_preferred, status) +SELECT @org_wh, m.id, @p_wh_007, NULL, FALSE, 'active' + FROM materials m WHERE m.organization_id = @org_wh AND m.material_code = 'B010021' +ON DUPLICATE KEY UPDATE is_preferred = material_suppliers.is_preferred; +INSERT INTO material_suppliers + (organization_id, material_id, supplier_id, material_manufacturer_id, is_preferred, status) +SELECT @org_wh, m.id, @p_wh_007, NULL, FALSE, 'active' + FROM materials m WHERE m.organization_id = @org_wh AND m.material_code = 'B010022' +ON DUPLICATE KEY UPDATE is_preferred = material_suppliers.is_preferred; +INSERT INTO material_suppliers + (organization_id, material_id, supplier_id, material_manufacturer_id, is_preferred, status) +SELECT @org_wh, m.id, @p_wh_007, NULL, FALSE, 'active' + FROM materials m WHERE m.organization_id = @org_wh AND m.material_code = 'B010034' +ON DUPLICATE KEY UPDATE is_preferred = material_suppliers.is_preferred; +INSERT INTO material_suppliers + (organization_id, material_id, supplier_id, material_manufacturer_id, is_preferred, status) +SELECT @org_wh, m.id, @p_wh_008, NULL, FALSE, 'active' + FROM materials m WHERE m.organization_id = @org_wh AND m.material_code = 'B010035' +ON DUPLICATE KEY UPDATE is_preferred = material_suppliers.is_preferred; +INSERT INTO material_suppliers + (organization_id, material_id, supplier_id, material_manufacturer_id, is_preferred, status) +SELECT @org_wh, m.id, @p_wh_029, NULL, FALSE, 'active' + FROM materials m WHERE m.organization_id = @org_wh AND m.material_code = 'B020014' +ON DUPLICATE KEY UPDATE is_preferred = material_suppliers.is_preferred; +INSERT INTO material_suppliers + (organization_id, material_id, supplier_id, material_manufacturer_id, is_preferred, status) +SELECT @org_wh, m.id, @p_wh_017, NULL, FALSE, 'active' + FROM materials m WHERE m.organization_id = @org_wh AND m.material_code = 'B020015' +ON DUPLICATE KEY UPDATE is_preferred = material_suppliers.is_preferred; +INSERT INTO material_suppliers + (organization_id, material_id, supplier_id, material_manufacturer_id, is_preferred, status) +SELECT @org_wh, m.id, @p_wh_017, NULL, FALSE, 'active' + FROM materials m WHERE m.organization_id = @org_wh AND m.material_code = 'B020017' +ON DUPLICATE KEY UPDATE is_preferred = material_suppliers.is_preferred; +INSERT INTO material_suppliers + (organization_id, material_id, supplier_id, material_manufacturer_id, is_preferred, status) +SELECT @org_wh, m.id, @p_wh_017, NULL, FALSE, 'active' + FROM materials m WHERE m.organization_id = @org_wh AND m.material_code = 'B020019' +ON DUPLICATE KEY UPDATE is_preferred = material_suppliers.is_preferred; +INSERT INTO material_suppliers + (organization_id, material_id, supplier_id, material_manufacturer_id, is_preferred, status) +SELECT @org_wh, m.id, @p_wh_017, NULL, FALSE, 'active' + FROM materials m WHERE m.organization_id = @org_wh AND m.material_code = 'B020024' +ON DUPLICATE KEY UPDATE is_preferred = material_suppliers.is_preferred; +INSERT INTO material_suppliers + (organization_id, material_id, supplier_id, material_manufacturer_id, is_preferred, status) +SELECT @org_wh, m.id, @p_wh_017, NULL, FALSE, 'active' + FROM materials m WHERE m.organization_id = @org_wh AND m.material_code = 'B020031' +ON DUPLICATE KEY UPDATE is_preferred = material_suppliers.is_preferred; +INSERT INTO material_suppliers + (organization_id, material_id, supplier_id, material_manufacturer_id, is_preferred, status) +SELECT @org_wh, m.id, @p_wh_017, NULL, FALSE, 'active' + FROM materials m WHERE m.organization_id = @org_wh AND m.material_code = 'B020033' +ON DUPLICATE KEY UPDATE is_preferred = material_suppliers.is_preferred; +INSERT INTO material_suppliers + (organization_id, material_id, supplier_id, material_manufacturer_id, is_preferred, status) +SELECT @org_wh, m.id, @p_wh_017, NULL, FALSE, 'active' + FROM materials m WHERE m.organization_id = @org_wh AND m.material_code = 'B020034' +ON DUPLICATE KEY UPDATE is_preferred = material_suppliers.is_preferred; +INSERT INTO material_suppliers + (organization_id, material_id, supplier_id, material_manufacturer_id, is_preferred, status) +SELECT @org_wh, m.id, @p_wh_017, NULL, FALSE, 'active' + FROM materials m WHERE m.organization_id = @org_wh AND m.material_code = 'B020037' +ON DUPLICATE KEY UPDATE is_preferred = material_suppliers.is_preferred; +INSERT INTO material_suppliers + (organization_id, material_id, supplier_id, material_manufacturer_id, is_preferred, status) +SELECT @org_wh, m.id, @p_wh_017, NULL, FALSE, 'active' + FROM materials m WHERE m.organization_id = @org_wh AND m.material_code = 'B020042' +ON DUPLICATE KEY UPDATE is_preferred = material_suppliers.is_preferred; +INSERT INTO material_suppliers + (organization_id, material_id, supplier_id, material_manufacturer_id, is_preferred, status) +SELECT @org_wh, m.id, @p_wh_017, NULL, FALSE, 'active' + FROM materials m WHERE m.organization_id = @org_wh AND m.material_code = 'B020043' +ON DUPLICATE KEY UPDATE is_preferred = material_suppliers.is_preferred; +INSERT INTO material_suppliers + (organization_id, material_id, supplier_id, material_manufacturer_id, is_preferred, status) +SELECT @org_wh, m.id, @p_wh_017, NULL, FALSE, 'active' + FROM materials m WHERE m.organization_id = @org_wh AND m.material_code = 'B020044' +ON DUPLICATE KEY UPDATE is_preferred = material_suppliers.is_preferred; +INSERT INTO material_suppliers + (organization_id, material_id, supplier_id, material_manufacturer_id, is_preferred, status) +SELECT @org_wh, m.id, @p_wh_017, NULL, FALSE, 'active' + FROM materials m WHERE m.organization_id = @org_wh AND m.material_code = 'B020046' +ON DUPLICATE KEY UPDATE is_preferred = material_suppliers.is_preferred; +INSERT INTO material_suppliers + (organization_id, material_id, supplier_id, material_manufacturer_id, is_preferred, status) +SELECT @org_wh, m.id, @p_wh_017, NULL, FALSE, 'active' + FROM materials m WHERE m.organization_id = @org_wh AND m.material_code = 'B020047' +ON DUPLICATE KEY UPDATE is_preferred = material_suppliers.is_preferred; +INSERT INTO material_suppliers + (organization_id, material_id, supplier_id, material_manufacturer_id, is_preferred, status) +SELECT @org_wh, m.id, @p_wh_017, NULL, FALSE, 'active' + FROM materials m WHERE m.organization_id = @org_wh AND m.material_code = 'B020048' +ON DUPLICATE KEY UPDATE is_preferred = material_suppliers.is_preferred; + -- ---------- 变更日志 → material_logs ---------- -- 源表没有操作类型,统一记作 update;修改原因进 description。 -- 不导用户账号,operator_id 留空,operator 存源里的用户名。