-- ============================================
-- 拆分库存表为产品表和库存表
-- ============================================
-- 说明：将 lq_inventory 表拆分为 lq_product（产品表）和 lq_inventory（库存表）
-- 
-- 注意：此脚本只创建新表，不迁移数据
-- ============================================

-- ============================================
-- 1. 创建产品表（lq_product）
-- ============================================
CREATE TABLE IF NOT EXISTS `lq_product` (
  `F_Id` VARCHAR(50) NOT NULL COMMENT '产品ID',
  `F_ProductName` VARCHAR(200) NULL COMMENT '产品名称',
  `F_Price` DECIMAL(18,2) NULL DEFAULT 0 COMMENT '价格',
  `F_ProductCategory` VARCHAR(50) NULL COMMENT '产品类别',
  `F_DepartmentId` VARCHAR(50) NULL COMMENT '归属部门ID',
  `F_StandardUnit` VARCHAR(20) NULL COMMENT '标准单位',
  `F_OnShelfStatus` INT NULL DEFAULT 1 COMMENT '上架状态（1:上架 0:下架）',
  `F_StatisticsCategory` VARCHAR(50) NULL COMMENT '统计分类',
  `F_Warehouse` VARCHAR(100) NULL COMMENT '归属仓库',
  `F_UnitConversion` VARCHAR(200) NULL COMMENT '单位换算',
  `F_SupplierName` VARCHAR(200) NULL COMMENT '供应商名称',
  `F_ContractSignDate` DATETIME NULL COMMENT '合同签订日期',
  `F_ContractEndDate` DATETIME NULL COMMENT '合同结束日期',
  `F_Remark` VARCHAR(1000) NULL COMMENT '备注',
  `F_CreateUser` VARCHAR(50) NULL COMMENT '创建人ID',
  `F_CreateTime` DATETIME NULL COMMENT '创建时间',
  `F_UpdateUser` VARCHAR(50) NULL COMMENT '更新人ID',
  `F_UpdateTime` DATETIME NULL COMMENT '更新时间',
  PRIMARY KEY (`F_Id`),
  INDEX `idx_product_category` (`F_ProductCategory`) COMMENT '产品类别索引',
  INDEX `idx_department` (`F_DepartmentId`) COMMENT '部门索引',
  INDEX `idx_onshelf_status` (`F_OnShelfStatus`) COMMENT '上架状态索引'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='产品表';

-- ============================================
-- 2. 修改库存表结构（lq_inventory）
-- ============================================
-- 注意：MySQL不支持 IF NOT EXISTS 语法，需要先检查字段是否存在
-- 如果字段已存在，执行对应的ALTER语句会报错，可以忽略

-- 2.1 添加产品ID字段
-- 如果字段已存在，会报错，可以忽略
ALTER TABLE `lq_inventory` 
ADD COLUMN `F_ProductId` VARCHAR(50) NULL COMMENT '产品ID（关联产品表）' AFTER `F_Id`;

-- 2.2 添加新字段
-- 如果字段已存在，会报错，可以忽略
ALTER TABLE `lq_inventory` 
ADD COLUMN `F_StockInTime` DATETIME NULL COMMENT '入库时间' AFTER `F_Quantity`;

ALTER TABLE `lq_inventory` 
ADD COLUMN `F_ProductionDate` DATETIME NULL COMMENT '生产日期' AFTER `F_StockInTime`;

ALTER TABLE `lq_inventory` 
ADD COLUMN `F_ShelfLife` INT NULL COMMENT '保质期（天数）' AFTER `F_ProductionDate`;

ALTER TABLE `lq_inventory` 
ADD COLUMN `F_BatchNumber` VARCHAR(100) NULL COMMENT '批次号' AFTER `F_ShelfLife`;

-- 2.3 删除产品相关字段（可选，执行前请先备份数据）
-- 注意：如果字段不存在，会报错，可以忽略
-- ALTER TABLE `lq_inventory` DROP COLUMN `F_ProductName`;
-- ALTER TABLE `lq_inventory` DROP COLUMN `F_Price`;
-- ALTER TABLE `lq_inventory` DROP COLUMN `F_ProductCategory`;
-- ALTER TABLE `lq_inventory` DROP COLUMN `F_DepartmentId`;
-- ALTER TABLE `lq_inventory` DROP COLUMN `F_StandardUnit`;

-- 2.4 添加产品ID索引
-- 如果索引已存在，会报错，可以忽略
ALTER TABLE `lq_inventory` 
ADD INDEX `idx_product_id` (`F_ProductId`) COMMENT '产品ID索引';

-- ============================================
-- 注意事项
-- ============================================
-- 1. 此脚本只创建新表，不迁移数据
-- 2. 如果需要删除旧字段，请先备份数据
-- 3. 建议在测试环境先验证
-- 4. 执行ALTER语句前，请确认表结构
