Files
GEAR-OA/script/sql/mysql/item/gear_stock_io_order.sql
2026-04-23 10:15:22 +08:00

80 lines
5.6 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.

-- ================================
-- 出入库单据控制层(新增)
-- 说明:
-- 1) 业务层先创建“出入库单”,再由单据生成实际的 gear_stock_io / gear_stock_io_detail
-- 2) 单据状态控制提交、审核、作废与执行结果
-- 3) 通过 source_io_id 关联已生成的实际出入库记录,确保单据可追溯
-- ================================
DROP TABLE IF EXISTS gear_stock_io_order;
CREATE TABLE gear_stock_io_order (
order_id bigint(20) NOT NULL COMMENT '单据ID',
order_code varchar(64) NOT NULL COMMENT '单据编号(唯一)',
io_type char(1) NOT NULL COMMENT '出入库类型I入库 O出库 T调拨',
biz_type varchar(32) NOT NULL COMMENT '业务类型purchase/sale/return/transfer/other',
source_type varchar(32) DEFAULT '' COMMENT '来源单据类型(采购单/销售单/报工单等)',
source_no varchar(64) DEFAULT '' COMMENT '来源单据编号',
warehouse_id bigint(20) DEFAULT NULL COMMENT '主仓库ID',
from_warehouse_id bigint(20) DEFAULT NULL COMMENT '调出仓库ID',
to_warehouse_id bigint(20) DEFAULT NULL COMMENT '调入仓库ID',
status char(1) NOT NULL DEFAULT '0' COMMENT '单据状态0草稿 1已提交 2已审核 3已执行 4已作废',
exec_flag char(1) NOT NULL DEFAULT '0' COMMENT '执行标志0未执行 1已执行',
audit_by varchar(64) DEFAULT '' COMMENT '审核人',
audit_time datetime COMMENT '审核时间',
execute_by varchar(64) DEFAULT '' COMMENT '执行人',
execute_time datetime COMMENT '执行时间',
source_io_id bigint(20) DEFAULT NULL COMMENT '实际出入库单IDgear_stock_io.stock_io_id',
total_qty decimal(18,4) NOT NULL DEFAULT 0.0000 COMMENT '单据总数量',
remark varchar(500) DEFAULT 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 '更新时间',
PRIMARY KEY (order_id),
UNIQUE KEY uk_order_code (order_code),
KEY idx_status (status),
KEY idx_exec_flag (exec_flag),
KEY idx_biz_type (biz_type),
KEY idx_source_no (source_no),
KEY idx_create_time (create_time),
KEY idx_source_io_id (source_io_id)
) ENGINE=InnoDB COMMENT='出入库单据表';
DROP TABLE IF EXISTS gear_stock_io_order_detail;
CREATE TABLE gear_stock_io_order_detail (
detail_id bigint(20) NOT NULL COMMENT '明细ID',
order_id bigint(20) NOT NULL COMMENT '单据ID',
line_no int(11) NOT NULL DEFAULT 1 COMMENT '行号',
item_type varchar(32) NOT NULL COMMENT '物料类型product/material/other',
item_id bigint(20) NOT NULL COMMENT '物料ID',
item_name varchar(128) DEFAULT '' COMMENT '物料名称快照',
spec_name varchar(128) DEFAULT '' COMMENT '规格型号快照',
warehouse_id bigint(20) DEFAULT NULL COMMENT '入库仓库ID',
from_warehouse_id bigint(20) DEFAULT NULL COMMENT '出库仓库ID',
quantity decimal(18,4) NOT NULL DEFAULT 0.0000 COMMENT '数量',
unit varchar(32) DEFAULT '' COMMENT '单位',
batch_no varchar(64) DEFAULT '' COMMENT '批次号',
unit_price decimal(18,4) NOT NULL DEFAULT 0.0000 COMMENT '单价快照',
amount decimal(18,4) NOT NULL DEFAULT 0.0000 COMMENT '金额快照',
source_detail_no varchar(64) DEFAULT '' COMMENT '来源明细编号',
remark varchar(500) DEFAULT 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 '更新时间',
PRIMARY KEY (detail_id),
UNIQUE KEY uk_order_line (order_id, line_no),
KEY idx_order_id (order_id),
KEY idx_item_id (item_id),
KEY idx_batch_no (batch_no),
KEY idx_source_detail_no (source_detail_no)
) ENGINE=InnoDB COMMENT='出入库单据明细表';
-- 建议补充的业务索引说明:
-- 1) 先保存 gear_stock_io_order/gear_stock_io_order_detail 为草稿
-- 2) 提交后进入审核
-- 3) 审核通过后生成实际 gear_stock_io / gear_stock_io_detail并回写 source_io_id
-- 4) 如果需要严格防重复执行,可在业务层通过 order_code + status / source_io_id 控制幂等