| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- -- ========================================================================
- -- AiDOP插件新增实体表的 tenant_id 字段迁移
- -- 生成时间:2026-04-22
- -- 涉及表:WorkOrder 和 Production 模块的主数据表
- -- ========================================================================
- USE aidopdev;
- -- ========================================================================
- -- WorkOrder 模块业务表
- -- ========================================================================
- -- 1. 工单主数据
- ALTER TABLE WorkOrdMaster
- ADD COLUMN IF NOT EXISTS tenant_id BIGINT NULL COMMENT '租户ID(多租户隔离)';
- -- 2. 工单物料明细
- ALTER TABLE WorkOrdDetail
- ADD COLUMN IF NOT EXISTS tenant_id BIGINT NULL COMMENT '租户ID(多租户隔离)';
- -- 3. 工单工序表
- ALTER TABLE WorkOrdRouting
- ADD COLUMN IF NOT EXISTS tenant_id BIGINT NULL COMMENT '租户ID(多租户隔离)';
- -- 4. 工单信息表(mes_morder 已有 tenant_id,跳过)
- -- ALTER TABLE mes_morder ADD COLUMN IF NOT EXISTS tenant_id ...
- -- 5. 工单附属表
- ALTER TABLE mes_moentry
- ADD COLUMN IF NOT EXISTS tenant_id BIGINT NULL COMMENT '租户ID(多租户隔离)';
- -- ========================================================================
- -- Production 模块业务表
- -- ========================================================================
- -- 6. 工序间衔接
- ALTER TABLE PeriodSequenceDet
- ADD COLUMN IF NOT EXISTS tenant_id BIGINT NULL COMMENT '租户ID(多租户隔离)';
- -- 7. 排产结果
- ALTER TABLE ScheduleResultOpMaster
- ADD COLUMN IF NOT EXISTS tenant_id BIGINT NULL COMMENT '租户ID(多租户隔离)';
- -- 8. 产线工作日历表(ShopCalendarWorkCtr 已处理,检查是否需要添加)
- ALTER TABLE ShopCalendarWorkCtr
- ADD COLUMN IF NOT EXISTS tenant_id BIGINT NULL COMMENT '租户ID(多租户隔离)';
- -- 9. 产线休息时间表
- ALTER TABLE QualityLineWorkDetail
- ADD COLUMN IF NOT EXISTS tenant_id BIGINT NULL COMMENT '租户ID(多租户隔离)';
- -- 10. 产线节假日表(HolidayMaster 已处理)
- -- ALTER TABLE HolidayMaster ADD COLUMN IF NOT EXISTS tenant_id ...
- -- 11. 产线加班表
- ALTER TABLE ResourceOccupancyTime
- ADD COLUMN IF NOT EXISTS tenant_id BIGINT NULL COMMENT '租户ID(多租户隔离)';
- -- ========================================================================
- -- 创建租户ID索引(提升查询性能)
- -- ========================================================================
- SET @db = 'aidopdev';
- -- WorkOrder 模块索引
- SET @table = 'WorkOrdMaster';
- SET @sql = CONCAT('CREATE INDEX IF NOT EXISTS idx_tenant_id ON ', @db, '.', @table, '(tenant_id)');
- PREPARE stmt FROM @sql;
- EXECUTE stmt;
- DEALLOCATE PREPARE stmt;
- SET @table = 'WorkOrdDetail';
- SET @sql = CONCAT('CREATE INDEX IF NOT EXISTS idx_tenant_id ON ', @db, '.', @table, '(tenant_id)');
- PREPARE stmt FROM @sql;
- EXECUTE stmt;
- DEALLOCATE PREPARE stmt;
- SET @table = 'WorkOrdRouting';
- SET @sql = CONCAT('CREATE INDEX IF NOT EXISTS idx_tenant_id ON ', @db, '.', @table, '(tenant_id)');
- PREPARE stmt FROM @sql;
- EXECUTE stmt;
- DEALLOCATE PREPARE stmt;
- SET @table = 'mes_moentry';
- SET @sql = CONCAT('CREATE INDEX IF NOT EXISTS idx_tenant_id ON ', @db, '.', @table, '(tenant_id)');
- PREPARE stmt FROM @sql;
- EXECUTE stmt;
- DEALLOCATE PREPARE stmt;
- -- Production 模块索引
- SET @table = 'PeriodSequenceDet';
- SET @sql = CONCAT('CREATE INDEX IF NOT EXISTS idx_tenant_id ON ', @db, '.', @table, '(tenant_id)');
- PREPARE stmt FROM @sql;
- EXECUTE stmt;
- DEALLOCATE PREPARE stmt;
- SET @table = 'ScheduleResultOpMaster';
- SET @sql = CONCAT('CREATE INDEX IF NOT EXISTS idx_tenant_id ON ', @db, '.', @table, '(tenant_id)');
- PREPARE stmt FROM @sql;
- EXECUTE stmt;
- DEALLOCATE PREPARE stmt;
- SET @table = 'ShopCalendarWorkCtr';
- SET @sql = CONCAT('CREATE INDEX IF NOT EXISTS idx_tenant_id ON ', @db, '.', @table, '(tenant_id)');
- PREPARE stmt FROM @sql;
- EXECUTE stmt;
- DEALLOCATE PREPARE stmt;
- SET @table = 'QualityLineWorkDetail';
- SET @sql = CONCAT('CREATE INDEX IF NOT EXISTS idx_tenant_id ON ', @db, '.', @table, '(tenant_id)');
- PREPARE stmt FROM @sql;
- EXECUTE stmt;
- DEALLOCATE PREPARE stmt;
- SET @table = 'ResourceOccupancyTime';
- SET @sql = CONCAT('CREATE INDEX IF NOT EXISTS idx_tenant_id ON ', @db, '.', @table, '(tenant_id)');
- PREPARE stmt FROM @sql;
- EXECUTE stmt;
- DEALLOCATE PREPARE stmt;
- -- ========================================================================
- -- 验证:检查所有新增表的 tenant_id 字段
- -- ========================================================================
- SELECT '新增实体表 tenant_id 字段检查' AS 检查项;
- SELECT
- TABLE_NAME AS 表名,
- COLUMN_NAME AS 字段名,
- COLUMN_TYPE AS 字段类型,
- IS_NULLABLE AS 是否可空,
- COLUMN_COMMENT AS 注释
- FROM INFORMATION_SCHEMA.COLUMNS
- WHERE TABLE_SCHEMA = 'aidopdev'
- AND COLUMN_NAME = 'tenant_id'
- AND TABLE_NAME IN (
- 'WorkOrdMaster',
- 'WorkOrdDetail',
- 'WorkOrdRouting',
- 'mes_moentry',
- 'PeriodSequenceDet',
- 'ScheduleResultOpMaster',
- 'ShopCalendarWorkCtr',
- 'QualityLineWorkDetail',
- 'ResourceOccupancyTime'
- )
- ORDER BY TABLE_NAME;
- -- ========================================================================
- -- 验证:检查索引创建情况
- -- ========================================================================
- SELECT '新增实体表 tenant_id 索引检查' AS 检查项;
- SELECT
- TABLE_NAME AS 表名,
- INDEX_NAME AS 索引名,
- COLUMN_NAME AS 字段名,
- SEQ_IN_INDEX AS 序号
- FROM INFORMATION_SCHEMA.STATISTICS
- WHERE TABLE_SCHEMA = 'aidopdev'
- AND COLUMN_NAME = 'tenant_id'
- AND INDEX_NAME = 'idx_tenant_id'
- AND TABLE_NAME IN (
- 'WorkOrdMaster',
- 'WorkOrdDetail',
- 'WorkOrdRouting',
- 'mes_moentry',
- 'PeriodSequenceDet',
- 'ScheduleResultOpMaster',
- 'ShopCalendarWorkCtr',
- 'QualityLineWorkDetail',
- 'ResourceOccupancyTime'
- )
- ORDER BY TABLE_NAME;
- -- ========================================================================
- -- 完成!
- -- ========================================================================
- SELECT '✅ 新增实体表 tenant_id 字段添加完成!' AS 状态;
|