diff --git a/docs/sql/migrations/2026-11-01-pl-quota-cert-menus.sql b/docs/sql/migrations/2026-11-01-pl-quota-cert-menus.sql index c11dcb4d9..902a2536e 100644 --- a/docs/sql/migrations/2026-11-01-pl-quota-cert-menus.sql +++ b/docs/sql/migrations/2026-11-01-pl-quota-cert-menus.sql @@ -3,23 +3,25 @@ SET NAMES utf8mb4; START TRANSACTION; +-- 旧证件分组已删除或不存在时,沿用有效运输根目录,不恢复被删除的分组。 INSERT INTO sys_menu ( id,menu_name,parent_id,menu_type,path,component,perms,is_frame,visible,status, tenant_no,order_num,remark,create_by,create_dept_id,create_time,update_time,del_flag ) -SELECT target.id,target.name,folder.id,'C',target.path,target.component,target.perms,1,'1','1', - folder.tenant_no,target.sort_no,'工单#4:共享证件及独立资料','system','',NOW(),NOW(),0 -FROM sys_menu folder -JOIN sys_menu parent ON parent.id=folder.parent_id AND parent.tenant_no=folder.tenant_no AND parent.del_flag=0 -JOIN sys_menu root ON root.id=parent.parent_id AND root.tenant_no=folder.tenant_no AND root.del_flag=0 +SELECT target.id,target.name,COALESCE(folder.id,parent.id),'C',target.path,target.component,target.perms,1,'1','1', + parent.tenant_no,target.sort_no,'工单#4:共享证件及独立资料','system','',NOW(),NOW(),0 +FROM sys_menu parent +JOIN sys_menu root ON root.id=parent.parent_id AND root.tenant_no=parent.tenant_no AND root.del_flag=0 +LEFT JOIN sys_menu folder ON folder.id='PL_GROUP_CERT' AND folder.parent_id=parent.id + AND folder.tenant_no=parent.tenant_no AND folder.del_flag=0 CROSS JOIN ( SELECT 'PL_QUOTA_CERT' id,'购买证与运输证' name,'quota-cert' path,'pl/quota-cert/index' component,'pl:quota-cert:list' perms,2 sort_no UNION ALL SELECT 'PL_LEGAL_USE_DOCUMENT','合法使用证明','legal-use-document','pl/legal-use-document/index','pl:legal-use-document:list',3 ) target -WHERE folder.id='PL_GROUP_CERT' AND folder.del_flag=0 AND folder.tenant_no='shanxia2.0' - AND parent.id='PL_MENU_ROOT' AND root.path='/web' AND root.parent_id='0' +WHERE parent.id='PL_MENU_ROOT' AND parent.del_flag=0 AND parent.tenant_no='shanxia2.0' + AND root.path='/web' AND root.parent_id='0' AND NOT EXISTS (SELECT 1 FROM sys_menu existing WHERE existing.id=target.id - OR (existing.tenant_no=folder.tenant_no AND existing.perms=target.perms)); + OR (existing.tenant_no=parent.tenant_no AND existing.perms=target.perms)); INSERT INTO sys_menu ( id,menu_name,parent_id,menu_type,path,component,perms,is_frame,visible,status,