添加薪资管理

This commit is contained in:
2026-04-08 18:14:10 +08:00
parent 62b5bfb99d
commit 897c690996
56 changed files with 4433 additions and 288 deletions

View File

@@ -0,0 +1,188 @@
-- 报销模块表结构仅CRUD无审批流
DROP TABLE IF EXISTS gear_reimbursement;
CREATE TABLE gear_reimbursement (
reimbursement_id bigint(20) NOT NULL COMMENT '报销ID',
applicant_id bigint(20) NOT NULL COMMENT '申请人用户ID',
applicant_name varchar(64) NOT NULL COMMENT '申请人名称',
attachment_url varchar(500) DEFAULT '' COMMENT '附件地址',
upload_time datetime COMMENT '上传时间',
amount decimal(12,2) NOT NULL DEFAULT 0.00 COMMENT '报销金额',
reimburse_status char(1) NOT NULL DEFAULT '0' COMMENT '报销状态0未报销 1已报销',
del_flag char(1) NOT NULL DEFAULT '0' COMMENT '删除标志0存在 2删除',
create_by varchar(64) DEFAULT '' COMMENT '创建者',
create_time datetime COMMENT '创建时间',
update_by varchar(64) DEFAULT '' COMMENT '更新者',
update_time datetime COMMENT '更新时间',
remark varchar(500) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (reimbursement_id),
KEY idx_applicant_id (applicant_id),
KEY idx_reimburse_status (reimburse_status),
KEY idx_upload_time (upload_time)
) ENGINE=InnoDB COMMENT='报销表';
-- 菜单挂载到“办公管理”下parent_id=5
INSERT INTO sys_menu VALUES ('131', '报销管理', '5', '7', 'reimbursement', 'oms/reimbursement/index', '', 1, 0, 'C', '0', '0', 'oa:reimbursement:list', 'money', 'admin', sysdate(), '', null, '报销管理菜单');
-- 按钮权限
INSERT INTO sys_menu VALUES ('1311', '报销查询', '131', '1', '#', '', '', 1, 0, 'F', '0', '0', 'oa:reimbursement:query', '#', 'admin', sysdate(), '', null, '');
INSERT INTO sys_menu VALUES ('1312', '报销新增', '131', '2', '#', '', '', 1, 0, 'F', '0', '0', 'oa:reimbursement:add', '#', 'admin', sysdate(), '', null, '');
INSERT INTO sys_menu VALUES ('1313', '报销修改', '131', '3', '#', '', '', 1, 0, 'F', '0', '0', 'oa:reimbursement:edit', '#', 'admin', sysdate(), '', null, '');
INSERT INTO sys_menu VALUES ('1314', '报销删除', '131', '4', '#', '', '', 1, 0, 'F', '0', '0', 'oa:reimbursement:remove', '#', 'admin', sysdate(), '', null, '');
INSERT INTO sys_menu VALUES ('1315', '报销导出', '131', '5', '#', '', '', 1, 0, 'F', '0', '0', 'oa:reimbursement:export', '#', 'admin', sysdate(), '', null, '');
-- ================================
-- 工资录入/补录模块v0.8.3
-- ================================
-- 1) 计费基础配置(小时工/计件工/天工)
DROP TABLE IF EXISTS gear_wage_rate_config;
CREATE TABLE gear_wage_rate_config (
rate_id bigint(20) NOT NULL COMMENT '费率配置ID',
rate_code varchar(64) NOT NULL COMMENT '费率编码(唯一)',
rate_name varchar(128) NOT NULL COMMENT '费率名称',
billing_type char(1) NOT NULL COMMENT '计费类型1小时工 2计件工 3天工',
work_type_name varchar(64) DEFAULT '' COMMENT '工种名称(小时工/天工使用)',
item_name varchar(128) DEFAULT '' COMMENT '加工物品名称(计件工使用)',
process_name varchar(128) DEFAULT '' COMMENT '工序名称(计件工使用)',
workday_hours decimal(5,2) DEFAULT NULL COMMENT '日工时制度如8/9仅天工',
unit_price decimal(12,2) NOT NULL DEFAULT 0.00 COMMENT '单价(小时单价/件单价/日薪)',
status char(1) NOT NULL DEFAULT '0' COMMENT '状态0启用 1停用',
del_flag char(1) NOT NULL DEFAULT '0' COMMENT '删除标志0存在 2删除',
create_by varchar(64) DEFAULT '' COMMENT '创建者',
create_time datetime COMMENT '创建时间',
update_by varchar(64) DEFAULT '' COMMENT '更新者',
update_time datetime COMMENT '更新时间',
remark varchar(500) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (rate_id),
UNIQUE KEY uk_rate_code (rate_code),
KEY idx_billing_type_status (billing_type, status),
KEY idx_work_type_name (work_type_name),
KEY idx_item_process (item_name, process_name)
) ENGINE=InnoDB COMMENT='工资费率配置表';
-- 2) 每日录入批次(用于“自动带入全员员工”和录入进度统计)
DROP TABLE IF EXISTS gear_wage_entry_batch;
CREATE TABLE gear_wage_entry_batch (
batch_id bigint(20) NOT NULL COMMENT '批次ID',
entry_date date NOT NULL COMMENT '录入日期',
total_emp_count int(11) NOT NULL DEFAULT 0 COMMENT '应录入员工总数',
entered_emp_count int(11) NOT NULL DEFAULT 0 COMMENT '已录入员工数',
unentered_emp_count int(11) NOT NULL DEFAULT 0 COMMENT '未录入员工数',
status char(1) NOT NULL DEFAULT '0' COMMENT '状态0进行中 1已完成',
del_flag char(1) NOT NULL DEFAULT '0' COMMENT '删除标志0存在 2删除',
create_by varchar(64) DEFAULT '' COMMENT '创建者',
create_time datetime COMMENT '创建时间',
update_by varchar(64) DEFAULT '' COMMENT '更新者',
update_time datetime COMMENT '更新时间',
remark varchar(500) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (batch_id),
UNIQUE KEY uk_entry_date (entry_date),
KEY idx_status (status)
) ENGINE=InnoDB COMMENT='工资每日录入批次表';
-- 3) 每日员工录入状态(用于“已录入/未录入”检索)
DROP TABLE IF EXISTS gear_wage_entry_emp_status;
CREATE TABLE gear_wage_entry_emp_status (
status_id bigint(20) NOT NULL COMMENT '状态ID',
batch_id bigint(20) NOT NULL COMMENT '批次ID',
entry_date date NOT NULL COMMENT '录入日期',
emp_id bigint(20) NOT NULL COMMENT '员工ID',
emp_name varchar(64) NOT NULL COMMENT '员工姓名',
entered_flag char(1) NOT NULL DEFAULT '0' COMMENT '是否已录入0否 1是',
first_entry_time datetime COMMENT '首次录入时间',
del_flag char(1) NOT NULL DEFAULT '0' COMMENT '删除标志0存在 2删除',
create_by varchar(64) DEFAULT '' COMMENT '创建者',
create_time datetime COMMENT '创建时间',
update_by varchar(64) DEFAULT '' COMMENT '更新者',
update_time datetime COMMENT '更新时间',
remark varchar(500) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (status_id),
UNIQUE KEY uk_entry_date_emp (entry_date, emp_id),
KEY idx_batch_id (batch_id),
KEY idx_entered_flag (entered_flag)
) ENGINE=InnoDB COMMENT='工资录入员工状态表';
-- 4) 工资录入明细(原始录入 + 补录)
DROP TABLE IF EXISTS gear_wage_entry_detail;
CREATE TABLE gear_wage_entry_detail (
detail_id bigint(20) NOT NULL COMMENT '明细ID',
entry_date date NOT NULL COMMENT '业务日期',
emp_id bigint(20) NOT NULL COMMENT '员工ID',
emp_name varchar(64) NOT NULL COMMENT '员工姓名',
billing_type char(1) NOT NULL COMMENT '计费类型1小时工 2计件工 3天工',
rate_id bigint(20) NOT NULL COMMENT '费率配置ID',
work_type_name varchar(64) DEFAULT '' COMMENT '工种名称(快照)',
item_name varchar(128) DEFAULT '' COMMENT '加工物品(快照)',
process_name varchar(128) DEFAULT '' COMMENT '工序(快照)',
order_no varchar(64) DEFAULT '' COMMENT '订单号(订单维度去重)',
workload decimal(12,2) NOT NULL DEFAULT 0.00 COMMENT '工作量(小时/件数/天数)',
unit_price decimal(12,2) NOT NULL DEFAULT 0.00 COMMENT '单价快照',
base_amount decimal(12,2) NOT NULL DEFAULT 0.00 COMMENT '基础金额(工作量*单价)',
extra_amount decimal(12,2) NOT NULL DEFAULT 0.00 COMMENT '额外金额(高温/交通等)',
extra_reason varchar(255) DEFAULT '' COMMENT '额外金额原因',
total_amount decimal(12,2) NOT NULL DEFAULT 0.00 COMMENT '总金额(基础+额外)',
is_makeup char(1) NOT NULL DEFAULT '0' COMMENT '是否补录0否 1是',
source_detail_id bigint(20) DEFAULT NULL COMMENT '被补录/被修改的原始明细ID',
makeup_responsible_id bigint(20) DEFAULT NULL COMMENT '补录责任人ID',
makeup_responsible varchar(64) DEFAULT '' COMMENT '补录责任人姓名',
makeup_reason varchar(500) DEFAULT '' COMMENT '补录原因',
del_flag char(1) NOT NULL DEFAULT '0' COMMENT '删除标志0存在 2删除',
create_by varchar(64) DEFAULT '' COMMENT '创建者',
create_time datetime COMMENT '创建时间',
update_by varchar(64) DEFAULT '' COMMENT '更新者',
update_time datetime COMMENT '更新时间',
remark varchar(500) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (detail_id),
UNIQUE KEY uk_entry_unique (entry_date, emp_id, billing_type, rate_id, order_no, del_flag),
KEY idx_entry_date_emp (entry_date, emp_id),
KEY idx_is_makeup (is_makeup),
KEY idx_makeup_resp (makeup_responsible_id),
KEY idx_source_detail_id (source_detail_id),
KEY idx_order_no (order_no)
) ENGINE=InnoDB COMMENT='工资录入明细表';
-- 5) 补录操作日志(确保责任链可追溯)
DROP TABLE IF EXISTS gear_wage_makeup_log;
CREATE TABLE gear_wage_makeup_log (
log_id bigint(20) NOT NULL COMMENT '日志ID',
detail_id bigint(20) NOT NULL COMMENT '补录后明细ID',
source_detail_id bigint(20) DEFAULT NULL COMMENT '补录前明细ID',
operation_type char(1) NOT NULL DEFAULT '1' COMMENT '操作类型1新增补录 2修改补录 3撤销补录',
operation_date date NOT NULL COMMENT '补录目标日期',
emp_id bigint(20) NOT NULL COMMENT '员工ID',
makeup_responsible_id bigint(20) NOT NULL COMMENT '补录责任人ID',
makeup_responsible varchar(64) NOT NULL COMMENT '补录责任人姓名',
makeup_reason varchar(500) NOT NULL COMMENT '补录原因',
del_flag char(1) NOT NULL DEFAULT '0' COMMENT '删除标志0存在 2删除',
create_by varchar(64) DEFAULT '' COMMENT '创建者',
create_time datetime COMMENT '创建时间',
update_by varchar(64) DEFAULT '' COMMENT '更新者',
update_time datetime COMMENT '更新时间',
remark varchar(500) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (log_id),
KEY idx_operation_date (operation_date),
KEY idx_resp_id (makeup_responsible_id),
KEY idx_emp_id (emp_id),
KEY idx_detail_id (detail_id)
) ENGINE=InnoDB COMMENT='工资补录日志表';
-- 6) 工人主数据(支持模板导入,长期复用)
DROP TABLE IF EXISTS gear_worker;
CREATE TABLE gear_worker (
worker_id bigint(20) NOT NULL COMMENT '工人ID',
worker_no varchar(64) NOT NULL COMMENT '工号',
worker_name varchar(64) NOT NULL COMMENT '姓名',
phone varchar(20) DEFAULT '' COMMENT '手机号',
default_billing_type char(1) DEFAULT '1' COMMENT '默认计费类型1小时工 2计件工 3天工',
default_work_type_name varchar(64) DEFAULT '' COMMENT '默认工种',
status char(1) NOT NULL DEFAULT '0' COMMENT '状态0在职 1离职',
del_flag char(1) NOT NULL DEFAULT '0' COMMENT '删除标志0存在 2删除',
create_by varchar(64) DEFAULT '' COMMENT '创建者',
create_time datetime COMMENT '创建时间',
update_by varchar(64) DEFAULT '' COMMENT '更新者',
update_time datetime COMMENT '更新时间',
remark varchar(500) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (worker_id),
UNIQUE KEY uk_worker_no (worker_no),
KEY idx_worker_name (worker_name),
KEY idx_status (status)
) ENGINE=InnoDB COMMENT='工人主数据表';