2 天以前 e1a2ae80bcac68064098d51bdec912fc74b7c964
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');