-- ============================================================= -- OA 薪酬管理模块表结构 -- -- 说明:代码里有模型定义(models/backend_oa_compensation.go), -- 但此前缺少建表脚本,访问薪酬页面会因表不存在返回 500。 -- 本脚本补齐三张表,仅新建、不改动任何既有数据。 -- -- 注意:不显式指定 COLLATE,沿用数据库默认排序规则,避免与既有表 -- (utf8mb4_0900_ai_ci)在 JOIN 比较字符串时报 Illegal mix of collations。 -- ============================================================= SET NAMES utf8mb4; -- ---------------- 1. 员工薪酬方案 ---------------- CREATE TABLE IF NOT EXISTS `yz_backend_oa_compensation_schemes` ( `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, `tid` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '租户ID', `employee_id` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '员工ID', `scheme_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '方案名称', `effective_date` DATE NOT NULL COMMENT '生效日期', `expiry_date` DATE DEFAULT NULL COMMENT '失效日期', `base_salary` DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '基本工资', `post_allowance` DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '岗位津贴', `performance_salary` DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '绩效工资', `transport_allowance` DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '交通补贴', `meal_allowance` DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '餐费补贴', `communication_allowance` DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '通讯补贴', `social_insurance_base` DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '社保基数', `housing_fund_base` DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '公积金基数', `social_insurance_rate` DECIMAL(6,4) NOT NULL DEFAULT 0 COMMENT '社保个人费率', `housing_fund_rate` DECIMAL(6,4) NOT NULL DEFAULT 0 COMMENT '公积金个人费率', `status` TINYINT NOT NULL DEFAULT 1 COMMENT '1生效 0失效', `remark` TEXT, `is_deleted` TINYINT NOT NULL DEFAULT 0, `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `update_time` DATETIME DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP, `delete_time` DATETIME DEFAULT NULL, PRIMARY KEY (`id`), KEY `idx_tid` (`tid`), KEY `idx_employee` (`employee_id`), KEY `idx_status` (`status`), KEY `idx_effective` (`effective_date`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='OA-员工薪酬方案'; -- ---------------- 2. 月度薪资单主表 ---------------- CREATE TABLE IF NOT EXISTS `yz_backend_oa_compensation_payrolls` ( `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, `tid` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '租户ID', `employee_id` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '员工ID', `scheme_id` BIGINT UNSIGNED DEFAULT NULL COMMENT '关联薪酬方案ID', `payroll_month` VARCHAR(7) NOT NULL DEFAULT '' COMMENT '薪资月份,格式 YYYY-MM', `employee_name` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '员工姓名快照', `department` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '部门快照', `position` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '职位快照', `base_salary` DECIMAL(12,2) NOT NULL DEFAULT 0, `post_allowance` DECIMAL(12,2) NOT NULL DEFAULT 0, `performance_salary` DECIMAL(12,2) NOT NULL DEFAULT 0, `transport_allowance` DECIMAL(12,2) NOT NULL DEFAULT 0, `meal_allowance` DECIMAL(12,2) NOT NULL DEFAULT 0, `communication_allowance` DECIMAL(12,2) NOT NULL DEFAULT 0, `overtime_pay` DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '加班费', `bonus` DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '奖金', `other_addition` DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '其他加项', `leave_deduction` DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '请假扣款', `late_deduction` DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '迟到扣款', `other_deduction` DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '其他扣款', `social_insurance` DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '社保个人部分', `housing_fund` DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '公积金个人部分', `personal_income_tax` DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '个人所得税', `gross_salary` DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '应发合计', `total_deduction` DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '扣款合计', `net_salary` DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '实发工资', `status` TINYINT NOT NULL DEFAULT 0 COMMENT '0草稿 1已确认 2已发放', `confirmed_at` DATETIME DEFAULT NULL, `paid_at` DATETIME DEFAULT NULL, `remark` TEXT, `is_deleted` TINYINT NOT NULL DEFAULT 0, `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `update_time` DATETIME DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP, `delete_time` DATETIME DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `uk_tid_employee_month` (`tid`, `employee_id`, `payroll_month`), KEY `idx_tid_month` (`tid`, `payroll_month`), KEY `idx_status` (`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='OA-月度薪资单'; -- ---------------- 3. 薪资单自定义增减项 ---------------- CREATE TABLE IF NOT EXISTS `yz_backend_oa_compensation_payroll_items` ( `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, `tid` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '租户ID', `payroll_id` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '薪资单ID', `item_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '项目名称', `item_type` TINYINT NOT NULL DEFAULT 1 COMMENT '1加项 2扣项', `amount` DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '金额', `remark` VARCHAR(500) DEFAULT NULL, `sort_order` INT NOT NULL DEFAULT 0, `is_deleted` TINYINT NOT NULL DEFAULT 0, `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `update_time` DATETIME DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP, `delete_time` DATETIME DEFAULT NULL, PRIMARY KEY (`id`), KEY `idx_payroll` (`payroll_id`), KEY `idx_tid` (`tid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='OA-薪资单增减项';