1.0.591.sql 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. -- 1.0.591
  2. -- A. 补齐「有 S5_L1_004 值、但本租户没有字典/布局」的缺口。不写死租户号。
  3. -- 模板取 TenantId=0。ParentId 强制 NULL:模板上的 ParentId 指向 0 号租户自己的行,抄过来是错的外键。
  4. -- SortNo 用 20,与 AidopKpiMasterSeed 的 S5_L1_004 一致,不抄模板的 540。
  5. -- C. 清掉 T8_V5_SQLSERVER.db_extra_params 里的 ConfigId。
  6. -- 不改 1.0.178.sql:已成功脚本内容一变,AutoVersionUpdate 会因 SHA256 不一致直接拒绝启动。
  7. INSERT INTO ado_smart_ops_kpi_master
  8. (Id, MetricCode, ModuleCode, MetricLevel, ParentId, MetricName, Description, Formula,
  9. CalcRule, DataSource, StatFrequency, Department, DopFields, Unit, Direction,
  10. IsHomePage, SortNo, Remark, IsEnabled, TenantId, CreatedAt, UpdatedAt,
  11. YellowThreshold, RedThreshold, FormulaExpr, FormulaPreview, FormulaRefs)
  12. SELECT
  13. base.max_id + gap.rn,
  14. tmpl.MetricCode, tmpl.ModuleCode, tmpl.MetricLevel, NULL,
  15. tmpl.MetricName, tmpl.Description, tmpl.Formula,
  16. tmpl.CalcRule, tmpl.DataSource, tmpl.StatFrequency, tmpl.Department, tmpl.DopFields,
  17. tmpl.Unit, tmpl.Direction,
  18. tmpl.IsHomePage, 20, tmpl.Remark, tmpl.IsEnabled,
  19. gap.tenant_id, NOW(), NOW(),
  20. tmpl.YellowThreshold, tmpl.RedThreshold, tmpl.FormulaExpr, tmpl.FormulaPreview, tmpl.FormulaRefs
  21. FROM (
  22. SELECT v.tenant_id, ROW_NUMBER() OVER (ORDER BY v.tenant_id) AS rn
  23. FROM (
  24. SELECT DISTINCT tenant_id
  25. FROM ado_s9_kpi_value_l1_day
  26. WHERE metric_code = 'S5_L1_004' AND is_deleted = 0
  27. ) v
  28. WHERE NOT EXISTS (
  29. SELECT 1 FROM ado_smart_ops_kpi_master k
  30. WHERE k.TenantId = v.tenant_id AND k.MetricCode = 'S5_L1_004'
  31. )
  32. ) gap
  33. JOIN ado_smart_ops_kpi_master tmpl
  34. ON tmpl.TenantId = 0 AND tmpl.MetricCode = 'S5_L1_004'
  35. CROSS JOIN (
  36. SELECT COALESCE(MAX(Id), 0) AS max_id FROM ado_smart_ops_kpi_master
  37. ) base;
  38. -- 有值的工厂补布局行。MetricCode 跨表比较必须显式 COLLATE。
  39. INSERT INTO ado_smart_ops_layout_item
  40. (TenantId, FactoryId, ModuleCode, RowId, MetricLevel, MetricCode, DisplayName,
  41. SortNo, ParentRowId, FormulaText, PanelZone, IsEnabled, UpdateTime)
  42. SELECT
  43. k.TenantId, f.factory_id, 'S5', 'S5-L1-S5_L1_004', 1, 'S5_L1_004', '品类物料库存周转',
  44. 20, NULL, 'D1 / D2 × 30', NULL, 1, NOW()
  45. FROM ado_smart_ops_kpi_master k
  46. JOIN (
  47. SELECT DISTINCT tenant_id, factory_id
  48. FROM ado_s9_kpi_value_l1_day
  49. WHERE metric_code = 'S5_L1_004' AND is_deleted = 0
  50. ) f ON f.tenant_id = k.TenantId
  51. WHERE k.MetricCode = 'S5_L1_004'
  52. AND NOT EXISTS (
  53. SELECT 1 FROM ado_smart_ops_layout_item l
  54. WHERE l.TenantId = k.TenantId
  55. AND l.FactoryId = f.factory_id
  56. AND l.MetricLevel = 1
  57. AND l.MetricCode COLLATE utf8mb4_general_ci = 'S5_L1_004'
  58. );
  59. -- 字典已有、同模块已有其它 L1 布局、唯独缺这一行的租户(不要求当下有值)。
  60. INSERT INTO ado_smart_ops_layout_item
  61. (TenantId, FactoryId, ModuleCode, RowId, MetricLevel, MetricCode, DisplayName,
  62. SortNo, ParentRowId, FormulaText, PanelZone, IsEnabled, UpdateTime)
  63. SELECT DISTINCT
  64. l.TenantId, l.FactoryId, 'S5', 'S5-L1-S5_L1_004', 1, 'S5_L1_004', '品类物料库存周转',
  65. 20, NULL, 'D1 / D2 × 30', NULL, 1, NOW()
  66. FROM ado_smart_ops_layout_item l
  67. JOIN ado_smart_ops_kpi_master k
  68. ON k.TenantId = l.TenantId AND k.MetricCode = 'S5_L1_004'
  69. WHERE l.ModuleCode = 'S5' AND l.MetricLevel = 1
  70. AND NOT EXISTS (
  71. SELECT 1 FROM ado_smart_ops_layout_item x
  72. WHERE x.TenantId = l.TenantId
  73. AND x.FactoryId = l.FactoryId
  74. AND x.MetricLevel = 1
  75. AND x.MetricCode COLLATE utf8mb4_general_ci = 'S5_L1_004'
  76. );
  77. UPDATE mdp_source
  78. SET db_extra_params = NULL, update_time = NOW()
  79. WHERE source_code = 'T8_V5_SQLSERVER'
  80. AND db_extra_params LIKE '%ConfigId%';