init
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
-- 表:wms_batch
|
||||
-- 用途:批次。启用批次或效期管理的 SKU 的批次档案。
|
||||
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
|
||||
-- 说明:不管批次的 SKU 在库存行上使用空批次号,不强制建本表记录。
|
||||
|
||||
CREATE TABLE `wms_batch` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
|
||||
`tenant_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 COMMENT '批次号,SKU 内唯一',
|
||||
`production_date` DATE NULL COMMENT '生产日期',
|
||||
`expiry_date` DATE NULL COMMENT '失效日期',
|
||||
`supplier_code` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '供应商编码,可空',
|
||||
`supplier_batch_no` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '供应商批次号',
|
||||
`inbound_no` VARCHAR(64) 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_batch` (`tenant_code`, `sku_code`, `batch_no`),
|
||||
KEY `idx_tenant_expiry` (`tenant_code`, `expiry_date`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='批次';
|
||||
@@ -0,0 +1,32 @@
|
||||
-- 表:wms_inventory
|
||||
-- 用途:库存余额。某个货主、仓库、库位、SKU、批次上的数量结果。
|
||||
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
|
||||
-- 说明:余额是结果。任何数量变化必须与 wms_stock_log 处于同一事务。扣减使用带数量条件的原子 UPDATE(affected rows = 0 即库存不足),禁止先 SELECT 再在应用里计算后 UPDATE。多行更新按 id 升序加锁。库位上的待检、待上架库存放在收货或质检库位,靠库位策略排除出可分配范围,不另设数量桶。
|
||||
|
||||
CREATE TABLE `wms_inventory` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
|
||||
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
|
||||
`warehouse_code` VARCHAR(32) NOT NULL COMMENT '仓库编码',
|
||||
`customer_code` VARCHAR(32) NOT NULL COMMENT '货主编码',
|
||||
`location_code` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '库位编码;在途库存使用空字符串,表示仓库级',
|
||||
`sku_code` VARCHAR(64) NOT NULL COMMENT 'SKU 编码',
|
||||
`batch_no` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '批次号,不管批次时为空字符串',
|
||||
`available_qty` DECIMAL(16,4) NOT NULL DEFAULT 0.0000 COMMENT '可用数量',
|
||||
`reserved_qty` DECIMAL(16,4) NOT NULL DEFAULT 0.0000 COMMENT '预占数量,已分配给出库尚未拣货',
|
||||
`picked_qty` DECIMAL(16,4) NOT NULL DEFAULT 0.0000 COMMENT '已拣数量,已拣下尚未出库',
|
||||
`hold_qty` DECIMAL(16,4) NOT NULL DEFAULT 0.0000 COMMENT '冻结数量',
|
||||
`damaged_qty` DECIMAL(16,4) NOT NULL DEFAULT 0.0000 COMMENT '残损数量',
|
||||
`in_transit_qty` DECIMAL(16,4) NOT NULL DEFAULT 0.0000 COMMENT '在途数量,只出现在库位编码为空的行',
|
||||
`version` INT UNSIGNED NOT NULL DEFAULT 0 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_inventory_bucket` (`tenant_code`, `warehouse_code`, `customer_code`, `location_code`, `sku_code`, `batch_no`),
|
||||
KEY `idx_tenant_wh_sku` (`tenant_code`, `warehouse_code`, `sku_code`),
|
||||
KEY `idx_tenant_sku` (`tenant_code`, `sku_code`),
|
||||
KEY `idx_tenant_wh_location` (`tenant_code`, `warehouse_code`, `location_code`),
|
||||
CONSTRAINT `chk_inventory_qty_nonneg` CHECK (
|
||||
`available_qty` >= 0 AND `reserved_qty` >= 0 AND `picked_qty` >= 0
|
||||
AND `hold_qty` >= 0 AND `damaged_qty` >= 0 AND `in_transit_qty` >= 0
|
||||
)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='库存余额';
|
||||
@@ -0,0 +1,18 @@
|
||||
-- 表:wms_inventory_alert
|
||||
-- 用途:库存预警规则。SKU 在仓库的最低可用量阈值。
|
||||
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
|
||||
-- 说明:本表只存规则。预警扫描由定时任务完成,不在这里存每次预警记录。
|
||||
|
||||
CREATE TABLE `wms_inventory_alert` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
|
||||
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
|
||||
`warehouse_code` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '仓库编码,空表示该货主全仓合计',
|
||||
`customer_code` VARCHAR(32) NOT NULL COMMENT '货主编码',
|
||||
`sku_code` VARCHAR(64) NOT NULL COMMENT 'SKU 编码',
|
||||
`min_available_qty` DECIMAL(16,4) NOT NULL DEFAULT 0.0000 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_alert_rule` (`tenant_code`, `warehouse_code`, `customer_code`, `sku_code`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='库存预警规则';
|
||||
@@ -0,0 +1,21 @@
|
||||
-- 表:wms_inventory_hold
|
||||
-- 用途:库存冻结单。把可用库存转为冻结的业务单据。
|
||||
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
|
||||
-- 说明:frozen 时 available 转为 hold;released 时反向转回。两次变化都写流水,biz_type 分别为 freeze、unfreeze。
|
||||
|
||||
CREATE TABLE `wms_inventory_hold` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
|
||||
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
|
||||
`hold_no` VARCHAR(64) NOT NULL COMMENT '冻结单号,租户内唯一',
|
||||
`warehouse_code` VARCHAR(32) NOT NULL COMMENT '仓库编码',
|
||||
`status` VARCHAR(32) NOT NULL DEFAULT 'draft' COMMENT 'draft 草稿,frozen 已冻结,released 已解冻,cancelled 已取消',
|
||||
`reason` VARCHAR(255) 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_hold_no` (`tenant_code`, `hold_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,22 @@
|
||||
-- 表:wms_inventory_hold_item
|
||||
-- 用途:库存冻结明细。冻结单的库位与数量。
|
||||
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
|
||||
-- 说明:解冻按本行数量执行,不部分解冻;需要部分解冻时另开冻结单。
|
||||
|
||||
CREATE TABLE `wms_inventory_hold_item` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
|
||||
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
|
||||
`hold_no` VARCHAR(64) NOT NULL COMMENT '冻结单号',
|
||||
`line_no` INT UNSIGNED 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 '冻结数量',
|
||||
`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_hold_line` (`tenant_code`, `hold_no`, `line_no`),
|
||||
KEY `idx_tenant_sku` (`tenant_code`, `sku_code`),
|
||||
CONSTRAINT `chk_hold_qty_positive` CHECK (`qty` > 0)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='库存冻结明细';
|
||||
@@ -0,0 +1,24 @@
|
||||
-- 表:wms_stock_adjustment
|
||||
-- 用途:库存调整单。盘盈盘亏、报损等人工调整。
|
||||
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
|
||||
-- 说明:只有 completed 时改余额并写流水,biz_type=adjust 或 stocktake。完成后不可修改。
|
||||
|
||||
CREATE TABLE `wms_stock_adjustment` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
|
||||
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
|
||||
`adjustment_no` VARCHAR(64) NOT NULL COMMENT '调整单号,租户内唯一',
|
||||
`warehouse_code` VARCHAR(32) NOT NULL COMMENT '仓库编码',
|
||||
`status` VARCHAR(32) NOT NULL DEFAULT 'draft' COMMENT 'draft 草稿,completed 已完成,cancelled 已取消',
|
||||
`reason_type` VARCHAR(32) NOT NULL COMMENT 'gain 盘盈,loss 盘亏,damage 转残,other 其他',
|
||||
`stocktake_no` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '来源盘点单号,手工调整为空',
|
||||
`reason` VARCHAR(255) 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_adjustment_no` (`tenant_code`, `adjustment_no`),
|
||||
KEY `idx_tenant_wh_status` (`tenant_code`, `warehouse_code`, `status`),
|
||||
KEY `idx_tenant_stocktake` (`tenant_code`, `stocktake_no`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='库存调整单';
|
||||
@@ -0,0 +1,24 @@
|
||||
-- 表:wms_stock_adjustment_item
|
||||
-- 用途:库存调整明细。调整的数量桶与变化量。
|
||||
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
|
||||
-- 说明:草稿阶段不写 qty_before/qty_after。完成时以当时余额为准回填,并受非负约束。
|
||||
|
||||
CREATE TABLE `wms_stock_adjustment_item` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
|
||||
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
|
||||
`adjustment_no` VARCHAR(64) NOT NULL COMMENT '调整单号',
|
||||
`line_no` INT UNSIGNED 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 '批次号,可空',
|
||||
`bucket` VARCHAR(32) NOT NULL COMMENT '被调整的数量桶,取值同 wms_stock_log.bucket',
|
||||
`qty_change` DECIMAL(16,4) NOT NULL DEFAULT 0.0000 COMMENT '变化量,可正可负',
|
||||
`qty_before` DECIMAL(16,4) NULL COMMENT '完成时回填的变化前数量',
|
||||
`qty_after` 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_adjustment_line` (`tenant_code`, `adjustment_no`, `line_no`),
|
||||
KEY `idx_tenant_sku` (`tenant_code`, `sku_code`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='库存调整明细';
|
||||
@@ -0,0 +1,35 @@
|
||||
-- 表:wms_stock_log
|
||||
-- 用途:库存流水。库存变化的事实记录,只能追加。
|
||||
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
|
||||
-- 说明:一次业务动作跨两个数量桶或两个库位时写多行,共用 biz_type 与 biz_no。例如预占写 available 减少和 reserved 增加;上架写移出库位与移入库位各一行,桶仍是 available_qty。打包不改变数量桶。禁止 UPDATE 与 DELETE。
|
||||
|
||||
CREATE TABLE `wms_stock_log` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
|
||||
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
|
||||
`stock_log_no` VARCHAR(64) NOT NULL COMMENT '流水号,租户内唯一',
|
||||
`idempotency_key` VARCHAR(128) NOT NULL COMMENT '幂等键,同一租户重复写入必须被唯一约束拒绝',
|
||||
`warehouse_code` VARCHAR(32) NOT NULL COMMENT '仓库编码',
|
||||
`customer_code` VARCHAR(32) NOT NULL COMMENT '货主编码',
|
||||
`location_code` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '库位编码',
|
||||
`sku_code` VARCHAR(64) NOT NULL COMMENT 'SKU 编码',
|
||||
`batch_no` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '批次号',
|
||||
`inventory_id` BIGINT UNSIGNED NOT NULL COMMENT '余额行内部主键,仅用于对账,业务关联以编码为准',
|
||||
`bucket` VARCHAR(32) NOT NULL COMMENT '变化的数量桶:available_qty、reserved_qty、picked_qty、hold_qty、damaged_qty、in_transit_qty',
|
||||
`biz_type` VARCHAR(32) NOT NULL COMMENT '业务类型:inbound_receipt、inbound_putaway、reserve、release、pick、ship、adjust、stocktake、freeze、unfreeze、return_restock、scrap、transfer',
|
||||
`biz_no` VARCHAR(64) NOT NULL COMMENT '业务单号',
|
||||
`qty_before` DECIMAL(16,4) NOT NULL COMMENT '变化前数量',
|
||||
`qty_change` DECIMAL(16,4) NOT NULL COMMENT '变化量,入库为正、出库为负',
|
||||
`qty_after` DECIMAL(16,4) NOT NULL COMMENT '变化后数量',
|
||||
`request_id` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '请求 ID',
|
||||
`occurred_at` DATETIME(3) NOT 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_stock_log_no` (`tenant_code`, `stock_log_no`),
|
||||
UNIQUE KEY `uk_tenant_idempotency` (`tenant_code`, `idempotency_key`),
|
||||
KEY `idx_tenant_sku_time` (`tenant_code`, `warehouse_code`, `sku_code`, `occurred_at`),
|
||||
KEY `idx_tenant_biz` (`tenant_code`, `biz_type`, `biz_no`),
|
||||
KEY `idx_inventory_id` (`inventory_id`),
|
||||
CONSTRAINT `chk_stock_log_balance` CHECK (`qty_after` = `qty_before` + `qty_change`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='库存流水';
|
||||
@@ -0,0 +1,21 @@
|
||||
-- 表:wms_stocktake
|
||||
-- 用途:盘点单。仓库盘点任务。
|
||||
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
|
||||
-- 说明:进入 counting 时按范围对库位加锁定。确认差异后生成 wms_stock_adjustment,不直接改余额。
|
||||
|
||||
CREATE TABLE `wms_stocktake` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
|
||||
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
|
||||
`stocktake_no` VARCHAR(64) NOT NULL COMMENT '盘点单号,租户内唯一',
|
||||
`warehouse_code` VARCHAR(32) NOT NULL COMMENT '仓库编码',
|
||||
`zone_code` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '库区编码,空表示全仓',
|
||||
`status` VARCHAR(32) NOT NULL DEFAULT 'draft' COMMENT 'draft 草稿,counting 盘点中,confirming 待确认,completed 已完成,cancelled 已取消',
|
||||
`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_stocktake_no` (`tenant_code`, `stocktake_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,24 @@
|
||||
-- 表:wms_stocktake_item
|
||||
-- 用途:盘点明细。系统数量与实盘数量。
|
||||
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
|
||||
-- 说明:system_qty 是开盘快照。确认前若发生其他库存变化,由应用层拦截或重算,不在盘点中途覆盖快照。
|
||||
|
||||
CREATE TABLE `wms_stocktake_item` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
|
||||
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
|
||||
`stocktake_no` VARCHAR(64) NOT NULL COMMENT '盘点单号',
|
||||
`line_no` INT UNSIGNED 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 '批次号,可空',
|
||||
`system_qty` DECIMAL(16,4) NOT NULL DEFAULT 0.0000 COMMENT '快照时的可用数量',
|
||||
`counted_qty` DECIMAL(16,4) NULL COMMENT '实盘数量,未盘为空',
|
||||
`diff_qty` DECIMAL(16,4) NULL COMMENT '实盘减系统,确认时回填',
|
||||
`count_status` VARCHAR(32) NOT NULL DEFAULT 'pending' COMMENT 'pending 待盘,counted 已盘',
|
||||
`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_stocktake_line` (`tenant_code`, `stocktake_no`, `line_no`),
|
||||
KEY `idx_tenant_location` (`tenant_code`, `location_code`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='盘点明细';
|
||||
Reference in New Issue
Block a user