-- ============================================================ -- 质量管理 - 检测结果台账 菜单与权限 -- -- 背景:质检各模块(IQC/IPQC/OQC/RQC)的检测结果原先分散在各自列表内, -- 缺少跨类型的统一查询与台账导出。本次新增「检测结果台账」页面: -- 按检验类型 + 检测日期区间 + 物料/批次/检测结果/检测人筛选, -- 列表直接展示检测项实测结果,并支持导出 Excel 台账用于查询、打印、存档。 -- -- 新增菜单与按钮: -- ① 菜单「检测结果台账」 type=2,component=mes/qc/ledger/index -- ② 按钮「检测结果台账查询」= mes:qc-inspection-ledger:query -- ③ 按钮「检测结果台账导出」= mes:qc-inspection-ledger:export -- -- ID 自适应:本脚本不写死菜单 ID -- ① 菜单 ID 由 system_menu 自增分配(不指定 id 列); -- ② 父菜单 = 「来料检验查询」(mes:qc-iqc:query) 所在检验单菜单的上级(即质量管理目录), -- 查不到时回退为名称「质量管理」、type=1 的目录; -- ③ 角色授权跟随「来料检验查询」按钮已有的角色,不写死 role_id。 -- -- 幂等:按权限码 / 名称先删后插,可重复执行。 -- -- 执行方式(PowerShell,避免中文乱码): -- mysql -uroot -p1234 --default-character-set=utf8mb4 ruoyi-vue-pro < docs/sql/qc_inspection_ledger_menu.sql -- ============================================================ SET NAMES utf8mb4; -- ------------------------------------------------------------ -- 0. 幂等清理 -- ------------------------------------------------------------ DELETE rm FROM `system_role_menu` rm JOIN `system_menu` m ON rm.`menu_id` = m.`id` WHERE m.`permission` IN ('mes:qc-inspection-ledger:query', 'mes:qc-inspection-ledger:export') OR (m.`name` = '检测结果台账' AND m.`type` = 2); DELETE FROM `system_menu` WHERE `permission` IN ('mes:qc-inspection-ledger:query', 'mes:qc-inspection-ledger:export') OR (`name` = '检测结果台账' AND `type` = 2); -- ------------------------------------------------------------ -- 1. 父菜单:质量管理目录 -- 来料检验查询按钮 -> 来料检验菜单(type=2) -> 质量管理目录(type=1) -- ------------------------------------------------------------ SET @iqc_menu_id = (SELECT `parent_id` FROM `system_menu` WHERE `permission` = 'mes:qc-iqc:query' AND `deleted` = b'0' LIMIT 1); SET @qc_dir_id = COALESCE( (SELECT `parent_id` FROM `system_menu` WHERE `id` = @iqc_menu_id), (SELECT `id` FROM `system_menu` WHERE `name` = '质量管理' AND `type` = 1 AND `deleted` = b'0' LIMIT 1)); -- ------------------------------------------------------------ -- 2. 菜单:检测结果台账(type=2) -- ------------------------------------------------------------ INSERT INTO `system_menu` (`name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) SELECT '检测结果台账', '', 2, 14, @qc_dir_id, 'inspection-ledger', 'ep:document', 'mes/qc/ledger/index', 'MesQcInspectionLedger', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0' WHERE @qc_dir_id IS NOT NULL; SET @menu_ledger = IF(ROW_COUNT() > 0, LAST_INSERT_ID(), NULL); -- ------------------------------------------------------------ -- 3. 按钮:查询 / 导出 -- ------------------------------------------------------------ INSERT INTO `system_menu` (`name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) SELECT '检测结果台账查询', 'mes:qc-inspection-ledger:query', 3, 1, @menu_ledger, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0' WHERE @menu_ledger IS NOT NULL; SET @menu_ledger_query = IF(ROW_COUNT() > 0, LAST_INSERT_ID(), NULL); INSERT INTO `system_menu` (`name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) SELECT '检测结果台账导出', 'mes:qc-inspection-ledger:export', 3, 2, @menu_ledger, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0' WHERE @menu_ledger IS NOT NULL; SET @menu_ledger_export = IF(ROW_COUNT() > 0, LAST_INSERT_ID(), NULL); -- ------------------------------------------------------------ -- 4. 授权:跟随「来料检验查询」按钮已有的角色 -- ------------------------------------------------------------ INSERT INTO `system_role_menu` (`role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) SELECT DISTINCT rm.`role_id`, t.`menu_id`, '1', NOW(), '1', NOW(), b'0' FROM `system_role_menu` rm JOIN (SELECT @menu_ledger AS `menu_id` UNION ALL SELECT @menu_ledger_query UNION ALL SELECT @menu_ledger_export) t WHERE rm.`menu_id` = @iqc_menu_id AND rm.`deleted` = b'0' AND t.`menu_id` IS NOT NULL; -- ------------------------------------------------------------ -- 5. 校验:菜单 3 行;授权行数 = 3 × 「来料检验查询」的角色数 -- ------------------------------------------------------------ SELECT '菜单 检测结果台账 ' AS item, COUNT(*) AS cnt FROM `system_menu` WHERE `name` = '检测结果台账' AND `type` = 2 AND `deleted` = b'0' UNION ALL SELECT '按钮 查询/导出 ', COUNT(*) FROM `system_menu` WHERE `permission` IN ('mes:qc-inspection-ledger:query', 'mes:qc-inspection-ledger:export') AND `deleted` = b'0' UNION ALL SELECT '授权 3 个菜单 ', COUNT(*) FROM `system_role_menu` WHERE `menu_id` IN (@menu_ledger, @menu_ledger_query, @menu_ledger_export) AND `deleted` = b'0' UNION ALL SELECT '对比 来料检验查询授权行数 ', COUNT(*) FROM `system_role_menu` rm JOIN `system_menu` m ON rm.`menu_id` = m.`id` WHERE m.`permission` = 'mes:qc-iqc:query' AND rm.`deleted` = b'0';