| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- -- WP-SD4: persist diagnosis severity / cross-dept for formal approval routing.
- SET @sev_sql := IF(
- (SELECT COUNT(*) FROM information_schema.COLUMNS
- WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='ado_smart_ops_improvement_plan'
- AND COLUMN_NAME='ProblemSeverity')=0,
- 'ALTER TABLE `ado_smart_ops_improvement_plan` ADD COLUMN `ProblemSeverity` VARCHAR(16) NULL',
- 'SELECT 1');
- PREPARE sev_stmt FROM @sev_sql;
- EXECUTE sev_stmt;
- DEALLOCATE PREPARE sev_stmt;
- SET @cross_sql := IF(
- (SELECT COUNT(*) FROM information_schema.COLUMNS
- WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='ado_smart_ops_improvement_plan'
- AND COLUMN_NAME='IsCrossDept')=0,
- 'ALTER TABLE `ado_smart_ops_improvement_plan` ADD COLUMN `IsCrossDept` TINYINT(1) NOT NULL DEFAULT 0',
- 'SELECT 1');
- PREPARE cross_stmt FROM @cross_sql;
- EXECUTE cross_stmt;
- DEALLOCATE PREPARE cross_stmt;
- -- Formal approval role baseline for all enabled business tenants.
- DROP TEMPORARY TABLE IF EXISTS tmp_smart_ops_role_seed;
- CREATE TEMPORARY TABLE tmp_smart_ops_role_seed (
- seq INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
- tenant_id BIGINT NOT NULL,
- code VARCHAR(64) NOT NULL,
- name VARCHAR(64) NOT NULL,
- order_no INT NOT NULL
- );
- INSERT INTO tmp_smart_ops_role_seed (tenant_id, code, name, order_no)
- SELECT t.Id, v.Code, v.Name, v.OrderNo
- FROM SysTenant t
- CROSS JOIN (
- SELECT 'SMART_OPS_DEPT_HEAD' AS Code, '责任部门负责人' AS Name, 910 AS OrderNo
- UNION ALL SELECT 'SMART_OPS_MODULE_OWNER', '模块负责人', 911
- UNION ALL SELECT 'SMART_OPS_OPS_OWNER', '运营负责人', 912
- ) v
- WHERE t.Status = 1
- AND t.Id NOT IN (0, 1, 1300000000001)
- AND NOT EXISTS (SELECT 1 FROM SysRole x WHERE x.TenantId = t.Id AND x.Code = v.Code)
- ORDER BY t.Id, v.OrderNo;
- SET @smart_ops_role_base := (SELECT IFNULL(MAX(Id), 0) FROM SysRole);
- INSERT INTO SysRole (Id, Name, Code, OrderNo, DataScope, Remark, Status, TenantId, CreateTime)
- SELECT @smart_ops_role_base + s.seq, s.name, s.code, s.order_no, 4,
- '智慧诊断改善计划审批角色基线', 1, s.tenant_id, NOW()
- FROM tmp_smart_ops_role_seed s;
- DROP TEMPORARY TABLE IF EXISTS tmp_smart_ops_role_seed;
- -- UAT tenants: bind enabled sys_admin members so yellow/red/global routes are resolvable.
- DROP TEMPORARY TABLE IF EXISTS tmp_smart_ops_ur_seed;
- CREATE TEMPORARY TABLE tmp_smart_ops_ur_seed (
- seq INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
- user_id BIGINT NOT NULL,
- role_id BIGINT NOT NULL
- );
- INSERT INTO tmp_smart_ops_ur_seed (user_id, role_id)
- SELECT DISTINCT u.Id, target.Id
- FROM SysUser u
- JOIN SysRole admin_role
- ON admin_role.TenantId = u.TenantId AND admin_role.Code = 'sys_admin' AND admin_role.Status = 1
- JOIN SysUserRole admin_ur
- ON admin_ur.UserId = u.Id AND admin_ur.RoleId = admin_role.Id
- JOIN SysRole target
- ON target.TenantId = u.TenantId
- AND target.Code IN ('SMART_OPS_DEPT_HEAD', 'SMART_OPS_MODULE_OWNER', 'SMART_OPS_OPS_OWNER')
- AND target.Status = 1
- WHERE u.Status = 1
- AND u.TenantId IN (838257186181189, 838257212780613, 838257237606469)
- AND NOT EXISTS (
- SELECT 1 FROM SysUserRole x WHERE x.UserId = u.Id AND x.RoleId = target.Id
- );
- SET @smart_ops_ur_base := (SELECT IFNULL(MAX(Id), 0) FROM SysUserRole);
- INSERT INTO SysUserRole (Id, UserId, RoleId)
- SELECT @smart_ops_ur_base + s.seq, s.user_id, s.role_id
- FROM tmp_smart_ops_ur_seed s;
- DROP TEMPORARY TABLE IF EXISTS tmp_smart_ops_ur_seed;
|