add_tenant_id_to_new_entities.sql 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. -- ========================================================================
  2. -- AiDOP插件新增实体表的 tenant_id 字段迁移
  3. -- 生成时间:2026-04-22
  4. -- 涉及表:WorkOrder 和 Production 模块的主数据表
  5. -- ========================================================================
  6. USE aidopdev;
  7. -- ========================================================================
  8. -- WorkOrder 模块业务表
  9. -- ========================================================================
  10. -- 1. 工单主数据
  11. ALTER TABLE WorkOrdMaster
  12. ADD COLUMN IF NOT EXISTS tenant_id BIGINT NULL COMMENT '租户ID(多租户隔离)';
  13. -- 2. 工单物料明细
  14. ALTER TABLE WorkOrdDetail
  15. ADD COLUMN IF NOT EXISTS tenant_id BIGINT NULL COMMENT '租户ID(多租户隔离)';
  16. -- 3. 工单工序表
  17. ALTER TABLE WorkOrdRouting
  18. ADD COLUMN IF NOT EXISTS tenant_id BIGINT NULL COMMENT '租户ID(多租户隔离)';
  19. -- 4. 工单信息表(mes_morder 已有 tenant_id,跳过)
  20. -- ALTER TABLE mes_morder ADD COLUMN IF NOT EXISTS tenant_id ...
  21. -- 5. 工单附属表
  22. ALTER TABLE mes_moentry
  23. ADD COLUMN IF NOT EXISTS tenant_id BIGINT NULL COMMENT '租户ID(多租户隔离)';
  24. -- ========================================================================
  25. -- Production 模块业务表
  26. -- ========================================================================
  27. -- 6. 工序间衔接
  28. ALTER TABLE PeriodSequenceDet
  29. ADD COLUMN IF NOT EXISTS tenant_id BIGINT NULL COMMENT '租户ID(多租户隔离)';
  30. -- 7. 排产结果
  31. ALTER TABLE ScheduleResultOpMaster
  32. ADD COLUMN IF NOT EXISTS tenant_id BIGINT NULL COMMENT '租户ID(多租户隔离)';
  33. -- 8. 产线工作日历表(ShopCalendarWorkCtr 已处理,检查是否需要添加)
  34. ALTER TABLE ShopCalendarWorkCtr
  35. ADD COLUMN IF NOT EXISTS tenant_id BIGINT NULL COMMENT '租户ID(多租户隔离)';
  36. -- 9. 产线休息时间表
  37. ALTER TABLE QualityLineWorkDetail
  38. ADD COLUMN IF NOT EXISTS tenant_id BIGINT NULL COMMENT '租户ID(多租户隔离)';
  39. -- 10. 产线节假日表(HolidayMaster 已处理)
  40. -- ALTER TABLE HolidayMaster ADD COLUMN IF NOT EXISTS tenant_id ...
  41. -- 11. 产线加班表
  42. ALTER TABLE ResourceOccupancyTime
  43. ADD COLUMN IF NOT EXISTS tenant_id BIGINT NULL COMMENT '租户ID(多租户隔离)';
  44. -- ========================================================================
  45. -- 创建租户ID索引(提升查询性能)
  46. -- ========================================================================
  47. SET @db = 'aidopdev';
  48. -- WorkOrder 模块索引
  49. SET @table = 'WorkOrdMaster';
  50. SET @sql = CONCAT('CREATE INDEX IF NOT EXISTS idx_tenant_id ON ', @db, '.', @table, '(tenant_id)');
  51. PREPARE stmt FROM @sql;
  52. EXECUTE stmt;
  53. DEALLOCATE PREPARE stmt;
  54. SET @table = 'WorkOrdDetail';
  55. SET @sql = CONCAT('CREATE INDEX IF NOT EXISTS idx_tenant_id ON ', @db, '.', @table, '(tenant_id)');
  56. PREPARE stmt FROM @sql;
  57. EXECUTE stmt;
  58. DEALLOCATE PREPARE stmt;
  59. SET @table = 'WorkOrdRouting';
  60. SET @sql = CONCAT('CREATE INDEX IF NOT EXISTS idx_tenant_id ON ', @db, '.', @table, '(tenant_id)');
  61. PREPARE stmt FROM @sql;
  62. EXECUTE stmt;
  63. DEALLOCATE PREPARE stmt;
  64. SET @table = 'mes_moentry';
  65. SET @sql = CONCAT('CREATE INDEX IF NOT EXISTS idx_tenant_id ON ', @db, '.', @table, '(tenant_id)');
  66. PREPARE stmt FROM @sql;
  67. EXECUTE stmt;
  68. DEALLOCATE PREPARE stmt;
  69. -- Production 模块索引
  70. SET @table = 'PeriodSequenceDet';
  71. SET @sql = CONCAT('CREATE INDEX IF NOT EXISTS idx_tenant_id ON ', @db, '.', @table, '(tenant_id)');
  72. PREPARE stmt FROM @sql;
  73. EXECUTE stmt;
  74. DEALLOCATE PREPARE stmt;
  75. SET @table = 'ScheduleResultOpMaster';
  76. SET @sql = CONCAT('CREATE INDEX IF NOT EXISTS idx_tenant_id ON ', @db, '.', @table, '(tenant_id)');
  77. PREPARE stmt FROM @sql;
  78. EXECUTE stmt;
  79. DEALLOCATE PREPARE stmt;
  80. SET @table = 'ShopCalendarWorkCtr';
  81. SET @sql = CONCAT('CREATE INDEX IF NOT EXISTS idx_tenant_id ON ', @db, '.', @table, '(tenant_id)');
  82. PREPARE stmt FROM @sql;
  83. EXECUTE stmt;
  84. DEALLOCATE PREPARE stmt;
  85. SET @table = 'QualityLineWorkDetail';
  86. SET @sql = CONCAT('CREATE INDEX IF NOT EXISTS idx_tenant_id ON ', @db, '.', @table, '(tenant_id)');
  87. PREPARE stmt FROM @sql;
  88. EXECUTE stmt;
  89. DEALLOCATE PREPARE stmt;
  90. SET @table = 'ResourceOccupancyTime';
  91. SET @sql = CONCAT('CREATE INDEX IF NOT EXISTS idx_tenant_id ON ', @db, '.', @table, '(tenant_id)');
  92. PREPARE stmt FROM @sql;
  93. EXECUTE stmt;
  94. DEALLOCATE PREPARE stmt;
  95. -- ========================================================================
  96. -- 验证:检查所有新增表的 tenant_id 字段
  97. -- ========================================================================
  98. SELECT '新增实体表 tenant_id 字段检查' AS 检查项;
  99. SELECT
  100. TABLE_NAME AS 表名,
  101. COLUMN_NAME AS 字段名,
  102. COLUMN_TYPE AS 字段类型,
  103. IS_NULLABLE AS 是否可空,
  104. COLUMN_COMMENT AS 注释
  105. FROM INFORMATION_SCHEMA.COLUMNS
  106. WHERE TABLE_SCHEMA = 'aidopdev'
  107. AND COLUMN_NAME = 'tenant_id'
  108. AND TABLE_NAME IN (
  109. 'WorkOrdMaster',
  110. 'WorkOrdDetail',
  111. 'WorkOrdRouting',
  112. 'mes_moentry',
  113. 'PeriodSequenceDet',
  114. 'ScheduleResultOpMaster',
  115. 'ShopCalendarWorkCtr',
  116. 'QualityLineWorkDetail',
  117. 'ResourceOccupancyTime'
  118. )
  119. ORDER BY TABLE_NAME;
  120. -- ========================================================================
  121. -- 验证:检查索引创建情况
  122. -- ========================================================================
  123. SELECT '新增实体表 tenant_id 索引检查' AS 检查项;
  124. SELECT
  125. TABLE_NAME AS 表名,
  126. INDEX_NAME AS 索引名,
  127. COLUMN_NAME AS 字段名,
  128. SEQ_IN_INDEX AS 序号
  129. FROM INFORMATION_SCHEMA.STATISTICS
  130. WHERE TABLE_SCHEMA = 'aidopdev'
  131. AND COLUMN_NAME = 'tenant_id'
  132. AND INDEX_NAME = 'idx_tenant_id'
  133. AND TABLE_NAME IN (
  134. 'WorkOrdMaster',
  135. 'WorkOrdDetail',
  136. 'WorkOrdRouting',
  137. 'mes_moentry',
  138. 'PeriodSequenceDet',
  139. 'ScheduleResultOpMaster',
  140. 'ShopCalendarWorkCtr',
  141. 'QualityLineWorkDetail',
  142. 'ResourceOccupancyTime'
  143. )
  144. ORDER BY TABLE_NAME;
  145. -- ========================================================================
  146. -- 完成!
  147. -- ========================================================================
  148. SELECT '✅ 新增实体表 tenant_id 字段添加完成!' AS 状态;