| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- -- =============================================================================
- -- S8-EXCEPTION-FLOW-TENANT-CONTEXT-1
- -- 目的:为 S8 跨 S1-S7 场景共用的 EXCEPTION_REPORT/TB001「异常提报」节点建立真正
- -- 跨模块通用的异常受理角色,替换此前误绑的 S1 专属角色 ROLE_S1_EXCEPTION_HANDLER
- -- (该角色系 1.0.193.sql 为「S1 产销协同/订单交付异常」创建,见 S8 Flow Role 审计:
- -- EXCEPTION_REPORT 流程在该迁移发生前已跨 S1-S7 场景共用,绑定 S1 专属角色属误配)。
- -- 范围:本批只保证 UAT 租户(838257186181189)闭环。其余流程克隆
- -- (默认租户全局 TB001 / UATB-TB001 / DEMO-TB001)保持原状,不在本批处理——
- -- 这些租户尚无对应的 ROLE_S8_EXCEPTION_HANDLER 成员,盲目改绑只会把失败模式
- -- 从「角色查不到人」平移成「角色本身不存在」,不构成修复。
- -- 安全:全幂等(NOT EXISTS 守卫 + FlowJson 唯一子串 REPLACE);
- -- 不删除 ROLE_S1_EXCEPTION_HANDLER / s1_exception_handler;不动其他 3 份流程克隆的 FlowJson;
- -- 不动历史 ApprovalFlowInstance / ApprovalFlowTask(StartFlow 用 FlowJsonSnapshot,
- -- 改定义只影响之后新发起的实例)。
- -- 权限边界:新角色仅作 Flow Engine 审批身份,不插入任何 SysRoleMenu 行,不携带菜单/按钮/API 权限。
- -- =============================================================================
- -- 1) 新建角色 ROLE_S8_EXCEPTION_HANDLER / S8异常处理员(UAT 租户,幂等)
- INSERT INTO SysRole (Id, Name, Code, OrderNo, DataScope, Remark, Status, TenantId, CreateTime)
- SELECT 1329908000160, 'S8异常处理员', 'ROLE_S8_EXCEPTION_HANDLER', 800, 4,
- 'S8 跨 S1-S7 场景通用异常受理角色(S8-EXCEPTION-FLOW-TENANT-CONTEXT-1);仅 Flow Engine 审批身份,不挂载菜单权限',
- 1, 838257186181189, NOW()
- FROM DUAL
- WHERE NOT EXISTS (
- SELECT 1 FROM SysRole
- WHERE Id = 1329908000160 OR (Code = 'ROLE_S8_EXCEPTION_HANDLER' AND TenantId = 838257186181189)
- );
- -- 2) 绑定 UATExceptionA(838259724726341) → ROLE_S8_EXCEPTION_HANDLER(幂等)
- INSERT INTO SysUserRole (Id, UserId, RoleId)
- SELECT 1329908000161, 838259724726341, 1329908000160
- FROM DUAL
- WHERE NOT EXISTS (
- SELECT 1 FROM SysUserRole WHERE UserId = 838259724726341 AND RoleId = 1329908000160
- );
- -- 3) UAT 专属流程克隆 UATA-TB001(Id=9206082610000001)的「异常提报」节点改绑:
- -- approverIds 从默认租户物理 RoleId「1329908000150」(S1专属)
- -- 改为角色 Code「ROLE_S8_EXCEPTION_HANDLER」(由 FlowEngineService.ResolveApprovers
- -- 按受信任租户 838257186181189 解析到本租户物理角色 → 本租户成员,不再跨租户借用);
- -- approverNames 展示标签同步更新。仅此一个流程行,不动 global TB001 / UATB-TB001 / DEMO-TB001。
- -- 唯一子串 REPLACE:第二次执行时原串已不存在 → 自然 no-op(幂等)。
- UPDATE ApprovalFlow
- SET FlowJson = REPLACE(
- REPLACE(FlowJson, '"approverIds":"1329908000150"', '"approverIds":"ROLE_S8_EXCEPTION_HANDLER"'),
- '"approverNames":"S1异常处理员"', '"approverNames":"S8异常处理员"')
- WHERE Id = 9206082610000001 AND Code = 'UATA-TB001' AND BizType = 'EXCEPTION_REPORT';
|