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

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

export namespace MesProAlternativePlanApi {
  /** MES 作业替代方案 */
  export interface AlternativePlan {
    id?: number;
    code?: string; // 方案编码
    name?: string; // 方案名称
    mainProcessId?: number; // 主工序编号
    mainProcessName?: string; // 主工序名称
    altProcessId?: number; // 替代工序编号
    altProcessName?: string; // 替代工序名称
    altCondition?: string; // 替代条件
    scope?: string; // 适用范围
    status?: number; // 状态：0草稿 10已发布
    remark?: string; // 备注
    createTime?: string;
  }
}

/** 创建作业替代方案 */
export function createPlan(data: MesProAlternativePlanApi.AlternativePlan) {
  return requestClient.post('/mes/pro/alternative-plan/create', data);
}

/** 更新作业替代方案 */
export function updatePlan(data: MesProAlternativePlanApi.AlternativePlan) {
  return requestClient.put('/mes/pro/alternative-plan/update', data);
}

/** 删除作业替代方案 */
export function deletePlan(ids: number[]) {
  return requestClient.delete('/mes/pro/alternative-plan/delete', {
    params: { ids: ids.join(',') },
  });
}

/** 获取作业替代方案 */
export function getPlan(id: number) {
  return requestClient.get<MesProAlternativePlanApi.AlternativePlan>(
    `/mes/pro/alternative-plan/get?id=${id}`,
  );
}

/** 获取作业替代方案分页 */
export function getPlanPage(params: PageParam) {
  return requestClient.get<PageResult<MesProAlternativePlanApi.AlternativePlan>>(
    '/mes/pro/alternative-plan/page',
    { params },
  );
}

/** 发布作业替代方案 */
export function publishPlan(id: number) {
  return requestClient.put(`/mes/pro/alternative-plan/publish?id=${id}`);
}
