tuqin
7 小时以前 52feee3e55403d2858da59605173ec055f601bfa
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
-- ============================================================
-- 从「新疆中亿装配」同步 HRM 能力到「新疆北方科技」—— 表结构变更
-- 生成日期:2026-10-24
--
-- 说明:
--   1. 本脚本【只做表结构变更】,不含任何业务数据
--   2. 业务数据(员工、部门、岗位、考勤规则、薪资、社保方案等)
--      保留北方科技自己的,不从其他企业迁移
--   3. 配套代码:yudao-module-hrm / yudao-module-hrm-api 由中亿装配分支同步
--   4. 【执行一次即可】ALTER TABLE ADD COLUMN 不幂等,重复执行会报
--      Duplicate column name,属正常现象;CREATE TABLE 已用 IF NOT EXISTS
--   5. 存量数据自动兼容:
--      - employee_category 默认 1(普通员工)
--      - 考勤规则 effective_*_date 为空表示不限,原规则继续生效
--      - 社保新比例字段为空,不影响原有计算
-- ============================================================
 
-- ------------------------------------------------------------
-- 1. 加班工资配置表(新增功能:薪酬 → 加班工资)
-- ------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `hrm_overtime_wage_config` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '配置ID',
  `post_id` bigint NOT NULL COMMENT '岗位ID,关联 system_post.id',
  `hourly_rate` decimal(10,2) NOT NULL DEFAULT '20.00' COMMENT '加班时薪(元/小时),默认 20',
  `max_overtime_hours` decimal(6,1) DEFAULT NULL COMMENT '每月最大加班时长上限(小时),为空表示不限',
  `status` tinyint NOT NULL DEFAULT '0' COMMENT '状态:0-启用,1-禁用',
  `remark` varchar(500) 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_post_id` (`post_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='HRM岗位加班工资配置表';
 
-- ------------------------------------------------------------
-- 2. 员工类别(默认 1-普通员工,存量 168 条自动填充为普通员工)
-- ------------------------------------------------------------
ALTER TABLE `hrm_employee`
  ADD COLUMN `employee_category` tinyint NOT NULL DEFAULT 1 COMMENT '员工类别:1-普通员工,2-技工,3-管理' AFTER `employee_status`;
 
-- ------------------------------------------------------------
-- 3. 考勤规则生效日期区间(空表示不限,存量规则按原逻辑继续生效)
-- ------------------------------------------------------------
ALTER TABLE `hrm_attendance_rule`
  ADD COLUMN `effective_start_date` date DEFAULT NULL COMMENT '生效开始日期(空表示不限)' AFTER `overtime_threshold`,
  ADD COLUMN `effective_end_date` date DEFAULT NULL COMMENT '生效结束日期(空表示不限)' AFTER `effective_start_date`;
 
-- ------------------------------------------------------------
-- 4. 社保公积金方案:新增大病医疗、长期护理两项保险比例
-- ------------------------------------------------------------
ALTER TABLE `hrm_social_security_scheme`
  ADD COLUMN `serious_illness_company_ratio` decimal(10,4) DEFAULT NULL COMMENT '大病医疗企业缴纳比例' AFTER `maternity_ratio`,
  ADD COLUMN `serious_illness_personal_ratio` decimal(10,4) DEFAULT NULL COMMENT '大病医疗个人缴纳比例' AFTER `serious_illness_company_ratio`,
  ADD COLUMN `long_term_care_company_ratio` decimal(10,4) DEFAULT NULL COMMENT '长期护理企业缴纳比例' AFTER `serious_illness_personal_ratio`,
  ADD COLUMN `long_term_care_personal_ratio` decimal(10,4) DEFAULT NULL COMMENT '长期护理个人缴纳比例' AFTER `long_term_care_company_ratio`;
 
-- ------------------------------------------------------------
-- 5. 【必须】节假日表放开 start_date / end_date 非空约束
--
-- 背景:北方科技原先支持「节假日时间段」(start_date/end_date,NOT NULL),
--       中亿装配的 HrmAttendanceHolidayDO 只有单日 date 字段,不写这两个列。
--       若保留 NOT NULL,新增/导入节假日会直接抛
--         Field 'start_date' doesn't have a default value  → 前端显示「系统异常」
-- 现有数据:两边 hrm_attendance_holiday 均为 0 条,放开约束不涉及数据迁移
-- ------------------------------------------------------------
ALTER TABLE `hrm_attendance_holiday`
  MODIFY COLUMN `start_date` date DEFAULT NULL COMMENT '开始日期(中亿版代码不写此列,保留兼容北方原区间结构)',
  MODIFY COLUMN `end_date` date DEFAULT NULL COMMENT '结束日期(中亿版代码不写此列,保留兼容北方原区间结构)';