import { request } from '../../utils/axios';

// 任务明细接口
export interface TaskVO {
  taskId?: number;
  taskName: string; // 任务名称
  responsiblePerson?: string; // 任务负责人
  startTime?: string; // 开始时间
  status?: string; // 任务状态：待执行、进行中、已完成、逾期
  [key: string]: any;
}

// 作业信息接口
export interface JobVO {
  ticketId: number;
  ticketName: string;
  workstationId: number;
  workstationName?: string;
  jobType?: string;
  status?: string; // 作业状态：待执行、进行中、已完成、逾期
  responsiblePerson?: string; // 负责人
  progress?: number; // 整体进度（0-100）
  taskList?: TaskVO[]; // 任务明细列表
  [key: string]: any;
}

// 作业完成趋势数据
export interface JobTrendData {
  date: string; // 日期（如：1日、2日...）
  completedCount: number; // 每日完成作业数
}

// 驾驶舱统计数据接口（根据实际API响应）
export interface CockpitStatisticsVO {
  // 关键指标
  materialsCount: number; // 物料总数
  cabinetMaterialsCount?: number; // 机柜物料数
  loanMaterialsCount: number; // 借用物料数
  exceptionMaterialsCount?: number; // 异常物料数
  returnMaterialsCount?: number; // 待归还物料数
  availableMaterialsCount?: number; // 可用物料数
  jobList?: JobVO[]; // 作业列表
  loanList?: any[]; // 借用列表
  
  // 作业状态统计
  pendingJobsCount?: number; // 待发布作业数
  inProgressJobsCount?: number; // 进行中作业数
  completedJobsCount?: number; // 已完成作业数
  overdueJobsCount?: number; // 逾期作业数
  
  // 作业完成趋势（最近30天）
  jobTrendData?: JobTrendData[];
  
  // 计算字段（用于显示）
  totalOperations?: number; // 总作业数（从jobList计算）
  totalOperationsGrowth?: number; // 总作业数增长率（百分比）
  totalMaterials?: number; // 物料总数（映射自materialsCount）
  materialStatus?: string; // 物料状态：正常/异常
  borrowedMaterials?: number; // 借用物料数（映射自loanMaterialsCount）
  borrowedStatus?: string; // 借用状态：关注/正常
  workstationCount?: number; // 工作站数量（从jobList计算）
  workstationStatus?: string; // 工作站状态：活跃/非活跃
  
  // 工作站作业分布（从jobList计算）
  workstationDistribution?: {
    workstation: string; // 工作站名称
    count: number; // 作业数量
  }[];
  
  // 作业类型分布（从jobList计算）
  operationTypeDistribution?: {
    type: string; // 作业类型
    count: number; // 数量
    percentage: number; // 百分比
  }[];
}

// 驾驶舱 API
export const cockpitApi = {
  // 获取首页统计数据
  getHomePage: async (): Promise<any> => {
    const response = await request.get({
      url: '/iscs/statistics-api/getHomePage',
    });
    // API返回格式: { code: 0, data: {...}, msg: "" }
    if (response && typeof response === 'object' && 'data' in response) {
      return response.data;
    }
    return response;
  },
};

