1.0.366.sql 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. -- WP-SD4: persist diagnosis severity / cross-dept for formal approval routing.
  2. SET @sev_sql := IF(
  3. (SELECT COUNT(*) FROM information_schema.COLUMNS
  4. WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='ado_smart_ops_improvement_plan'
  5. AND COLUMN_NAME='ProblemSeverity')=0,
  6. 'ALTER TABLE `ado_smart_ops_improvement_plan` ADD COLUMN `ProblemSeverity` VARCHAR(16) NULL',
  7. 'SELECT 1');
  8. PREPARE sev_stmt FROM @sev_sql;
  9. EXECUTE sev_stmt;
  10. DEALLOCATE PREPARE sev_stmt;
  11. SET @cross_sql := IF(
  12. (SELECT COUNT(*) FROM information_schema.COLUMNS
  13. WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='ado_smart_ops_improvement_plan'
  14. AND COLUMN_NAME='IsCrossDept')=0,
  15. 'ALTER TABLE `ado_smart_ops_improvement_plan` ADD COLUMN `IsCrossDept` TINYINT(1) NOT NULL DEFAULT 0',
  16. 'SELECT 1');
  17. PREPARE cross_stmt FROM @cross_sql;
  18. EXECUTE cross_stmt;
  19. DEALLOCATE PREPARE cross_stmt;
  20. -- Formal approval role baseline for all enabled business tenants.
  21. DROP TEMPORARY TABLE IF EXISTS tmp_smart_ops_role_seed;
  22. CREATE TEMPORARY TABLE tmp_smart_ops_role_seed (
  23. seq INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  24. tenant_id BIGINT NOT NULL,
  25. code VARCHAR(64) NOT NULL,
  26. name VARCHAR(64) NOT NULL,
  27. order_no INT NOT NULL
  28. );
  29. INSERT INTO tmp_smart_ops_role_seed (tenant_id, code, name, order_no)
  30. SELECT t.Id, v.Code, v.Name, v.OrderNo
  31. FROM SysTenant t
  32. CROSS JOIN (
  33. SELECT 'SMART_OPS_DEPT_HEAD' AS Code, '责任部门负责人' AS Name, 910 AS OrderNo
  34. UNION ALL SELECT 'SMART_OPS_MODULE_OWNER', '模块负责人', 911
  35. UNION ALL SELECT 'SMART_OPS_OPS_OWNER', '运营负责人', 912
  36. ) v
  37. WHERE t.Status = 1
  38. AND t.Id NOT IN (0, 1, 1300000000001)
  39. AND NOT EXISTS (SELECT 1 FROM SysRole x WHERE x.TenantId = t.Id AND x.Code = v.Code)
  40. ORDER BY t.Id, v.OrderNo;
  41. SET @smart_ops_role_base := (SELECT IFNULL(MAX(Id), 0) FROM SysRole);
  42. INSERT INTO SysRole (Id, Name, Code, OrderNo, DataScope, Remark, Status, TenantId, CreateTime)
  43. SELECT @smart_ops_role_base + s.seq, s.name, s.code, s.order_no, 4,
  44. '智慧诊断改善计划审批角色基线', 1, s.tenant_id, NOW()
  45. FROM tmp_smart_ops_role_seed s;
  46. DROP TEMPORARY TABLE IF EXISTS tmp_smart_ops_role_seed;
  47. -- UAT tenants: bind enabled sys_admin members so yellow/red/global routes are resolvable.
  48. DROP TEMPORARY TABLE IF EXISTS tmp_smart_ops_ur_seed;
  49. CREATE TEMPORARY TABLE tmp_smart_ops_ur_seed (
  50. seq INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  51. user_id BIGINT NOT NULL,
  52. role_id BIGINT NOT NULL
  53. );
  54. INSERT INTO tmp_smart_ops_ur_seed (user_id, role_id)
  55. SELECT DISTINCT u.Id, target.Id
  56. FROM SysUser u
  57. JOIN SysRole admin_role
  58. ON admin_role.TenantId = u.TenantId AND admin_role.Code = 'sys_admin' AND admin_role.Status = 1
  59. JOIN SysUserRole admin_ur
  60. ON admin_ur.UserId = u.Id AND admin_ur.RoleId = admin_role.Id
  61. JOIN SysRole target
  62. ON target.TenantId = u.TenantId
  63. AND target.Code IN ('SMART_OPS_DEPT_HEAD', 'SMART_OPS_MODULE_OWNER', 'SMART_OPS_OPS_OWNER')
  64. AND target.Status = 1
  65. WHERE u.Status = 1
  66. AND u.TenantId IN (838257186181189, 838257212780613, 838257237606469)
  67. AND NOT EXISTS (
  68. SELECT 1 FROM SysUserRole x WHERE x.UserId = u.Id AND x.RoleId = target.Id
  69. );
  70. SET @smart_ops_ur_base := (SELECT IFNULL(MAX(Id), 0) FROM SysUserRole);
  71. INSERT INTO SysUserRole (Id, UserId, RoleId)
  72. SELECT @smart_ops_ur_base + s.seq, s.user_id, s.role_id
  73. FROM tmp_smart_ops_ur_seed s;
  74. DROP TEMPORARY TABLE IF EXISTS tmp_smart_ops_ur_seed;