-- 设备商品库存表
CREATE TABLE IF NOT EXISTS `t_device_inventory` (
    `id` BIGINT NOT NULL COMMENT '主键ID(雪花算法生成)',
    `device_id` VARCHAR(50) NOT NULL COMMENT '设备ID（SN号）',
    `product_id` BIGINT NOT NULL COMMENT '商品ID（本地）',
    `product_code` VARCHAR(50) DEFAULT NULL COMMENT '商品编码（哈哈平台code）',
    `product_name` VARCHAR(200) DEFAULT NULL COMMENT '商品名称（冗余）',
    `stock` INT NOT NULL DEFAULT 0 COMMENT '当前库存数量',
    `shelf_num` INT DEFAULT NULL COMMENT '所在货架层号',
    `position` VARCHAR(20) DEFAULT NULL COMMENT '货道位置（left/right）',
    `warning_threshold` INT DEFAULT 5 COMMENT '库存预警阈值',
    `standard_stock` INT DEFAULT 0 COMMENT '标准库存（来自层模版汇总）',
    `last_restock_time` DATETIME DEFAULT NULL COMMENT '最后补货时间',
    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `version` INT DEFAULT 0 COMMENT '乐观锁版本号',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_device_product` (`device_id`, `product_id`),
    INDEX `idx_device_id` (`device_id`),
    INDEX `idx_product_id` (`product_id`),
    INDEX `idx_stock` (`stock`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='设备商品库存表';

-- 库存变动日志表
CREATE TABLE IF NOT EXISTS `t_inventory_log` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `device_id` VARCHAR(50) NOT NULL COMMENT '设备ID',
    `product_id` BIGINT NOT NULL COMMENT '商品ID',
    `product_code` VARCHAR(50) DEFAULT NULL COMMENT '商品编码',
    `product_name` VARCHAR(200) DEFAULT NULL COMMENT '商品名称',
    `change_type` TINYINT NOT NULL COMMENT '变动类型：1上货增加，2销售减少，3调整增加，4调整减少，5盘点调整',
    `change_quantity` INT NOT NULL COMMENT '变动数量（正数增加，负数减少）',
    `before_stock` INT NOT NULL COMMENT '变动前库存',
    `after_stock` INT NOT NULL COMMENT '变动后库存',
    `order_id` VARCHAR(50) DEFAULT NULL COMMENT '关联订单号（销售时）',
    `activity_id` VARCHAR(50) DEFAULT NULL COMMENT '关联活动号',
    `operator_id` BIGINT DEFAULT NULL COMMENT '操作人ID',
    `operator_name` VARCHAR(100) DEFAULT NULL COMMENT '操作人名称',
    `remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    PRIMARY KEY (`id`),
    INDEX `idx_device_id` (`device_id`),
    INDEX `idx_product_id` (`product_id`),
    INDEX `idx_change_type` (`change_type`),
    INDEX `idx_create_time` (`create_time`),
    INDEX `idx_order_id` (`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='库存变动日志表';

-- 上货记录表
CREATE TABLE IF NOT EXISTS `t_stock_record` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `device_id` VARCHAR(50) NOT NULL COMMENT '设备ID',
    `activity_id` VARCHAR(50) DEFAULT NULL COMMENT '哈哈平台活动号',
    `stock_type` TINYINT DEFAULT 1 COMMENT '类型：1上货，2补货',
    `stocker_id` BIGINT DEFAULT NULL COMMENT '上货员ID',
    `stocker_name` VARCHAR(100) DEFAULT NULL COMMENT '上货员名称',
    `stocker_phone` VARCHAR(20) DEFAULT NULL COMMENT '上货员电话',
    `total_items` INT DEFAULT 0 COMMENT '上货商品种类数',
    `total_quantity` INT DEFAULT 0 COMMENT '上货总数量',
    `status` TINYINT DEFAULT 1 COMMENT '状态：1进行中，2已完成，3已取消',
    `start_time` DATETIME DEFAULT NULL COMMENT '开始时间',
    `end_time` DATETIME DEFAULT NULL COMMENT '结束时间',
    `remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    PRIMARY KEY (`id`),
    INDEX `idx_device_id` (`device_id`),
    INDEX `idx_stocker_id` (`stocker_id`),
    INDEX `idx_create_time` (`create_time`),
    INDEX `idx_activity_id` (`activity_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='上货记录表';

-- 上货记录明细表
CREATE TABLE IF NOT EXISTS `t_stock_record_item` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `record_id` BIGINT NOT NULL COMMENT '上货记录ID',
    `device_id` VARCHAR(50) NOT NULL COMMENT '设备ID',
    `product_id` BIGINT NOT NULL COMMENT '商品ID',
    `product_code` VARCHAR(50) DEFAULT NULL COMMENT '商品编码',
    `product_name` VARCHAR(200) DEFAULT NULL COMMENT '商品名称',
    `shelf_num` INT DEFAULT NULL COMMENT '货架层号',
    `quantity` INT NOT NULL COMMENT '上货数量',
    `before_stock` INT DEFAULT 0 COMMENT '上货前库存',
    `after_stock` INT DEFAULT 0 COMMENT '上货后库存',
    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    PRIMARY KEY (`id`),
    INDEX `idx_record_id` (`record_id`),
    INDEX `idx_device_product` (`device_id`, `product_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='上货记录明细表';

-- 上货员表
CREATE TABLE IF NOT EXISTS `t_stocker` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `name` VARCHAR(100) NOT NULL COMMENT '姓名',
    `phone` VARCHAR(20) DEFAULT NULL COMMENT '电话',
    `employee_id` VARCHAR(50) DEFAULT NULL COMMENT '工号',
    `status` TINYINT DEFAULT 1 COMMENT '状态：1启用，0禁用',
    `total_tasks` INT DEFAULT 0 COMMENT '累计任务数',
    `last_task_time` DATETIME DEFAULT NULL COMMENT '最后任务时间',
    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    PRIMARY KEY (`id`),
    INDEX `idx_phone` (`phone`),
    INDEX `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='上货员表';

-- ==================== 补货员新表（v2 独立账号体系） ====================

-- 补货员表（替代 t_stocker，独立账号体系）
CREATE TABLE IF NOT EXISTS `t_replenisher` (
    `id` BIGINT NOT NULL COMMENT '雪花主键',
    `name` VARCHAR(50) NOT NULL COMMENT '姓名',
    `phone` VARCHAR(20) DEFAULT NULL COMMENT '手机号',
    `employee_id` VARCHAR(50) DEFAULT NULL COMMENT '工号',
    `wechat_openid` VARCHAR(100) DEFAULT NULL COMMENT '微信OpenID（扫码绑定时回填）',
    `avatar` VARCHAR(500) DEFAULT NULL COMMENT '头像',
    `status` TINYINT DEFAULT 1 COMMENT '状态：1-启用 0-禁用',
    `total_tasks` INT DEFAULT 0 COMMENT '累计任务数',
    `last_task_time` DATETIME DEFAULT NULL COMMENT '最后任务时间',
    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    PRIMARY KEY (`id`),
    INDEX `idx_phone` (`phone`),
    INDEX `idx_status` (`status`),
    INDEX `idx_wechat_openid` (`wechat_openid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='补货员表';

-- 补货员-设备关联表
CREATE TABLE IF NOT EXISTS `t_replenisher_device` (
    `id` BIGINT NOT NULL COMMENT '雪花主键',
    `replenisher_id` BIGINT NOT NULL COMMENT '补货员ID',
    `device_id` VARCHAR(50) NOT NULL COMMENT '设备SN号',
    `source` VARCHAR(20) DEFAULT 'MANUAL' COMMENT '绑定来源：MANUAL-手动，QR-扫码绑定，SHOP_INHERIT-门店继承',
    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_replenisher_device` (`replenisher_id`, `device_id`),
    INDEX `idx_device_id` (`device_id`),
    INDEX `idx_replenisher_id` (`replenisher_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='补货员-设备关联表';

-- ==================== 迁移脚本（已存在的数据库执行） ====================

-- 添加 standard_stock 字段（标准库存，来自层模版汇总）
ALTER TABLE `t_device_inventory` ADD COLUMN IF NOT EXISTS `standard_stock` INT DEFAULT 0 COMMENT '标准库存（来自层模版汇总）' AFTER `warning_threshold`;
