| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- using System.Diagnostics;
- using Admin.NET.Core;
- using SqlSugar;
- namespace Admin.NET.Plugin.AiDOP.Infrastructure;
- /// <summary>
- /// 一次性迁移:将历史 TenantId=1 的 AiDOP 业务数据更新为框架默认租户。
- /// 幂等——若已无 TenantId=1 的行则不做任何事。
- /// </summary>
- public static class AidopTenantMigration
- {
- private static readonly (string Table, string TenantColumn)[] Tables =
- {
- ("ado_smart_ops_kpi_master", "TenantId"),
- ("ado_smart_ops_layout_item", "TenantId"),
- ("ado_smart_ops_home_module", "TenantId"),
- ("ado_s9_kpi_value_l1_day", "tenant_id"),
- ("ado_s9_kpi_value_l2_day", "tenant_id"),
- ("ado_s9_kpi_value_l3_day", "tenant_id"),
- ("ado_s9_kpi_value_l4_day", "tenant_id")
- };
- public static void MigrateOldTenantId(ISqlSugarClient db)
- {
- EnsureKpiValueL4Table(db);
- var target = SqlSugarConst.DefaultTenantId;
- if (target == 1) return;
- foreach (var (table, tenantColumn) in Tables)
- {
- try
- {
- db.Ado.ExecuteCommand(
- $"UPDATE `{table}` SET `{tenantColumn}` = @target WHERE `{tenantColumn}` = 1",
- new { target });
- }
- catch (Exception ex)
- {
- Trace.TraceWarning($"AidopTenantMigration [{table}]: {ex.Message}");
- }
- }
- DropOldUniqueIndex(db);
- BackfillThresholds(db);
- }
- public static void EnsureKpiValueL4Table(ISqlSugarClient db)
- {
- try
- {
- db.Ado.ExecuteCommand(
- "CREATE TABLE IF NOT EXISTS `ado_s9_kpi_value_l4_day` LIKE `ado_s9_kpi_value_l3_day`");
- }
- catch (Exception ex)
- {
- Trace.TraceWarning($"AidopTenantMigration ensure L4 value table: {ex.Message}");
- }
- }
- private static void BackfillThresholds(ISqlSugarClient db)
- {
- try
- {
- db.Ado.ExecuteCommand(
- "UPDATE ado_smart_ops_kpi_master SET YellowThreshold=95, RedThreshold=80 " +
- "WHERE YellowThreshold IS NULL AND Direction='higher_is_better'");
- db.Ado.ExecuteCommand(
- "UPDATE ado_smart_ops_kpi_master SET YellowThreshold=110, RedThreshold=120 " +
- "WHERE YellowThreshold IS NULL AND Direction='lower_is_better'");
- }
- catch (Exception ex)
- {
- Trace.TraceWarning($"AidopTenantMigration backfill thresholds: {ex.Message}");
- }
- }
- private static void DropOldUniqueIndex(ISqlSugarClient db)
- {
- try
- {
- var rows = db.Ado.SqlQuery<dynamic>(
- "SHOW INDEX FROM ado_smart_ops_kpi_master WHERE Key_name = 'uk_kpi_master_code'");
- if (rows != null && rows.Count > 0)
- db.Ado.ExecuteCommand("ALTER TABLE ado_smart_ops_kpi_master DROP INDEX uk_kpi_master_code");
- }
- catch (Exception ex)
- {
- Trace.TraceWarning($"AidopTenantMigration drop old index: {ex.Message}");
- }
- }
- }
|