-- 社保公积金方案:改为「按部门绑定」
|
-- 1) 方案表增加默认缴费基数(不选部门的员工按它计算)
|
-- 2) 新增「方案 - 适用部门」关联表(一个方案可绑定多个部门;一个部门只能绑定一个方案,唯一性在服务层校验)
|
-- 说明:ALTER TABLE ADD COLUMN 不支持 IF NOT EXISTS,这里先查 information_schema 再决定是否执行
|
|
SET @db := DATABASE();
|
|
-- 1.1 默认社保缴费基数
|
SET @exists := (SELECT COUNT(*) FROM information_schema.columns
|
WHERE table_schema = @db AND table_name = 'hrm_social_security_scheme'
|
AND column_name = 'default_social_security_base');
|
SET @sql := IF(@exists = 0,
|
'ALTER TABLE `hrm_social_security_scheme` ADD COLUMN `default_social_security_base` decimal(12,2) DEFAULT NULL COMMENT ''默认社保缴费基数(空则用员工基本工资)'' AFTER `housing_fund_personal_ratio`',
|
'SELECT 1');
|
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
|
-- 1.2 默认公积金缴费基数
|
SET @exists := (SELECT COUNT(*) FROM information_schema.columns
|
WHERE table_schema = @db AND table_name = 'hrm_social_security_scheme'
|
AND column_name = 'default_housing_fund_base');
|
SET @sql := IF(@exists = 0,
|
'ALTER TABLE `hrm_social_security_scheme` ADD COLUMN `default_housing_fund_base` decimal(12,2) DEFAULT NULL COMMENT ''默认公积金缴费基数(空或 0 则用社保缴费基数)'' AFTER `default_social_security_base`',
|
'SELECT 1');
|
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
|
-- 2. 方案 - 适用部门关联表
|
CREATE TABLE IF NOT EXISTS `hrm_social_security_scheme_dept` (
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
`scheme_id` bigint NOT NULL COMMENT '社保公积金方案ID',
|
`dept_id` bigint NOT NULL COMMENT '适用部门ID',
|
`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`),
|
KEY `idx_scheme_id` (`scheme_id`),
|
KEY `idx_dept_id` (`dept_id`)
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT '社保公积金方案适用部门';
|
|
-- 回滚(如需):
|
-- ALTER TABLE `hrm_social_security_scheme` DROP COLUMN `default_social_security_base`, DROP COLUMN `default_housing_fund_base`;
|
-- DROP TABLE IF EXISTS `hrm_social_security_scheme_dept`;
|