diff --git a/docs/sql/alter_sys_menu_add_production_waste_output.sql b/docs/sql/alter_sys_menu_add_production_waste_output.sql new file mode 100644 index 00000000..284650db --- /dev/null +++ b/docs/sql/alter_sys_menu_add_production_waste_output.sql @@ -0,0 +1,166 @@ +-- 生产管理:废弃物管理(独立页面 + 独立权限码) +-- 幂等:可重复执行 +-- 授权:已有【生产管理】PRM 下任一有效子菜单的角色 → 授予本 C/F,并补授 PRM 祖先 + +SET @tenant_no = CONVERT('zkxw' USING utf8mb4) COLLATE utf8mb4_unicode_ci; +SET @prm_id = CONVERT('PRM00000000000000000000000000001' USING utf8mb4) COLLATE utf8mb4_unicode_ci; +SET @menu_c = CONVERT('95300000000000000000000000000001' USING utf8mb4) COLLATE utf8mb4_unicode_ci; +SET @menu_f = CONVERT('95300000000000000000000000000002' USING utf8mb4) COLLATE utf8mb4_unicode_ci; + +-- 1) C 菜单 +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_by, update_time, del_flag +) +SELECT + @menu_c, + '废弃物管理', + @prm_id, + 'C', + 'waste-output', + '/production/waste-output/index', + 'production:waste-output:list', + 1, '1', '1', @tenant_no, 8, + '生产看板:任务步骤废弃物产出只读汇总', + NULL, '', NOW(), NULL, NOW(), 0 +FROM DUAL +WHERE NOT EXISTS ( + SELECT 1 FROM sys_menu m + WHERE m.id COLLATE utf8mb4_unicode_ci = @menu_c +); + +UPDATE sys_menu +SET + menu_name = '废弃物管理', + parent_id = @prm_id, + menu_type = 'C', + path = 'waste-output', + component = '/production/waste-output/index', + perms = 'production:waste-output:list', + visible = '1', + status = '1', + order_num = 8, + remark = '生产看板:任务步骤废弃物产出只读汇总', + del_flag = 0, + update_time = NOW() +WHERE id COLLATE utf8mb4_unicode_ci = @menu_c; + +-- 2) F 按钮 +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_by, update_time, del_flag +) +SELECT + @menu_f, + '废弃物查询', + @menu_c, + 'F', + '', + '', + 'production:waste-output:list', + 1, '0', '1', @tenant_no, 1, + '生产侧废弃物列表查询', + NULL, '', NOW(), NULL, NOW(), 0 +FROM DUAL +WHERE NOT EXISTS ( + SELECT 1 FROM sys_menu m + WHERE m.id COLLATE utf8mb4_unicode_ci = @menu_f +); + +UPDATE sys_menu +SET + menu_name = '废弃物查询', + parent_id = @menu_c, + menu_type = 'F', + path = '', + component = '', + perms = 'production:waste-output:list', + visible = '0', + status = '1', + order_num = 1, + remark = '生产侧废弃物列表查询', + del_flag = 0, + update_time = NOW() +WHERE id COLLATE utf8mb4_unicode_ci = @menu_f; + +-- 3) 目标角色:已有 PRM 下任一有效子菜单授权 +-- MySQL 5.7:UPDATE 目标表不可在同句 FROM/EXISTS 中直接引用自身,须用派生表 + +-- 3a) 恢复软删的 PRM / C / F 授权 +UPDATE sys_role_menu rm +INNER JOIN sys_role r + ON r.id COLLATE utf8mb4_unicode_ci = rm.role_id COLLATE utf8mb4_unicode_ci + AND r.del_flag = 0 + AND r.tenant_no COLLATE utf8mb4_unicode_ci = @tenant_no +INNER JOIN ( + SELECT DISTINCT rm2.role_id AS role_id + FROM sys_role_menu rm2 + INNER JOIN sys_menu m2 + ON m2.id COLLATE utf8mb4_unicode_ci = rm2.menu_id COLLATE utf8mb4_unicode_ci + AND m2.del_flag = 0 + AND m2.parent_id COLLATE utf8mb4_unicode_ci = @prm_id + WHERE rm2.tenant_no COLLATE utf8mb4_unicode_ci = @tenant_no + AND rm2.del_flag = 0 +) eligible + ON eligible.role_id COLLATE utf8mb4_unicode_ci = r.id COLLATE utf8mb4_unicode_ci +SET + rm.del_flag = 0, + rm.update_time = NOW(), + rm.remark = 'grant production waste-output to PRM roles' +WHERE rm.tenant_no COLLATE utf8mb4_unicode_ci = @tenant_no + AND rm.del_flag = 1 + AND rm.menu_id COLLATE utf8mb4_unicode_ci IN (@prm_id, @menu_c, @menu_f); + +-- 3b) 插入缺失授权(PRM + C + F) +INSERT INTO sys_role_menu ( + id, role_id, menu_id, tenant_no, order_num, remark, + create_by, create_dept_id, create_time, update_by, update_time, del_flag +) +SELECT + UPPER(MD5(CONCAT(src.role_id, '|', src.menu_id))), + src.role_id, + src.menu_id, + @tenant_no, + 0, + 'grant production waste-output to PRM roles', + 'admin', + '', + NOW(), + NULL, + NOW(), + 0 +FROM ( + SELECT + r.id AS role_id, + x.menu_id AS menu_id + FROM sys_role r + INNER JOIN ( + SELECT @prm_id AS menu_id + UNION ALL SELECT @menu_c + UNION ALL SELECT @menu_f + ) x + INNER JOIN ( + SELECT DISTINCT rm2.role_id AS role_id + FROM sys_role_menu rm2 + INNER JOIN sys_menu m2 + ON m2.id COLLATE utf8mb4_unicode_ci = rm2.menu_id COLLATE utf8mb4_unicode_ci + AND m2.del_flag = 0 + AND m2.parent_id COLLATE utf8mb4_unicode_ci = @prm_id + WHERE rm2.tenant_no COLLATE utf8mb4_unicode_ci = @tenant_no + AND rm2.del_flag = 0 + ) eligible + ON eligible.role_id COLLATE utf8mb4_unicode_ci = r.id COLLATE utf8mb4_unicode_ci + INNER JOIN sys_menu m + ON m.id COLLATE utf8mb4_unicode_ci = x.menu_id + AND m.del_flag = 0 + WHERE r.del_flag = 0 + AND r.tenant_no COLLATE utf8mb4_unicode_ci = @tenant_no +) src +LEFT JOIN sys_role_menu existing + ON existing.role_id COLLATE utf8mb4_unicode_ci = src.role_id COLLATE utf8mb4_unicode_ci + AND existing.menu_id COLLATE utf8mb4_unicode_ci = src.menu_id COLLATE utf8mb4_unicode_ci + AND existing.tenant_no COLLATE utf8mb4_unicode_ci = @tenant_no + AND existing.del_flag = 0 +WHERE existing.id IS NULL; diff --git a/待同步到生产的sql脚本 b/待同步到生产的sql脚本 index bc61c5e7..7ef7a119 100644 --- a/待同步到生产的sql脚本 +++ b/待同步到生产的sql脚本 @@ -1,453 +1,12 @@ --- 员工微信服务号 openid / unionid 绑定字段(OA 审批通知) --- MySQL 5.7:唯一索引允许多个 NULL - -ALTER TABLE `sys_user` - ADD COLUMN `wx_mp_openid` varchar(64) DEFAULT NULL COMMENT '微信服务号 openid' AFTER `wx_openid`, - ADD COLUMN `wx_unionid` varchar(64) DEFAULT NULL COMMENT '微信开放平台 unionid' AFTER `wx_mp_openid`, - ADD COLUMN `wx_mp_bind_time` datetime DEFAULT NULL COMMENT '服务号绑定时间' AFTER `wx_unionid`; - -ALTER TABLE `sys_user` - ADD UNIQUE INDEX `uk_sys_user_wx_mp_openid` (`wx_mp_openid`); - -ALTER TABLE `sys_user` - ADD INDEX `idx_sys_user_wx_unionid` (`wx_unionid`); - - - -- 将「开启微信通知」(OA007) 授予全部未删除角色 - -- 前置:已执行 docs/sql/mobile_menu_oa_wechat_notify.sql(菜单须已存在) - -- 幂等:可重复执行;已有有效授权跳过;软删则恢复 - -- 说明: - -- 1) 用户变量显式 utf8mb4_unicode_ci,避免 collation 混用报错 1267 - -- 2) 主键用 MD5(role_id|menu_id),避免 INSERT…SELECT 中 UUID() 只算一次导致重复主键 - - SET @menu_id = CONVERT('MINI000000000000000000000000OA007' USING utf8mb4) COLLATE utf8mb4_unicode_ci; - SET @tenant_no = CONVERT('zkxw' USING utf8mb4) COLLATE utf8mb4_unicode_ci; - - -- 1) 恢复历史上已软删的授权(按 role_id + menu_id) - UPDATE sys_role_menu rm - INNER JOIN sys_role r - ON r.id COLLATE utf8mb4_unicode_ci = rm.role_id COLLATE utf8mb4_unicode_ci - AND r.del_flag = 0 - AND r.tenant_no COLLATE utf8mb4_unicode_ci = @tenant_no - SET - rm.del_flag = 0, - rm.update_time = NOW(), - rm.remark = 'grant wechat-notify to all roles' - WHERE rm.menu_id COLLATE utf8mb4_unicode_ci = @menu_id - AND rm.tenant_no COLLATE utf8mb4_unicode_ci = @tenant_no - AND rm.del_flag = 1; - - -- 2) 为尚未关联该菜单的角色新增授权 - INSERT INTO sys_role_menu ( - id, role_id, menu_id, tenant_no, order_num, remark, - create_by, create_dept_id, create_time, update_by, update_time, del_flag - ) - SELECT - UPPER(MD5(CONCAT(r.id, '|', @menu_id))), - r.id, - @menu_id, - @tenant_no, - 0, - 'grant wechat-notify to all roles', - 'admin', - '', - NOW(), - NULL, - NOW(), - 0 - FROM sys_role r - WHERE r.del_flag = 0 - AND r.tenant_no COLLATE utf8mb4_unicode_ci = @tenant_no - AND EXISTS ( - SELECT 1 FROM sys_menu m - WHERE m.id COLLATE utf8mb4_unicode_ci = @menu_id - AND m.del_flag = 0 - ) - AND NOT EXISTS ( - SELECT 1 FROM sys_role_menu rm - WHERE rm.role_id COLLATE utf8mb4_unicode_ci = r.id COLLATE utf8mb4_unicode_ci - AND rm.menu_id COLLATE utf8mb4_unicode_ci = @menu_id - AND rm.tenant_no COLLATE utf8mb4_unicode_ci = @tenant_no - AND rm.del_flag = 0 - ); - - - -- 小程序「发起审批」菜单种子(挂在「移动端菜单」根下) --- 执行前请确认移动端根存在;角色授权请在 Web「角色管理」勾选本菜单。 - -SET @mini_root = ( - SELECT id FROM sys_menu - WHERE del_flag = 0 AND parent_id = '0' AND menu_name LIKE '%移动端%' - LIMIT 1 -); - -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_by, update_time, del_flag -) -SELECT - 'MINI000000000000000000000000OA001', - '发起审批', - @mini_root, - 'C', - '/pages/oa/start/index', - NULL, - 'mini:oa:start', - 1, - '1', - '1', - 'zkxw', - 10, - '小程序发起审批', - 'admin', - '', - NOW(), - NULL, - NOW(), - 0 -FROM DUAL -WHERE @mini_root IS NOT NULL - AND NOT EXISTS ( - SELECT 1 FROM sys_menu WHERE id = 'MINI000000000000000000000000OA001' AND del_flag = 0 - ); - - -- 小程序 OA 五中心菜单种子(挂在「移动端菜单」根下) --- 前置:docs/sql/mobile_menu_oa_start.sql(发起审批 OA001)可已执行 --- 角色授权请在 Web「角色管理」勾选本菜单。 - -SET @mini_root = ( - SELECT id FROM sys_menu - WHERE del_flag = 0 AND parent_id = '0' AND menu_name LIKE '%移动端%' - LIMIT 1 -); - --- 草稿箱 -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_by, update_time, del_flag -) -SELECT - 'MINI000000000000000000000000OA002', - '草稿箱', - @mini_root, - 'C', - '/pages/oa/drafts/index', - NULL, - 'mini:oa:drafts', - 1, - '1', - '1', - 'zkxw', - 20, - '小程序草稿箱', - 'admin', - '', - NOW(), - NULL, - NOW(), - 0 -FROM DUAL -WHERE @mini_root IS NOT NULL - AND NOT EXISTS ( - SELECT 1 FROM sys_menu WHERE id = 'MINI000000000000000000000000OA002' AND del_flag = 0 - ); - --- 待办中心 -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_by, update_time, del_flag -) -SELECT - 'MINI000000000000000000000000OA003', - '待办中心', - @mini_root, - 'C', - '/pages/oa/pending/index', - NULL, - 'mini:oa:pending', - 1, - '1', - '1', - 'zkxw', - 30, - '小程序待办中心', - 'admin', - '', - NOW(), - NULL, - NOW(), - 0 -FROM DUAL -WHERE @mini_root IS NOT NULL - AND NOT EXISTS ( - SELECT 1 FROM sys_menu WHERE id = 'MINI000000000000000000000000OA003' AND del_flag = 0 - ); - --- 已办中心 -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_by, update_time, del_flag -) -SELECT - 'MINI000000000000000000000000OA004', - '已办中心', - @mini_root, - 'C', - '/pages/oa/done/index', - NULL, - 'mini:oa:done', - 1, - '1', - '1', - 'zkxw', - 40, - '小程序已办中心', - 'admin', - '', - NOW(), - NULL, - NOW(), - 0 -FROM DUAL -WHERE @mini_root IS NOT NULL - AND NOT EXISTS ( - SELECT 1 FROM sys_menu WHERE id = 'MINI000000000000000000000000OA004' AND del_flag = 0 - ); - --- 我发起的 -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_by, update_time, del_flag -) -SELECT - 'MINI000000000000000000000000OA005', - '我发起的', - @mini_root, - 'C', - '/pages/oa/mine/index', - NULL, - 'mini:oa:mine', - 1, - '1', - '1', - 'zkxw', - 50, - '小程序我发起的', - 'admin', - '', - NOW(), - NULL, - NOW(), - 0 -FROM DUAL -WHERE @mini_root IS NOT NULL - AND NOT EXISTS ( - SELECT 1 FROM sys_menu WHERE id = 'MINI000000000000000000000000OA005' AND del_flag = 0 - ); - --- 抄送我的 -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_by, update_time, del_flag -) -SELECT - 'MINI000000000000000000000000OA006', - '抄送我的', - @mini_root, - 'C', - '/pages/oa/cc/index', - NULL, - 'mini:oa:cc', - 1, - '1', - '1', - 'zkxw', - 60, - '小程序抄送我的', - 'admin', - '', - NOW(), - NULL, - NOW(), - 0 -FROM DUAL -WHERE @mini_root IS NOT NULL - AND NOT EXISTS ( - SELECT 1 FROM sys_menu WHERE id = 'MINI000000000000000000000000OA006' AND del_flag = 0 - ); - - -- 小程序「开启微信通知」菜单(抄送我的之后) --- 前置:docs/sql/mobile_menu_oa_task_centers.sql(OA006)可已执行 --- 角色授权请在 Web「角色管理」勾选本菜单。 - -SET @mini_root = ( - SELECT id FROM sys_menu - WHERE del_flag = 0 AND parent_id = '0' AND menu_name LIKE '%移动端%' - LIMIT 1 -); - -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_by, update_time, del_flag -) -SELECT - 'MINI000000000000000000000000OA007', - '开启微信通知', - @mini_root, - 'C', - '/pages/oa/wechat-notify/index', - NULL, - 'mini:oa:wechat-notify', - 1, - '1', - '1', - 'zkxw', - 70, - '小程序开启微信通知(关注+绑定)', - 'admin', - '', - NOW(), - NULL, - NOW(), - 0 -FROM DUAL -WHERE @mini_root IS NOT NULL - AND NOT EXISTS ( - SELECT 1 FROM sys_menu WHERE id = 'MINI000000000000000000000000OA007' AND del_flag = 0 - ); - - --- 将「移动端菜单」根及其全部子孙菜单,授予全部未删除角色 --- 前置:移动端根菜单已存在(parent_id=0 且名称含「移动端」) --- 幂等:可重复执行;已有有效授权跳过;软删则恢复 --- 说明: --- 1) 用户变量显式 utf8mb4_unicode_ci,避免 collation 混用报错 1267 --- 2) 主键用 MD5(role_id|menu_id),避免 INSERT…SELECT 中 UUID() 只算一次导致重复主键 --- 3) MySQL 5.7 无递归 CTE,按最多 3 层子孙展开(根→一级→二级→三级) - -SET @tenant_no = CONVERT('zkxw' USING utf8mb4) COLLATE utf8mb4_unicode_ci; - -SET @mini_root = ( - SELECT CONVERT(id USING utf8mb4) COLLATE utf8mb4_unicode_ci - FROM sys_menu - WHERE del_flag = 0 - AND parent_id COLLATE utf8mb4_unicode_ci = CONVERT('0' USING utf8mb4) COLLATE utf8mb4_unicode_ci - AND menu_name LIKE '%移动端%' - AND tenant_no COLLATE utf8mb4_unicode_ci = @tenant_no - LIMIT 1 -); - --- 1) 恢复历史上已软删的授权(菜单属于移动端树) -UPDATE sys_role_menu rm -INNER JOIN sys_role r - ON r.id COLLATE utf8mb4_unicode_ci = rm.role_id COLLATE utf8mb4_unicode_ci - AND r.del_flag = 0 - AND r.tenant_no COLLATE utf8mb4_unicode_ci = @tenant_no -INNER JOIN sys_menu m - ON m.id COLLATE utf8mb4_unicode_ci = rm.menu_id COLLATE utf8mb4_unicode_ci - AND m.del_flag = 0 - AND m.tenant_no COLLATE utf8mb4_unicode_ci = @tenant_no - AND ( - m.id COLLATE utf8mb4_unicode_ci = @mini_root - OR m.parent_id COLLATE utf8mb4_unicode_ci = @mini_root - OR EXISTS ( - SELECT 1 FROM sys_menu p1 - WHERE p1.del_flag = 0 - AND p1.id COLLATE utf8mb4_unicode_ci = m.parent_id COLLATE utf8mb4_unicode_ci - AND p1.parent_id COLLATE utf8mb4_unicode_ci = @mini_root - ) - OR EXISTS ( - SELECT 1 FROM sys_menu p1 - INNER JOIN sys_menu p2 - ON p2.del_flag = 0 - AND p2.id COLLATE utf8mb4_unicode_ci = p1.parent_id COLLATE utf8mb4_unicode_ci - WHERE p1.del_flag = 0 - AND p1.id COLLATE utf8mb4_unicode_ci = m.parent_id COLLATE utf8mb4_unicode_ci - AND p2.parent_id COLLATE utf8mb4_unicode_ci = @mini_root - ) - ) -SET - rm.del_flag = 0, - rm.update_time = NOW(), - rm.remark = 'grant all mobile menus to all roles' -WHERE @mini_root IS NOT NULL - AND rm.tenant_no COLLATE utf8mb4_unicode_ci = @tenant_no - AND rm.del_flag = 1; - --- 2) 为尚未关联的「角色 × 移动端菜单」新增授权 -INSERT INTO sys_role_menu ( - id, role_id, menu_id, tenant_no, order_num, remark, - create_by, create_dept_id, create_time, update_by, update_time, del_flag -) -SELECT - UPPER(MD5(CONCAT(r.id, '|', m.id))), - r.id, - m.id, - @tenant_no, - 0, - 'grant all mobile menus to all roles', - 'admin', - '', - NOW(), - NULL, - NOW(), - 0 -FROM sys_role r -INNER JOIN sys_menu m - ON m.del_flag = 0 - AND m.tenant_no COLLATE utf8mb4_unicode_ci = @tenant_no - AND ( - m.id COLLATE utf8mb4_unicode_ci = @mini_root - OR m.parent_id COLLATE utf8mb4_unicode_ci = @mini_root - OR EXISTS ( - SELECT 1 FROM sys_menu p1 - WHERE p1.del_flag = 0 - AND p1.id COLLATE utf8mb4_unicode_ci = m.parent_id COLLATE utf8mb4_unicode_ci - AND p1.parent_id COLLATE utf8mb4_unicode_ci = @mini_root - ) - OR EXISTS ( - SELECT 1 FROM sys_menu p1 - INNER JOIN sys_menu p2 - ON p2.del_flag = 0 - AND p2.id COLLATE utf8mb4_unicode_ci = p1.parent_id COLLATE utf8mb4_unicode_ci - WHERE p1.del_flag = 0 - AND p1.id COLLATE utf8mb4_unicode_ci = m.parent_id COLLATE utf8mb4_unicode_ci - AND p2.parent_id COLLATE utf8mb4_unicode_ci = @mini_root - ) - ) -WHERE @mini_root IS NOT NULL - AND r.del_flag = 0 - AND r.tenant_no COLLATE utf8mb4_unicode_ci = @tenant_no - AND NOT EXISTS ( - SELECT 1 FROM sys_role_menu rm - WHERE rm.role_id COLLATE utf8mb4_unicode_ci = r.id COLLATE utf8mb4_unicode_ci - AND rm.menu_id COLLATE utf8mb4_unicode_ci = m.id COLLATE utf8mb4_unicode_ci - AND rm.tenant_no COLLATE utf8mb4_unicode_ci = @tenant_no - AND rm.del_flag = 0 - ); - - - -commit; - --- ===== 生产管理:预产及在途样本菜单(独立权限码)===== --- 权威脚本:docs/sql/alter_sys_menu_add_production_pre_transit_sample.sql - --- 生产管理:预产及在途样本(独立页面 + 独立权限码) +-- ===== 废弃物管理菜单 ===== +-- 生产管理:废弃物管理(独立页面 + 独立权限码) -- 幂等:可重复执行 -- 授权:已有【生产管理】PRM 下任一有效子菜单的角色 → 授予本 C/F,并补授 PRM 祖先 SET @tenant_no = CONVERT('zkxw' USING utf8mb4) COLLATE utf8mb4_unicode_ci; SET @prm_id = CONVERT('PRM00000000000000000000000000001' USING utf8mb4) COLLATE utf8mb4_unicode_ci; -SET @menu_c = CONVERT('95200000000000000000000000000001' USING utf8mb4) COLLATE utf8mb4_unicode_ci; -SET @menu_f = CONVERT('95200000000000000000000000000002' USING utf8mb4) COLLATE utf8mb4_unicode_ci; +SET @menu_c = CONVERT('95300000000000000000000000000001' USING utf8mb4) COLLATE utf8mb4_unicode_ci; +SET @menu_f = CONVERT('95300000000000000000000000000002' USING utf8mb4) COLLATE utf8mb4_unicode_ci; -- 1) C 菜单 INSERT INTO sys_menu ( @@ -457,14 +16,14 @@ INSERT INTO sys_menu ( ) SELECT @menu_c, - '预产及在途样本', + '废弃物管理', @prm_id, 'C', - 'pre-transit-sample', - '/production/pre-transit-sample/index', - 'production:preTransitSample:list', - 1, '1', '1', @tenant_no, 0, - '生产看板:在途样本与预产协议(协议单维度只读;与质检页代码独立)', + 'waste-output', + '/production/waste-output/index', + 'production:waste-output:list', + 1, '1', '1', @tenant_no, 8, + '生产看板:任务步骤废弃物产出只读汇总', NULL, '', NOW(), NULL, NOW(), 0 FROM DUAL WHERE NOT EXISTS ( @@ -474,16 +33,16 @@ WHERE NOT EXISTS ( UPDATE sys_menu SET - menu_name = '预产及在途样本', + menu_name = '废弃物管理', parent_id = @prm_id, menu_type = 'C', - path = 'pre-transit-sample', - component = '/production/pre-transit-sample/index', - perms = 'production:preTransitSample:list', + path = 'waste-output', + component = '/production/waste-output/index', + perms = 'production:waste-output:list', visible = '1', status = '1', - order_num = 0, - remark = '生产看板:在途样本与预产协议(协议单维度只读;与质检页代码独立)', + order_num = 8, + remark = '生产看板:任务步骤废弃物产出只读汇总', del_flag = 0, update_time = NOW() WHERE id COLLATE utf8mb4_unicode_ci = @menu_c; @@ -496,14 +55,14 @@ INSERT INTO sys_menu ( ) SELECT @menu_f, - '预产及在途查询', + '废弃物查询', @menu_c, 'F', '', '', - 'production:preTransitSample:list', + 'production:waste-output:list', 1, '0', '1', @tenant_no, 1, - '生产侧预产及在途样本列表查询', + '生产侧废弃物列表查询', NULL, '', NOW(), NULL, NOW(), 0 FROM DUAL WHERE NOT EXISTS ( @@ -513,16 +72,16 @@ WHERE NOT EXISTS ( UPDATE sys_menu SET - menu_name = '预产及在途查询', + menu_name = '废弃物查询', parent_id = @menu_c, menu_type = 'F', path = '', component = '', - perms = 'production:preTransitSample:list', + perms = 'production:waste-output:list', visible = '0', status = '1', order_num = 1, - remark = '生产侧预产及在途样本列表查询', + remark = '生产侧废弃物列表查询', del_flag = 0, update_time = NOW() WHERE id COLLATE utf8mb4_unicode_ci = @menu_f; @@ -550,7 +109,7 @@ INNER JOIN ( SET rm.del_flag = 0, rm.update_time = NOW(), - rm.remark = 'grant production pre-transit to PRM roles' + rm.remark = 'grant production waste-output to PRM roles' WHERE rm.tenant_no COLLATE utf8mb4_unicode_ci = @tenant_no AND rm.del_flag = 1 AND rm.menu_id COLLATE utf8mb4_unicode_ci IN (@prm_id, @menu_c, @menu_f); @@ -566,7 +125,7 @@ SELECT src.menu_id, @tenant_no, 0, - 'grant production pre-transit to PRM roles', + 'grant production waste-output to PRM roles', 'admin', '', NOW(), @@ -606,8 +165,3 @@ LEFT JOIN sys_role_menu existing AND existing.tenant_no COLLATE utf8mb4_unicode_ci = @tenant_no AND existing.del_flag = 0 WHERE existing.id IS NULL; - - - --- ===== 质检:检测项目模版建表 + 菜单授权 ===== --- 权威脚本:docs/sql/alter_biz_qc_inspection_item_template.sql