1.0.563.sql 3.4 KB

12345678910111213141516171819202122232425262728293031323334
  1. -- 未映射库存流水隔离表。trans_type 留空的行登记在此,指标不计入。
  2. CREATE TABLE IF NOT EXISTS mdp_std_inv_trans_unmapped (
  3. id BIGINT AUTO_INCREMENT PRIMARY KEY,
  4. tenant_id BIGINT NOT NULL DEFAULT 0,
  5. source_system VARCHAR(50) NOT NULL,
  6. src_rec_id VARCHAR(100) NOT NULL,
  7. src_trans_type_raw VARCHAR(64) NOT NULL,
  8. row_count BIGINT NOT NULL DEFAULT 1,
  9. first_seen DATETIME NOT NULL,
  10. last_seen DATETIME NOT NULL,
  11. UNIQUE KEY uk_inv_unmapped (tenant_id, source_system, src_rec_id),
  12. KEY idx_inv_unmapped_code (tenant_id, source_system, src_trans_type_raw)
  13. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='未映射到中立阶段码的库存流水';
  14. INSERT INTO mdp_std_inv_trans_unmapped
  15. (tenant_id, source_system, src_rec_id, src_trans_type_raw, row_count, first_seen, last_seen)
  16. SELECT tenant_id, source_system, src_rec_id, src_trans_type_raw, 1, NOW(), NOW()
  17. FROM mdp_std_inv_trans
  18. WHERE trans_type IS NULL AND src_trans_type_raw IS NOT NULL
  19. ON DUPLICATE KEY UPDATE last_seen=NOW();
  20. -- 排程宽表补 doc_type,唯一键纳入单据类型,生产任务与销售订单重号不再互相覆盖
  21. SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='dwd_order_schedule_trans' AND COLUMN_NAME='doc_type')=0, 'ALTER TABLE `dwd_order_schedule_trans` ADD COLUMN `doc_type` VARCHAR(32) NOT NULL DEFAULT ''PROD_TASK''', 'DO 0');
  22. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
  23. SET @sql := IF((SELECT COUNT(*) FROM information_schema.STATISTICS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='dwd_order_schedule_trans' AND INDEX_NAME='uk_dwd_order_schedule_trans' AND COLUMN_NAME='doc_type')=0 AND (SELECT COUNT(*) FROM information_schema.STATISTICS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='dwd_order_schedule_trans' AND INDEX_NAME='uk_dwd_order_schedule_trans')>0, 'ALTER TABLE `dwd_order_schedule_trans` DROP INDEX `uk_dwd_order_schedule_trans`, ADD UNIQUE KEY `uk_dwd_order_schedule_trans` (`tenant_id`,`doc_type`,`work_order`,`calc_batch_id`)', 'DO 0');
  24. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
  25. -- FQC 任务唯一键纳入来源,避免不同来源的同号 source_row_id 互相覆盖
  26. SET @sql := IF((SELECT COUNT(*) FROM information_schema.STATISTICS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='mdp_std_fqc_task' AND INDEX_NAME='uk_mdp_std_fqc_task' AND COLUMN_NAME='source_system')=0 AND (SELECT COUNT(*) FROM information_schema.STATISTICS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='mdp_std_fqc_task' AND INDEX_NAME='uk_mdp_std_fqc_task')>0, 'ALTER TABLE `mdp_std_fqc_task` DROP INDEX `uk_mdp_std_fqc_task`, ADD UNIQUE KEY `uk_mdp_std_fqc_task` (`tenant_id`,`source_system`,`source_row_id`)', 'DO 0');
  27. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
  28. -- 入站授权可按对接方收紧契约版本。默认 v1,未通知对接方前不拒收旧报文。
  29. SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='mdp_inbound_grant' AND COLUMN_NAME='min_contract_version')=0 AND (SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='mdp_inbound_grant')>0, 'ALTER TABLE `mdp_inbound_grant` ADD COLUMN `min_contract_version` VARCHAR(8) NOT NULL DEFAULT ''v1''', 'DO 0');
  30. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;