import { requestClient } from '#/api/request';

export namespace ManagementCockpitApi {
  /** 通用名称-数量分布项 */
  export interface NameCountItem {
    name: string; // 名称（仓库/品种/状态/经销商/省份/渠道等）
    count: number; // 数量
  }

  /** 按日数量趋势项 */
  export interface DailyCountItem {
    date: string; // 日期 yyyy-MM-dd
    count: number; // 数量
  }

  /** 质检指标均值项 */
  export interface IndicatorAvgItem {
    indicatorCode: string; // 指标编码
    indicatorName: string; // 指标名称（纯度/净度/发芽率/水分）
    checkCount: number; // 检验次数
    averageValue: number; // 指标平均值
    passRate: number; // 指标合格率（%）
  }

  /** 五维度汇总统计 */
  export interface Summary {
    // 生产
    batchTotal: number; // 批次总数
    batchDraft: number; // 草稿批次
    batchProducing: number; // 生产中批次
    batchFinished: number; // 已完成批次
    batchCanceled: number; // 已作废批次
    bagCodeTotal: number; // 袋码总数
    bagCodeGenerated: number; // 已生成袋码
    bagCodePrinted: number; // 已导出印刷袋码
    bagCodeCanceled: number; // 已作废袋码
    palletTotal: number; // 托盘码总数
    todayInboundBagCount: number; // 今日扫码入库袋数
    // 质检
    qualityTotal: number; // 检验记录总数
    qualityPending: number; // 处理中
    qualityPass: number; // 合格
    qualityFail: number; // 不合格
    qualityPassRate: number; // 检验合格率（%）
    // 库存
    stockTotal: number; // 当前库存总量
    stockTemporary: number; // 暂存库存量
    stockQualified: number; // 合格库存量
    stockOutbound: number; // 已出库数量
    lowStockCount: number; // 低库存预警数
    // 出库
    outboundOrderTotal: number; // 出库单总数
    outboundQuantityTotal: number; // 出库总量
    todayOutboundQuantity: number; // 今日出库量
    // 追溯
    scanTotal: number; // 扫码总数
    todayScanCount: number; // 今日扫码数
    scanSuccessCount: number; // 扫码成功数
    crossRegionWarningTotal: number; // 窜货预警总数
    crossRegionPendingCount: number; // 待处理窜货预警数
  }

  /** 生产趋势项 */
  export interface ProductionTrendItem {
    date: string;
    batchCount: number; // 新增批次
    bagCodeCount: number; // 新增袋码
    palletCount: number; // 新增托盘
    inboundBagQuantity: number; // 扫码入库袋数
  }

  /** 质检维度统计 */
  export interface QualityStatistics {
    resultDistribution: NameCountItem[]; // 检验结果分布
    indicatorList: IndicatorAvgItem[]; // 四项指标均值
  }

  /** 库存维度统计 */
  export interface InventoryStatistics {
    warehouseDistribution: NameCountItem[]; // 按仓库
    itemDistribution: NameCountItem[]; // 按品种
    stateDistribution: NameCountItem[]; // 按状态
  }

  /** 出库维度统计 */
  export interface OutboundStatistics {
    trend: DailyCountItem[]; // 按日出库趋势
    dealerDistribution: NameCountItem[]; // 按经销商
  }

  /** 窜货预警汇总 */
  export interface CrossRegionSummary {
    total: number;
    pending: number;
    handled: number;
    falseAlarm: number;
    crossProvince: number;
    crossCity: number;
  }

  /** 追溯维度统计 */
  export interface TraceStatistics {
    scanTrend: DailyCountItem[]; // 扫码按日趋势
    provinceDistribution: NameCountItem[]; // 省份分布
    channelDistribution: NameCountItem[]; // 渠道分布
    crossRegionSummary: CrossRegionSummary; // 窜货预警汇总
  }
}

/** 获得管理驾驶舱五维度汇总统计 */
export function getManagementCockpitSummary() {
  return requestClient.get<ManagementCockpitApi.Summary>(
    '/mes/dashboard/summary',
  );
}

/** 获得生产趋势 */
export function getManagementCockpitProductionTrend(days?: number) {
  return requestClient.get<ManagementCockpitApi.ProductionTrendItem[]>(
    '/mes/dashboard/production-trend',
    { params: { days } },
  );
}

/** 获得质检维度统计 */
export function getManagementCockpitQuality() {
  return requestClient.get<ManagementCockpitApi.QualityStatistics>(
    '/mes/dashboard/quality-statistics',
  );
}

/** 获得库存维度统计 */
export function getManagementCockpitInventory() {
  return requestClient.get<ManagementCockpitApi.InventoryStatistics>(
    '/mes/dashboard/inventory-statistics',
  );
}

/** 获得出库维度统计 */
export function getManagementCockpitOutbound(days?: number) {
  return requestClient.get<ManagementCockpitApi.OutboundStatistics>(
    '/mes/dashboard/outbound-statistics',
    { params: { days } },
  );
}

/** 获得追溯维度统计 */
export function getManagementCockpitTrace(days?: number) {
  return requestClient.get<ManagementCockpitApi.TraceStatistics>(
    '/mes/dashboard/trace-statistics',
    { params: { days } },
  );
}

/** 导出管理驾驶舱 Excel 报表（返回 Blob） */
export function exportManagementCockpitExcel() {
  return requestClient.download('/mes/dashboard/export-excel');
}
