Files
GEAR-OA/script/sql/mysql/update/update_v0.8.2~v0.8.3.sql
2026-04-08 18:14:10 +08:00

189 lines
14 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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