1.0.130.sql 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464
  1. -- 1.0.125.sql
  2. -- S1-MDP-FOUNDATION-1
  3. -- 为 S1 产销协同首批数据中台试点补齐基础落库对象与 mdp_entity 登记。
  4. --
  5. -- 范围:
  6. -- 1) 兜底创建通用 MDP 配置/日志表:mdp_source / mdp_entity / mdp_field_mapping / mdp_sync_log / mdp_transform_run_log。
  7. -- 2) 新增 S1 贴源层:mdp_stg_so / mdp_stg_ship_trans。
  8. -- 3) 新增 S1 标准层:mdp_std_so / mdp_std_ship_trans。
  9. -- 4) 新增 S1 DWD 明细宽表:dwd_ship_trans。
  10. -- 5) 登记 S1 首批源实体到 mdp_entity,并写入基础血缘字段映射。
  11. --
  12. -- 安全边界:
  13. -- * 仅 CREATE TABLE IF NOT EXISTS、INSERT ... ON DUPLICATE KEY UPDATE 和 TEMPORARY TABLE。
  14. -- * 不删除、不清空、不改写业务运行表;不切换任何接口读路径。
  15. -- * 不修改 S2/S3/S4/S7 既有业务写入规则和数据口径。
  16. --
  17. -- 幂等性:
  18. -- * 表结构使用 CREATE TABLE IF NOT EXISTS。
  19. -- * mdp_source / mdp_entity / mdp_field_mapping 使用唯一键 upsert。
  20. -- * 重复执行不会重复登记实体或字段映射。
  21. --
  22. -- 执行入口:AutoVersionUpdate.UseAutoVersionUpdate(),csproj Version=1.0.125 主节点首次启动时触发。
  23. -- 2026-05-25
  24. SET @tenant_id := 0;
  25. SET @source_code := 'AIDOPDEV_MYSQL';
  26. -- ─── 1) MDP 通用底座兜底 ───
  27. CREATE TABLE IF NOT EXISTS mdp_source (
  28. id BIGINT AUTO_INCREMENT PRIMARY KEY,
  29. tenant_id BIGINT NOT NULL,
  30. source_code VARCHAR(50) NOT NULL,
  31. source_name VARCHAR(100) NOT NULL,
  32. source_type ENUM('DB','API') NOT NULL,
  33. status TINYINT DEFAULT 1,
  34. db_type ENUM('MySQL','SQLServer','Oracle','PostgreSQL'),
  35. db_host VARCHAR(200),
  36. db_port INT,
  37. db_name VARCHAR(100),
  38. db_user VARCHAR(100),
  39. db_password_enc VARCHAR(500),
  40. db_extra_params VARCHAR(500),
  41. api_base_url VARCHAR(500),
  42. api_auth_type ENUM('NONE','TOKEN','OAUTH2','APIKEY'),
  43. api_auth_config JSON,
  44. last_health_check DATETIME,
  45. health_status TINYINT DEFAULT 0,
  46. health_msg VARCHAR(500),
  47. remark VARCHAR(500),
  48. create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
  49. update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  50. UNIQUE KEY uk_tenant_source (tenant_id, source_code)
  51. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='MDP数据源配置';
  52. CREATE TABLE IF NOT EXISTS mdp_entity (
  53. id BIGINT AUTO_INCREMENT PRIMARY KEY,
  54. tenant_id BIGINT NOT NULL,
  55. source_id BIGINT NOT NULL,
  56. entity_code VARCHAR(100) NOT NULL,
  57. entity_name VARCHAR(200) NOT NULL,
  58. entity_type ENUM('TABLE','VIEW','API') NOT NULL DEFAULT 'TABLE',
  59. source_table_name VARCHAR(200),
  60. source_api_path VARCHAR(500),
  61. api_config_id BIGINT,
  62. target_table_name VARCHAR(200),
  63. sync_mode ENUM('FULL','INCR','CDC','PAGE','CURSOR','TIME_WINDOW','NONE') DEFAULT 'INCR',
  64. incr_column VARCHAR(100),
  65. batch_size INT DEFAULT 5000,
  66. response_data_path VARCHAR(200),
  67. dedup_key_path VARCHAR(200),
  68. last_cursor VARCHAR(500),
  69. last_sync_to DATETIME,
  70. job_id VARCHAR(100),
  71. status TINYINT DEFAULT 1,
  72. remark VARCHAR(500),
  73. create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
  74. update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  75. UNIQUE KEY uk_tenant_entity (tenant_id, entity_code),
  76. KEY idx_source (source_id),
  77. KEY idx_api_config (api_config_id)
  78. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='MDP同步实体配置';
  79. CREATE TABLE IF NOT EXISTS mdp_field_mapping (
  80. id BIGINT AUTO_INCREMENT PRIMARY KEY,
  81. entity_id BIGINT NOT NULL,
  82. source_field VARCHAR(200) NOT NULL,
  83. target_field VARCHAR(200) NOT NULL,
  84. field_type ENUM('DIRECT','JSONPATH','SCRIPT','CONST','LOOKUP') DEFAULT 'DIRECT',
  85. transform_script TEXT,
  86. const_value VARCHAR(500),
  87. lookup_table VARCHAR(200),
  88. is_required TINYINT DEFAULT 0,
  89. default_value VARCHAR(500),
  90. sort_order INT DEFAULT 0,
  91. create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
  92. UNIQUE KEY uk_entity_field (entity_id, target_field)
  93. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='MDP字段映射配置';
  94. CREATE TABLE IF NOT EXISTS mdp_sync_log (
  95. id BIGINT AUTO_INCREMENT PRIMARY KEY,
  96. tenant_id BIGINT NOT NULL,
  97. entity_id BIGINT NOT NULL,
  98. source_code VARCHAR(50) NOT NULL,
  99. entity_name VARCHAR(200),
  100. sync_batch_id VARCHAR(50) NOT NULL,
  101. sync_type ENUM('FULL','INCR') NOT NULL,
  102. trigger_type ENUM('AUTO','MANUAL') DEFAULT 'AUTO',
  103. sync_start DATETIME,
  104. sync_end DATETIME,
  105. duration_ms INT,
  106. rows_read BIGINT DEFAULT 0,
  107. rows_insert BIGINT DEFAULT 0,
  108. rows_update BIGINT DEFAULT 0,
  109. rows_skip BIGINT DEFAULT 0,
  110. rows_error BIGINT DEFAULT 0,
  111. status ENUM('RUNNING','SUCCESS','PARTIAL','FAILED') DEFAULT 'RUNNING',
  112. error_msg TEXT,
  113. error_sample JSON,
  114. KEY idx_tenant_entity_time (tenant_id, entity_id, sync_start),
  115. KEY idx_batch (sync_batch_id),
  116. KEY idx_status (status)
  117. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='MDP同步执行日志';
  118. CREATE TABLE IF NOT EXISTS mdp_transform_run_log (
  119. id BIGINT AUTO_INCREMENT PRIMARY KEY,
  120. tenant_id BIGINT NOT NULL DEFAULT 0,
  121. job_code VARCHAR(100) NOT NULL,
  122. job_name VARCHAR(200) NOT NULL,
  123. trigger_type VARCHAR(30) NOT NULL DEFAULT 'AUTO',
  124. batch_id VARCHAR(100) NOT NULL,
  125. status VARCHAR(30) NOT NULL DEFAULT 'RUNNING',
  126. start_time DATETIME NOT NULL,
  127. end_time DATETIME NULL,
  128. duration_ms INT NULL,
  129. stage_rows INT NOT NULL DEFAULT 0,
  130. standard_rows INT NOT NULL DEFAULT 0,
  131. dwd_rows INT NOT NULL DEFAULT 0,
  132. error_message TEXT NULL,
  133. summary_json JSON NULL,
  134. create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  135. update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  136. UNIQUE KEY uk_batch (batch_id),
  137. KEY idx_job_start (job_code, start_time),
  138. KEY idx_status_start (status, start_time)
  139. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='MDP整轮同步转换运行日志';
  140. -- ─── 2) S1 贴源层 ───
  141. CREATE TABLE IF NOT EXISTS mdp_stg_so (
  142. id BIGINT AUTO_INCREMENT PRIMARY KEY,
  143. tenant_id BIGINT NULL,
  144. factory_id BIGINT NULL,
  145. company_id BIGINT NULL,
  146. source_system VARCHAR(50) NOT NULL,
  147. source_table VARCHAR(100) NOT NULL,
  148. source_row_id VARCHAR(200) NULL,
  149. source_biz_key VARCHAR(300) NOT NULL,
  150. sync_batch_id VARCHAR(64) NOT NULL,
  151. sync_time DATETIME NOT NULL,
  152. process_status VARCHAR(20) NOT NULL DEFAULT 'PENDING',
  153. process_message VARCHAR(1000) NULL,
  154. raw_data JSON NULL,
  155. create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  156. update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  157. KEY idx_batch_status (sync_batch_id, process_status),
  158. UNIQUE KEY uk_source_key (source_system, source_table, source_biz_key),
  159. KEY idx_tenant_time (tenant_id, sync_time)
  160. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='S1订单/评审贴源表';
  161. CREATE TABLE IF NOT EXISTS mdp_stg_ship_trans LIKE mdp_stg_so;
  162. ALTER TABLE mdp_stg_ship_trans COMMENT='S1发货/ASN/联动贴源表';
  163. -- ─── 3) S1 标准层 ───
  164. CREATE TABLE IF NOT EXISTS mdp_std_so (
  165. id BIGINT AUTO_INCREMENT PRIMARY KEY,
  166. tenant_id BIGINT NOT NULL,
  167. factory_id BIGINT NULL,
  168. company_id BIGINT NULL,
  169. source_system VARCHAR(50) NOT NULL,
  170. order_id BIGINT NULL,
  171. order_entry_id BIGINT NULL,
  172. order_no VARCHAR(100) NOT NULL,
  173. order_line VARCHAR(50) NULL,
  174. order_type VARCHAR(50) NULL,
  175. customer_id BIGINT NULL,
  176. customer_no VARCHAR(100) NULL,
  177. customer_name VARCHAR(200) NULL,
  178. customer_order_no VARCHAR(100) NULL,
  179. country VARCHAR(100) NULL,
  180. item_code VARCHAR(100) NULL,
  181. item_name VARCHAR(200) NULL,
  182. item_spec VARCHAR(300) NULL,
  183. map_number VARCHAR(300) NULL,
  184. map_name VARCHAR(300) NULL,
  185. bom_number VARCHAR(300) NULL,
  186. unit VARCHAR(50) NULL,
  187. order_qty DECIMAL(18,6) NULL,
  188. delivered_notice_qty DECIMAL(18,6) NULL,
  189. delivered_qty DECIMAL(18,6) NULL,
  190. price DECIMAL(18,6) NULL,
  191. tax_price DECIMAL(18,6) NULL,
  192. amount DECIMAL(18,6) NULL,
  193. total_amount DECIMAL(18,6) NULL,
  194. order_date DATETIME NULL,
  195. customer_request_date DATETIME NULL,
  196. plan_delivery_date DATETIME NULL,
  197. promised_delivery_date DATETIME NULL,
  198. capacity_date DATETIME NULL,
  199. material_ready_date DATETIME NULL,
  200. planner_no VARCHAR(100) NULL,
  201. planner_name VARCHAR(100) NULL,
  202. order_status VARCHAR(50) NULL,
  203. review_status VARCHAR(50) NULL,
  204. review_stage VARCHAR(100) NULL,
  205. flow_state VARCHAR(100) NULL,
  206. progress VARCHAR(50) NULL,
  207. urgent TINYINT NULL,
  208. closed TINYINT NULL,
  209. deleted_flag TINYINT NOT NULL DEFAULT 0,
  210. source_table VARCHAR(100) NOT NULL,
  211. source_row_id VARCHAR(200) NULL,
  212. source_biz_key VARCHAR(300) NOT NULL,
  213. sync_batch_id VARCHAR(64) NOT NULL,
  214. sync_time DATETIME NOT NULL,
  215. create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  216. update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  217. UNIQUE KEY uk_source_key (tenant_id, source_system, source_table, source_biz_key),
  218. KEY idx_order_line (tenant_id, order_no, order_line),
  219. KEY idx_customer_date (tenant_id, customer_no, plan_delivery_date),
  220. KEY idx_item_date (tenant_id, item_code, plan_delivery_date),
  221. KEY idx_status_date (tenant_id, order_status, review_status, plan_delivery_date)
  222. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='S1标准销售订单/评审对象';
  223. CREATE TABLE IF NOT EXISTS mdp_std_ship_trans (
  224. id BIGINT AUTO_INCREMENT PRIMARY KEY,
  225. tenant_id BIGINT NOT NULL,
  226. factory_id BIGINT NULL,
  227. company_id BIGINT NULL,
  228. source_system VARCHAR(50) NOT NULL,
  229. trans_type VARCHAR(50) NOT NULL,
  230. plan_id BIGINT NULL,
  231. plan_no VARCHAR(100) NULL,
  232. plan_line VARCHAR(50) NULL,
  233. shipper_rec_id BIGINT NULL,
  234. shipper_no VARCHAR(100) NULL,
  235. shipper_line VARCHAR(50) NULL,
  236. order_id BIGINT NULL,
  237. order_entry_id BIGINT NULL,
  238. order_no VARCHAR(100) NULL,
  239. order_line VARCHAR(50) NULL,
  240. customer_no VARCHAR(100) NULL,
  241. customer_name VARCHAR(200) NULL,
  242. country VARCHAR(100) NULL,
  243. item_code VARCHAR(100) NULL,
  244. item_name VARCHAR(200) NULL,
  245. item_spec VARCHAR(300) NULL,
  246. qty DECIMAL(18,6) NULL,
  247. plan_qty DECIMAL(18,6) NULL,
  248. qty_to_ship DECIMAL(18,6) NULL,
  249. picking_qty DECIMAL(18,6) NULL,
  250. real_qty DECIMAL(18,6) NULL,
  251. weight DECIMAL(18,6) NULL,
  252. gross_weight DECIMAL(18,6) NULL,
  253. net_weight DECIMAL(18,6) NULL,
  254. volume DECIMAL(18,6) NULL,
  255. order_date DATETIME NULL,
  256. plan_ship_date DATETIME NULL,
  257. actual_ship_date DATETIME NULL,
  258. site VARCHAR(100) NULL,
  259. shipping_site VARCHAR(200) NULL,
  260. shipping_address VARCHAR(500) NULL,
  261. consignee VARCHAR(200) NULL,
  262. telephone VARCHAR(100) NULL,
  263. status VARCHAR(50) NULL,
  264. confirm_status VARCHAR(50) NULL,
  265. linkage_status VARCHAR(50) NULL,
  266. source_table VARCHAR(100) NOT NULL,
  267. source_row_id VARCHAR(200) NULL,
  268. source_biz_key VARCHAR(300) NOT NULL,
  269. sync_batch_id VARCHAR(64) NOT NULL,
  270. sync_time DATETIME NOT NULL,
  271. create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  272. update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  273. UNIQUE KEY uk_source_key (tenant_id, source_system, source_table, source_biz_key),
  274. KEY idx_order_line (tenant_id, order_no, order_line),
  275. KEY idx_plan (tenant_id, plan_no, plan_line),
  276. KEY idx_shipper (tenant_id, shipper_no, shipper_line),
  277. KEY idx_ship_date (tenant_id, actual_ship_date, plan_ship_date),
  278. KEY idx_status_date (tenant_id, status, plan_ship_date)
  279. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='S1标准发货/ASN/联动对象';
  280. -- ─── 4) S1 DWD 明细宽表 ───
  281. CREATE TABLE IF NOT EXISTS dwd_ship_trans (
  282. id BIGINT AUTO_INCREMENT PRIMARY KEY,
  283. tenant_id BIGINT NOT NULL,
  284. factory_id BIGINT NULL,
  285. company_id BIGINT NULL,
  286. stat_date DATE NOT NULL,
  287. order_id BIGINT NULL,
  288. order_entry_id BIGINT NULL,
  289. order_no VARCHAR(100) NOT NULL,
  290. order_line VARCHAR(50) NULL,
  291. customer_no VARCHAR(100) NULL,
  292. customer_name VARCHAR(200) NULL,
  293. country VARCHAR(100) NULL,
  294. item_code VARCHAR(100) NULL,
  295. item_name VARCHAR(200) NULL,
  296. item_spec VARCHAR(300) NULL,
  297. order_qty DECIMAL(18,6) NULL,
  298. planned_ship_qty DECIMAL(18,6) NULL,
  299. shipped_qty DECIMAL(18,6) NULL,
  300. remaining_qty DECIMAL(18,6) NULL,
  301. order_date DATETIME NULL,
  302. customer_request_date DATETIME NULL,
  303. plan_delivery_date DATETIME NULL,
  304. promised_delivery_date DATETIME NULL,
  305. plan_ship_date DATETIME NULL,
  306. actual_ship_date DATETIME NULL,
  307. review_status VARCHAR(50) NULL,
  308. order_status VARCHAR(50) NULL,
  309. delivery_status VARCHAR(50) NULL,
  310. linkage_status VARCHAR(50) NULL,
  311. risk_level VARCHAR(50) NULL,
  312. source_system VARCHAR(50) NULL,
  313. source_table VARCHAR(100) NULL,
  314. source_row_id VARCHAR(200) NULL,
  315. source_biz_key VARCHAR(300) NULL,
  316. sync_batch_id VARCHAR(64) NULL,
  317. calc_batch_id VARCHAR(64) NOT NULL,
  318. calc_time DATETIME NOT NULL,
  319. create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  320. update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  321. UNIQUE KEY uk_order_line_stat (tenant_id, stat_date, order_no, order_line, item_code),
  322. KEY idx_order_line (tenant_id, order_no, order_line),
  323. KEY idx_customer_date (tenant_id, customer_no, stat_date),
  324. KEY idx_item_date (tenant_id, item_code, stat_date),
  325. KEY idx_status_date (tenant_id, delivery_status, risk_level, stat_date),
  326. KEY idx_batch (tenant_id, calc_batch_id)
  327. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='S1订单交付发货DWD宽表';
  328. -- ─── 5) S1 数据源与实体登记 ───
  329. INSERT INTO mdp_source
  330. (tenant_id, source_code, source_name, source_type, status, db_type, db_host, db_port, db_name, db_user, db_password_enc, remark)
  331. VALUES
  332. (@tenant_id, @source_code, 'aidopdev 当前项目库', 'DB', 1, 'MySQL', NULL, 3306, 'aidopdev', NULL, NULL, 'S1产销协同首批迁移数据源,不在配置表保存明文密码')
  333. ON DUPLICATE KEY UPDATE
  334. source_name = VALUES(source_name),
  335. source_type = VALUES(source_type),
  336. status = VALUES(status),
  337. db_type = VALUES(db_type),
  338. db_port = VALUES(db_port),
  339. db_name = VALUES(db_name),
  340. remark = VALUES(remark),
  341. update_time = CURRENT_TIMESTAMP;
  342. SELECT @source_id := id
  343. FROM mdp_source
  344. WHERE tenant_id = @tenant_id
  345. AND source_code = @source_code
  346. LIMIT 1;
  347. CREATE TEMPORARY TABLE tmp_s1_mdp_entity (
  348. entity_code VARCHAR(100) PRIMARY KEY,
  349. entity_name VARCHAR(200) NOT NULL,
  350. source_table_name VARCHAR(200) NOT NULL,
  351. target_table_name VARCHAR(200) NOT NULL,
  352. sync_mode VARCHAR(20) NOT NULL,
  353. incr_column VARCHAR(100) NULL,
  354. source_row_id_expr VARCHAR(200) NULL,
  355. source_biz_key_expr VARCHAR(500) NOT NULL,
  356. remark VARCHAR(500) NULL
  357. );
  358. INSERT INTO tmp_s1_mdp_entity
  359. (entity_code, entity_name, source_table_name, target_table_name, sync_mode, incr_column, source_row_id_expr, source_biz_key_expr, remark)
  360. VALUES
  361. ('S1_SEORDER', 'S1销售订单主表', 'crm_seorder', 'mdp_stg_so', 'INCR', 'update_time', 'Id', 'COALESCE(bill_no, CAST(Id AS CHAR))', '订单主表,进入订单标准层'),
  362. ('S1_SEORDER_ENTRY', 'S1销售订单明细', 'crm_seorderentry', 'mdp_stg_so', 'INCR', 'update_time', 'Id', 'CONCAT(COALESCE(bill_no, ''''), '':'', COALESCE(CAST(entry_seq AS CHAR), CAST(Id AS CHAR)))', '订单明细,进入订单标准层'),
  363. ('S1_SEORDER_CHANGE', 'S1销售订单变更', 'crm_seorder_change', 'mdp_stg_so', 'INCR', 'update_time', 'Id', 'CONCAT(COALESCE(bill_no, ''''), '':'', CAST(Id AS CHAR))', '订单变更,进入订单评审/状态上下文'),
  364. ('S1_CONTRACT_REVIEW', 'S1合同评审主表', 'ado_contract_review', 'mdp_stg_so', 'INCR', 'UpdateTime', 'RecID', 'COALESCE(BillNo, CAST(RecID AS CHAR))', '合同评审主表,进入订单评审上下文'),
  365. ('S1_CONTRACT_REVIEW_FLOW', 'S1合同评审流程节点', 'ado_contract_review_flow', 'mdp_stg_so', 'FULL', NULL, 'RecID', 'CONCAT(COALESCE(ReviewBillNo, ''''), '':'', CAST(StageNo AS CHAR), '':'', CAST(RecID AS CHAR))', '合同评审节点,空表或全量同步均应成功'),
  366. ('S1_SHIPPING_PLAN', 'S1发货计划主表', 'ShippingPlan', 'mdp_stg_ship_trans', 'INCR', 'UpdateTime', 'RecID', 'COALESCE(LotSerial, CAST(RecID AS CHAR))', '发货计划主表,进入发货标准层'),
  367. ('S1_SHIPPING_PLAN_DETAIL', 'S1发货计划明细', 'ShippingPlanDetail', 'mdp_stg_ship_trans', 'INCR', 'UpdateTime', 'RecID', 'CONCAT(COALESCE(CAST(plan_id AS CHAR), ''''), '':'', COALESCE(OrdNbr, ''''), '':'', CAST(RecID AS CHAR))', '发货计划明细,进入发货标准层'),
  368. ('S1_ASN_SHIPPER_MASTER', 'S1 ASN发货主表', 'ASNBOLShipperMaster', 'mdp_stg_ship_trans', 'INCR', 'UpdateTime', 'RecID', 'COALESCE(Id, CONCAT(COALESCE(OrdNbr, ''''), '':'', CAST(RecID AS CHAR)))', 'ASN发货主表,进入发货标准层'),
  369. ('S1_ASN_SHIPPER_DETAIL', 'S1 ASN发货明细', 'ASNBOLShipperDetail', 'mdp_stg_ship_trans', 'INCR', 'UpdateTime', 'RecID', 'CONCAT(COALESCE(Id, ''''), '':'', COALESCE(CAST(Line AS CHAR), CAST(RecID AS CHAR)))', 'ASN发货明细,进入发货标准层'),
  370. ('S1_LINKAGE_PLAN', 'S1计划联动看板', 'LinkagePlan', 'mdp_stg_ship_trans', 'INCR', 'update_time', 'id', 'CONCAT(COALESCE(bill_no, ''''), '':'', COALESCE(item_number, ''''), '':'', CAST(id AS CHAR))', '计划联动事实,进入订单交付DWD上下文');
  371. INSERT INTO mdp_entity
  372. (tenant_id, source_id, entity_code, entity_name, entity_type, source_table_name, target_table_name, sync_mode, incr_column, batch_size, status, remark)
  373. SELECT
  374. @tenant_id,
  375. @source_id,
  376. entity_code,
  377. entity_name,
  378. 'TABLE',
  379. source_table_name,
  380. target_table_name,
  381. sync_mode,
  382. incr_column,
  383. 5000,
  384. 1,
  385. remark
  386. FROM tmp_s1_mdp_entity
  387. ON DUPLICATE KEY UPDATE
  388. source_id = VALUES(source_id),
  389. entity_name = VALUES(entity_name),
  390. entity_type = VALUES(entity_type),
  391. source_table_name = VALUES(source_table_name),
  392. target_table_name = VALUES(target_table_name),
  393. sync_mode = VALUES(sync_mode),
  394. incr_column = VALUES(incr_column),
  395. batch_size = VALUES(batch_size),
  396. status = VALUES(status),
  397. remark = VALUES(remark),
  398. update_time = CURRENT_TIMESTAMP;
  399. INSERT INTO mdp_field_mapping
  400. (entity_id, source_field, target_field, field_type, transform_script, const_value, is_required, sort_order)
  401. SELECT e.id, 'tenant_id', 'tenant_id', 'DIRECT', NULL, NULL, 0, 10
  402. FROM mdp_entity e
  403. JOIN tmp_s1_mdp_entity t ON e.entity_code = t.entity_code
  404. WHERE e.tenant_id = @tenant_id
  405. ON DUPLICATE KEY UPDATE source_field=VALUES(source_field), field_type=VALUES(field_type), sort_order=VALUES(sort_order);
  406. INSERT INTO mdp_field_mapping
  407. (entity_id, source_field, target_field, field_type, transform_script, const_value, is_required, sort_order)
  408. SELECT e.id, 'CONST:AIDOP', 'source_system', 'CONST', NULL, 'AIDOP', 1, 20
  409. FROM mdp_entity e
  410. JOIN tmp_s1_mdp_entity t ON e.entity_code = t.entity_code
  411. WHERE e.tenant_id = @tenant_id
  412. ON DUPLICATE KEY UPDATE source_field=VALUES(source_field), field_type=VALUES(field_type), const_value=VALUES(const_value), is_required=VALUES(is_required), sort_order=VALUES(sort_order);
  413. INSERT INTO mdp_field_mapping
  414. (entity_id, source_field, target_field, field_type, transform_script, const_value, is_required, sort_order)
  415. SELECT e.id, CONCAT('CONST:', t.source_table_name), 'source_table', 'CONST', NULL, t.source_table_name, 1, 30
  416. FROM mdp_entity e
  417. JOIN tmp_s1_mdp_entity t ON e.entity_code = t.entity_code
  418. WHERE e.tenant_id = @tenant_id
  419. ON DUPLICATE KEY UPDATE source_field=VALUES(source_field), field_type=VALUES(field_type), const_value=VALUES(const_value), is_required=VALUES(is_required), sort_order=VALUES(sort_order);
  420. INSERT INTO mdp_field_mapping
  421. (entity_id, source_field, target_field, field_type, transform_script, const_value, is_required, sort_order)
  422. SELECT e.id, IFNULL(t.source_row_id_expr, ''), 'source_row_id', 'SCRIPT', t.source_row_id_expr, NULL, 0, 40
  423. FROM mdp_entity e
  424. JOIN tmp_s1_mdp_entity t ON e.entity_code = t.entity_code
  425. WHERE e.tenant_id = @tenant_id
  426. ON DUPLICATE KEY UPDATE source_field=VALUES(source_field), field_type=VALUES(field_type), transform_script=VALUES(transform_script), sort_order=VALUES(sort_order);
  427. INSERT INTO mdp_field_mapping
  428. (entity_id, source_field, target_field, field_type, transform_script, const_value, is_required, sort_order)
  429. SELECT e.id, t.source_biz_key_expr, 'source_biz_key', 'SCRIPT', t.source_biz_key_expr, NULL, 1, 50
  430. FROM mdp_entity e
  431. JOIN tmp_s1_mdp_entity t ON e.entity_code = t.entity_code
  432. WHERE e.tenant_id = @tenant_id
  433. ON DUPLICATE KEY UPDATE source_field=VALUES(source_field), field_type=VALUES(field_type), transform_script=VALUES(transform_script), is_required=VALUES(is_required), sort_order=VALUES(sort_order);
  434. INSERT INTO mdp_field_mapping
  435. (entity_id, source_field, target_field, field_type, transform_script, const_value, is_required, sort_order)
  436. SELECT e.id, 'TO_JSON(row)', 'raw_data', 'SCRIPT', 'TO_JSON(row)', NULL, 0, 60
  437. FROM mdp_entity e
  438. JOIN tmp_s1_mdp_entity t ON e.entity_code = t.entity_code
  439. WHERE e.tenant_id = @tenant_id
  440. ON DUPLICATE KEY UPDATE source_field=VALUES(source_field), field_type=VALUES(field_type), transform_script=VALUES(transform_script), sort_order=VALUES(sort_order);
  441. DROP TEMPORARY TABLE tmp_s1_mdp_entity;