-- 报销模块表结构(仅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='工人主数据表';