1.0.343.sql 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. -- 1.0.343 运营指标正式目标配置 + 日值目标血缘 + MDP FILE_EXCEL 批次
  2. SET NAMES utf8mb4;
  3. CREATE TABLE IF NOT EXISTS `ado_smart_ops_kpi_target_config` (
  4. `id` BIGINT NOT NULL AUTO_INCREMENT,
  5. `tenant_id` BIGINT NOT NULL,
  6. `factory_id` BIGINT NOT NULL DEFAULT 0,
  7. `metric_code` VARCHAR(50) NOT NULL,
  8. `target_value` DECIMAL(18,6) NOT NULL,
  9. `effective_from` DATE NOT NULL,
  10. `effective_to` DATE NULL,
  11. `source_type` VARCHAR(30) NOT NULL,
  12. `source_batch_id` VARCHAR(100) NULL,
  13. `status` TINYINT NOT NULL DEFAULT 1,
  14. `remark` VARCHAR(500) NULL,
  15. `created_by` BIGINT NULL,
  16. `updated_by` BIGINT NULL,
  17. `create_time` DATETIME(3) NOT NULL,
  18. `update_time` DATETIME(3) NOT NULL,
  19. PRIMARY KEY (`id`),
  20. UNIQUE KEY `uk_kpi_target_start` (`tenant_id`, `factory_id`, `metric_code`, `effective_from`),
  21. KEY `ix_kpi_target_resolve` (`tenant_id`, `factory_id`, `metric_code`, `status`, `effective_from`, `effective_to`),
  22. KEY `ix_kpi_target_batch` (`source_batch_id`)
  23. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='运营指标正式目标配置';
  24. CREATE TABLE IF NOT EXISTS `ado_smart_ops_kpi_target_import_batch` (
  25. `id` BIGINT NOT NULL AUTO_INCREMENT,
  26. `batch_no` VARCHAR(64) NOT NULL,
  27. `tenant_id` BIGINT NOT NULL,
  28. `factory_id` BIGINT NOT NULL DEFAULT 0,
  29. `file_name` VARCHAR(255) NOT NULL,
  30. `file_sha256` VARCHAR(64) NOT NULL,
  31. `status` VARCHAR(32) NOT NULL,
  32. `total_rows` INT NOT NULL DEFAULT 0,
  33. `valid_rows` INT NOT NULL DEFAULT 0,
  34. `error_rows` INT NOT NULL DEFAULT 0,
  35. `payload_json` MEDIUMTEXT NULL,
  36. `error_json` MEDIUMTEXT NULL,
  37. `created_by` VARCHAR(100) NULL,
  38. `create_time` DATETIME(3) NOT NULL,
  39. `commit_time` DATETIME(3) NULL,
  40. PRIMARY KEY (`id`),
  41. UNIQUE KEY `uk_kpi_target_batch_no` (`batch_no`),
  42. KEY `ix_kpi_target_batch_tenant` (`tenant_id`, `status`),
  43. KEY `ix_kpi_target_batch_hash` (`tenant_id`, `file_sha256`)
  44. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='KPI目标Excel导入批次';
  45. CREATE TABLE IF NOT EXISTS `mdp_file_import_batch` (
  46. `id` BIGINT NOT NULL AUTO_INCREMENT,
  47. `batch_no` VARCHAR(64) NOT NULL,
  48. `tenant_id` BIGINT NOT NULL,
  49. `factory_id` BIGINT NOT NULL DEFAULT 0,
  50. `source_id` BIGINT NOT NULL,
  51. `entity_id` BIGINT NOT NULL,
  52. `entity_code` VARCHAR(100) NOT NULL,
  53. `file_name` VARCHAR(255) NOT NULL,
  54. `file_sha256` VARCHAR(64) NOT NULL,
  55. `file_size` BIGINT NOT NULL DEFAULT 0,
  56. `sheet_name` VARCHAR(100) NULL,
  57. `import_mode` VARCHAR(40) NOT NULL DEFAULT 'UPSERT',
  58. `status` VARCHAR(32) NOT NULL,
  59. `total_rows` INT NOT NULL DEFAULT 0,
  60. `valid_rows` INT NOT NULL DEFAULT 0,
  61. `error_rows` INT NOT NULL DEFAULT 0,
  62. `written_rows` INT NOT NULL DEFAULT 0,
  63. `file_object_key` VARCHAR(500) NULL,
  64. `error_report_key` VARCHAR(500) NULL,
  65. `transform_status` VARCHAR(32) NULL,
  66. `transform_time` DATETIME(3) NULL,
  67. `created_by` VARCHAR(100) NULL,
  68. `create_time` DATETIME(3) NOT NULL,
  69. `commit_time` DATETIME(3) NULL,
  70. `error_message` VARCHAR(1000) NULL,
  71. PRIMARY KEY (`id`),
  72. UNIQUE KEY `uk_mdp_file_batch_no` (`batch_no`),
  73. KEY `ix_mdp_file_batch_tenant` (`tenant_id`, `status`),
  74. KEY `ix_mdp_file_batch_hash` (`tenant_id`, `file_sha256`)
  75. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='MDP Excel文件导入批次';
  76. CREATE TABLE IF NOT EXISTS `mdp_file_import_row` (
  77. `id` BIGINT NOT NULL AUTO_INCREMENT,
  78. `batch_id` BIGINT NOT NULL,
  79. `row_no` INT NOT NULL,
  80. `business_key` VARCHAR(500) NULL,
  81. `row_hash` VARCHAR(64) NULL,
  82. `raw_json` MEDIUMTEXT NULL,
  83. `mapped_json` MEDIUMTEXT NULL,
  84. `validation_status` VARCHAR(32) NOT NULL DEFAULT 'OK',
  85. `write_status` VARCHAR(32) NOT NULL DEFAULT 'PENDING',
  86. `error_count` INT NOT NULL DEFAULT 0,
  87. PRIMARY KEY (`id`),
  88. KEY `ix_mdp_file_row_batch` (`batch_id`, `row_no`)
  89. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='MDP Excel导入原始行';
  90. CREATE TABLE IF NOT EXISTS `mdp_file_import_error` (
  91. `id` BIGINT NOT NULL AUTO_INCREMENT,
  92. `batch_id` BIGINT NOT NULL,
  93. `row_no` INT NOT NULL,
  94. `field_name` VARCHAR(200) NULL,
  95. `error_code` VARCHAR(64) NOT NULL,
  96. `error_message` VARCHAR(1000) NOT NULL,
  97. `raw_value` VARCHAR(500) NULL,
  98. PRIMARY KEY (`id`),
  99. KEY `ix_mdp_file_err_batch` (`batch_id`, `row_no`)
  100. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='MDP Excel导入错误';
  101. -- 四级日值目标血缘列
  102. SET @sql := IF(
  103. (SELECT COUNT(*) FROM information_schema.COLUMNS
  104. WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='ado_s9_kpi_value_l1_day' AND COLUMN_NAME='target_config_id') = 0,
  105. 'ALTER TABLE `ado_s9_kpi_value_l1_day`
  106. ADD COLUMN `target_config_id` BIGINT NULL,
  107. ADD COLUMN `target_source` VARCHAR(30) NULL,
  108. ADD COLUMN `target_resolved_at` DATETIME(3) NULL',
  109. 'SELECT 1');
  110. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
  111. SET @sql := IF(
  112. (SELECT COUNT(*) FROM information_schema.COLUMNS
  113. WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='ado_s9_kpi_value_l2_day' AND COLUMN_NAME='target_config_id') = 0,
  114. 'ALTER TABLE `ado_s9_kpi_value_l2_day`
  115. ADD COLUMN `target_config_id` BIGINT NULL,
  116. ADD COLUMN `target_source` VARCHAR(30) NULL,
  117. ADD COLUMN `target_resolved_at` DATETIME(3) NULL',
  118. 'SELECT 1');
  119. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
  120. SET @sql := IF(
  121. (SELECT COUNT(*) FROM information_schema.COLUMNS
  122. WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='ado_s9_kpi_value_l3_day' AND COLUMN_NAME='target_config_id') = 0,
  123. 'ALTER TABLE `ado_s9_kpi_value_l3_day`
  124. ADD COLUMN `target_config_id` BIGINT NULL,
  125. ADD COLUMN `target_source` VARCHAR(30) NULL,
  126. ADD COLUMN `target_resolved_at` DATETIME(3) NULL',
  127. 'SELECT 1');
  128. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
  129. SET @sql := IF(
  130. (SELECT COUNT(*) FROM information_schema.COLUMNS
  131. WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='ado_s9_kpi_value_l4_day' AND COLUMN_NAME='target_config_id') = 0,
  132. 'ALTER TABLE `ado_s9_kpi_value_l4_day`
  133. ADD COLUMN `target_config_id` BIGINT NULL,
  134. ADD COLUMN `target_source` VARCHAR(30) NULL,
  135. ADD COLUMN `target_resolved_at` DATETIME(3) NULL',
  136. 'SELECT 1');
  137. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
  138. -- mdp_entity 文件配置
  139. SET @sql := IF(
  140. (SELECT COUNT(*) FROM information_schema.COLUMNS
  141. WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='mdp_entity' AND COLUMN_NAME='file_config_json') = 0,
  142. 'ALTER TABLE `mdp_entity` ADD COLUMN `file_config_json` TEXT NULL',
  143. 'SELECT 1');
  144. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
  145. SET @sql := IF(
  146. (SELECT COUNT(*) FROM information_schema.COLUMNS
  147. WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='mdp_entity' AND COLUMN_NAME='is_public_template') = 0,
  148. 'ALTER TABLE `mdp_entity` ADD COLUMN `is_public_template` TINYINT NOT NULL DEFAULT 0',
  149. 'SELECT 1');
  150. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
  151. -- 试点:复制 S1_CUSTOMER_SQLSERVER 为 FILE 公共模板(不写业务目标数据)
  152. INSERT INTO `mdp_source` (
  153. `tenant_id`, `source_code`, `source_name`, `source_type`, `status`,
  154. `remark`, `create_time`, `update_time`)
  155. SELECT 0, 'S1_CUSTOMER_FILE', 'S1客户主数据 Excel 入站', 'FILE_EXCEL', 1,
  156. '由 S1_CUSTOMER_SQLSERVER 复制的 FILE 试点源;is_public_template 见实体', NOW(), NOW()
  157. FROM DUAL
  158. WHERE EXISTS (SELECT 1 FROM `mdp_entity` WHERE `entity_code`='S1_CUSTOMER_SQLSERVER' AND `status`=1)
  159. AND NOT EXISTS (SELECT 1 FROM `mdp_source` WHERE `source_code`='S1_CUSTOMER_FILE');
  160. INSERT INTO `mdp_entity` (
  161. `tenant_id`, `source_id`, `entity_code`, `entity_name`, `entity_type`,
  162. `target_table_name`, `sync_mode`, `batch_size`, `biz_key_expr`, `status`,
  163. `file_config_json`, `is_public_template`, `remark`, `create_time`, `update_time`)
  164. SELECT
  165. 0,
  166. (SELECT `id` FROM `mdp_source` WHERE `source_code`='S1_CUSTOMER_FILE' LIMIT 1),
  167. 'S1_CUSTOMER_FILE',
  168. 'S1客户主数据 Excel 入站',
  169. 'FILE',
  170. src.`target_table_name`,
  171. 'UPSERT',
  172. 5000,
  173. src.`biz_key_expr`,
  174. 1,
  175. '{"sheetName":"数据","headerRow":1,"maxRows":50000,"allowedExtensions":[".xlsx"],"importMode":"UPSERT","rebuildable":false,"transformTaskCode":"S1_MDP_SYNC_TRANSFORM"}',
  176. 1,
  177. 'FILE 试点实体,贴源表/业务键与 S1_CUSTOMER_SQLSERVER 一致',
  178. NOW(), NOW()
  179. FROM `mdp_entity` src
  180. WHERE src.`entity_code`='S1_CUSTOMER_SQLSERVER' AND src.`status`=1
  181. AND NOT EXISTS (SELECT 1 FROM `mdp_entity` WHERE `entity_code`='S1_CUSTOMER_FILE')
  182. LIMIT 1;
  183. INSERT INTO `mdp_field_mapping` (
  184. `entity_id`, `source_field`, `target_field`, `field_type`, `is_required`, `sort_order`, `create_time`)
  185. SELECT e.`id`, 'Domain', 'Domain', 'DIRECT', 1, 10, NOW()
  186. FROM `mdp_entity` e
  187. WHERE e.`entity_code`='S1_CUSTOMER_FILE'
  188. AND NOT EXISTS (SELECT 1 FROM `mdp_field_mapping` m WHERE m.`entity_id`=e.`id` AND m.`source_field`='Domain');
  189. INSERT INTO `mdp_field_mapping` (
  190. `entity_id`, `source_field`, `target_field`, `field_type`, `is_required`, `sort_order`, `create_time`)
  191. SELECT e.`id`, 'Customer', 'Customer', 'DIRECT', 1, 20, NOW()
  192. FROM `mdp_entity` e
  193. WHERE e.`entity_code`='S1_CUSTOMER_FILE'
  194. AND NOT EXISTS (SELECT 1 FROM `mdp_field_mapping` m WHERE m.`entity_id`=e.`id` AND m.`source_field`='Customer');
  195. INSERT INTO `mdp_field_mapping` (
  196. `entity_id`, `source_field`, `target_field`, `field_type`, `is_required`, `sort_order`, `create_time`)
  197. SELECT e.`id`, 'CustomerName', 'CustomerName', 'DIRECT', 0, 30, NOW()
  198. FROM `mdp_entity` e
  199. WHERE e.`entity_code`='S1_CUSTOMER_FILE'
  200. AND NOT EXISTS (SELECT 1 FROM `mdp_field_mapping` m WHERE m.`entity_id`=e.`id` AND m.`source_field`='CustomerName');