init
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
-- 表:wms_allocation
|
||||
-- 用途:库存分配。出库行预占到具体库位批次的记录,也是库存锁定明细。
|
||||
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
|
||||
-- 说明:reserved 时 available 转为 reserved。released 时转回。picked 时 reserved 转为 picked。不另建预占表。
|
||||
|
||||
CREATE TABLE `wms_allocation` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
|
||||
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
|
||||
`allocation_no` VARCHAR(64) NOT NULL COMMENT '分配单号,租户内唯一',
|
||||
`outbound_no` VARCHAR(64) NOT NULL COMMENT '出库单号',
|
||||
`outbound_line_no` INT UNSIGNED NOT NULL COMMENT '出库行号',
|
||||
`warehouse_code` VARCHAR(32) NOT NULL COMMENT '仓库编码',
|
||||
`customer_code` VARCHAR(32) NOT NULL COMMENT '货主编码',
|
||||
`location_code` VARCHAR(64) NOT NULL COMMENT '库位编码',
|
||||
`sku_code` VARCHAR(64) NOT NULL COMMENT 'SKU 编码',
|
||||
`batch_no` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '批次号,可空',
|
||||
`qty` DECIMAL(16,4) NOT NULL DEFAULT 0.0000 COMMENT '分配数量',
|
||||
`status` VARCHAR(32) NOT NULL DEFAULT 'reserved' COMMENT 'reserved 已预占,picked 已拣货,released 已释放',
|
||||
`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_allocation_no` (`tenant_code`, `allocation_no`),
|
||||
KEY `idx_tenant_outbound` (`tenant_code`, `outbound_no`),
|
||||
KEY `idx_tenant_sku_location` (`tenant_code`, `warehouse_code`, `sku_code`, `location_code`),
|
||||
CONSTRAINT `chk_allocation_qty` CHECK (`qty` > 0)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='库存分配';
|
||||
@@ -0,0 +1,38 @@
|
||||
-- 表:wms_order
|
||||
-- 用途:统一订单。与具体电商平台解耦的履约订单。
|
||||
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
|
||||
-- 说明:核心订单只保存统一字段。平台特有属性留在连接器,不在本表加 Amazon、TikTok 等专用列。订单状态表示履约进度,仓库作业状态以 wms_outbound.status 为准。
|
||||
|
||||
CREATE TABLE `wms_order` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
|
||||
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
|
||||
`order_no` VARCHAR(64) NOT NULL COMMENT '订单号,租户内唯一',
|
||||
`customer_code` VARCHAR(32) NOT NULL COMMENT '货主编码',
|
||||
`warehouse_code` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '指定仓库;拆到多个仓库时为空,以出库单为准',
|
||||
`order_channel` VARCHAR(32) NOT NULL COMMENT '来源渠道:manual、api、erp、amazon、shopify、tiktok_shop、temu、shopee、mirakl',
|
||||
`order_source` VARCHAR(32) NOT NULL COMMENT '进入方式:manual 手工,open_api 开放接口,connector 平台连接器',
|
||||
`external_order_no` VARCHAR(64) NULL COMMENT '外部订单号;手工单必须为 NULL',
|
||||
`shop_code` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '店铺编码,非平台单为空',
|
||||
`status` VARCHAR(32) NOT NULL DEFAULT 'draft' COMMENT 'draft 草稿,confirmed 已确认,processing 作业中,partially_shipped 部分发货,shipped 已发货,completed 已完成,cancelled 已取消',
|
||||
`currency` CHAR(3) NOT NULL DEFAULT 'CNY' COMMENT '申报金额币种',
|
||||
`required_ship_at` DATETIME(3) NULL COMMENT '要求发货时间',
|
||||
`ship_name` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '收件人',
|
||||
`ship_phone` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '收件电话',
|
||||
`ship_country_code` CHAR(2) NOT NULL DEFAULT '' COMMENT '收件国家',
|
||||
`ship_province` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '收件省或州',
|
||||
`ship_city` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '收件城市',
|
||||
`ship_district` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '收件区县',
|
||||
`ship_address` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '收件详细地址',
|
||||
`ship_postcode` VARCHAR(32) NOT NULL DEFAULT '' 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_order_no` (`tenant_code`, `order_no`),
|
||||
UNIQUE KEY `uk_tenant_channel_external` (`tenant_code`, `order_channel`, `external_order_no`),
|
||||
KEY `idx_tenant_status_created` (`tenant_code`, `status`, `created_at`),
|
||||
KEY `idx_tenant_customer` (`tenant_code`, `customer_code`),
|
||||
KEY `idx_tenant_shop` (`tenant_code`, `shop_code`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='统一订单';
|
||||
@@ -0,0 +1,23 @@
|
||||
-- 表:wms_order_item
|
||||
-- 用途:订单明细。订单要履约的 SKU 与数量。
|
||||
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
|
||||
-- 说明:已发货数量由出库发货回写。不在订单行上直接扣库存。
|
||||
|
||||
CREATE TABLE `wms_order_item` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
|
||||
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
|
||||
`order_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 名称快照',
|
||||
`ordered_qty` DECIMAL(16,4) NOT NULL DEFAULT 0.0000 COMMENT '订购数量',
|
||||
`cancelled_qty` DECIMAL(16,4) NOT NULL DEFAULT 0.0000 COMMENT '取消数量',
|
||||
`shipped_qty` DECIMAL(16,4) NOT NULL DEFAULT 0.0000 COMMENT '已发货数量',
|
||||
`declared_value` DECIMAL(16,4) 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_order_line` (`tenant_code`, `order_no`, `line_no`),
|
||||
KEY `idx_tenant_sku` (`tenant_code`, `sku_code`),
|
||||
CONSTRAINT `chk_order_item_qty` CHECK (`ordered_qty` > 0 AND `cancelled_qty` >= 0 AND `shipped_qty` >= 0 AND `cancelled_qty` + `shipped_qty` <= `ordered_qty`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='订单明细';
|
||||
@@ -0,0 +1,29 @@
|
||||
-- 表:wms_outbound
|
||||
-- 用途:出库单。仓库执行单据。一张订单可按仓库拆成多张出库单。
|
||||
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
|
||||
-- 说明:主路径只能 draft、allocated、picking、picked、packing、packed、shipped、completed 前进。进入 packing 前 review_status 必须为 passed。cancelled 只允许从 draft、allocated 进入,且 allocated 必须先释放预占。状态变更写 wms_status_log。
|
||||
|
||||
CREATE TABLE `wms_outbound` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
|
||||
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
|
||||
`outbound_no` VARCHAR(64) NOT NULL COMMENT '出库单号,租户内唯一',
|
||||
`order_no` VARCHAR(64) NULL COMMENT '来源订单号;非销售出库必须为 NULL',
|
||||
`outbound_type` VARCHAR(32) NOT NULL COMMENT 'sales 销售,transfer 调拨,supplier_return 退供,scrap 报废,other 其他',
|
||||
`warehouse_code` VARCHAR(32) NOT NULL COMMENT '仓库编码',
|
||||
`customer_code` VARCHAR(32) NOT NULL COMMENT '货主编码',
|
||||
`status` VARCHAR(32) NOT NULL DEFAULT 'draft' COMMENT 'draft 草稿,allocated 已分配,picking 拣货中,picked 已拣货,packing 打包中,packed 已打包,shipped 已发货,completed 已完成,cancelled 已取消',
|
||||
`review_status` VARCHAR(32) NOT NULL DEFAULT 'pending' COMMENT '复核:pending 待复核,passed 通过,rejected 驳回',
|
||||
`reviewed_by` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '复核人 user_code',
|
||||
`reviewed_at` DATETIME(3) NULL COMMENT '复核时间',
|
||||
`required_ship_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_outbound_no` (`tenant_code`, `outbound_no`),
|
||||
KEY `idx_tenant_order` (`tenant_code`, `order_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,27 @@
|
||||
-- 表:wms_outbound_item
|
||||
-- 用途:出库明细。出库单行及各作业数量汇总。
|
||||
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
|
||||
-- 说明:数量汇总由分配、拣货、打包、发货在同一事务回写。
|
||||
|
||||
CREATE TABLE `wms_outbound_item` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
|
||||
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
|
||||
`outbound_no` VARCHAR(64) NOT NULL COMMENT '出库单号',
|
||||
`line_no` INT UNSIGNED NOT NULL COMMENT '行号',
|
||||
`order_no` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '来源订单号,非销售出库为空',
|
||||
`order_line_no` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '来源订单行号,非销售出库为 0',
|
||||
`sku_code` VARCHAR(64) NOT NULL COMMENT 'SKU 编码',
|
||||
`sku_name` VARCHAR(128) NOT NULL DEFAULT '' COMMENT 'SKU 名称快照',
|
||||
`planned_qty` DECIMAL(16,4) NOT NULL DEFAULT 0.0000 COMMENT '计划出库数量',
|
||||
`allocated_qty` DECIMAL(16,4) NOT NULL DEFAULT 0.0000 COMMENT '已分配数量',
|
||||
`picked_qty` DECIMAL(16,4) NOT NULL DEFAULT 0.0000 COMMENT '已拣数量',
|
||||
`packed_qty` DECIMAL(16,4) NOT NULL DEFAULT 0.0000 COMMENT '已打包数量',
|
||||
`shipped_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_outbound_line` (`tenant_code`, `outbound_no`, `line_no`),
|
||||
KEY `idx_tenant_sku` (`tenant_code`, `sku_code`),
|
||||
KEY `idx_tenant_order` (`tenant_code`, `order_no`),
|
||||
CONSTRAINT `chk_outbound_item_qty` CHECK (`planned_qty` > 0 AND `allocated_qty` >= 0 AND `picked_qty` >= 0 AND `packed_qty` >= 0 AND `shipped_qty` >= 0 AND `shipped_qty` <= `planned_qty`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='出库明细';
|
||||
@@ -0,0 +1,24 @@
|
||||
-- 表:wms_package
|
||||
-- 用途:包裹。复核通过后的打包结果。打包不改变库存数量桶。
|
||||
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
|
||||
-- 说明:复核结果在出库单 review_status。本表只表示物理包裹。作废包裹不得再关联发货单。
|
||||
|
||||
CREATE TABLE `wms_package` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
|
||||
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
|
||||
`package_no` VARCHAR(64) NOT NULL COMMENT '包裹号,租户内唯一',
|
||||
`outbound_no` VARCHAR(64) NOT NULL COMMENT '出库单号',
|
||||
`warehouse_code` VARCHAR(32) NOT NULL COMMENT '仓库编码',
|
||||
`status` VARCHAR(32) NOT NULL DEFAULT 'open' COMMENT 'open 打包中,packed 已封箱,shipped 已发货,void 已作废',
|
||||
`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 '高,厘米,空表示未维护',
|
||||
`packed_by` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '打包人 user_code',
|
||||
`packed_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_package_no` (`tenant_code`, `package_no`),
|
||||
KEY `idx_tenant_outbound` (`tenant_code`, `outbound_no`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='包裹';
|
||||
@@ -0,0 +1,22 @@
|
||||
-- 表:wms_package_item
|
||||
-- 用途:包裹明细。包裹内的 SKU 数量。
|
||||
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
|
||||
-- 说明:同一出库行可以拆到多个包裹。各包裹数量之和不得超过该行已拣数量。
|
||||
|
||||
CREATE TABLE `wms_package_item` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
|
||||
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
|
||||
`package_no` VARCHAR(64) NOT NULL COMMENT '包裹号',
|
||||
`line_no` INT UNSIGNED NOT NULL COMMENT '行号',
|
||||
`outbound_no` VARCHAR(64) NOT NULL COMMENT '出库单号',
|
||||
`outbound_line_no` INT UNSIGNED NOT NULL COMMENT '出库行号',
|
||||
`sku_code` VARCHAR(64) NOT NULL COMMENT 'SKU 编码',
|
||||
`batch_no` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '批次号,可空',
|
||||
`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_package_line` (`tenant_code`, `package_no`, `line_no`),
|
||||
KEY `idx_tenant_outbound_line` (`tenant_code`, `outbound_no`, `outbound_line_no`),
|
||||
CONSTRAINT `chk_package_item_qty` CHECK (`qty` > 0)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='包裹明细';
|
||||
@@ -0,0 +1,24 @@
|
||||
-- 表:wms_picking_task
|
||||
-- 用途:拣货任务。一次派给拣货人的任务,可来自波次或单张出库单。
|
||||
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
|
||||
-- 说明:短拣不把未拣数量自动改判为零库存,由应用层决定释放预占或留下异常。
|
||||
|
||||
CREATE TABLE `wms_picking_task` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
|
||||
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
|
||||
`picking_no` VARCHAR(64) NOT NULL COMMENT '拣货单号,租户内唯一',
|
||||
`warehouse_code` VARCHAR(32) NOT NULL COMMENT '仓库编码',
|
||||
`wave_no` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '波次号,单张出库拣货时为空',
|
||||
`status` VARCHAR(32) NOT NULL DEFAULT 'pending' COMMENT 'pending 待拣,picking 拣货中,picked 已拣完,short 短拣,cancelled 已取消',
|
||||
`assignee` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '拣货人 user_code',
|
||||
`started_at` DATETIME(3) NULL COMMENT '开始时间',
|
||||
`finished_at` DATETIME(3) NULL COMMENT '完成时间',
|
||||
`created_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_picking_no` (`tenant_code`, `picking_no`),
|
||||
KEY `idx_tenant_wh_status` (`tenant_code`, `warehouse_code`, `status`),
|
||||
KEY `idx_tenant_wave` (`tenant_code`, `wave_no`),
|
||||
KEY `idx_tenant_assignee` (`tenant_code`, `assignee`, `status`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='拣货任务';
|
||||
@@ -0,0 +1,25 @@
|
||||
-- 表:wms_picking_task_item
|
||||
-- 用途:拣货任务明细。按库位给出的应拣与实拣数量。
|
||||
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
|
||||
-- 说明:实拣确认时 reserved 转为 picked,并回写出库明细。按 pick_sequence 生成行序。
|
||||
|
||||
CREATE TABLE `wms_picking_task_item` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
|
||||
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
|
||||
`picking_no` VARCHAR(64) NOT NULL COMMENT '拣货单号',
|
||||
`line_no` INT UNSIGNED NOT NULL COMMENT '行号',
|
||||
`outbound_no` VARCHAR(64) NOT NULL COMMENT '出库单号',
|
||||
`allocation_no` VARCHAR(64) NOT NULL COMMENT '分配单号',
|
||||
`location_code` VARCHAR(64) NOT NULL COMMENT '库位编码',
|
||||
`sku_code` VARCHAR(64) NOT NULL COMMENT 'SKU 编码',
|
||||
`batch_no` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '批次号,可空',
|
||||
`qty_required` DECIMAL(16,4) NOT NULL DEFAULT 0.0000 COMMENT '应拣数量',
|
||||
`qty_picked` 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_picking_line` (`tenant_code`, `picking_no`, `line_no`),
|
||||
KEY `idx_tenant_outbound` (`tenant_code`, `outbound_no`),
|
||||
KEY `idx_tenant_allocation` (`tenant_code`, `allocation_no`),
|
||||
CONSTRAINT `chk_picking_qty` CHECK (`qty_required` > 0 AND `qty_picked` >= 0 AND `qty_picked` <= `qty_required`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='拣货任务明细';
|
||||
@@ -0,0 +1,22 @@
|
||||
-- 表:wms_wave
|
||||
-- 用途:波次。把多张出库单组成一次拣货。
|
||||
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
|
||||
-- 说明:一张出库单同一时刻只能属于一个未取消的波次,由应用层校验。
|
||||
|
||||
CREATE TABLE `wms_wave` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
|
||||
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
|
||||
`wave_no` VARCHAR(64) NOT NULL COMMENT '波次号,租户内唯一',
|
||||
`warehouse_code` VARCHAR(32) NOT NULL COMMENT '仓库编码',
|
||||
`wave_type` VARCHAR(32) NOT NULL DEFAULT 'batch' COMMENT 'single 一单一拣,batch 批量拣货',
|
||||
`status` VARCHAR(32) NOT NULL DEFAULT 'draft' COMMENT 'draft 草稿,released 已释放,picking 拣货中,completed 已完成,cancelled 已取消',
|
||||
`released_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_wave_no` (`tenant_code`, `wave_no`),
|
||||
KEY `idx_tenant_wh_status` (`tenant_code`, `warehouse_code`, `status`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='波次';
|
||||
@@ -0,0 +1,16 @@
|
||||
-- 表:wms_wave_outbound
|
||||
-- 用途:波次出库。波次包含的出库单。
|
||||
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
|
||||
-- 说明:取消波次后本行保留,用于追溯;重新组波时插入新波次的行。
|
||||
|
||||
CREATE TABLE `wms_wave_outbound` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
|
||||
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
|
||||
`wave_no` VARCHAR(64) NOT NULL COMMENT '波次号',
|
||||
`outbound_no` VARCHAR(64) 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_wave_outbound` (`tenant_code`, `wave_no`, `outbound_no`),
|
||||
KEY `idx_tenant_outbound` (`tenant_code`, `outbound_no`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='波次出库';
|
||||
Reference in New Issue
Block a user