-- ============================================= -- 社保公积金个税扣除功能 SQL -- ============================================= -- 1. 社保公积金配置表(全局配置) CREATE TABLE IF NOT EXISTS `hrm_social_security_config` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '配置ID', `name` varchar(100) NOT NULL COMMENT '配置名称', `effective_date` date NOT NULL COMMENT '生效日期', -- 养老保险 `pension_company_ratio` decimal(5,4) NOT NULL DEFAULT 0.16 COMMENT '养老保险企业缴纳比例', `pension_personal_ratio` decimal(5,4) NOT NULL DEFAULT 0.08 COMMENT '养老保险个人缴纳比例', -- 医疗保险 `medical_company_ratio` decimal(5,4) NOT NULL DEFAULT 0.095 COMMENT '医疗保险企业缴纳比例', `medical_personal_ratio` decimal(5,4) NOT NULL DEFAULT 0.02 COMMENT '医疗保险个人缴纳比例', -- 失业保险 `unemployment_company_ratio` decimal(5,4) NOT NULL DEFAULT 0.005 COMMENT '失业保险企业缴纳比例', `unemployment_personal_ratio` decimal(5,4) NOT NULL DEFAULT 0.005 COMMENT '失业保险个人缴纳比例', -- 工伤保险(仅企业缴纳) `work_injury_ratio` decimal(5,4) NOT NULL DEFAULT 0.005 COMMENT '工伤保险企业缴纳比例', -- 生育保险(仅企业缴纳) `maternity_ratio` decimal(5,4) NOT NULL DEFAULT 0.005 COMMENT '生育保险企业缴纳比例', -- 公积金 `housing_fund_company_ratio` decimal(5,4) NOT NULL DEFAULT 0.12 COMMENT '公积金企业缴纳比例', `housing_fund_personal_ratio` decimal(5,4) NOT NULL DEFAULT 0.12 COMMENT '公积金个人缴纳比例', -- 社保基数上下限 `social_security_base_min` decimal(12,2) NOT NULL COMMENT '社保基数下限', `social_security_base_max` decimal(12,2) NOT NULL COMMENT '社保基数上限', -- 公积金基数上下限 `housing_fund_base_min` decimal(12,2) NOT NULL COMMENT '公积金基数下限', `housing_fund_base_max` decimal(12,2) NOT NULL COMMENT '公积金基数上限', -- 状态 `status` tinyint NOT NULL DEFAULT 0 COMMENT '状态:0-启用,1-禁用', `remark` varchar(500) DEFAULT NULL COMMENT '备注', `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_effective_date` (`effective_date`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='HRM社保公积金配置表'; -- 2. 个税税率配置表(累进税率) CREATE TABLE IF NOT EXISTS `hrm_tax_rate_config` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '配置ID', `name` varchar(100) NOT NULL COMMENT '配置名称', `effective_date` date NOT NULL COMMENT '生效日期', `level` tinyint NOT NULL COMMENT '税率级数:1-7', `min_amount` decimal(12,2) NOT NULL COMMENT '应纳税所得额下限(含)', `max_amount` decimal(12,2) NOT NULL COMMENT '应纳税所得额上限(不含),0表示无上限', `tax_rate` decimal(5,4) NOT NULL COMMENT '税率', `quick_deduction` decimal(12,2) NOT NULL DEFAULT 0 COMMENT '速算扣除数', `status` tinyint NOT NULL DEFAULT 0 COMMENT '状态:0-启用,1-禁用', `remark` varchar(500) DEFAULT NULL COMMENT '备注', `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_effective_date` (`effective_date`), KEY `idx_level` (`level`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='HRM个税税率配置表'; -- 3. 员工社保公积金档案表 CREATE TABLE IF NOT EXISTS `hrm_employee_social_security` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '档案ID', `user_id` bigint NOT NULL COMMENT '员工ID', `social_security_base` decimal(12,2) NOT NULL COMMENT '社保缴纳基数', `housing_fund_base` decimal(12,2) NOT NULL COMMENT '公积金缴纳基数', `effective_date` date NOT NULL COMMENT '生效日期', `status` tinyint NOT NULL DEFAULT 0 COMMENT '状态:0-启用,1-禁用', `remark` varchar(500) DEFAULT NULL COMMENT '备注', `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`), UNIQUE KEY `uk_user_effective` (`user_id`, `effective_date`), KEY `idx_user_id` (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='HRM员工社保公积金档案表'; -- ============================================= -- 初始化数据 -- ============================================= -- 初始化社保公积金配置(2024年标准,示例数据) INSERT INTO `hrm_social_security_config` (`name`, `effective_date`, `pension_company_ratio`, `pension_personal_ratio`, `medical_company_ratio`, `medical_personal_ratio`, `unemployment_company_ratio`, `unemployment_personal_ratio`, `work_injury_ratio`, `maternity_ratio`, `housing_fund_company_ratio`, `housing_fund_personal_ratio`, `social_security_base_min`, `social_security_base_max`, `housing_fund_base_min`, `housing_fund_base_max`, `status`, `remark`, `creator`, `updater`) VALUES ('2024年社保公积金标准', '2024-01-01', 0.16, 0.08, -- 养老:企业16%,个人8% 0.095, 0.02, -- 医疗:企业9.5%,个人2% 0.005, 0.005, -- 失业:企业0.5%,个人0.5% 0.005, 0.005, -- 工伤0.5%,生育0.5%(仅企业) 0.12, 0.12, -- 公积金:企业12%,个人12% 4494.00, 28017.00, -- 社保基数:下限4494,上限28017 2420.00, 35091.00, -- 公积金基数:下限2420,上限35091 0, '2024年南通市社保公积金缴纳标准', '1', '1'); -- 初始化个税税率表(2024年标准) INSERT INTO `hrm_tax_rate_config` (`name`, `effective_date`, `level`, `min_amount`, `max_amount`, `tax_rate`, `quick_deduction`, `status`, `remark`, `creator`, `updater`) VALUES ('2024年个税税率表', '2024-01-01', 1, 0, 36000, 0.03, 0, 0, '不超过36000元', '1', '1'), ('2024年个税税率表', '2024-01-01', 2, 36000, 144000, 0.10, 2520, 0, '超过36000元至144000元', '1', '1'), ('2024年个税税率表', '2024-01-01', 3, 144000, 300000, 0.20, 16920, 0, '超过144000元至300000元', '1', '1'), ('2024年个税税率表', '2024-01-01', 4, 300000, 420000, 0.25, 31920, 0, '超过300000元至420000元', '1', '1'), ('2024年个税税率表', '2024-01-01', 5, 420000, 660000, 0.30, 52920, 0, '超过420000元至660000元', '1', '1'), ('2024年个税税率表', '2024-01-01', 6, 660000, 960000, 0.35, 85920, 0, '超过660000元至960000元', '1', '1'), ('2024年个税税率表', '2024-01-01', 7, 960000, 0, 0.45, 181920, 0, '超过960000元', '1', '1'); -- ============================================= -- 菜单权限 -- ============================================= -- 社保公积金配置菜单 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (6023, '社保公积金配置', '', 2, 3, 6020, 'social-security', 'ep:setting', 'hrm/salary/social-security/index', 'HrmSocialSecurityConfig', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'); INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (60231, '社保配置查询', 'hrm:social-security:query', 3, 1, 6023, '', '', '', NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'); INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (60232, '社保配置新增', 'hrm:social-security:create', 3, 2, 6023, '', '', '', NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'); INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (60233, '社保配置修改', 'hrm:social-security:update', 3, 3, 6023, '', '', '', NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'); INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (60234, '社保配置删除', 'hrm:social-security:delete', 3, 4, 6023, '', '', '', NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'); -- 个税税率配置菜单 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (6024, '个税税率配置', '', 2, 4, 6020, 'tax-rate', 'ep:document', 'hrm/salary/tax-rate/index', 'HrmTaxRateConfig', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'); INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (60241, '个税配置查询', 'hrm:tax-rate:query', 3, 1, 6024, '', '', '', NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'); INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (60242, '个税配置新增', 'hrm:tax-rate:create', 3, 2, 6024, '', '', '', NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'); INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (60243, '个税配置修改', 'hrm:tax-rate:update', 3, 3, 6024, '', '', '', NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'); INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (60244, '个税配置删除', 'hrm:tax-rate:delete', 3, 4, 6024, '', '', '', NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'); -- 角色菜单关联 INSERT INTO `system_role_menu` (`role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1, 6023, '1', NOW(), '1', NOW(), b'0'); INSERT INTO `system_role_menu` (`role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1, 60231, '1', NOW(), '1', NOW(), b'0'); INSERT INTO `system_role_menu` (`role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1, 60232, '1', NOW(), '1', NOW(), b'0'); INSERT INTO `system_role_menu` (`role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1, 60233, '1', NOW(), '1', NOW(), b'0'); INSERT INTO `system_role_menu` (`role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1, 60234, '1', NOW(), '1', NOW(), b'0'); INSERT INTO `system_role_menu` (`role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1, 6024, '1', NOW(), '1', NOW(), b'0'); INSERT INTO `system_role_menu` (`role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1, 60241, '1', NOW(), '1', NOW(), b'0'); INSERT INTO `system_role_menu` (`role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1, 60242, '1', NOW(), '1', NOW(), b'0'); INSERT INTO `system_role_menu` (`role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1, 60243, '1', NOW(), '1', NOW(), b'0'); INSERT INTO `system_role_menu` (`role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1, 60244, '1', NOW(), '1', NOW(), b'0'); SELECT '社保公积金个税扣除功能 SQL 初始化完成!' AS result;