代码优化
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
-- 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`;
|
||||
Reference in New Issue
Block a user