175 lines
9.5 KiB
SQL
175 lines
9.5 KiB
SQL
SET NAMES utf8mb4;
|
|
SET FOREIGN_KEY_CHECKS = 0;
|
|
|
|
-- 1. 物品主数据表:增加 company_id
|
|
DROP TABLE IF EXISTS inv_item;
|
|
CREATE TABLE inv_item (
|
|
id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
company_id BIGINT(20) UNSIGNED DEFAULT NULL COMMENT '物品所属公司ID',
|
|
item_code VARCHAR(64) NOT NULL COMMENT '物品编号(公司内部编码)',
|
|
item_name VARCHAR(128) NOT NULL COMMENT '物品名称',
|
|
category_id BIGINT(20) UNSIGNED DEFAULT NULL COMMENT '物品分类ID(可选,指向分类表)',
|
|
spec_model VARCHAR(128) DEFAULT NULL COMMENT '规格型号',
|
|
unit VARCHAR(32) DEFAULT '件' COMMENT '计量单位,如 件/盒/包',
|
|
is_consumable TINYINT(1) DEFAULT 1 COMMENT '是否耗材:1耗材(不需归还),0非耗材(需归还)',
|
|
stock_qty INT(11) DEFAULT 0 COMMENT '当前库存数量',
|
|
manage_user_id BIGINT(20) UNSIGNED DEFAULT NULL COMMENT '物品管理员用户ID',
|
|
location VARCHAR(255) DEFAULT NULL COMMENT '存放位置说明',
|
|
remark VARCHAR(255) DEFAULT NULL COMMENT '备注',
|
|
created_at INT(11) NOT NULL DEFAULT 0 COMMENT '创建时间时间戳',
|
|
updated_at INT(11) NOT NULL DEFAULT 0 COMMENT '更新时间时间戳',
|
|
PRIMARY KEY (id),
|
|
UNIQUE KEY uk_item_code (item_code),
|
|
KEY idx_company (company_id),
|
|
KEY idx_category (category_id),
|
|
KEY idx_manage_user (manage_user_id)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='物品主数据表';
|
|
|
|
|
|
-- 2. 物品领用/借用申请单(主表)
|
|
DROP TABLE IF EXISTS inv_requisition;
|
|
CREATE TABLE inv_requisition (
|
|
id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
order_no VARCHAR(64) NOT NULL COMMENT '申请单号',
|
|
|
|
applicant_company_id BIGINT(20) UNSIGNED DEFAULT NULL COMMENT '申请人所在公司ID(可选)',
|
|
dept_id BIGINT(20) UNSIGNED DEFAULT NULL COMMENT '申请人部门ID',
|
|
applicant_id BIGINT(20) UNSIGNED NOT NULL COMMENT '申请人用户ID',
|
|
applicant_name VARCHAR(64) DEFAULT NULL COMMENT '申请人姓名快照',
|
|
leader_id BIGINT(20) UNSIGNED DEFAULT NULL COMMENT '直属上级用户ID',
|
|
manager_id BIGINT(20) UNSIGNED DEFAULT NULL COMMENT '物品管理员用户ID(主负责人)',
|
|
|
|
borrow_reason VARCHAR(255) NOT NULL COMMENT '领用/借用事由',
|
|
use_start_date DATE NOT NULL COMMENT '借用/预计使用开始日期',
|
|
use_end_date DATE DEFAULT NULL COMMENT '预计归还日期(耗材可为空)',
|
|
|
|
-- 0草稿 10待直属上级审批 20直属上级通过待物品管理员审批
|
|
-- 30全部通过 40已驳回 50已取消
|
|
status TINYINT(3) NOT NULL DEFAULT 10 COMMENT '审批状态',
|
|
|
|
is_returned TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否已全部归还(针对需要归还的物品):0否 1是',
|
|
|
|
remark VARCHAR(255) DEFAULT NULL COMMENT '备注',
|
|
created_at INT(11) NOT NULL DEFAULT 0 COMMENT '创建时间时间戳',
|
|
updated_at INT(11) NOT NULL DEFAULT 0 COMMENT '更新时间时间戳',
|
|
|
|
PRIMARY KEY (id),
|
|
UNIQUE KEY uk_order_no (order_no),
|
|
KEY idx_applicant (applicant_id),
|
|
KEY idx_status (status)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='物品领用/借用申请单';
|
|
|
|
|
|
-- 3. 申请单明细表:支持部分、多次归还
|
|
DROP TABLE IF EXISTS inv_requisition_item;
|
|
CREATE TABLE inv_requisition_item (
|
|
id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
requisition_id BIGINT(20) UNSIGNED NOT NULL COMMENT '申请单ID',
|
|
item_id BIGINT(20) UNSIGNED NOT NULL COMMENT '物品ID',
|
|
|
|
item_name_snap VARCHAR(128) DEFAULT NULL COMMENT '物品名称快照',
|
|
spec_model_snap VARCHAR(128) DEFAULT NULL COMMENT '规格型号快照',
|
|
unit_snap VARCHAR(32) DEFAULT NULL COMMENT '单位快照',
|
|
is_consumable_snap TINYINT(1) DEFAULT NULL COMMENT '是否耗材快照:1耗材 0非耗材',
|
|
|
|
request_qty INT(11) NOT NULL DEFAULT 1 COMMENT '申请数量',
|
|
approved_qty INT(11) DEFAULT NULL COMMENT '实批数量(可与申请数量不同)',
|
|
returned_qty INT(11) NOT NULL DEFAULT 0 COMMENT '已归还数量(累加)',
|
|
|
|
-- 对于非耗材:returned_qty >= approved_qty 时置为1
|
|
is_finished TINYINT(1) NOT NULL DEFAULT 0 COMMENT '该物品是否已完成归还:0否 1是',
|
|
|
|
remark VARCHAR(255) DEFAULT NULL COMMENT '行备注',
|
|
created_at INT(11) NOT NULL DEFAULT 0 COMMENT '创建时间时间戳',
|
|
updated_at INT(11) NOT NULL DEFAULT 0 COMMENT '更新时间时间戳',
|
|
|
|
PRIMARY KEY (id),
|
|
KEY idx_req (requisition_id),
|
|
KEY idx_item (item_id)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='物品领用申请明细表';
|
|
|
|
|
|
-- 4. 审批记录表(同上一版,略微无改动)
|
|
DROP TABLE IF EXISTS inv_requisition_approve;
|
|
CREATE TABLE inv_requisition_approve (
|
|
id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
requisition_id BIGINT(20) UNSIGNED NOT NULL COMMENT '申请单ID',
|
|
node_type VARCHAR(32) NOT NULL COMMENT '审批节点类型:leader=直属上级,manager=物品管理员,other=其他',
|
|
approver_id BIGINT(20) UNSIGNED NOT NULL COMMENT '审批人用户ID',
|
|
approver_name VARCHAR(64) DEFAULT NULL COMMENT '审批人姓名快照',
|
|
action TINYINT(3) NOT NULL COMMENT '审批动作:1通过 2驳回',
|
|
comment VARCHAR(255) DEFAULT NULL COMMENT '审批意见',
|
|
action_at INT(11) NOT NULL DEFAULT 0 COMMENT '审批时间时间戳',
|
|
|
|
created_at INT(11) NOT NULL DEFAULT 0 COMMENT '创建时间时间戳',
|
|
updated_at INT(11) NOT NULL DEFAULT 0 COMMENT '更新时间时间戳',
|
|
|
|
PRIMARY KEY (id),
|
|
KEY idx_req (requisition_id),
|
|
KEY idx_node (node_type),
|
|
KEY idx_approver (approver_id)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='物品领用申请审批记录表';
|
|
|
|
|
|
-- 5. 申请单附件表(申请时上传)
|
|
DROP TABLE IF EXISTS inv_requisition_attachment;
|
|
CREATE TABLE inv_requisition_attachment (
|
|
id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
requisition_id BIGINT(20) UNSIGNED NOT NULL COMMENT '申请单ID',
|
|
file_name VARCHAR(255) NOT NULL COMMENT '文件原始名称',
|
|
file_path VARCHAR(255) NOT NULL COMMENT '文件存储路径/URL',
|
|
file_size INT(11) DEFAULT NULL COMMENT '文件大小(字节)',
|
|
created_at INT(11) NOT NULL DEFAULT 0 COMMENT '创建时间时间戳',
|
|
updated_at INT(11) NOT NULL DEFAULT 0 COMMENT '更新时间时间戳',
|
|
|
|
PRIMARY KEY (id),
|
|
KEY idx_req (requisition_id)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='物品领用申请附件表';
|
|
|
|
|
|
/* ================= 归 还 相 关 表 ================= */
|
|
|
|
-- 6. 归还记录表:一次归还动作(可归还一个明细的一部分)
|
|
DROP TABLE IF EXISTS inv_requisition_item_return;
|
|
CREATE TABLE inv_requisition_item_return (
|
|
id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
requisition_id BIGINT(20) UNSIGNED NOT NULL COMMENT '申请单ID',
|
|
requisition_item_id BIGINT(20) UNSIGNED NOT NULL COMMENT '申请单明细ID',
|
|
item_id BIGINT(20) UNSIGNED NOT NULL COMMENT '物品ID',
|
|
|
|
return_qty INT(11) NOT NULL DEFAULT 0 COMMENT '本次归还数量',
|
|
handler_id BIGINT(20) UNSIGNED NOT NULL COMMENT '办理归还的人(通常是物品管理员)',
|
|
handler_name VARCHAR(64) DEFAULT NULL COMMENT '办理人姓名快照',
|
|
|
|
return_status TINYINT(3) NOT NULL DEFAULT 1 COMMENT '归还状态:1正常归还 2损坏 3其他',
|
|
remark VARCHAR(255) DEFAULT NULL COMMENT '归还备注',
|
|
|
|
return_at INT(11) NOT NULL DEFAULT 0 COMMENT '归还时间时间戳',
|
|
created_at INT(11) NOT NULL DEFAULT 0 COMMENT '创建时间时间戳',
|
|
updated_at INT(11) NOT NULL DEFAULT 0 COMMENT '更新时间时间戳',
|
|
|
|
PRIMARY KEY (id),
|
|
KEY idx_req (requisition_id),
|
|
KEY idx_req_item (requisition_item_id),
|
|
KEY idx_item (item_id),
|
|
KEY idx_handler (handler_id)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='物品归还记录表(支持多次、部分归还)';
|
|
|
|
|
|
-- 7. 归还附件表:归还时拍照留底
|
|
DROP TABLE IF EXISTS inv_requisition_item_return_attachment;
|
|
CREATE TABLE inv_requisition_item_return_attachment (
|
|
id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
return_id BIGINT(20) UNSIGNED NOT NULL COMMENT '归还记录ID',
|
|
file_name VARCHAR(255) NOT NULL COMMENT '文件原始名称',
|
|
file_path VARCHAR(255) NOT NULL COMMENT '文件存储路径/URL(通常为照片)',
|
|
file_size INT(11) DEFAULT NULL COMMENT '文件大小(字节)',
|
|
created_at INT(11) NOT NULL DEFAULT 0 COMMENT '创建时间时间戳',
|
|
updated_at INT(11) NOT NULL DEFAULT 0 COMMENT '更新时间时间戳',
|
|
|
|
PRIMARY KEY (id),
|
|
KEY idx_return (return_id)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='物品归还记录附件表(归还拍照留底)';
|
|
|
|
SET FOREIGN_KEY_CHECKS = 1;
|