-- S6 Phase 1B · 过程检规物料映射 + 自动唯一解析 + 检规快照(幂等) -- 仅针对 UATAdminA 所属租户 838257186181189 补最小 Golden 数据;不污染其他租户。 -- 表名/字段服从 S6/QMS 现有命名。全部 nullable/兼容历史;重跑不重复。 -- ============ ① S0 过程检规明细 ResultType 列(lrlx:NUMERIC / NON_NUMERIC)============ SET @exist := (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='qms_gcjygfzb' AND COLUMN_NAME='lrlx'); SET @sql := IF(@exist=0, 'ALTER TABLE qms_gcjygfzb ADD COLUMN lrlx VARCHAR(20) NULL COMMENT ''录入类型 ResultType: NUMERIC/NON_NUMERIC''', 'SELECT 1'); PREPARE s FROM @sql; EXECUTE s; DEALLOCATE PREPARE s; -- ============ ② 过程检规↔物料 规范映射表(运行期 Resolver 只查此表,不再 split wlbm)============ CREATE TABLE IF NOT EXISTS ado_s6_ipqc_spec_material_map ( id BIGINT AUTO_INCREMENT PRIMARY KEY, tenant_id BIGINT NOT NULL, spec_id BIGINT NOT NULL, spec_code VARCHAR(100) NULL COMMENT 'wjbh 文件编号', spec_version VARCHAR(50) NULL COMMENT 'bb 版本', item_code VARCHAR(100) NOT NULL, match_status VARCHAR(20) NOT NULL DEFAULT 'EXACT' COMMENT 'EXACT/NOT_FOUND/GLUE_UNRESOLVED/INVALID', source_raw_value TEXT NULL COMMENT 'wlbm 原始片段', create_time DATETIME NULL DEFAULT CURRENT_TIMESTAMP, update_time DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, UNIQUE KEY uk_s6_spec_item (tenant_id, spec_id, item_code), KEY idx_s6_map_item (tenant_id, item_code) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='S6 过程检规↔物料 规范映射'; -- ============ ③ 过程检验单(Phase 1B 最小业务骨架)============ CREATE TABLE IF NOT EXISTS ado_s6_process_inspection_bill ( id BIGINT AUTO_INCREMENT PRIMARY KEY, tenant_id BIGINT NOT NULL, factory_id BIGINT NULL, work_order_no VARCHAR(100) NOT NULL, lot_serial VARCHAR(100) NULL, item_code VARCHAR(100) NULL, item_name VARCHAR(200) NULL, specification VARCHAR(200) NULL, spec_id BIGINT NULL, spec_code VARCHAR(100) NULL, spec_version VARCHAR(50) NULL, inspection_status VARCHAR(20) NOT NULL DEFAULT 'DRAFT' COMMENT 'DRAFT/ACTIVE(Phase 1C 扩展状态机)', created_by BIGINT NULL, created_by_name VARCHAR(100) NULL, create_time DATETIME NULL DEFAULT CURRENT_TIMESTAMP, update_time DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, KEY idx_s6_bill_wo (tenant_id, work_order_no, inspection_status), KEY idx_s6_bill_spec (tenant_id, spec_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='S6 过程检验单(Phase 1B 骨架)'; -- ============ ④ 检规快照-头 ============ CREATE TABLE IF NOT EXISTS ado_s6_process_inspection_snapshot_head ( id BIGINT AUTO_INCREMENT PRIMARY KEY, tenant_id BIGINT NOT NULL, bill_id BIGINT NOT NULL, spec_id BIGINT NULL, spec_code VARCHAR(100) NULL, spec_version VARCHAR(50) NULL, effective_date VARCHAR(50) NULL, item_code VARCHAR(100) NULL, specification VARCHAR(200) NULL, source_tenant_id BIGINT NULL, create_time DATETIME NULL DEFAULT CURRENT_TIMESTAMP, UNIQUE KEY uk_s6_snap_head_bill (bill_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='S6 检规快照-头'; -- ============ ⑤ 检规快照-明细 ============ CREATE TABLE IF NOT EXISTS ado_s6_process_inspection_snapshot_line ( id BIGINT AUTO_INCREMENT PRIMARY KEY, tenant_id BIGINT NOT NULL, bill_id BIGINT NOT NULL, source_line_id BIGINT NULL COMMENT 'qms_gcjygfzb.id', inspection_item VARCHAR(500) NULL COMMENT 'jyxm', process_code VARCHAR(100) NULL COMMENT 'gxdh', process_name VARCHAR(200) NULL COMMENT 'gxmc', method VARCHAR(500) NULL COMMENT 'jyff', spec_value VARCHAR(500) NULL COMMENT 'jygg 检验规格', tech_standard VARCHAR(500) NULL COMMENT 'jsbz 技术标准', lower_limit VARCHAR(100) NULL COMMENT 'xx', upper_limit VARCHAR(100) NULL COMMENT 'sx', inspection_frequency VARCHAR(200) NULL COMMENT 'jypc', result_type VARCHAR(20) NULL COMMENT 'lrlx NUMERIC/NON_NUMERIC', sort_no INT NULL, create_time DATETIME NULL DEFAULT CURRENT_TIMESTAMP, KEY idx_s6_snap_line_bill (tenant_id, bill_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='S6 检规快照-明细'; -- ============ ⑥ Golden 数据(租户 838257186181189)============ SET @T := 838257186181189; -- ⑥.1 新增 AMBIGUOUS 伙伴检规 UATD-GC-006(物料 3124C0015 的第二张、不同 wjbh,同样有效) INSERT INTO qms_gcjygf (id, tenant_id, syxh, wjbh, bb, sxrj, wlbm, version) SELECT 3000000000000011006, @T, 'UAT-AMBIG-型号', 'UATD-GC-006', 'A.0', '2026-08-28', '3124C0015', 1 WHERE NOT EXISTS (SELECT 1 FROM qms_gcjygf WHERE id=3000000000000011006); -- ⑥.2 新增 VERSION 更高版本 UATD-GC-003 v2(同 wjbh,sxrj 更新 → Resolver 应取此版本;物料 3221C0031) INSERT INTO qms_gcjygf (id, tenant_id, syxh, wjbh, bb, sxrj, wlbm, version) SELECT 3000000000000011007, @T, '压(FBE6035B)', 'UATD-GC-003', 'A.1', '2026-08-29', '3221C0031', 2 WHERE NOT EXISTS (SELECT 1 FROM qms_gcjygf WHERE id=3000000000000011007); -- ⑥.3 明细行(每检规 2 行:1 NUMERIC + 1 NON_NUMERIC,含 lrlx;glid 内联直指归属检规)。固定 id 保证幂等。 -- GC-001(11001,91HC0497 MATCHED) GC-002(11002,3124C0015) GC-006(11006,3124C0015 AMBIG) -- GC-003v1(11003,3221C0031) GC-003v2(11007,3221C0031) GC-004(11004,3121C0035) GC-005(11005,322AD001) INSERT INTO qms_gcjygfzb (id, tenant_id, glid, gxdh, gxmc, jyxm, jyff, jygg, jsbz, jypc, xx, sx, lrlx) SELECT * FROM ( SELECT 3000000000000012001 id, @T tenant_id, 3000000000000011001 glid, 'OP10' gxdh, '装配' gxmc, '关键尺寸A' jyxm, '游标卡尺' jyff, '10.0±0.2' jygg, 'GB/T-A' jsbz, '首件' jypc, '9.8' xx, '10.2' sx, 'NUMERIC' lrlx UNION ALL SELECT 3000000000000012002, @T, 3000000000000011001, 'OP10', '装配', '外观', '目视', '无划伤/无毛刺', '表面完好', '巡检', NULL, NULL, 'NON_NUMERIC' UNION ALL SELECT 3000000000000012003, @T, 3000000000000011002, 'OP20', '成型', '厚度B', '千分尺', '2.00±0.05', 'GB/T-B', '首件', '1.95', '2.05', 'NUMERIC' UNION ALL SELECT 3000000000000012004, @T, 3000000000000011002, 'OP20', '成型', '色泽', '目视', '色差合格', '标准色卡', '巡检', NULL, NULL, 'NON_NUMERIC' UNION ALL SELECT 3000000000000012005, @T, 3000000000000011006, 'OP30', '注塑', '孔径C', '塞规', '5.00±0.10', 'GB/T-C', '首件', '4.90', '5.10', 'NUMERIC' UNION ALL SELECT 3000000000000012006, @T, 3000000000000011006, 'OP30', '注塑', '飞边', '目视', '无飞边', '外观规范', '巡检', NULL, NULL, 'NON_NUMERIC' UNION ALL SELECT 3000000000000012007, @T, 3000000000000011003, 'OP40', '压合', '压力D', '压力计', '50±2N', 'GB/T-D', '首件', '48', '52', 'NUMERIC' UNION ALL SELECT 3000000000000012008, @T, 3000000000000011003, 'OP40', '压合', '密封', '气密测试', '无泄漏', '密封标准', '巡检', NULL, NULL, 'NON_NUMERIC' UNION ALL SELECT 3000000000000012009, @T, 3000000000000011007, 'OP50', '包装', '长度E', '卷尺', '100±1', 'GB/T-E', '首件', '99', '101', 'NUMERIC' UNION ALL SELECT 3000000000000012010, @T, 3000000000000011007, 'OP50', '包装', '标签', '目视', '标签正确', '标签规范', '巡检', NULL, NULL, 'NON_NUMERIC' UNION ALL SELECT 3000000000000012011, @T, 3000000000000011004, 'OP60', '终检', '重量F', '电子秤', '20±0.5g', 'GB/T-F', '末件', '19.5', '20.5', 'NUMERIC' UNION ALL SELECT 3000000000000012012, @T, 3000000000000011004, 'OP60', '终检', '清洁度', '目视', '无异物', '洁净标准', '巡检', NULL, NULL, 'NON_NUMERIC' UNION ALL SELECT 3000000000000012013, @T, 3000000000000011005, 'OP70', '装配', '扭矩G', '扭矩扳手', '8±0.5Nm', 'GB/T-G', '首件', '7.5', '8.5', 'NUMERIC' UNION ALL SELECT 3000000000000012014, @T, 3000000000000011005, 'OP70', '装配', '功能', '功能测试', '功能正常', '功能规范', '巡检', NULL, NULL, 'NON_NUMERIC' ) g WHERE NOT EXISTS (SELECT 1 FROM qms_gcjygfzb z WHERE z.id=g.id); -- ⑥.4 规范映射(EXACT):为 7 张 Golden 检规各建 1 条 (spec,item)。幂等 UK(tenant,spec_id,item_code)。 INSERT INTO ado_s6_ipqc_spec_material_map (tenant_id, spec_id, spec_code, spec_version, item_code, match_status, source_raw_value) SELECT @T, g.id, g.wjbh, g.bb, g.wlbm, 'EXACT', g.wlbm FROM qms_gcjygf g WHERE g.tenant_id=@T AND g.id IN ( 3000000000000011001,3000000000000011002,3000000000000011003, 3000000000000011004,3000000000000011005,3000000000000011006,3000000000000011007) AND NOT EXISTS ( SELECT 1 FROM ado_s6_ipqc_spec_material_map m WHERE m.tenant_id=@T AND m.spec_id=g.id AND m.item_code=g.wlbm);