1.0.565.sql 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. -- 1.0.565 —— 库位角色重算、阶段码回填、演示数据与默认租户清理、来源登记、S8 刷新权限
  2. -- 不修改已发布的 1.0.564.sql。可重复执行。不使用事务。
  3. -- WHEN 分支与 NeutralTransTypeCodes 逐字相同。
  4. -- 开发库可能尚未执行 1.0.564,这里先保证表存在,再把错误角色纠正过来。
  5. CREATE TABLE IF NOT EXISTS mdp_location_role (
  6. id BIGINT AUTO_INCREMENT PRIMARY KEY,
  7. tenant_id BIGINT NOT NULL DEFAULT 0,
  8. domain VARCHAR(50) NOT NULL DEFAULT '',
  9. location VARCHAR(100) NOT NULL,
  10. location_role VARCHAR(24) NOT NULL DEFAULT 'UNKNOWN' COMMENT 'MAT_INSPECT/MATERIAL/MAT_LINE_LOC/SEMI/FG_INSPECT/FG/FG_LINE_LOC/REJECT_SCRAP/VMI/OTHER/UNKNOWN',
  11. role_source VARCHAR(24) NOT NULL DEFAULT 'AUTO_TYPED' COMMENT 'RATIFIED=已定口径 AUTO_TYPED=按库位类型推断 MANUAL=运维维护',
  12. remark VARCHAR(255) NULL,
  13. create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  14. update_time DATETIME NULL ON UPDATE CURRENT_TIMESTAMP,
  15. UNIQUE KEY uk_location_role (tenant_id, domain, location),
  16. KEY idx_location_role_role (tenant_id, location_role)
  17. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='库位中立角色(阶段码判定用)';
  18. CREATE TABLE IF NOT EXISTS mdp_std_inv_trans_unmapped (
  19. id BIGINT AUTO_INCREMENT PRIMARY KEY,
  20. tenant_id BIGINT NOT NULL DEFAULT 0,
  21. source_system VARCHAR(50) NOT NULL,
  22. src_rec_id VARCHAR(100) NOT NULL,
  23. src_trans_type_raw VARCHAR(64) NOT NULL,
  24. row_count BIGINT NOT NULL DEFAULT 1,
  25. first_seen DATETIME NOT NULL,
  26. last_seen DATETIME NOT NULL,
  27. UNIQUE KEY uk_inv_unmapped (tenant_id, source_system, src_rec_id),
  28. KEY idx_inv_unmapped_code (tenant_id, source_system, src_trans_type_raw)
  29. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='未映射到中立阶段码的库存流水';
  30. SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='mdp_std_inv_trans_unmapped' AND COLUMN_NAME='unmapped_reason')=0, 'ALTER TABLE `mdp_std_inv_trans_unmapped` ADD COLUMN `unmapped_reason` VARCHAR(40) NOT NULL DEFAULT ''UNKNOWN_CODE''', 'DO 0');
  31. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
  32. SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='mdp_std_inv_trans_unmapped' AND COLUMN_NAME='location')=0, 'ALTER TABLE `mdp_std_inv_trans_unmapped` ADD COLUMN `location` VARCHAR(100) NOT NULL DEFAULT ''''', 'DO 0');
  33. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
  34. ALTER TABLE mdp_location_role
  35. MODIFY COLUMN location_role VARCHAR(24) NOT NULL DEFAULT 'UNKNOWN'
  36. COMMENT 'MAT_INSPECT/MATERIAL/MAT_LINE_LOC/SEMI/FG_INSPECT/FG/FG_LINE_LOC/REJECT_SCRAP/VMI/OTHER/UNKNOWN';
  37. INSERT INTO mdp_location_role (tenant_id, domain, location, location_role, role_source, remark)
  38. SELECT IFNULL(lm.tenant_id, 0), IFNULL(lm.Domain, ''), lm.location,
  39. CASE WHEN NULLIF(TRIM(IFNULL(lm.typed,'')),'') IS NULL OR (CASE WHEN IFNULL(lm.typed,'') LIKE '%半成品%' THEN 'SEMI' WHEN IFNULL(lm.typed,'') LIKE '%成品%' AND (IFNULL(lm.typed,'') LIKE '%待检%' OR IFNULL(lm.typed,'') LIKE '%检验%') THEN 'FG_INSPECT' WHEN IFNULL(lm.typed,'') LIKE '%成品%' AND (IFNULL(lm.typed,'') LIKE '%线边%' OR IFNULL(lm.typed,'') LIKE '%产线%') THEN 'FG_LINE_LOC' WHEN IFNULL(lm.typed,'') LIKE '%不合格%' OR IFNULL(lm.typed,'') LIKE '%不良%' OR IFNULL(lm.typed,'') LIKE '%报废%' OR IFNULL(lm.typed,'') LIKE '%呆滞%' OR IFNULL(lm.typed,'') LIKE '%无价值%' THEN 'REJECT_SCRAP' WHEN IFNULL(lm.typed,'') LIKE '%待检%' OR IFNULL(lm.typed,'') LIKE '%检验%' OR IFNULL(lm.typed,'') LIKE '%IQC%' THEN 'MAT_INSPECT' WHEN IFNULL(lm.typed,'') LIKE '%线边%' OR IFNULL(lm.typed,'') LIKE '%产线%' THEN 'MAT_LINE_LOC' WHEN IFNULL(lm.typed,'') LIKE '%成品%' THEN 'FG' WHEN IFNULL(lm.typed,'') LIKE '%VMI%' OR IFNULL(lm.typed,'') LIKE '%寄售%' THEN 'VMI' WHEN IFNULL(lm.typed,'') LIKE '%材料%' OR IFNULL(lm.typed,'') LIKE '%物料%' OR IFNULL(lm.typed,'') LIKE '%原料%' OR IFNULL(lm.typed,'') LIKE '%辅料%' THEN 'MATERIAL' ELSE 'OTHER' END)='OTHER' THEN (CASE WHEN IFNULL(lm.descr,'') LIKE '%半成品%' THEN 'SEMI' WHEN IFNULL(lm.descr,'') LIKE '%成品%' AND (IFNULL(lm.descr,'') LIKE '%待检%' OR IFNULL(lm.descr,'') LIKE '%检验%') THEN 'FG_INSPECT' WHEN IFNULL(lm.descr,'') LIKE '%成品%' AND (IFNULL(lm.descr,'') LIKE '%线边%' OR IFNULL(lm.descr,'') LIKE '%产线%') THEN 'FG_LINE_LOC' WHEN IFNULL(lm.descr,'') LIKE '%不合格%' OR IFNULL(lm.descr,'') LIKE '%不良%' OR IFNULL(lm.descr,'') LIKE '%报废%' OR IFNULL(lm.descr,'') LIKE '%呆滞%' OR IFNULL(lm.descr,'') LIKE '%无价值%' THEN 'REJECT_SCRAP' WHEN IFNULL(lm.descr,'') LIKE '%待检%' OR IFNULL(lm.descr,'') LIKE '%检验%' OR IFNULL(lm.descr,'') LIKE '%IQC%' THEN 'MAT_INSPECT' WHEN IFNULL(lm.descr,'') LIKE '%线边%' OR IFNULL(lm.descr,'') LIKE '%产线%' THEN 'MAT_LINE_LOC' WHEN IFNULL(lm.descr,'') LIKE '%成品%' THEN 'FG' WHEN IFNULL(lm.descr,'') LIKE '%VMI%' OR IFNULL(lm.descr,'') LIKE '%寄售%' THEN 'VMI' WHEN IFNULL(lm.descr,'') LIKE '%材料%' OR IFNULL(lm.descr,'') LIKE '%物料%' OR IFNULL(lm.descr,'') LIKE '%原料%' OR IFNULL(lm.descr,'') LIKE '%辅料%' THEN 'MATERIAL' ELSE 'OTHER' END) ELSE (CASE WHEN IFNULL(lm.typed,'') LIKE '%半成品%' THEN 'SEMI' WHEN IFNULL(lm.typed,'') LIKE '%成品%' AND (IFNULL(lm.typed,'') LIKE '%待检%' OR IFNULL(lm.typed,'') LIKE '%检验%') THEN 'FG_INSPECT' WHEN IFNULL(lm.typed,'') LIKE '%成品%' AND (IFNULL(lm.typed,'') LIKE '%线边%' OR IFNULL(lm.typed,'') LIKE '%产线%') THEN 'FG_LINE_LOC' WHEN IFNULL(lm.typed,'') LIKE '%不合格%' OR IFNULL(lm.typed,'') LIKE '%不良%' OR IFNULL(lm.typed,'') LIKE '%报废%' OR IFNULL(lm.typed,'') LIKE '%呆滞%' OR IFNULL(lm.typed,'') LIKE '%无价值%' THEN 'REJECT_SCRAP' WHEN IFNULL(lm.typed,'') LIKE '%待检%' OR IFNULL(lm.typed,'') LIKE '%检验%' OR IFNULL(lm.typed,'') LIKE '%IQC%' THEN 'MAT_INSPECT' WHEN IFNULL(lm.typed,'') LIKE '%线边%' OR IFNULL(lm.typed,'') LIKE '%产线%' THEN 'MAT_LINE_LOC' WHEN IFNULL(lm.typed,'') LIKE '%成品%' THEN 'FG' WHEN IFNULL(lm.typed,'') LIKE '%VMI%' OR IFNULL(lm.typed,'') LIKE '%寄售%' THEN 'VMI' WHEN IFNULL(lm.typed,'') LIKE '%材料%' OR IFNULL(lm.typed,'') LIKE '%物料%' OR IFNULL(lm.typed,'') LIKE '%原料%' OR IFNULL(lm.typed,'') LIKE '%辅料%' THEN 'MATERIAL' ELSE 'OTHER' END) END,
  40. 'AUTO_TYPED',
  41. CONCAT('自动生成于 1.0.565;typed=', IFNULL(lm.typed,''), ';descr=', IFNULL(lm.descr,''))
  42. FROM LocationMaster lm
  43. WHERE TRIM(lm.location) <> ''
  44. AND IFNULL(lm.typed,'') <> 'Supp'
  45. ON DUPLICATE KEY UPDATE
  46. location_role = IF(
  47. role_source = 'MANUAL'
  48. OR (role_source = 'RATIFIED' AND IFNULL(remark,'') NOT LIKE '自动生成于 1.0.564%' AND location_role NOT IN ('INSPECT','LINE','SCRAP')),
  49. location_role,
  50. VALUES(location_role)),
  51. role_source = IF(
  52. role_source = 'MANUAL'
  53. OR (role_source = 'RATIFIED' AND IFNULL(remark,'') NOT LIKE '自动生成于 1.0.564%' AND location_role NOT IN ('INSPECT','LINE','SCRAP')),
  54. role_source,
  55. 'AUTO_TYPED'),
  56. remark = IF(
  57. role_source = 'MANUAL'
  58. OR (role_source = 'RATIFIED' AND IFNULL(remark,'') NOT LIKE '自动生成于 1.0.564%' AND location_role NOT IN ('INSPECT','LINE','SCRAP')),
  59. remark,
  60. VALUES(remark));
  61. -- 开发库可能尚未执行 1.0.562:先补来源码列,再把仍写在 trans_type 上的原始事务码迁过去。
  62. SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='mdp_std_inv_trans' AND COLUMN_NAME='biz_doc_type')=0, 'ALTER TABLE `mdp_std_inv_trans` ADD COLUMN `biz_doc_type` VARCHAR(32) NOT NULL DEFAULT ''OTHER'' COMMENT ''中立业务单据类型''', 'DO 0');
  63. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
  64. SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='mdp_std_inv_trans' AND COLUMN_NAME='src_trans_type_raw')=0, 'ALTER TABLE `mdp_std_inv_trans` ADD COLUMN `src_trans_type_raw` VARCHAR(64) NULL', 'DO 0');
  65. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
  66. SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='mdp_std_inv_trans' AND COLUMN_NAME='approved_time')=0, 'ALTER TABLE `mdp_std_inv_trans` ADD COLUMN `approved_time` DATETIME NULL', 'DO 0');
  67. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
  68. SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='mdp_std_inv_trans' AND COLUMN_NAME='approved_flag')=0, 'ALTER TABLE `mdp_std_inv_trans` ADD COLUMN `approved_flag` TINYINT NOT NULL DEFAULT 1', 'DO 0');
  69. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
  70. SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='mdp_std_inv_trans' AND COLUMN_NAME='void_flag')=0, 'ALTER TABLE `mdp_std_inv_trans` ADD COLUMN `void_flag` TINYINT NOT NULL DEFAULT 0', 'DO 0');
  71. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
  72. SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='mdp_std_inv_trans' AND COLUMN_NAME='summary_flag')=0, 'ALTER TABLE `mdp_std_inv_trans` ADD COLUMN `summary_flag` TINYINT NOT NULL DEFAULT 0', 'DO 0');
  73. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
  74. SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='mdp_std_inv_trans' AND COLUMN_NAME='ref_task_no')=0, 'ALTER TABLE `mdp_std_inv_trans` ADD COLUMN `ref_task_no` VARCHAR(80) NULL', 'DO 0');
  75. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
  76. UPDATE mdp_std_inv_trans
  77. SET src_trans_type_raw = trans_type
  78. WHERE src_trans_type_raw IS NULL
  79. AND trans_type IS NOT NULL
  80. AND trans_type NOT IN ('MAT_RECEIPT','MAT_IQC_RELEASE','MAT_PUTAWAY','MAT_PICK','MAT_ISSUE','MAT_LINE','FG_RECEIPT','FG_PUTAWAY','FG_PICK','FG_SHIP','FG_PROD_RECEIPT','FG_FQC_RELEASE');
  81. UPDATE mdp_std_inv_trans t
  82. LEFT JOIN mdp_location_role r
  83. ON r.tenant_id = t.tenant_id AND r.domain = IFNULL(t.domain,'') AND r.location = IFNULL(t.location,'')
  84. SET t.trans_type = CASE WHEN t.src_trans_type_raw IN ('inv-frz','inv-unfrz','iss-po','tag-cnf','tag-cnt') THEN NULL WHEN t.src_trans_type_raw='iss-wo' THEN 'MAT_ISSUE' WHEN t.src_trans_type_raw='rct-po' THEN 'MAT_RECEIPT' WHEN t.src_trans_type_raw='rct-po-ins' THEN 'MAT_RECEIPT' WHEN t.src_trans_type_raw='rct-rv' THEN 'FG_PROD_RECEIPT' WHEN t.src_trans_type_raw='iss-tr' AND IFNULL(t.qty_change,0)<0 AND IFNULL(r.location_role,'UNKNOWN')='MAT_INSPECT' THEN 'MAT_IQC_RELEASE' WHEN t.src_trans_type_raw='iss-tr' AND IFNULL(t.qty_change,0)<0 AND IFNULL(r.location_role,'UNKNOWN')='MATERIAL' THEN 'MAT_PICK' WHEN t.src_trans_type_raw='iss-tr' AND IFNULL(t.qty_change,0)<0 AND IFNULL(r.location_role,'UNKNOWN')='VMI' THEN 'MAT_PICK' WHEN t.src_trans_type_raw='iss-tr' AND IFNULL(t.qty_change,0)<0 AND IFNULL(r.location_role,'UNKNOWN')='FG_INSPECT' THEN 'FG_FQC_RELEASE' WHEN t.src_trans_type_raw='iss-tr' AND IFNULL(t.qty_change,0)<0 AND IFNULL(r.location_role,'UNKNOWN')='FG' THEN 'FG_PICK' WHEN t.src_trans_type_raw='iss-tr' AND IFNULL(t.qty_change,0)>0 AND IFNULL(r.location_role,'UNKNOWN')='FG' THEN 'FG_PUTAWAY' WHEN t.src_trans_type_raw='iss-tr' AND IFNULL(t.qty_change,0)>0 AND IFNULL(r.location_role,'UNKNOWN')='MATERIAL' THEN 'MAT_PUTAWAY' WHEN t.src_trans_type_raw='iss-tr' AND IFNULL(t.qty_change,0)>0 AND IFNULL(r.location_role,'UNKNOWN')='MAT_LINE_LOC' THEN 'MAT_LINE' WHEN t.src_trans_type_raw='iss-tr-ins' AND IFNULL(t.qty_change,0)<0 AND IFNULL(r.location_role,'UNKNOWN')='MAT_INSPECT' THEN 'MAT_IQC_RELEASE' WHEN t.src_trans_type_raw='iss-tr-ins' AND IFNULL(t.qty_change,0)>0 AND IFNULL(r.location_role,'UNKNOWN')='MATERIAL' THEN 'MAT_PUTAWAY' WHEN t.src_trans_type_raw='iss-tr-ins' AND IFNULL(t.qty_change,0)>0 AND IFNULL(r.location_role,'UNKNOWN')='MAT_LINE_LOC' THEN 'MAT_LINE' WHEN t.src_trans_type_raw='rct-tr' AND IFNULL(t.qty_change,0)>0 AND IFNULL(r.location_role,'UNKNOWN')='MATERIAL' THEN 'MAT_PUTAWAY' WHEN t.src_trans_type_raw='rct-tr' AND IFNULL(t.qty_change,0)>0 AND IFNULL(r.location_role,'UNKNOWN')='MAT_LINE_LOC' THEN 'MAT_LINE' WHEN t.src_trans_type_raw='rct-tr' AND IFNULL(t.qty_change,0)>0 AND IFNULL(r.location_role,'UNKNOWN')='FG' THEN 'FG_PUTAWAY' WHEN t.src_trans_type_raw='rct-wo' AND IFNULL(t.qty_change,0)>0 AND IFNULL(r.location_role,'UNKNOWN')='FG_LINE_LOC' THEN 'FG_PROD_RECEIPT' WHEN t.src_trans_type_raw='rct-wo' AND IFNULL(t.qty_change,0)>0 AND IFNULL(r.location_role,'UNKNOWN')='FG' THEN 'FG_PROD_RECEIPT' WHEN t.src_trans_type_raw='rct-wo' AND IFNULL(t.qty_change,0)>0 AND IFNULL(r.location_role,'UNKNOWN')='SEMI' THEN 'MAT_RECEIPT' WHEN t.src_trans_type_raw='rct-wo' AND IFNULL(t.qty_change,0)>0 AND IFNULL(r.location_role,'UNKNOWN')='MATERIAL' THEN 'MAT_RECEIPT' WHEN t.src_trans_type_raw='iss-unp' AND IFNULL(t.qty_change,0)<0 AND IFNULL(r.location_role,'UNKNOWN')='MATERIAL' THEN 'MAT_ISSUE' WHEN t.src_trans_type_raw='rct-unp' AND IFNULL(t.qty_change,0)>0 AND IFNULL(r.location_role,'UNKNOWN')='MATERIAL' THEN 'MAT_RECEIPT' WHEN t.src_trans_type_raw='VMI' AND IFNULL(t.qty_change,0)>0 AND IFNULL(r.location_role,'UNKNOWN')='VMI' THEN 'MAT_RECEIPT' WHEN t.src_trans_type_raw='MAT_RECEIPT' THEN 'MAT_RECEIPT' WHEN t.src_trans_type_raw='MAT_IQC_RELEASE' THEN 'MAT_IQC_RELEASE' WHEN t.src_trans_type_raw='MAT_PUTAWAY' THEN 'MAT_PUTAWAY' WHEN t.src_trans_type_raw='MAT_PICK' THEN 'MAT_PICK' WHEN t.src_trans_type_raw='MAT_ISSUE' THEN 'MAT_ISSUE' WHEN t.src_trans_type_raw='MAT_LINE' THEN 'MAT_LINE' WHEN t.src_trans_type_raw='FG_RECEIPT' THEN 'FG_RECEIPT' WHEN t.src_trans_type_raw='FG_PUTAWAY' THEN 'FG_PUTAWAY' WHEN t.src_trans_type_raw='FG_PICK' THEN 'FG_PICK' WHEN t.src_trans_type_raw='FG_SHIP' THEN 'FG_SHIP' WHEN t.src_trans_type_raw='FG_PROD_RECEIPT' THEN 'FG_PROD_RECEIPT' WHEN t.src_trans_type_raw='FG_FQC_RELEASE' THEN 'FG_FQC_RELEASE' ELSE NULL END,
  85. t.biz_doc_type = CASE t.src_trans_type_raw WHEN 'iss-wo' THEN 'PROD_ISSUE' WHEN 'rct-wo' THEN 'PROD_RECEIPT' WHEN 'rct-po' THEN 'PUR_RECEIPT' WHEN 'rct-unp' THEN 'PUR_RECEIPT' WHEN 'iss-so' THEN 'SALES_SHIP' WHEN 'rct-po-ins' THEN 'PUR_RECEIPT' WHEN 'rct-rv' THEN 'OUTSOURCE_RECEIPT' WHEN 'iss-po' THEN 'PUR_RETURN' WHEN 'tag-cnf' THEN 'INVENTORY_ADJUST' WHEN 'tag-cnt' THEN 'INVENTORY_ADJUST' WHEN 'VMI' THEN 'CONSIGNMENT_RECEIPT' ELSE IFNULL(t.biz_doc_type,'OTHER') END
  86. WHERE t.source_system = 'DOPDEMORQ_SQLSERVER'
  87. AND t.src_trans_type_raw IN ('iss-wo','rct-po','iss-tr','rct-tr','iss-unp','rct-wo','iss-tr-ins','VMI','rct-rv','rct-po-ins','iss-rv','rct-unp','inv-frz','inv-unfrz','iss-po','tag-cnf','tag-cnt');
  88. DELETE FROM mdp_std_inv_trans
  89. WHERE source_system = 'DOPDEMORQ_SQLSERVER'
  90. AND src_trans_type_raw = 'iss-rv';
  91. DELETE FROM mdp_std_inv_trans_unmapped
  92. WHERE src_trans_type_raw IN ('inv-frz','inv-unfrz','iss-po','tag-cnf','tag-cnt','iss-rv');
  93. DELETE u FROM mdp_std_inv_trans_unmapped u
  94. JOIN mdp_std_inv_trans t
  95. ON t.tenant_id = u.tenant_id AND t.source_system = u.source_system AND t.src_rec_id = u.src_rec_id
  96. WHERE t.trans_type IS NOT NULL;
  97. UPDATE mdp_std_inv_trans_unmapped u
  98. LEFT JOIN mdp_std_inv_trans t
  99. ON t.tenant_id = u.tenant_id AND t.source_system = u.source_system AND t.src_rec_id = u.src_rec_id
  100. LEFT JOIN mdp_location_role r
  101. ON r.tenant_id = u.tenant_id AND r.domain = IFNULL(t.domain,'') AND r.location = IFNULL(u.location,'')
  102. SET u.unmapped_reason = CASE WHEN 1=0 THEN 'PENDING_VERIFY' WHEN u.src_trans_type_raw IN ('iss-tr','iss-tr-ins','rct-tr','rct-wo','iss-unp','rct-unp','VMI') AND IFNULL(r.location_role,'UNKNOWN')='UNKNOWN' THEN 'LOCATION_ROLE_UNCONFIGURED' WHEN u.src_trans_type_raw IN ('iss-tr','iss-tr-ins','rct-tr','rct-wo','iss-unp','rct-unp','VMI') THEN 'OUT_OF_SCOPE_ROLE' ELSE 'UNKNOWN_CODE' END;
  103. INSERT INTO mdp_std_inv_trans_unmapped
  104. (tenant_id, source_system, src_rec_id, src_trans_type_raw, unmapped_reason, location, row_count, first_seen, last_seen)
  105. SELECT t.tenant_id, t.source_system, t.src_rec_id, t.src_trans_type_raw,
  106. CASE WHEN 1=0 THEN 'PENDING_VERIFY' WHEN t.src_trans_type_raw IN ('iss-tr','iss-tr-ins','rct-tr','rct-wo','iss-unp','rct-unp','VMI') AND IFNULL(lr.location_role,'UNKNOWN')='UNKNOWN' THEN 'LOCATION_ROLE_UNCONFIGURED' WHEN t.src_trans_type_raw IN ('iss-tr','iss-tr-ins','rct-tr','rct-wo','iss-unp','rct-unp','VMI') THEN 'OUT_OF_SCOPE_ROLE' ELSE 'UNKNOWN_CODE' END,
  107. IFNULL(t.location,''), 1, NOW(), NOW()
  108. FROM mdp_std_inv_trans t
  109. LEFT JOIN mdp_location_role lr
  110. ON lr.tenant_id = t.tenant_id AND lr.domain = IFNULL(t.domain,'') AND lr.location = IFNULL(t.location,'')
  111. WHERE t.source_system = 'DOPDEMORQ_SQLSERVER'
  112. AND t.trans_type IS NULL
  113. AND t.src_trans_type_raw IS NOT NULL
  114. AND t.src_trans_type_raw NOT IN ('inv-frz','inv-unfrz','iss-po','tag-cnf','tag-cnt')
  115. AND t.src_trans_type_raw NOT IN ('iss-rv')
  116. AND t.tenant_id <> 1300000000001
  117. ON DUPLICATE KEY UPDATE
  118. last_seen = VALUES(last_seen),
  119. unmapped_reason = VALUES(unmapped_reason),
  120. location = VALUES(location);
  121. DELETE FROM mdp_std_inv_trans
  122. WHERE source_system = 'UAT_GENERATOR'
  123. AND tenant_id = 838257186181189;
  124. SET @kpi_default_tenant := (SELECT COUNT(*) FROM ado_s9_kpi_value_l1_day WHERE tenant_id = 1300000000001);
  125. DELETE FROM mdp_std_inv_trans
  126. WHERE source_system = 'DOPDEMORQ_SQLSERVER'
  127. AND tenant_id = 1300000000001
  128. AND @kpi_default_tenant = 0;
  129. DELETE FROM mdp_std_inventory
  130. WHERE source_system = 'DOPDEMORQ_SQLSERVER'
  131. AND tenant_id = 1300000000001
  132. AND @kpi_default_tenant = 0;
  133. CREATE TABLE IF NOT EXISTS mdp_source_table_registry (
  134. id BIGINT NOT NULL AUTO_INCREMENT,
  135. source_table VARCHAR(64) NOT NULL COMMENT '贴源记录的原始表名',
  136. source_system VARCHAR(50) NOT NULL COMMENT '真实来源系统码',
  137. remark VARCHAR(255) NULL,
  138. PRIMARY KEY (id),
  139. UNIQUE KEY uk_source_table (source_table)
  140. ) COMMENT='原始表名 → 真实来源系统 的唯一对照';
  141. SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='mdp_std_inv_trans' AND COLUMN_NAME='written_by')=0, 'ALTER TABLE `mdp_std_inv_trans` ADD COLUMN `written_by` VARCHAR(32) NOT NULL DEFAULT ''LEGACY_UNVERIFIED'' COMMENT ''DB_SYNC/API_INBOUND/PLATFORM_FORM/SEED/LEGACY_UNVERIFIED''', 'DO 0');
  142. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
  143. UPDATE mdp_std_inv_trans
  144. SET written_by = 'DB_SYNC'
  145. WHERE source_system = 'DOPDEMORQ_SQLSERVER'
  146. AND written_by = 'LEGACY_UNVERIFIED';
  147. INSERT INTO `SysMenu` (`Id`,`Pid`,`Title`,`Name`,`Type`,`Permission`,`OrderNo`,`Status`,`IsHide`,`IsKeepAlive`,`IsAffix`,`IsIframe`,`Remark`,`CreateTime`)
  148. SELECT 1329008000124, 1322000000027, '刷新看板数据', 'aidopS8Btn24', 3, 's8:dashboard:refresh', 320, 1, 0, 1, 0, 0, 'S8 权限点 s8:dashboard:refresh', NOW()
  149. FROM DUAL
  150. WHERE NOT EXISTS (SELECT 1 FROM `SysMenu` m WHERE m.`Id` = 1329008000124 OR m.`Permission` = 's8:dashboard:refresh');
  151. INSERT INTO `SysRoleMenu` (`Id`, `RoleId`, `MenuId`)
  152. SELECT 1329008000124000 + ROW_NUMBER() OVER (ORDER BY src.RoleId), src.RoleId, 1329008000124
  153. FROM (
  154. SELECT DISTINCT rm.`RoleId`
  155. FROM `SysRoleMenu` rm
  156. JOIN `SysMenu` m ON m.`Id` = rm.`MenuId`
  157. WHERE m.`Permission` LIKE 's8:config:%'
  158. AND NOT EXISTS (
  159. SELECT 1 FROM `SysRoleMenu` owned
  160. WHERE owned.`RoleId` = rm.`RoleId` AND owned.`MenuId` = 1329008000124
  161. )
  162. ) src;