9 天以前 84e29c9adb718b42a693e954d2b771651ef36796
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
-- =============================================
-- HRM 员工合同管理 SQL 初始化脚本
-- 包含:建表 + 数据字典 + 菜单
-- =============================================
 
-- =============================================
-- 1. 员工合同表
-- =============================================
CREATE TABLE IF NOT EXISTS `hrm_employee_contract` (
    `id` bigint NOT NULL AUTO_INCREMENT COMMENT '合同ID',
    `parent_id` bigint DEFAULT NULL COMMENT '续签上一份合同ID(一个员工可签订多次合同,通过该字段形成续签链)',
    `is_current` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否当前生效合同(员工最新签订的未解除/未终止合同)',
    `contract_no` varchar(64) NOT NULL COMMENT '合同编号',
    `employee_id` bigint NOT NULL COMMENT '员工ID',
    `contract_type` tinyint NOT NULL COMMENT '合同类型:1-劳动合同,2-劳务合同,3-实习协议,4-劳务派遣,5-其他',
    `contract_term_type` tinyint NOT NULL COMMENT '合同期限类型:1-固定期限,2-无固定期限,3-以完成一定工作任务为期限',
    `sign_company` varchar(128) DEFAULT NULL COMMENT '签约主体(公司全称)',
    `sign_date` date DEFAULT NULL COMMENT '签订日期',
    `start_date` date NOT NULL COMMENT '合同开始日期',
    `end_date` date DEFAULT NULL COMMENT '合同结束日期(无固定期限可为空)',
    `probation_start_date` date DEFAULT NULL COMMENT '试用期开始日期',
    `probation_end_date` date DEFAULT NULL COMMENT '试用期结束日期',
    `probation_salary` decimal(10,2) DEFAULT NULL COMMENT '试用期工资',
    `regular_salary` decimal(10,2) DEFAULT NULL COMMENT '转正工资',
    `terminate_status` tinyint NOT NULL DEFAULT 0 COMMENT '解除/终止状态:0-正常,1-已解除,2-已终止',
    `terminate_date` date DEFAULT NULL COMMENT '解除/终止日期',
    `terminate_reason` varchar(255) DEFAULT NULL COMMENT '解除/终止原因',
    `remark` varchar(255) DEFAULT NULL COMMENT '备注',
    `creator` varchar(64) DEFAULT '' COMMENT '创建者',
    `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updater` varchar(64) 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`),
    UNIQUE KEY `uk_contract_no` (`contract_no`),
    KEY `idx_employee_id` (`employee_id`),
    KEY `idx_end_date` (`end_date`),
    KEY `idx_terminate_status` (`terminate_status`),
    KEY `idx_parent_id` (`parent_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='HRM员工合同表';
 
-- =============================================
-- 1.1 增量升级(针对已存在的表执行,注意 ADD COLUMN 不支持 IF NOT EXISTS,需确认列不存在)
-- =============================================
ALTER TABLE `hrm_employee_contract`
    ADD COLUMN `parent_id` bigint DEFAULT NULL COMMENT '续签上一份合同ID' AFTER `id`,
    ADD COLUMN `is_current` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否当前生效合同' AFTER `parent_id`,
    ADD INDEX `idx_parent_id` (`parent_id`);
 
-- =============================================
-- 2. 数据字典类型
-- =============================================
INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES
(1061123, '合同类型', 'hrm_contract_type', 0, NULL, '', NOW(), '', NOW(), b'0'),
(1061124, '合同期限类型', 'hrm_contract_term_type', 0, NULL, '', NOW(), '', NOW(), b'0'),
(1061125, '合同状态', 'hrm_contract_status', 0, NULL, '', NOW(), '', NOW(), b'0'),
(1061126, '解除终止状态', 'hrm_contract_terminate_status', 0, NULL, '', NOW(), '', NOW(), b'0');
 
-- =============================================
-- 3. 数据字典数据
-- =============================================
-- 3.1 合同类型 hrm_contract_type
INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES
(1061231, 1, '劳动合同', '1', 'hrm_contract_type', 0, 'primary', NULL, '', NOW(), '', NOW(), b'0'),
(1061232, 2, '劳务合同', '2', 'hrm_contract_type', 0, 'success', NULL, '', NOW(), '', NOW(), b'0'),
(1061233, 3, '实习协议', '3', 'hrm_contract_type', 0, 'warning', NULL, '', NOW(), '', NOW(), b'0'),
(1061234, 4, '劳务派遣', '4', 'hrm_contract_type', 0, 'info', NULL, '', NOW(), '', NOW(), b'0'),
(1061235, 5, '其他', '5', 'hrm_contract_type', 0, 'default', NULL, '', NOW(), '', NOW(), b'0');
 
-- 3.2 合同期限类型 hrm_contract_term_type
INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES
(1061236, 1, '固定期限', '1', 'hrm_contract_term_type', 0, 'primary', NULL, '', NOW(), '', NOW(), b'0'),
(1061237, 2, '无固定期限', '2', 'hrm_contract_term_type', 0, 'success', NULL, '', NOW(), '', NOW(), b'0'),
(1061238, 3, '以完成一定工作任务为期限', '3', 'hrm_contract_term_type', 0, 'warning', NULL, '', NOW(), '', NOW(), b'0');
 
-- 3.3 合同状态 hrm_contract_status(动态计算展示用)
INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES
(1061239, 1, '待生效', '1', 'hrm_contract_status', 0, 'info', NULL, '', NOW(), '', NOW(), b'0'),
(1061240, 2, '生效中', '2', 'hrm_contract_status', 0, 'success', NULL, '', NOW(), '', NOW(), b'0'),
(1061241, 3, '即将到期', '3', 'hrm_contract_status', 0, 'warning', NULL, '', NOW(), '', NOW(), b'0'),
(1061242, 4, '已到期', '4', 'hrm_contract_status', 0, 'default', NULL, '', NOW(), '', NOW(), b'0'),
(1061243, 5, '已解除', '5', 'hrm_contract_status', 0, 'danger', NULL, '', NOW(), '', NOW(), b'0'),
(1061244, 6, '已终止', '6', 'hrm_contract_status', 0, 'danger', NULL, '', NOW(), '', NOW(), b'0');
 
-- 3.4 解除终止状态 hrm_contract_terminate_status
INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES
(1061245, 1, '正常', '0', 'hrm_contract_terminate_status', 0, 'success', NULL, '', NOW(), '', NOW(), b'0'),
(1061246, 2, '已解除', '1', 'hrm_contract_terminate_status', 0, 'danger', NULL, '', NOW(), '', NOW(), b'0'),
(1061247, 3, '已终止', '2', 'hrm_contract_terminate_status', 0, 'warning', NULL, '', NOW(), '', NOW(), b'0');
 
-- =============================================
-- 4. 菜单(挂载到 HRM 人力资源 6001 下,与员工管理 6006 平级)
-- 注意:不能挂在"员工管理"下,否则 6006 会变成带子菜单的目录,导致员工列表页无法直达
-- =============================================
INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `path`, `component`, `parent_id`, `icon`, `sort`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES
(1063105, '员工合同', '', 2, 'employee-contract', 'hrm/employee/contract/index', 6001, 'ep:files', 0, 0, b'1', b'1', b'1', '', NOW(), '', NOW(), b'0'),
(1063106, '合同查询', 'hrm:employee-contract:query', 3, '', '', 1063105, '#', 1, 0, b'1', b'1', b'1', '', NOW(), '', NOW(), b'0'),
(1063107, '合同新增', 'hrm:employee-contract:create', 3, '', '', 1063105, '#', 2, 0, b'1', b'1', b'1', '', NOW(), '', NOW(), b'0'),
(1063108, '合同修改', 'hrm:employee-contract:update', 3, '', '', 1063105, '#', 3, 0, b'1', b'1', b'1', '', NOW(), '', NOW(), b'0'),
(1063109, '合同删除', 'hrm:employee-contract:delete', 3, '', '', 1063105, '#', 4, 0, b'1', b'1', b'1', '', NOW(), '', NOW(), b'0');