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
95
96
97
98
99
100
101
102
103
| -- ============================================
| -- HRM 培训管理 + 证书/合同到期提醒 模块初始化脚本
| -- 目标库:mom-xgdl(单次执行,勿重复跑)
| -- 1. 建表(培训活动 + 参训人员)
| -- 2. 菜单 + 按钮权限 + 角色授权
| -- 3. 站内信模板(2)
| -- 4. 全局配置(提醒天数,默认 30)
| -- 5. 定时任务(每日 08:00 到期提醒)
| -- ============================================
|
| -- 1. 建表
| CREATE TABLE IF NOT EXISTS `hrm_training` (
| `id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
| `training_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '培训编号',
| `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '培训名称',
| `training_type` tinyint NOT NULL COMMENT '培训类型(1=安全培训,2=技能培训,3=管理培训,4=其他)',
| `trainer` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '讲师',
| `location` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '培训地点',
| `hours` decimal(6,1) NULL DEFAULT NULL COMMENT '培训学时',
| `start_date` date NULL DEFAULT NULL COMMENT '开始日期',
| `end_date` date NULL DEFAULT NULL COMMENT '结束日期',
| `issue_certificate` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否自动发证(0=否,1=是;仅安全/技能培训支持)',
| `cert_validity_months` int NULL DEFAULT NULL COMMENT '证书有效期(月),自动发证时用于计算证书到期日',
| `status` tinyint NOT NULL DEFAULT 0 COMMENT '状态(0=草稿,10=待开展,20=已完成,30=已取消)',
| `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '备注',
|
| -- 标准字段
| `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '创建者',
| `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
| `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '更新者',
| `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
| `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
| PRIMARY KEY (`id`) USING BTREE,
| UNIQUE INDEX `uk_training_no` (`training_no`) USING BTREE,
| INDEX `idx_status` (`status`) USING BTREE
| ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'HRM 培训活动' ROW_FORMAT = Dynamic;
|
| CREATE TABLE IF NOT EXISTS `hrm_training_participant` (
| `id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
| `training_id` bigint NOT NULL COMMENT '培训活动编号',
| `employee_id` bigint NOT NULL COMMENT '员工编号',
| `attended` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否实际参加(0=未参加,1=参加)',
| `score` decimal(10,2) NULL DEFAULT NULL COMMENT '考核成绩',
| `is_pass` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否合格(0=不合格,1=合格)',
| `certificate_id` bigint NULL DEFAULT NULL COMMENT '联动生成的证书资质编号(幂等回写,防重复发证)',
| `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '备注',
|
| -- 标准字段
| `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '创建者',
| `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
| `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '更新者',
| `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
| `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
| PRIMARY KEY (`id`) USING BTREE,
| UNIQUE INDEX `uk_training_id_employee_id` (`training_id`, `employee_id`) USING BTREE,
| INDEX `idx_employee_id` (`employee_id`) USING BTREE
| ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'HRM 培训参训人员' ROW_FORMAT = Dynamic;
|
| -- 2. 菜单(父菜单 6001 人力资源):培训管理
| 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 (1065600, '培训管理', '', 2, 99, 6001, 'training', 'ep:reading', 'hrm/training/index', 'HrmTraining', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0');
|
| 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
| (1065601, '培训管理查询', 'hrm:training:query', 3, 1, 1065600, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'),
| (1065602, '培训管理新增', 'hrm:training:create', 3, 2, 1065600, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'),
| (1065603, '培训管理修改', 'hrm:training:update', 3, 3, 1065600, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'),
| (1065604, '培训管理删除', 'hrm:training:delete', 3, 4, 1065600, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0');
|
| -- 角色授权:与"证书资质"一致,授权给角色 2/109/111
| INSERT INTO `system_role_menu` (`role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
| VALUES
| (2, 1065600, '1', NOW(), '1', NOW(), b'0'),
| (2, 1065601, '1', NOW(), '1', NOW(), b'0'),
| (2, 1065602, '1', NOW(), '1', NOW(), b'0'),
| (2, 1065603, '1', NOW(), '1', NOW(), b'0'),
| (2, 1065604, '1', NOW(), '1', NOW(), b'0'),
| (109, 1065600, '1', NOW(), '1', NOW(), b'0'),
| (109, 1065601, '1', NOW(), '1', NOW(), b'0'),
| (109, 1065602, '1', NOW(), '1', NOW(), b'0'),
| (109, 1065603, '1', NOW(), '1', NOW(), b'0'),
| (109, 1065604, '1', NOW(), '1', NOW(), b'0'),
| (111, 1065600, '1', NOW(), '1', NOW(), b'0'),
| (111, 1065601, '1', NOW(), '1', NOW(), b'0'),
| (111, 1065602, '1', NOW(), '1', NOW(), b'0'),
| (111, 1065603, '1', NOW(), '1', NOW(), b'0'),
| (111, 1065604, '1', NOW(), '1', NOW(), b'0');
|
| -- 3. 站内信模板(type=2 系统消息;变量名须与后端 HrmExpiryRemindServiceImpl 推送的 params 一致)
| INSERT INTO `system_notify_template` (`name`, `code`, `nickname`, `content`, `type`, `params`, `status`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
| VALUES
| ('证书到期提醒', 'hrm_certificate_expire_remind', 'HRM 系统', '{employeeName},您的证书资质【{certTypeName}】{certName} 将于 {expireDate} 到期,请及时办理复审/换证。', 2, '["employeeName","certTypeName","certName","expireDate"]', 0, '1', NOW(), '1', NOW(), b'0'),
| ('劳动合同到期提醒', 'hrm_contract_expire_remind', 'HRM 系统', '{employeeName},您的劳动合同(编号:{contractNo})将于 {endDate} 到期,请及时联系人事办理续签或离职手续。', 2, '["employeeName","contractNo","endDate"]', 0, '1', NOW(), '1', NOW(), b'0');
|
| -- 4. 全局配置(到期提醒天数,默认 30,可在「系统配置」调整)
| INSERT INTO `infra_config` (`category`, `type`, `name`, `config_key`, `value`, `visible`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
| VALUES
| ('biz', 2, 'HRM 证书到期提醒天数', 'hrm.certificate.remind-days', '30', 1, '证书资质有效期到期前 N 天提醒(站内信发送至员工系统账号),默认 30', '1', NOW(), '1', NOW(), b'0'),
| ('biz', 2, 'HRM 合同到期提醒天数', 'hrm.contract.remind-days', '30', 1, '劳动合同到期前 N 天提醒(站内信发送至员工系统账号),默认 30', '1', NOW(), '1', NOW(), b'0');
|
| -- 5. 定时任务:每日 08:00 扫描证书/合同到期并发送站内信(handlerName=hrmExpiryRemindJob,status=1 启用)
| INSERT INTO `infra_job` (`name`, `status`, `handler_name`, `handler_param`, `cron_expression`, `retry_count`, `retry_interval`, `monitor_timeout`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
| VALUES ('HRM 证书/合同到期提醒', 1, 'hrmExpiryRemindJob', NULL, '0 0 8 * * ?', 0, 0, 0, '1', NOW(), '1', NOW(), b'0');
|
|