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
-- =====================================================
-- HRM 考勤节假日配置 修复脚本
--
-- 背景:该页面(菜单 6014「节假日配置」)存在两处缺失,导致页面不可用:
--   1. 缺字典 hrm_holiday_type:前端「类型」单选与列表「类型」列取不到选项/文本,
--      且类型为必选,新增/编辑无法保存(hrm_attendance_holiday 表长期 0 行)。
--   2. 缺按钮权限 hrm:attendance-holiday:query:后端 /page、/get 依赖该权限码,
--      非超管角色(菜单已授权)因无此权限码而全部 403。
--
-- 内容:
--   ① 字典类型 hrm_holiday_type(1-休息日 / 2-工作日,对应 HrmAttendanceHolidayTypeEnum)
--   ② 菜单按钮 60141「节假日配置查询」= hrm:attendance-holiday:query
--   ③ 将 60141 授予已拥有「节假日配置新增」(60142) 的全部角色
--
-- 幂等:先删后插,可重复执行
-- 执行方式(避免中文乱码):
--   cmd /c "mysql -uroot -p1234 --default-character-set=utf8mb4 ruoyi-vue-pro < docs\sql\hrm_holiday_config_fix.sql"
-- =====================================================
 
SET NAMES utf8mb4;
 
-- ------------------------------------------------------------
-- ① 字典:hrm_holiday_type
-- ------------------------------------------------------------
DELETE FROM `system_dict_data` WHERE `dict_type` = 'hrm_holiday_type';
DELETE FROM `system_dict_type` WHERE `type` = 'hrm_holiday_type';
 
INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
VALUES (1065500, 'HRM 节假日类型', 'hrm_holiday_type', 0, '1', NOW(), '1', NOW(), b'0');
 
INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
VALUES
  (1065501, 1, '休息日', '1', 'hrm_holiday_type', 0, 'success', '', '1', NOW(), '1', NOW(), b'0'),
  (1065502, 2, '工作日', '2', 'hrm_holiday_type', 0, 'primary', '', '1', NOW(), '1', NOW(), b'0');
 
-- ------------------------------------------------------------
-- ② 菜单按钮:节假日配置查询
-- ------------------------------------------------------------
DELETE FROM `system_role_menu` WHERE `menu_id` = 60141;
DELETE FROM `system_menu` WHERE `id` = 60141;
 
INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
VALUES (60141, '节假日配置查询', 'hrm:attendance-holiday:query', 3, 1, 6014, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0');
 
-- ------------------------------------------------------------
-- ③ 授权:跟随「节假日配置新增」(60142) 的角色
-- ------------------------------------------------------------
INSERT INTO `system_role_menu` (`role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
SELECT DISTINCT rm.`role_id`, 60141, '1', NOW(), '1', NOW(), b'0'
FROM `system_role_menu` rm
WHERE rm.`menu_id` = 60142 AND rm.`deleted` = b'0';
 
-- ------------------------------------------------------------
-- 校验
-- ------------------------------------------------------------
SELECT '  dict_type ' AS item, COUNT(*) AS cnt FROM `system_dict_type` WHERE `type` = 'hrm_holiday_type'
UNION ALL SELECT '  dict_data ', COUNT(*) FROM `system_dict_data` WHERE `dict_type` = 'hrm_holiday_type'
UNION ALL SELECT '  menu_60141', COUNT(*) FROM `system_menu` WHERE `id` = 60141
UNION ALL SELECT '  roles     ', COUNT(*) FROM `system_role_menu` WHERE `menu_id` = 60141 AND `deleted` = b'0';