This commit is contained in:
Yangxt
2026-09-30 11:11:54 +08:00
parent cb9b7a4bd4
commit 2fb57ec490
160 changed files with 14764 additions and 53 deletions
+27
View File
@@ -0,0 +1,27 @@
-- 表:wms_inbound
-- 用途:入库单。入库作业的头单据。
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
-- 说明:状态只能按 draft、receiving、received、qc、putting_away、completed 前进。免检时可从 received 进入 putting_away。cancelled 只允许在尚未上架时发生。入库引起的库存变化记在 wms_stock_log,不另建入库流水表。
CREATE TABLE `wms_inbound` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
`inbound_no` VARCHAR(64) NOT NULL COMMENT '入库单号,租户内唯一',
`warehouse_code` VARCHAR(32) NOT NULL COMMENT '仓库编码',
`customer_code` VARCHAR(32) NOT NULL COMMENT '货主编码',
`supplier_code` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '供应商编码,可空',
`inbound_type` VARCHAR(32) NOT NULL COMMENT 'purchase 采购,return 退货,transfer 调拨,other 其他',
`status` VARCHAR(32) NOT NULL DEFAULT 'draft' COMMENT 'draft 草稿,receiving 收货中,received 已收货,qc 质检中,putting_away 上架中,completed 已完成,cancelled 已取消',
`ref_no` VARCHAR(64) NULL COMMENT '外部参考号,如 ASN;空必须为 NULL,以便唯一约束允许多张无参考号单据',
`expected_arrive_at` DATETIME(3) NULL COMMENT '预计到货时间',
`remark` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '备注',
`created_by` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '创建人 user_code,系统任务为空',
`updated_by` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '更新人 user_code',
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
`updated_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_tenant_inbound_no` (`tenant_code`, `inbound_no`),
UNIQUE KEY `uk_tenant_ref_no` (`tenant_code`, `ref_no`),
KEY `idx_tenant_wh_status_created` (`tenant_code`, `warehouse_code`, `status`, `created_at`),
KEY `idx_tenant_customer` (`tenant_code`, `customer_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='入库单';
@@ -0,0 +1,24 @@
-- 表:wms_inbound_item
-- 用途:入库明细。入库单行,数量列是各作业的汇总结果。
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
-- 说明:汇总列由收货、质检、上架记录在同一事务内回写。事实以那些记录和库存流水为准。
CREATE TABLE `wms_inbound_item` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
`inbound_no` VARCHAR(64) NOT NULL COMMENT '入库单号',
`line_no` INT UNSIGNED NOT NULL COMMENT '行号',
`sku_code` VARCHAR(64) NOT NULL COMMENT 'SKU 编码',
`sku_name` VARCHAR(128) NOT NULL DEFAULT '' COMMENT '下单时的 SKU 名称快照',
`expected_qty` DECIMAL(16,4) NOT NULL DEFAULT 0.0000 COMMENT '预计数量',
`received_qty` DECIMAL(16,4) NOT NULL DEFAULT 0.0000 COMMENT '已收数量汇总',
`qualified_qty` DECIMAL(16,4) NOT NULL DEFAULT 0.0000 COMMENT '质检合格数量汇总',
`unqualified_qty` DECIMAL(16,4) NOT NULL DEFAULT 0.0000 COMMENT '质检不合格数量汇总',
`putaway_qty` DECIMAL(16,4) NOT NULL DEFAULT 0.0000 COMMENT '已上架数量汇总',
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
`updated_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_tenant_inbound_line` (`tenant_code`, `inbound_no`, `line_no`),
KEY `idx_tenant_sku` (`tenant_code`, `sku_code`),
CONSTRAINT `chk_inbound_item_qty` CHECK (`expected_qty` > 0 AND `received_qty` >= 0 AND `qualified_qty` >= 0 AND `unqualified_qty` >= 0 AND `putaway_qty` >= 0)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='入库明细';
@@ -0,0 +1,28 @@
-- 表:wms_inbound_putaway
-- 用途:上架任务。把收货库位的合格库存移到存储库位。
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
-- 说明:完成时同一事务:移出库位 available 减少、移入库位 available 增加、写两行 inbound_putaway 流水、回写入库明细 putaway_qty。目标库位要满足库位类型的混放规则和容量。
CREATE TABLE `wms_inbound_putaway` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
`putaway_no` VARCHAR(64) NOT NULL COMMENT '上架单号,租户内唯一',
`inbound_no` VARCHAR(64) NOT NULL COMMENT '入库单号',
`warehouse_code` VARCHAR(32) NOT NULL COMMENT '仓库编码',
`customer_code` VARCHAR(32) NOT NULL COMMENT '货主编码',
`sku_code` VARCHAR(64) NOT NULL COMMENT 'SKU 编码',
`batch_no` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '批次号,可空',
`from_location_code` VARCHAR(64) NOT NULL COMMENT '移出库位,通常是收货或质检库位',
`to_location_code` VARCHAR(64) NOT NULL COMMENT '移入库位',
`qty` DECIMAL(16,4) NOT NULL DEFAULT 0.0000 COMMENT '上架数量',
`status` VARCHAR(32) NOT NULL DEFAULT 'pending' COMMENT 'pending 待上架,completed 已完成,cancelled 已取消',
`operator` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '上架人 user_code',
`finished_at` DATETIME(3) NULL COMMENT '完成时间',
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
`updated_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_tenant_putaway_no` (`tenant_code`, `putaway_no`),
KEY `idx_tenant_inbound_status` (`tenant_code`, `inbound_no`, `status`),
KEY `idx_tenant_to_location` (`tenant_code`, `warehouse_code`, `to_location_code`),
CONSTRAINT `chk_putaway_qty` CHECK (`qty` > 0)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='上架任务';
@@ -0,0 +1,28 @@
-- 表:wms_inbound_qc
-- 用途:入库质检。按收货结果做的质检记录。
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
-- 说明:不合格数量从收货库位的 available 转入 damaged,并写流水。合格数量等待上架。
CREATE TABLE `wms_inbound_qc` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
`qc_no` VARCHAR(64) NOT NULL COMMENT '质检单号,租户内唯一',
`inbound_no` VARCHAR(64) NOT NULL COMMENT '入库单号',
`receipt_no` VARCHAR(64) NOT NULL COMMENT '收货单号',
`inbound_line_no` INT UNSIGNED NOT NULL COMMENT '入库明细行号',
`sku_code` VARCHAR(64) NOT NULL COMMENT 'SKU 编码',
`batch_no` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '批次号,可空',
`inspect_qty` DECIMAL(16,4) NOT NULL DEFAULT 0.0000 COMMENT '送检数量',
`pass_qty` DECIMAL(16,4) NOT NULL DEFAULT 0.0000 COMMENT '合格数量',
`fail_qty` DECIMAL(16,4) NOT NULL DEFAULT 0.0000 COMMENT '不合格数量',
`result` VARCHAR(32) NOT NULL COMMENT 'pass 全部合格,partial 部分合格,fail 全部不合格',
`fail_reason` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '不合格原因',
`qc_by` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '质检人 user_code',
`qc_at` DATETIME(3) NOT NULL COMMENT '质检时间',
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
`updated_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_tenant_qc_no` (`tenant_code`, `qc_no`),
KEY `idx_tenant_inbound` (`tenant_code`, `inbound_no`),
CONSTRAINT `chk_qc_qty` CHECK (`inspect_qty` > 0 AND `pass_qty` >= 0 AND `fail_qty` >= 0 AND `pass_qty` + `fail_qty` = `inspect_qty`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='入库质检';
@@ -0,0 +1,20 @@
-- 表:wms_inbound_receipt
-- 用途:收货记录。一张入库单可以分多次收货。
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
-- 说明:收货增加收货库位的 available_qty,并写 biz_type=inbound_receipt 的流水。
CREATE TABLE `wms_inbound_receipt` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
`receipt_no` VARCHAR(64) NOT NULL COMMENT '收货单号,租户内唯一',
`inbound_no` VARCHAR(64) NOT NULL COMMENT '入库单号',
`warehouse_code` VARCHAR(32) NOT NULL COMMENT '仓库编码',
`received_by` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '收货人 user_code',
`received_at` DATETIME(3) NOT NULL COMMENT '收货时间',
`remark` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '备注',
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
`updated_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_tenant_receipt_no` (`tenant_code`, `receipt_no`),
KEY `idx_tenant_inbound` (`tenant_code`, `inbound_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='收货记录';
@@ -0,0 +1,24 @@
-- 表:wms_inbound_receipt_item
-- 用途:收货明细。本次实收数量以及与预计的差异。
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
-- 说明:收货差异记在本行,不另建差异表。差异不直接改预计数量,最终以实收和质检合格数量进入库存。
CREATE TABLE `wms_inbound_receipt_item` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
`receipt_no` VARCHAR(64) NOT NULL COMMENT '收货单号',
`line_no` INT UNSIGNED NOT NULL COMMENT '收货行号',
`inbound_no` VARCHAR(64) NOT NULL COMMENT '入库单号',
`inbound_line_no` INT UNSIGNED NOT NULL COMMENT '入库明细行号',
`sku_code` VARCHAR(64) NOT NULL COMMENT 'SKU 编码',
`batch_no` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '批次号,不管批次时为空',
`expected_qty` DECIMAL(16,4) NOT NULL DEFAULT 0.0000 COMMENT '收货时该行剩余预计数量快照',
`received_qty` DECIMAL(16,4) NOT NULL DEFAULT 0.0000 COMMENT '本次实收数量',
`variance_qty` DECIMAL(16,4) NOT NULL DEFAULT 0.0000 COMMENT '实收减预计快照,短收为负、超收为正',
`variance_reason` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '差异原因,无差异为空',
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
`updated_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_tenant_receipt_line` (`tenant_code`, `receipt_no`, `line_no`),
KEY `idx_tenant_inbound_line` (`tenant_code`, `inbound_no`, `inbound_line_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='收货明细';