-- ============================================
-- 创建清洗管理相关表
-- ============================================
-- 说明：包含门店消耗品库存表、清洗商表、清洗流水表
-- ============================================

-- ============================================
-- 1. 创建门店消耗品库存表（lq_store_consumable_inventory）
-- ============================================
CREATE TABLE IF NOT EXISTS `lq_store_consumable_inventory` (
  `F_Id` VARCHAR(50) NOT NULL COMMENT '主键ID',
  `F_StoreId` VARCHAR(50) NULL COMMENT '门店ID（关联lq_mdxx.F_Id）',
  `F_ProductType` VARCHAR(50) NULL COMMENT '产品类型（枚举：毛巾、垫子等）',
  `F_Quantity` INT NULL DEFAULT 0 COMMENT '当前库存数量',
  `F_IsEffective` INT NULL DEFAULT 1 COMMENT '是否有效（1:有效 0:无效）',
  `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_store_id` (`F_StoreId`) COMMENT '门店ID索引',
  INDEX `idx_product_type` (`F_ProductType`) COMMENT '产品类型索引',
  INDEX `idx_store_product` (`F_StoreId`, `F_ProductType`) COMMENT '门店+产品类型联合索引'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='门店消耗品库存表';

-- ============================================
-- 2. 创建清洗商表（lq_laundry_supplier）
-- ============================================
CREATE TABLE IF NOT EXISTS `lq_laundry_supplier` (
  `F_Id` VARCHAR(50) NOT NULL COMMENT '主键ID',
  `F_SupplierName` VARCHAR(200) NULL COMMENT '清洗商名称',
  `F_ProductType` VARCHAR(50) NULL COMMENT '产品类型（枚举：毛巾、垫子等）',
  `F_LaundryPrice` DECIMAL(18,2) NULL DEFAULT 0 COMMENT '清洗价格（当前价格）',
  `F_Remark` VARCHAR(1000) NULL COMMENT '备注',
  `F_IsEffective` INT NULL DEFAULT 1 COMMENT '是否有效（1:有效 0:无效）',
  `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_supplier_name` (`F_SupplierName`) COMMENT '清洗商名称索引',
  INDEX `idx_product_type` (`F_ProductType`) COMMENT '产品类型索引',
  INDEX `idx_supplier_product` (`F_SupplierName`, `F_ProductType`) COMMENT '清洗商+产品类型联合索引'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='清洗商表';

-- ============================================
-- 3. 创建清洗流水表（lq_laundry_flow）
-- ============================================
CREATE TABLE IF NOT EXISTS `lq_laundry_flow` (
  `F_Id` VARCHAR(50) NOT NULL COMMENT '主键ID（送出时作为批次号）',
  `F_FlowType` INT NULL DEFAULT 0 COMMENT '流水类型（0:送出 1:送回）',
  `F_BatchNumber` VARCHAR(50) NULL COMMENT '批次号（送出时=F_Id，送回时=对应的送出记录的F_Id）',
  `F_StoreId` VARCHAR(50) NULL COMMENT '门店ID（关联lq_mdxx.F_Id）',
  `F_ProductType` VARCHAR(50) NULL COMMENT '产品类型（枚举：毛巾、垫子等）',
  `F_LaundrySupplierId` VARCHAR(50) NULL COMMENT '清洗商ID（关联lq_laundry_supplier.F_Id）',
  `F_Quantity` INT NULL DEFAULT 0 COMMENT '数量',
  `F_LaundryPrice` DECIMAL(18,2) NULL DEFAULT 0 COMMENT '清洗单价（记录历史价格）',
  `F_TotalPrice` DECIMAL(18,2) NULL DEFAULT 0 COMMENT '总费用（数量 × 单价）',
  `F_Remark` VARCHAR(1000) NULL COMMENT '备注（可说明差异原因，如损坏、丢失等）',
  `F_IsEffective` INT NULL DEFAULT 1 COMMENT '是否有效（1:有效 0:无效）',
  `F_CreateUser` VARCHAR(50) NULL COMMENT '创建人ID',
  `F_CreateTime` DATETIME NULL COMMENT '创建时间',
  PRIMARY KEY (`F_Id`),
  INDEX `idx_flow_type` (`F_FlowType`) COMMENT '流水类型索引',
  INDEX `idx_batch_number` (`F_BatchNumber`) COMMENT '批次号索引',
  INDEX `idx_store_id` (`F_StoreId`) COMMENT '门店ID索引',
  INDEX `idx_product_type` (`F_ProductType`) COMMENT '产品类型索引',
  INDEX `idx_supplier_id` (`F_LaundrySupplierId`) COMMENT '清洗商ID索引',
  INDEX `idx_create_time` (`F_CreateTime`) COMMENT '创建时间索引',
  INDEX `idx_store_month` (`F_StoreId`, `F_CreateTime`) COMMENT '门店+时间联合索引（用于月度统计）'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='清洗流水表';

