1.0.445.sql 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. -- S6 Phase 1B · 过程检规物料映射 + 自动唯一解析 + 检规快照(幂等)
  2. -- 仅针对 UATAdminA 所属租户 838257186181189 补最小 Golden 数据;不污染其他租户。
  3. -- 表名/字段服从 S6/QMS 现有命名。全部 nullable/兼容历史;重跑不重复。
  4. -- ============ ① S0 过程检规明细 ResultType 列(lrlx:NUMERIC / NON_NUMERIC)============
  5. SET @exist := (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='qms_gcjygfzb' AND COLUMN_NAME='lrlx');
  6. SET @sql := IF(@exist=0, 'ALTER TABLE qms_gcjygfzb ADD COLUMN lrlx VARCHAR(20) NULL COMMENT ''录入类型 ResultType: NUMERIC/NON_NUMERIC''', 'SELECT 1');
  7. PREPARE s FROM @sql; EXECUTE s; DEALLOCATE PREPARE s;
  8. -- ============ ② 过程检规↔物料 规范映射表(运行期 Resolver 只查此表,不再 split wlbm)============
  9. CREATE TABLE IF NOT EXISTS ado_s6_ipqc_spec_material_map (
  10. id BIGINT AUTO_INCREMENT PRIMARY KEY,
  11. tenant_id BIGINT NOT NULL,
  12. spec_id BIGINT NOT NULL,
  13. spec_code VARCHAR(100) NULL COMMENT 'wjbh 文件编号',
  14. spec_version VARCHAR(50) NULL COMMENT 'bb 版本',
  15. item_code VARCHAR(100) NOT NULL,
  16. match_status VARCHAR(20) NOT NULL DEFAULT 'EXACT' COMMENT 'EXACT/NOT_FOUND/GLUE_UNRESOLVED/INVALID',
  17. source_raw_value TEXT NULL COMMENT 'wlbm 原始片段',
  18. create_time DATETIME NULL DEFAULT CURRENT_TIMESTAMP,
  19. update_time DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  20. UNIQUE KEY uk_s6_spec_item (tenant_id, spec_id, item_code),
  21. KEY idx_s6_map_item (tenant_id, item_code)
  22. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='S6 过程检规↔物料 规范映射';
  23. -- ============ ③ 过程检验单(Phase 1B 最小业务骨架)============
  24. CREATE TABLE IF NOT EXISTS ado_s6_process_inspection_bill (
  25. id BIGINT AUTO_INCREMENT PRIMARY KEY,
  26. tenant_id BIGINT NOT NULL,
  27. factory_id BIGINT NULL,
  28. work_order_no VARCHAR(100) NOT NULL,
  29. lot_serial VARCHAR(100) NULL,
  30. item_code VARCHAR(100) NULL,
  31. item_name VARCHAR(200) NULL,
  32. specification VARCHAR(200) NULL,
  33. spec_id BIGINT NULL,
  34. spec_code VARCHAR(100) NULL,
  35. spec_version VARCHAR(50) NULL,
  36. inspection_status VARCHAR(20) NOT NULL DEFAULT 'DRAFT' COMMENT 'DRAFT/ACTIVE(Phase 1C 扩展状态机)',
  37. created_by BIGINT NULL,
  38. created_by_name VARCHAR(100) NULL,
  39. create_time DATETIME NULL DEFAULT CURRENT_TIMESTAMP,
  40. update_time DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  41. KEY idx_s6_bill_wo (tenant_id, work_order_no, inspection_status),
  42. KEY idx_s6_bill_spec (tenant_id, spec_id)
  43. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='S6 过程检验单(Phase 1B 骨架)';
  44. -- ============ ④ 检规快照-头 ============
  45. CREATE TABLE IF NOT EXISTS ado_s6_process_inspection_snapshot_head (
  46. id BIGINT AUTO_INCREMENT PRIMARY KEY,
  47. tenant_id BIGINT NOT NULL,
  48. bill_id BIGINT NOT NULL,
  49. spec_id BIGINT NULL,
  50. spec_code VARCHAR(100) NULL,
  51. spec_version VARCHAR(50) NULL,
  52. effective_date VARCHAR(50) NULL,
  53. item_code VARCHAR(100) NULL,
  54. specification VARCHAR(200) NULL,
  55. source_tenant_id BIGINT NULL,
  56. create_time DATETIME NULL DEFAULT CURRENT_TIMESTAMP,
  57. UNIQUE KEY uk_s6_snap_head_bill (bill_id)
  58. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='S6 检规快照-头';
  59. -- ============ ⑤ 检规快照-明细 ============
  60. CREATE TABLE IF NOT EXISTS ado_s6_process_inspection_snapshot_line (
  61. id BIGINT AUTO_INCREMENT PRIMARY KEY,
  62. tenant_id BIGINT NOT NULL,
  63. bill_id BIGINT NOT NULL,
  64. source_line_id BIGINT NULL COMMENT 'qms_gcjygfzb.id',
  65. inspection_item VARCHAR(500) NULL COMMENT 'jyxm',
  66. process_code VARCHAR(100) NULL COMMENT 'gxdh',
  67. process_name VARCHAR(200) NULL COMMENT 'gxmc',
  68. method VARCHAR(500) NULL COMMENT 'jyff',
  69. spec_value VARCHAR(500) NULL COMMENT 'jygg 检验规格',
  70. tech_standard VARCHAR(500) NULL COMMENT 'jsbz 技术标准',
  71. lower_limit VARCHAR(100) NULL COMMENT 'xx',
  72. upper_limit VARCHAR(100) NULL COMMENT 'sx',
  73. inspection_frequency VARCHAR(200) NULL COMMENT 'jypc',
  74. result_type VARCHAR(20) NULL COMMENT 'lrlx NUMERIC/NON_NUMERIC',
  75. sort_no INT NULL,
  76. create_time DATETIME NULL DEFAULT CURRENT_TIMESTAMP,
  77. KEY idx_s6_snap_line_bill (tenant_id, bill_id)
  78. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='S6 检规快照-明细';
  79. -- ============ ⑥ Golden 数据(租户 838257186181189)============
  80. SET @T := 838257186181189;
  81. -- ⑥.1 新增 AMBIGUOUS 伙伴检规 UATD-GC-006(物料 3124C0015 的第二张、不同 wjbh,同样有效)
  82. INSERT INTO qms_gcjygf (id, tenant_id, syxh, wjbh, bb, sxrj, wlbm, version)
  83. SELECT 3000000000000011006, @T, 'UAT-AMBIG-型号', 'UATD-GC-006', 'A.0', '2026-08-28', '3124C0015', 1
  84. WHERE NOT EXISTS (SELECT 1 FROM qms_gcjygf WHERE id=3000000000000011006);
  85. -- ⑥.2 新增 VERSION 更高版本 UATD-GC-003 v2(同 wjbh,sxrj 更新 → Resolver 应取此版本;物料 3221C0031)
  86. INSERT INTO qms_gcjygf (id, tenant_id, syxh, wjbh, bb, sxrj, wlbm, version)
  87. SELECT 3000000000000011007, @T, '压(FBE6035B)', 'UATD-GC-003', 'A.1', '2026-08-29', '3221C0031', 2
  88. WHERE NOT EXISTS (SELECT 1 FROM qms_gcjygf WHERE id=3000000000000011007);
  89. -- ⑥.3 明细行(每检规 2 行:1 NUMERIC + 1 NON_NUMERIC,含 lrlx;glid 内联直指归属检规)。固定 id 保证幂等。
  90. -- GC-001(11001,91HC0497 MATCHED) GC-002(11002,3124C0015) GC-006(11006,3124C0015 AMBIG)
  91. -- GC-003v1(11003,3221C0031) GC-003v2(11007,3221C0031) GC-004(11004,3121C0035) GC-005(11005,322AD001)
  92. INSERT INTO qms_gcjygfzb (id, tenant_id, glid, gxdh, gxmc, jyxm, jyff, jygg, jsbz, jypc, xx, sx, lrlx)
  93. SELECT * FROM (
  94. 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
  95. UNION ALL SELECT 3000000000000012002, @T, 3000000000000011001, 'OP10', '装配', '外观', '目视', '无划伤/无毛刺', '表面完好', '巡检', NULL, NULL, 'NON_NUMERIC'
  96. UNION ALL SELECT 3000000000000012003, @T, 3000000000000011002, 'OP20', '成型', '厚度B', '千分尺', '2.00±0.05', 'GB/T-B', '首件', '1.95', '2.05', 'NUMERIC'
  97. UNION ALL SELECT 3000000000000012004, @T, 3000000000000011002, 'OP20', '成型', '色泽', '目视', '色差合格', '标准色卡', '巡检', NULL, NULL, 'NON_NUMERIC'
  98. UNION ALL SELECT 3000000000000012005, @T, 3000000000000011006, 'OP30', '注塑', '孔径C', '塞规', '5.00±0.10', 'GB/T-C', '首件', '4.90', '5.10', 'NUMERIC'
  99. UNION ALL SELECT 3000000000000012006, @T, 3000000000000011006, 'OP30', '注塑', '飞边', '目视', '无飞边', '外观规范', '巡检', NULL, NULL, 'NON_NUMERIC'
  100. UNION ALL SELECT 3000000000000012007, @T, 3000000000000011003, 'OP40', '压合', '压力D', '压力计', '50±2N', 'GB/T-D', '首件', '48', '52', 'NUMERIC'
  101. UNION ALL SELECT 3000000000000012008, @T, 3000000000000011003, 'OP40', '压合', '密封', '气密测试', '无泄漏', '密封标准', '巡检', NULL, NULL, 'NON_NUMERIC'
  102. UNION ALL SELECT 3000000000000012009, @T, 3000000000000011007, 'OP50', '包装', '长度E', '卷尺', '100±1', 'GB/T-E', '首件', '99', '101', 'NUMERIC'
  103. UNION ALL SELECT 3000000000000012010, @T, 3000000000000011007, 'OP50', '包装', '标签', '目视', '标签正确', '标签规范', '巡检', NULL, NULL, 'NON_NUMERIC'
  104. UNION ALL SELECT 3000000000000012011, @T, 3000000000000011004, 'OP60', '终检', '重量F', '电子秤', '20±0.5g', 'GB/T-F', '末件', '19.5', '20.5', 'NUMERIC'
  105. UNION ALL SELECT 3000000000000012012, @T, 3000000000000011004, 'OP60', '终检', '清洁度', '目视', '无异物', '洁净标准', '巡检', NULL, NULL, 'NON_NUMERIC'
  106. UNION ALL SELECT 3000000000000012013, @T, 3000000000000011005, 'OP70', '装配', '扭矩G', '扭矩扳手', '8±0.5Nm', 'GB/T-G', '首件', '7.5', '8.5', 'NUMERIC'
  107. UNION ALL SELECT 3000000000000012014, @T, 3000000000000011005, 'OP70', '装配', '功能', '功能测试', '功能正常', '功能规范', '巡检', NULL, NULL, 'NON_NUMERIC'
  108. ) g
  109. WHERE NOT EXISTS (SELECT 1 FROM qms_gcjygfzb z WHERE z.id=g.id);
  110. -- ⑥.4 规范映射(EXACT):为 7 张 Golden 检规各建 1 条 (spec,item)。幂等 UK(tenant,spec_id,item_code)。
  111. INSERT INTO ado_s6_ipqc_spec_material_map (tenant_id, spec_id, spec_code, spec_version, item_code, match_status, source_raw_value)
  112. SELECT @T, g.id, g.wjbh, g.bb, g.wlbm, 'EXACT', g.wlbm
  113. FROM qms_gcjygf g
  114. WHERE g.tenant_id=@T AND g.id IN (
  115. 3000000000000011001,3000000000000011002,3000000000000011003,
  116. 3000000000000011004,3000000000000011005,3000000000000011006,3000000000000011007)
  117. AND NOT EXISTS (
  118. SELECT 1 FROM ado_s6_ipqc_spec_material_map m
  119. WHERE m.tenant_id=@T AND m.spec_id=g.id AND m.item_code=g.wlbm);