-- OnboardX 部门模块独立维护及层级关联迁移脚本 -- 适用数据库:MySQL 8.0+ -- 包含: -- 1. 新建 ob_department 表 -- 2. 在 ob_position / ob_onboarding_task / ob_employee 中补充 DepartmentId 字段 SET NAMES utf8mb4; -- 1. 新建入职业务部门表 CREATE TABLE IF NOT EXISTS `ob_department` ( `Id` BIGINT NOT NULL COMMENT '主键', `CompanyId` BIGINT NOT NULL COMMENT '所属业务公司Id', `DepartmentCode` VARCHAR(50) NOT NULL COMMENT '部门编码', `DepartmentName` VARCHAR(200) NOT NULL COMMENT '部门名称', `SortCode` INT NOT NULL DEFAULT 99 COMMENT '显示排序', `Remark` VARCHAR(500) NULL COMMENT '部门说明', `ExtJson` LONGTEXT NULL COMMENT '扩展信息', `Status` VARCHAR(20) NULL DEFAULT 'enable' COMMENT '启用状态', `CreateTime` DATETIME(3) NULL COMMENT '创建时间', `UpdateTime` DATETIME(3) NULL COMMENT '更新时间', `CreateUserId` BIGINT NULL COMMENT '创建者Id', `UpdateUserId` BIGINT NULL COMMENT '修改者Id', `CreateUser` VARCHAR(200) NULL COMMENT '创建人', `UpdateUser` VARCHAR(200) NULL COMMENT '更新人', `IsDelete` TINYINT(1) NULL DEFAULT 0 COMMENT '软删除', PRIMARY KEY (`Id`), UNIQUE KEY `uk_ob_department_company_code` (`CompanyId`, `DepartmentCode`), KEY `idx_ob_department_company_status` (`CompanyId`, `Status`, `IsDelete`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='入职业务部门'; -- 2. 定义安全补列存储过程(防重复执行) DROP PROCEDURE IF EXISTS `ob_add_column_if_missing`; DELIMITER $$ CREATE PROCEDURE `ob_add_column_if_missing`( IN p_table_name VARCHAR(128), IN p_column_name VARCHAR(128), IN p_column_definition VARCHAR(1000) ) BEGIN IF NOT EXISTS ( SELECT 1 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = p_table_name AND COLUMN_NAME = p_column_name ) THEN SET @ddl = CONCAT( 'ALTER TABLE `', p_table_name, '` ADD COLUMN `', p_column_name, '` ', p_column_definition ); PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt; END IF; END$$ DELIMITER ; -- 3. 在岗位表中新增 DepartmentId 字段 CALL `ob_add_column_if_missing`( 'ob_position', 'DepartmentId', 'BIGINT NULL COMMENT ''所属部门Id'' AFTER `CompanyId`' ); -- 4. 在入职任务表中新增 DepartmentId 字段 CALL `ob_add_column_if_missing`( 'ob_onboarding_task', 'DepartmentId', 'BIGINT NULL COMMENT ''所属部门Id'' AFTER `CompanyId`' ); -- 5. 在正式员工档案表中新增 DepartmentId 字段 CALL `ob_add_column_if_missing`( 'ob_employee', 'DepartmentId', 'BIGINT NULL COMMENT ''所属部门Id'' AFTER `CompanyId`' ); -- 清理临时存储过程 DROP PROCEDURE IF EXISTS `ob_add_column_if_missing`;