80 lines
2.9 KiB
SQL
80 lines
2.9 KiB
SQL
-- 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`; |