1.0.514.sql 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. -- =====================================================================================
  2. -- WIP-C3C · S0 · C3-C 物料桥:ItemOpCondition / QualitySegmentImage
  3. -- (占位名,提交那刻 rename 为正式 1.0.<next>.sql)
  4. --
  5. -- ItemOpCondition → mdp_stg_s0_item_op_condition → bridge_item_op_condition
  6. -- QualitySegmentImage → mdp_stg_s0_item_op_image → bridge_item_op_image
  7. --
  8. -- 两桥的父都是 dim_item,走自然键 item_code(同名列 join,不得叫 item_num)。
  9. -- =====================================================================================
  10. CREATE TABLE IF NOT EXISTS `mdp_stg_s0_item_op_condition` (
  11. `id` bigint NOT NULL AUTO_INCREMENT,
  12. `tenant_id` bigint NOT NULL DEFAULT 0,
  13. `factory_id` bigint DEFAULT NULL,
  14. `source_system` varchar(50) NOT NULL DEFAULT 'AIDOPDEV_MYSQL',
  15. `source_table` varchar(100) NOT NULL,
  16. `source_row_id` varchar(100) NOT NULL,
  17. `source_biz_key` varchar(300) DEFAULT NULL,
  18. `sync_batch_id` varchar(100) NOT NULL,
  19. `sync_time` datetime NOT NULL,
  20. `process_status` varchar(20) NOT NULL DEFAULT 'PENDING',
  21. `raw_data` json NOT NULL,
  22. `process_message` varchar(500) DEFAULT NULL,
  23. `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  24. `create_time` datetime DEFAULT CURRENT_TIMESTAMP,
  25. PRIMARY KEY (`id`),
  26. UNIQUE KEY `uk_stg_s0_item_op_cond` (`tenant_id`,`source_system`,`source_table`,`source_row_id`),
  27. KEY `idx_stg_s0_item_op_cond_biz` (`source_biz_key`),
  28. KEY `idx_stg_s0_item_op_cond_batch` (`tenant_id`,`sync_batch_id`)
  29. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='S0 贴源:物料工序生产要素(源 ItemOpCondition)';
  30. CREATE TABLE IF NOT EXISTS `bridge_item_op_condition` (
  31. `id` bigint NOT NULL AUTO_INCREMENT,
  32. `tenant_id` bigint NOT NULL,
  33. `item_code` varchar(100) NOT NULL COMMENT '业务键 + 父键 ← $.ItemNum;父 = dim_item.item_code(实测孤儿 0/10)',
  34. `code_type` varchar(50) NOT NULL COMMENT '业务键 ← $.CodeType;控制器硬编码 Prod、零区分力,保留系防不可逆键收缩',
  35. `is_main` tinyint(1) NOT NULL COMMENT '🔴 ← $.IsMain。源 tinyint(1) 在 raw_data 里是 JSON BOOLEAN,只能走 BoolTrue:Int 会把 true/false 双双静默压成 0,Str 会得到 ''true'' 而源侧是 ''1''',
  36. `op_code` varchar(100) DEFAULT NULL COMMENT '← $.Op;不在源 UK 内且 DTO 无 Required,故不入身份',
  37. `line_code` varchar(100) DEFAULT NULL COMMENT '← $.Line;软引用 LineMaster,不设父',
  38. `typed_code` varchar(100) DEFAULT NULL COMMENT '← $.Typed',
  39. `element_code` varchar(100) DEFAULT NULL COMMENT '🔴 要素编码 ← $.ItemCode。与 item_code 语义不同,实测两列 0 行相等,5/10 为空',
  40. `descr` varchar(255) DEFAULT NULL COMMENT '← $.Descr',
  41. `domain_code` varchar(50) DEFAULT NULL COMMENT 'LEGACY_SCOPE ← $.Domain',
  42. `source_system` varchar(50) NOT NULL,
  43. `source_biz_key` varchar(300) NOT NULL,
  44. `source_updated_at` datetime DEFAULT NULL COMMENT '← $.UpdateTime(源 5/10)',
  45. `sync_batch_id` varchar(64) NOT NULL,
  46. `sync_time` datetime NOT NULL,
  47. `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  48. `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  49. PRIMARY KEY (`id`),
  50. -- 索引字节 = 8 + 100*4 + 50*4 = 612 < 3072
  51. UNIQUE KEY `uk_bridge_item_op_condition` (`tenant_id`,`item_code`,`code_type`),
  52. KEY `idx_bioc_parent` (`tenant_id`,`item_code`),
  53. KEY `idx_bioc_batch` (`sync_batch_id`)
  54. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
  55. COMMENT='S0 关系桥:物料工序生产要素。源 ItemOpCondition,FULL REPLACE。父 = dim_item(自然键 item_code)。唯一键严格弱于源 UK(源含 Domain+IsMain);源侧若出现重复由 AssertNoSourceDuplicateAsync 在 purge 前显式拦下,零数据被触碰。';
  56. CREATE TABLE IF NOT EXISTS `mdp_stg_s0_item_op_image` (
  57. `id` bigint NOT NULL AUTO_INCREMENT,
  58. `tenant_id` bigint NOT NULL DEFAULT 0,
  59. `factory_id` bigint DEFAULT NULL,
  60. `source_system` varchar(50) NOT NULL DEFAULT 'AIDOPDEV_MYSQL',
  61. `source_table` varchar(100) NOT NULL,
  62. `source_row_id` varchar(100) NOT NULL,
  63. `source_biz_key` varchar(300) DEFAULT NULL,
  64. `sync_batch_id` varchar(100) NOT NULL,
  65. `sync_time` datetime NOT NULL,
  66. `process_status` varchar(20) NOT NULL DEFAULT 'PENDING',
  67. `raw_data` json NOT NULL,
  68. `process_message` varchar(500) DEFAULT NULL,
  69. `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  70. `create_time` datetime DEFAULT CURRENT_TIMESTAMP,
  71. PRIMARY KEY (`id`),
  72. UNIQUE KEY `uk_stg_s0_item_op_image` (`tenant_id`,`source_system`,`source_table`,`source_row_id`),
  73. KEY `idx_stg_s0_item_op_image_biz` (`source_biz_key`),
  74. KEY `idx_stg_s0_item_op_image_batch` (`tenant_id`,`sync_batch_id`)
  75. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='S0 贴源:物料工序 SOP 文件(源 QualitySegmentImage)';
  76. CREATE TABLE IF NOT EXISTS `bridge_item_op_image` (
  77. `id` bigint NOT NULL AUTO_INCREMENT,
  78. `tenant_id` bigint NOT NULL,
  79. `item_code` varchar(100) NOT NULL COMMENT '业务键 + 父键 ← $.item_num;父 = dim_item.item_code(实测孤儿 0/6)',
  80. `op_code` varchar(100) NOT NULL COMMENT '业务键 ← $.op',
  81. `file_type_code` varchar(100) NOT NULL COMMENT '业务键 ← $.image_type_id;软引用 ref_sop_file_type.file_type_code(0/6 孤儿),**不设父**(框架单父,主语是文件本身而非其分类)',
  82. `line_code` varchar(100) DEFAULT NULL COMMENT '← $.line(源 5/6)',
  83. `file_path` varchar(1000) DEFAULT NULL COMMENT '← $.path(源 3/6)',
  84. `descr` varchar(255) DEFAULT NULL COMMENT '← $.descr',
  85. `rev` varchar(50) DEFAULT NULL COMMENT '← $.rev',
  86. `sort_id` int DEFAULT NULL COMMENT '← $.sort_id(源真 int,非 tinyint(1))',
  87. `domain_code` varchar(50) DEFAULT NULL COMMENT 'LEGACY_SCOPE ← $.domain;租户间口径异构(797=组织雪花号 / 838257186181189=8010,2410)',
  88. `source_system` varchar(50) NOT NULL,
  89. `source_biz_key` varchar(300) NOT NULL,
  90. -- 🔴 刻意无 source_updated_at:源 QualitySegmentImage 没有任何时间列(11 列全清单实测),不得回填
  91. `sync_batch_id` varchar(64) NOT NULL,
  92. `sync_time` datetime NOT NULL,
  93. `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  94. `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  95. PRIMARY KEY (`id`),
  96. -- 索引字节 = 8 + 100*4 + 100*4 + 100*4 = 1208 < 3072
  97. UNIQUE KEY `uk_bridge_item_op_image` (`tenant_id`,`item_code`,`op_code`,`file_type_code`),
  98. KEY `idx_bioi_parent` (`tenant_id`,`item_code`),
  99. KEY `idx_bioi_filetype` (`tenant_id`,`file_type_code`),
  100. KEY `idx_bioi_batch` (`sync_batch_id`)
  101. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
  102. COMMENT='S0 关系桥:物料工序 SOP 文件。源 QualitySegmentImage,FULL REPLACE。父 = dim_item(自然键 item_code)。源表零时间列故无 source_updated_at。';
  103. SET @src_id = (SELECT `id` FROM `mdp_source` WHERE `source_code` = 'AIDOPDEV_MYSQL' LIMIT 1);
  104. INSERT INTO `mdp_entity`
  105. (`tenant_id`,`source_id`,`entity_code`,`entity_name`,`entity_type`,
  106. `source_table_name`,`target_table_name`,`sync_mode`,`incr_column`,`batch_size`,
  107. `biz_key_expr`,`status`,`create_time`,`update_time`)
  108. SELECT 0, @src_id, 'S0_ITEM_OP_CONDITION', 'S0 物料工序生产要素入站', 'TABLE',
  109. 'ItemOpCondition', 'mdp_stg_s0_item_op_condition', 'FULL', NULL, 5000,
  110. 'ItemNum,CodeType', 1, NOW(), NOW()
  111. WHERE @src_id IS NOT NULL
  112. AND NOT EXISTS (SELECT 1 FROM `mdp_entity` WHERE `entity_code` = 'S0_ITEM_OP_CONDITION');
  113. INSERT INTO `mdp_entity`
  114. (`tenant_id`,`source_id`,`entity_code`,`entity_name`,`entity_type`,
  115. `source_table_name`,`target_table_name`,`sync_mode`,`incr_column`,`batch_size`,
  116. `biz_key_expr`,`status`,`create_time`,`update_time`)
  117. SELECT 0, @src_id, 'S0_ITEM_OP_IMAGE', 'S0 物料工序 SOP 文件入站', 'TABLE',
  118. 'QualitySegmentImage', 'mdp_stg_s0_item_op_image', 'FULL', NULL, 5000,
  119. 'item_num,op,image_type_id', 1, NOW(), NOW()
  120. WHERE @src_id IS NOT NULL
  121. AND NOT EXISTS (SELECT 1 FROM `mdp_entity` WHERE `entity_code` = 'S0_ITEM_OP_IMAGE');
  122. -- ── 回滚(注释,非可执行)──
  123. -- DROP TABLE IF EXISTS `bridge_item_op_condition`, `bridge_item_op_image`;
  124. -- DROP TABLE IF EXISTS `mdp_stg_s0_item_op_condition`, `mdp_stg_s0_item_op_image`;
  125. -- DELETE FROM `mdp_entity` WHERE `tenant_id`=0 AND `entity_code` IN ('S0_ITEM_OP_CONDITION','S0_ITEM_OP_IMAGE');