-- ============================================================ -- 从「新疆中亿装配」同步 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 '结束日期(中亿版代码不写此列,保留兼容北方原区间结构)';