gaoluyang
5 小时以前 b5ca4fa6acd8c7ea8ed1400b133eb2eb6b5cb8ba
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
-- 社保公积金方案:改为「按部门绑定」
-- 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`;