-- ============================================================
|
-- 质量管理 - 检测结果台账 菜单与权限
|
--
|
-- 背景:质检各模块(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';
|