1.0.477.sql 3.3 KB

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