2026-04-23 10:15:22 +08:00
|
|
|
|
-- ================================
|
2026-04-23 10:22:08 +08:00
|
|
|
|
-- 出入库单据控制层
|
2026-04-23 10:42:05 +08:00
|
|
|
|
-- 目标:通过“单据 -> 完成 -> 执行”控制库存变更,避免直接操作出入库流水
|
2026-04-23 10:15:22 +08:00
|
|
|
|
-- 说明:
|
2026-04-23 10:22:08 +08:00
|
|
|
|
-- 1) 业务先创建出入库单据,再由单据驱动实际 gear_stock_io / gear_stock_io_detail
|
2026-04-23 10:42:05 +08:00
|
|
|
|
-- 2) 单据仅保留两种状态:进行中、已完成
|
2026-04-23 10:22:08 +08:00
|
|
|
|
-- 3) 通过关联字段保留来源单、回退单、执行单之间的链路
|
2026-04-23 10:15:22 +08:00
|
|
|
|
-- ================================
|
|
|
|
|
|
|
|
|
|
|
|
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)',
|
2026-04-23 10:22:08 +08:00
|
|
|
|
source_type varchar(32) DEFAULT '' COMMENT '来源单据类型(采购单/销售单/退货单/调拨单等)',
|
2026-04-23 10:15:22 +08:00
|
|
|
|
source_no varchar(64) DEFAULT '' COMMENT '来源单据编号',
|
2026-04-23 10:22:08 +08:00
|
|
|
|
source_order_id bigint(20) DEFAULT NULL COMMENT '来源单据ID(业务单ID)',
|
2026-04-23 10:42:05 +08:00
|
|
|
|
responsible_id bigint(20) DEFAULT NULL COMMENT '责任人ID',
|
|
|
|
|
|
responsible_name varchar(64) DEFAULT '' COMMENT '责任人姓名',
|
|
|
|
|
|
plan_arrival_time datetime COMMENT '预计到货时间',
|
|
|
|
|
|
actual_arrival_time datetime COMMENT '实际到货时间',
|
|
|
|
|
|
plan_finish_time datetime COMMENT '预计完成时间',
|
|
|
|
|
|
actual_finish_time datetime COMMENT '实际完成时间',
|
|
|
|
|
|
delay_minutes int(11) NOT NULL DEFAULT 0 COMMENT '延迟分钟数',
|
|
|
|
|
|
delay_reason varchar(500) DEFAULT '' COMMENT '延迟原因',
|
|
|
|
|
|
delay_status char(1) NOT NULL DEFAULT '0' COMMENT '延迟状态(0正常 1超时 2已处理)',
|
2026-04-23 10:15:22 +08:00
|
|
|
|
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',
|
2026-04-23 10:26:36 +08:00
|
|
|
|
status char(1) NOT NULL DEFAULT '0' COMMENT '单据状态(0进行中 1已完成)',
|
2026-04-23 10:15:22 +08:00
|
|
|
|
exec_flag char(1) NOT NULL DEFAULT '0' COMMENT '执行标志(0未执行 1已执行)',
|
2026-04-23 10:22:08 +08:00
|
|
|
|
reversal_flag char(1) NOT NULL DEFAULT '0' COMMENT '是否冲销单(0否 1是)',
|
|
|
|
|
|
reversal_order_id bigint(20) DEFAULT NULL COMMENT '对应原单据ID',
|
|
|
|
|
|
reversal_reason varchar(500) DEFAULT '' COMMENT '冲销原因',
|
|
|
|
|
|
reversal_time datetime COMMENT '冲销时间',
|
|
|
|
|
|
cancel_reason varchar(500) DEFAULT '' COMMENT '作废原因',
|
|
|
|
|
|
cancel_time datetime COMMENT '作废时间',
|
2026-04-23 10:15:22 +08:00
|
|
|
|
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 '实际出入库单ID(gear_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),
|
2026-04-23 10:22:08 +08:00
|
|
|
|
UNIQUE KEY uk_reversal_order_id (reversal_order_id),
|
2026-04-23 10:15:22 +08:00
|
|
|
|
KEY idx_status (status),
|
|
|
|
|
|
KEY idx_exec_flag (exec_flag),
|
|
|
|
|
|
KEY idx_biz_type (biz_type),
|
|
|
|
|
|
KEY idx_source_no (source_no),
|
2026-04-23 10:22:08 +08:00
|
|
|
|
KEY idx_source_order_id (source_order_id),
|
2026-04-23 10:42:05 +08:00
|
|
|
|
KEY idx_responsible_id (responsible_id),
|
|
|
|
|
|
KEY idx_delay_status (delay_status),
|
2026-04-23 10:15:22 +08:00
|
|
|
|
KEY idx_create_time (create_time),
|
2026-04-23 10:22:08 +08:00
|
|
|
|
KEY idx_source_io_id (source_io_id),
|
|
|
|
|
|
KEY idx_reversal_flag (reversal_flag)
|
2026-04-23 10:15:22 +08:00
|
|
|
|
) 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 '来源明细编号',
|
2026-04-23 10:22:08 +08:00
|
|
|
|
reversal_detail_id bigint(20) DEFAULT NULL COMMENT '对应冲销明细ID',
|
2026-04-23 10:15:22 +08:00
|
|
|
|
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),
|
2026-04-23 10:22:08 +08:00
|
|
|
|
KEY idx_source_detail_no (source_detail_no),
|
|
|
|
|
|
KEY idx_reversal_detail_id (reversal_detail_id)
|
2026-04-23 10:15:22 +08:00
|
|
|
|
) ENGINE=InnoDB COMMENT='出入库单据明细表';
|
|
|
|
|
|
|
2026-04-23 10:22:08 +08:00
|
|
|
|
-- 建议:
|
|
|
|
|
|
-- 1) 业务层只允许通过单据驱动库存变更,禁止直接改 gear_stock / gear_stock_log
|
|
|
|
|
|
-- 2) 审核通过后,统一调用执行入口生成实际 gear_stock_io / gear_stock_io_detail
|
|
|
|
|
|
-- 3) 已执行错误时,通过反向单据进行冲销,不直接修改历史流水
|