USE cattletrade;

-- 创建中转仓管理相关表
-- 1. 中转仓表（warehouse）
-- 2. 进仓表（warehouse_in）
-- 3. 出仓表（warehouse_out）

-- ============================================
-- 1. 中转仓表（warehouse）
-- ============================================
CREATE TABLE IF NOT EXISTS `warehouse` (
    `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `warehouse_name` VARCHAR(100) NOT NULL COMMENT '中转仓名称',
    `warehouse_code` VARCHAR(50) NOT NULL COMMENT '中转仓编码',
    `address` VARCHAR(255) NOT NULL COMMENT '地址',
    `longitude` VARCHAR(50) DEFAULT NULL COMMENT '经度',
    `latitude` VARCHAR(50) DEFAULT NULL COMMENT '纬度',
    `capacity` INT(11) NOT NULL COMMENT '容量（可存储牛只数量）',
    `manager_name` VARCHAR(50) DEFAULT NULL COMMENT '负责人姓名',
    `manager_mobile` VARCHAR(20) DEFAULT NULL COMMENT '负责人联系电话',
    `status` TINYINT(1) DEFAULT 1 COMMENT '状态：1-启用，0-禁用',
    `remark` TEXT COMMENT '备注',
    `create_time` DATETIME DEFAULT NULL COMMENT '创建时间',
    `update_time` DATETIME DEFAULT NULL COMMENT '更新时间',
    `created_by` INT(11) DEFAULT NULL COMMENT '创建人ID',
    `updated_by` INT(11) DEFAULT NULL COMMENT '更新人ID',
    `is_delete` TINYINT(1) DEFAULT 0 COMMENT '逻辑删除：0-未删除，1-已删除',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_warehouse_code` (`warehouse_code`),
    KEY `idx_status` (`status`),
    KEY `idx_is_delete` (`is_delete`),
    KEY `idx_warehouse_name` (`warehouse_name`),
    KEY `idx_create_time` (`create_time`),
    KEY `idx_status_is_delete` (`status`, `is_delete`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='中转仓表';

-- ============================================
-- 2. 进仓表（warehouse_in）
-- ============================================
CREATE TABLE IF NOT EXISTS `warehouse_in` (
    `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `in_number` VARCHAR(50) NOT NULL COMMENT '进仓单号',
    `warehouse_id` INT(11) NOT NULL COMMENT '中转仓ID',
    `order_id` VARCHAR(100) DEFAULT NULL COMMENT '订单ID（多个订单用逗号分隔）',
    `delivery_id` INT(11) DEFAULT NULL COMMENT '运送清单ID',
    `source_location` VARCHAR(255) DEFAULT NULL COMMENT '来源地',
    `source_lon` VARCHAR(50) DEFAULT NULL COMMENT '来源地经度',
    `source_lat` VARCHAR(50) DEFAULT NULL COMMENT '来源地纬度',
    `cattle_count` INT(11) NOT NULL COMMENT '牛只数量',
    `weight` DECIMAL(10,2) DEFAULT NULL COMMENT '重量（公斤）',
    `in_time` DATETIME NOT NULL COMMENT '进仓时间',
    `photos` TEXT COMMENT '照片URL（多个用逗号分隔）',
    `videos` TEXT COMMENT '视频URL（多个用逗号分隔）',
    `remark` TEXT COMMENT '备注',
    `status` TINYINT(1) DEFAULT 1 COMMENT '状态：1-待进仓，2-已进仓，3-已出仓',
    `create_time` DATETIME DEFAULT NULL COMMENT '创建时间',
    `update_time` DATETIME DEFAULT NULL COMMENT '更新时间',
    `created_by` INT(11) DEFAULT NULL COMMENT '创建人ID',
    `updated_by` INT(11) DEFAULT NULL COMMENT '更新人ID',
    `is_delete` TINYINT(1) DEFAULT 0 COMMENT '逻辑删除：0-未删除，1-已删除',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_in_number` (`in_number`),
    KEY `idx_warehouse_id` (`warehouse_id`),
    KEY `idx_delivery_id` (`delivery_id`),
    KEY `idx_in_time` (`in_time`),
    KEY `idx_is_delete` (`is_delete`),
    KEY `idx_status` (`status`),
    KEY `idx_create_time` (`create_time`),
    KEY `idx_warehouse_id_status` (`warehouse_id`, `status`),
    KEY `idx_is_delete_create_time` (`is_delete`, `create_time`),
    CONSTRAINT `fk_warehouse_in_warehouse` FOREIGN KEY (`warehouse_id`) REFERENCES `warehouse` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='进仓表';

-- ============================================
-- 3. 出仓表（warehouse_out）
-- ============================================
CREATE TABLE IF NOT EXISTS `warehouse_out` (
    `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `out_number` VARCHAR(50) NOT NULL COMMENT '出仓单号',
    `warehouse_id` INT(11) NOT NULL COMMENT '中转仓ID',
    `warehouse_in_id` INT(11) DEFAULT NULL COMMENT '进仓记录ID（可选）',
    `order_id` VARCHAR(100) DEFAULT NULL COMMENT '订单ID（多个订单用逗号分隔）',
    `delivery_id` INT(11) DEFAULT NULL COMMENT '运送清单ID',
    `destination_location` VARCHAR(255) DEFAULT NULL COMMENT '目的地',
    `destination_lon` VARCHAR(50) DEFAULT NULL COMMENT '目的地经度',
    `destination_lat` VARCHAR(50) DEFAULT NULL COMMENT '目的地纬度',
    `cattle_count` INT(11) NOT NULL COMMENT '牛只数量',
    `weight` DECIMAL(10,2) DEFAULT NULL COMMENT '重量（公斤）',
    `out_time` DATETIME NOT NULL COMMENT '出仓时间',
    `photos` TEXT COMMENT '照片URL（多个用逗号分隔）',
    `videos` TEXT COMMENT '视频URL（多个用逗号分隔）',
    `remark` TEXT COMMENT '备注',
    `status` TINYINT(1) DEFAULT 1 COMMENT '状态：1-待出仓，2-已出仓',
    `create_time` DATETIME DEFAULT NULL COMMENT '创建时间',
    `update_time` DATETIME DEFAULT NULL COMMENT '更新时间',
    `created_by` INT(11) DEFAULT NULL COMMENT '创建人ID',
    `updated_by` INT(11) DEFAULT NULL COMMENT '更新人ID',
    `is_delete` TINYINT(1) DEFAULT 0 COMMENT '逻辑删除：0-未删除，1-已删除',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_out_number` (`out_number`),
    KEY `idx_warehouse_id` (`warehouse_id`),
    KEY `idx_warehouse_in_id` (`warehouse_in_id`),
    KEY `idx_delivery_id` (`delivery_id`),
    KEY `idx_out_time` (`out_time`),
    KEY `idx_is_delete` (`is_delete`),
    KEY `idx_status` (`status`),
    KEY `idx_create_time` (`create_time`),
    KEY `idx_warehouse_id_status` (`warehouse_id`, `status`),
    KEY `idx_is_delete_create_time` (`is_delete`, `create_time`),
    CONSTRAINT `fk_warehouse_out_warehouse` FOREIGN KEY (`warehouse_id`) REFERENCES `warehouse` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE,
    CONSTRAINT `fk_warehouse_out_warehouse_in` FOREIGN KEY (`warehouse_in_id`) REFERENCES `warehouse_in` (`id`) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='出仓表';

