高
3 天以前 c6a2b472cde9dff4d21b95637ee6d99a412c785c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
-- ============================================================
-- 质量管理 - 检测结果台账 菜单与权限
--
-- 背景:质检各模块(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';