import type { PageParam, PageResult } from '@vben/request';

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

export namespace MesProMaintenancePlanApi {
  /** 电力作业计划 */
  export interface MaintenancePlan {
    id?: number; // 编号
    code?: string; // 计划编码
    name?: string; // 计划名称
    planType?: number; // 计划类型：1电网运行 2发电 3变电运维 4线路检修
    station?: string; // 站点
    line?: string; // 线路
    teamId?: number; // 班组编号
    teamName?: string; // 班组名称
    planDate?: string; // 计划日期
    status?: number; // 状态：0草稿 10已下发 20已完成 30已取消
    workOrderId?: number; // 生成的工单编号
    workOrderCode?: string; // 生成的工单编码
    remark?: string; // 备注
    items?: PlanItem[]; // 备件需求明细
    createTime?: string; // 创建时间
  }

  /** 备件需求明细 */
  export interface PlanItem {
    id?: number; // 编号
    itemId: number; // 物料/备件编号
    itemName?: string; // 物料名称
    itemCode?: string; // 物料编码
    unitMeasureName?: string; // 计量单位名称
    quantity: number; // 需求数量
    remark?: string; // 备注
  }
}

/** 创建电力作业计划 */
export function createPlan(data: MesProMaintenancePlanApi.MaintenancePlan) {
  return requestClient.post('/mes/pro/maintenance-plan/create', data);
}

/** 更新电力作业计划 */
export function updatePlan(data: MesProMaintenancePlanApi.MaintenancePlan) {
  return requestClient.put('/mes/pro/maintenance-plan/update', data);
}

/** 删除电力作业计划 */
export function deletePlan(ids: number[]) {
  return requestClient.delete('/mes/pro/maintenance-plan/delete', { params: { ids: ids.join(',') } });
}

/** 获取电力作业计划详情 */
export function getPlan(id: number) {
  return requestClient.get<MesProMaintenancePlanApi.MaintenancePlan>(
    `/mes/pro/maintenance-plan/get?id=${id}`,
  );
}

/** 获取电力作业计划分页 */
export function getPlanPage(params: PageParam) {
  return requestClient.get<PageResult<MesProMaintenancePlanApi.MaintenancePlan>>(
    '/mes/pro/maintenance-plan/page',
    { params },
  );
}

/** 导出电力作业计划 */
export function exportPlan(params: any) {
  return requestClient.download('/mes/pro/maintenance-plan/export-excel', { params });
}

/** 下发电力作业计划 */
export function issuePlan(id: number) {
  return requestClient.put(`/mes/pro/maintenance-plan/issue?id=${id}`);
}

/** 完成电力作业计划 */
export function finishPlan(id: number) {
  return requestClient.put(`/mes/pro/maintenance-plan/finish?id=${id}`);
}

/** 根据备件需求生成采购计划 */
export function generatePurchasePlan(id: number) {
  return requestClient.post<number>(`/mes/pro/maintenance-plan/generate-purchase-plan?id=${id}`);
}

/** 生成运维/发电/检修工单 */
export function generateWorkOrder(id: number) {
  return requestClient.post<number>(`/mes/pro/maintenance-plan/generate-work-order?id=${id}`);
}
