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
+21
View File
@@ -0,0 +1,21 @@
-- 表:wms_customer
-- 用途:货主。3PL 的客户。自营租户也建一个默认货主,库存一律落到货主。
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
-- 说明:customer_code 是货主,不是电商买家。收件人信息在订单上。
CREATE TABLE `wms_customer` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
`customer_code` VARCHAR(32) NOT NULL COMMENT '货主编码,租户内唯一',
`customer_name` VARCHAR(128) NOT NULL COMMENT '货主名称',
`contact_name` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '联系人',
`contact_phone` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '联系电话',
`contact_email` VARCHAR(128) NOT NULL DEFAULT '' COMMENT '联系邮箱',
`status` VARCHAR(32) NOT NULL DEFAULT 'active' COMMENT 'active 启用,disabled 停用',
`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_customer_code` (`tenant_code`, `customer_code`),
KEY `idx_tenant_status` (`tenant_code`, `status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='货主';
@@ -0,0 +1,17 @@
-- 表:wms_customer_warehouse
-- 用途:货主仓库。货主可以使用哪些仓库。
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
-- 说明:订单和入库选择仓库时必须落在已启用的绑定上。
CREATE TABLE `wms_customer_warehouse` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
`customer_code` VARCHAR(32) NOT NULL COMMENT '货主编码',
`warehouse_code` VARCHAR(32) NOT NULL COMMENT '仓库编码',
`status` VARCHAR(32) NOT NULL DEFAULT 'active' COMMENT 'active 启用,disabled 停用',
`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_customer_wh` (`tenant_code`, `customer_code`, `warehouse_code`),
KEY `idx_tenant_wh` (`tenant_code`, `warehouse_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='货主仓库';
@@ -0,0 +1,23 @@
-- 表:wms_package_spec
-- 用途:包装规格。SKU 的装箱规格,如一件箱装多少件。
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
-- 说明:库存数量一律按 SKU 基本单位记账,包装规格只用于换算展示和装箱,不单独记库存。
CREATE TABLE `wms_package_spec` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
`sku_code` VARCHAR(64) NOT NULL COMMENT 'SKU 编码',
`spec_code` VARCHAR(32) NOT NULL COMMENT '规格编码,SKU 内唯一',
`spec_name` VARCHAR(64) NOT NULL COMMENT '规格名称',
`unit_qty` DECIMAL(16,4) NOT NULL COMMENT '1 个该包装包含的基本单位数量',
`weight` DECIMAL(12,4) NULL COMMENT '包装重量,千克',
`length_cm` DECIMAL(12,4) NULL COMMENT '长,厘米,空表示未维护',
`width_cm` DECIMAL(12,4) NULL COMMENT '宽,厘米,空表示未维护',
`height_cm` DECIMAL(12,4) NULL COMMENT '高,厘米,空表示未维护',
`is_default` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '1 默认规格',
`status` VARCHAR(32) NOT NULL DEFAULT 'active' COMMENT 'active 启用,disabled 停用',
`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_sku_spec` (`tenant_code`, `sku_code`, `spec_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='包装规格';
+19
View File
@@ -0,0 +1,19 @@
-- 表:wms_product
-- 用途:商品。SKU 的上层商品,属于一个货主。
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
-- 说明:product_code 在租户内唯一,不按货主再分一层。
CREATE TABLE `wms_product` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
`customer_code` VARCHAR(32) NOT NULL COMMENT '货主编码',
`product_code` VARCHAR(64) NOT NULL COMMENT '商品编码,租户内唯一',
`product_name` VARCHAR(128) NOT NULL COMMENT '商品名称',
`status` VARCHAR(32) NOT NULL DEFAULT 'active' COMMENT 'active 启用,disabled 停用',
`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_product_code` (`tenant_code`, `product_code`),
KEY `idx_tenant_customer` (`tenant_code`, `customer_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='商品';
+30
View File
@@ -0,0 +1,30 @@
-- 表:wms_sku
-- 用途:SKU。库存与订单的最小商品单位,含单件重量和尺寸。
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
-- 说明:不同货主不得复用同一个 sku_code。重量尺寸变更不影响历史单据上的快照。
CREATE TABLE `wms_sku` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
`customer_code` VARCHAR(32) NOT NULL COMMENT '货主编码',
`product_code` VARCHAR(64) NOT NULL COMMENT '商品编码',
`sku_code` VARCHAR(64) NOT NULL COMMENT 'SKU 编码,租户内唯一',
`sku_name` VARCHAR(128) NOT NULL COMMENT 'SKU 名称',
`unit` VARCHAR(16) NOT NULL DEFAULT 'pcs' COMMENT '计量单位',
`net_weight` DECIMAL(12,4) NULL COMMENT '单件净重,千克',
`length_cm` DECIMAL(12,4) NULL COMMENT '长,厘米,空表示未维护',
`width_cm` DECIMAL(12,4) NULL COMMENT '宽,厘米,空表示未维护',
`height_cm` DECIMAL(12,4) NULL COMMENT '高,厘米,空表示未维护',
`is_batch_managed` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '1 强制批次管理',
`is_expiry_managed` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '1 管理效期',
`shelf_life_days` INT UNSIGNED NULL COMMENT '保质期天数,不管效期时为空',
`status` VARCHAR(32) NOT NULL DEFAULT 'active' COMMENT 'active 启用,disabled 停用',
`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_sku_code` (`tenant_code`, `sku_code`),
KEY `idx_tenant_customer` (`tenant_code`, `customer_code`),
KEY `idx_tenant_product` (`tenant_code`, `product_code`),
KEY `idx_tenant_status` (`tenant_code`, `status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='SKU';
@@ -0,0 +1,18 @@
-- 表:wms_sku_barcode
-- 用途:SKU 条码。SKU 的扫描条码,租户内一条码只对应一个 SKU。
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
-- 说明:同一 SKU 可以有多条码。扫描时按租户加条码唯一定位 SKU。
CREATE TABLE `wms_sku_barcode` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
`sku_code` VARCHAR(64) NOT NULL COMMENT 'SKU 编码',
`barcode` VARCHAR(64) NOT NULL COMMENT '条码',
`barcode_type` VARCHAR(16) NOT NULL DEFAULT 'sku' COMMENT 'sku 单品,case 外箱,other 其他',
`is_primary` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '1 主条码',
`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_barcode` (`tenant_code`, `barcode`),
KEY `idx_tenant_sku` (`tenant_code`, `sku_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='SKU 条码';
+20
View File
@@ -0,0 +1,20 @@
-- 表:wms_supplier
-- 用途:供应商。入库来源供应商。
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
-- 说明:供应商按租户隔离。
CREATE TABLE `wms_supplier` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
`supplier_code` VARCHAR(32) NOT NULL COMMENT '供应商编码,租户内唯一',
`supplier_name` VARCHAR(128) NOT NULL COMMENT '供应商名称',
`contact_name` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '联系人',
`contact_phone` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '联系电话',
`contact_email` VARCHAR(128) NOT NULL DEFAULT '' COMMENT '联系邮箱',
`status` VARCHAR(32) NOT NULL DEFAULT 'active' COMMENT 'active 启用,disabled 停用',
`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_supplier_code` (`tenant_code`, `supplier_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='供应商';