gaoluyang
2026-11-02 84421ba2a36aa86699c80969f9d3d3be8c011bd9
恢复工作流菜单:协同办公/审批中心/流程管理

BPM 流程定义与表单数据齐全,但客户菜单树被裁剪后只剩孤立按钮权限,
审批人没有待办入口。按标准 BPM 菜单 ID 恢复菜单树,并给已有 BPM 查询
按钮的角色补授审批中心(待办/已办/抄送/我的流程)。脚本见
docs/sql/cfwj_bpm_menu_restore.sql。

Co-Authored-By: Claude Code <noreply@anthropic.com>
已添加1个文件
77 ■■■■■ 文件已修改
docs/sql/cfwj_bpm_menu_restore.sql 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/sql/cfwj_bpm_menu_restore.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,77 @@
-- ============================================================
-- è¯šå‘五金:恢复工作流(协同办公 / å®¡æ‰¹ä¸­å¿ƒ / æµç¨‹ç®¡ç†ï¼‰èœå•
-- èƒŒæ™¯ï¼šBPM æµç¨‹å®šä¹‰ã€è¡¨å•、分类、待办数据均在库中,但菜单树被裁剪,
--       åªå‰©è‹¥å¹²å­¤ç«‹çš„æŒ‰é’®æƒé™ï¼ˆå¦‚ bpm:form:query、bpm:task:query),
--       å¯¼è‡´ã€Œæäº¤å®¡æ‰¹ã€åŽå®¡æ‰¹äººæ²¡æœ‰å¾…办入口,业务单据无法流转。
-- ç›®æ ‡åº“:诚发五金客户库(本地为 CFWJ),请按实际库名执行或先 USE。
-- å¹‚等:REPLACE æŒ‰å›ºå®šèœå• ID è¦†ç›–;角色授权按 code + NOT EXISTS åŽ»é‡ã€‚
-- æ³¨æ„ï¼šæœ¬è„šæœ¬ä¸å« tenant_id(单租户)。
-- ============================================================
-- 1. èœå•与按钮权限(ID æ²¿ç”¨æ ‡å‡† BPM èœå• ID,覆盖同 ID çš„历史残留按钮)
REPLACE INTO `system_menu`
(`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`)
VALUES
(1185,'协同办公','',1,50,0,'/bpm','fa:medium',NULL,NULL,0,b'1',b'0',b'1'),
(1186,'流程管理','',1,1,1185,'manager','fa:dedent',NULL,NULL,0,b'1',b'0',b'1'),
(1200,'审批中心','',2,2,1185,'task','fa:tasks',NULL,NULL,0,b'1',b'0',b'1'),
(1193,'流程模型','',2,1,1186,'model','fa-solid:project-diagram','bpm/model/index','BpmModel',0,b'1',b'0',b'1'),
(1187,'流程表单','',2,2,1186,'form','fa:hdd-o','bpm/form/index','BpmForm',0,b'1',b'0',b'1'),
(2714,'流程分类','',2,3,1186,'category','fa:object-ungroup','bpm/category/index','BpmCategory',0,b'1',b'0',b'1'),
(1209,'用户分组','',2,4,1186,'user-group','fa:user-secret','bpm/group/index','BpmUserGroup',0,b'1',b'0',b'1'),
(1188,'表单查询','bpm:form:query',3,1,1187,'','',NULL,NULL,0,b'1',b'0',b'1'),
(1189,'表单创建','bpm:form:create',3,2,1187,'','',NULL,NULL,0,b'1',b'0',b'1'),
(1190,'表单更新','bpm:form:update',3,3,1187,'','',NULL,NULL,0,b'1',b'0',b'1'),
(1191,'表单删除','bpm:form:delete',3,4,1187,'','',NULL,NULL,0,b'1',b'0',b'1'),
(1192,'表单导出','bpm:form:export',3,5,1187,'','',NULL,NULL,0,b'1',b'0',b'1'),
(1194,'模型查询','bpm:model:query',3,1,1193,'','',NULL,NULL,0,b'1',b'0',b'1'),
(1195,'模型创建','bpm:model:create',3,2,1193,'','',NULL,NULL,0,b'1',b'0',b'1'),
(1197,'模型更新','bpm:model:update',3,4,1193,'','',NULL,NULL,0,b'1',b'0',b'1'),
(1198,'模型删除','bpm:model:delete',3,5,1193,'','',NULL,NULL,0,b'1',b'0',b'1'),
(1199,'模型发布','bpm:model:deploy',3,6,1193,'','',NULL,NULL,0,b'1',b'0',b'1'),
(2913,'流程清理','bpm:model:clean',3,7,1193,'','',NULL,'',0,b'1',b'0',b'1'),
(1215,'流程定义查询','bpm:process-definition:query',3,10,1193,'','',NULL,NULL,0,b'1',b'0',b'1'),
(1216,'流程任务分配规则查询','bpm:task-assign-rule:query',3,20,1193,'','',NULL,NULL,0,b'1',b'0',b'1'),
(1217,'流程任务分配规则创建','bpm:task-assign-rule:create',3,21,1193,'','',NULL,NULL,0,b'1',b'0',b'1'),
(1218,'流程任务分配规则更新','bpm:task-assign-rule:update',3,22,1193,'','',NULL,NULL,0,b'1',b'0',b'1'),
(2720,'发起流程','',2,0,1200,'create','fa-solid:grin-stars','bpm/processInstance/create/index','BpmProcessInstanceCreate',0,b'1',b'0',b'1'),
(1201,'我的流程','',2,1,1200,'my','fa-solid:book','bpm/processInstance/index','BpmProcessInstanceMy',0,b'1',b'0',b'1'),
(1207,'待办任务','',2,10,1200,'todo','fa:slack','bpm/task/todo/index','BpmTodoTask',0,b'1',b'0',b'1'),
(1208,'已办任务','',2,20,1200,'done','fa:delicious','bpm/task/done/index','BpmDoneTask',0,b'1',b'0',b'1'),
(2713,'抄送我的','bpm:process-instance-cc:query',2,30,1200,'copy','ep:copy-document','bpm/task/copy/index','BpmProcessInstanceCopy',0,b'1',b'0',b'1'),
(1202,'流程实例的查询','bpm:process-instance:query',3,1,1201,'','',NULL,NULL,0,b'1',b'0',b'1'),
(1219,'流程实例的创建','bpm:process-instance:create',3,2,1201,'','',NULL,NULL,0,b'1',b'0',b'1'),
(1220,'流程实例的取消','bpm:process-instance:cancel',3,3,1201,'','',NULL,NULL,0,b'1',b'0',b'1'),
(1221,'流程任务的查询','bpm:task:query',3,1,1207,'','',NULL,NULL,0,b'1',b'0',b'1'),
(1222,'流程任务的更新','bpm:task:update',3,2,1207,'','',NULL,NULL,0,b'1',b'0',b'1'),
(1210,'用户组查询','bpm:user-group:query',3,1,1209,'','',NULL,NULL,0,b'1',b'0',b'1'),
(1211,'用户组创建','bpm:user-group:create',3,2,1209,'','',NULL,NULL,0,b'1',b'0',b'1'),
(1212,'用户组更新','bpm:user-group:update',3,3,1209,'','',NULL,NULL,0,b'1',b'0',b'1'),
(1213,'用户组删除','bpm:user-group:delete',3,4,1209,'','',NULL,NULL,0,b'1',b'0',b'1'),
(2715,'分类查询','bpm:category:query',3,1,2714,'','',NULL,'',0,b'1',b'0',b'1'),
(2716,'分类创建','bpm:category:create',3,2,2714,'','',NULL,'',0,b'1',b'0',b'1'),
(2717,'分类更新','bpm:category:update',3,3,2714,'','',NULL,'',0,b'1',b'0',b'1'),
(2718,'分类删除','bpm:category:delete',3,4,2714,'','',NULL,'',0,b'1',b'0',b'1')
;
-- 2. å®¡æ‰¹ä¸­å¿ƒæŽˆæƒï¼šæ­¤å‰å·²æŒæœ‰ BPM æŸ¥è¯¢æŒ‰é’®çš„角色,恢复后即可看到待办/已办/我的流程
--    ï¼ˆæµç¨‹ç®¡ç†ä»…超级管理员可见,不在此授权)
INSERT INTO `system_role_menu` (`role_id`, `menu_id`, `creator`, `updater`, `deleted`)
SELECT r.`id`, m.`menu_id`, 'admin', 'admin', b'0'
FROM `system_role` r
CROSS JOIN (
    SELECT 1185 AS `menu_id` UNION ALL SELECT 1200 UNION ALL SELECT 2720
    UNION ALL SELECT 1201 UNION ALL SELECT 1202 UNION ALL SELECT 1219
    UNION ALL SELECT 1220 UNION ALL SELECT 1207 UNION ALL SELECT 1221
    UNION ALL SELECT 1222 UNION ALL SELECT 1208 UNION ALL SELECT 2713
) m
WHERE r.`deleted` = b'0'
  AND r.`code` IN ('common', 'tenant_admin', 'test-dp', 'coffee', '员工', '总经理', 'JL')
  AND NOT EXISTS (
      SELECT 1 FROM `system_role_menu` rm
      WHERE rm.`role_id` = r.`id` AND rm.`menu_id` = m.`menu_id` AND rm.`deleted` = b'0'
  );
-- 3. éªŒè¯ï¼šåº”返回 40 æ¡èœå•,且 1185 / 1200 / 1207 å­˜åœ¨çˆ¶å­å…³ç³»
-- SELECT id, name, type, parent_id, path, component FROM system_menu
--  WHERE id IN (1185, 1186, 1187, 1193, 1200, 1201, 1207, 1208, 2713);