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

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

export namespace MesProWorkOrderParamRecordApi {
  /** 参数记录明细 */
  export interface ParamRecordDetail {
    id?: number;
    templateDetailId?: number;
    paramCode?: string;
    paramName?: string;
    paramType?: number;
    unitMeasureId?: number;
    unitMeasureName?: string;
    paramValue?: string;
    remark?: string;
  }

  /** 工单参数记录 */
  export interface WorkOrderParamRecord {
    id?: number;
    workOrderId?: number;
    templateId?: number;
    templateCode?: string;
    templateName?: string;
    recordNo?: string;
    remark?: string;
    createTime?: string;
    details?: ParamRecordDetail[];
  }

  /** 创建/更新请求参数 */
  export interface SaveParamRecord {
    id?: number;
    templateId?: number;
    recordNo?: string;
    remark?: string;
    details: {
      templateDetailId: number;
      paramValue?: string;
    }[];
  }
}

/** 按工单/工作站分页查询参数记录 */
export function getWorkOrderParamRecordPage(
  params: PageParam & { workOrderId?: number; workstationId?: number; recordNo?: string; templateName?: string; createTime?: string[] },
) {
  return requestClient.get<PageResult<MesProWorkOrderParamRecordApi.WorkOrderParamRecord>>(
    '/mes/pro/work-order-param-record/page-by-work-order',
    { params },
  );
}

/** 获取参数记录详情 */
export function getWorkOrderParamRecord(id: number) {
  return requestClient.get<MesProWorkOrderParamRecordApi.WorkOrderParamRecord>(
    `/mes/pro/work-order-param-record/get?id=${id}`,
  );
}

/** 创建参数记录 */
export function createWorkOrderParamRecord(
  data: MesProWorkOrderParamRecordApi.SaveParamRecord,
  workOrderId: number,
) {
  return requestClient.post<number>(
    `/mes/pro/work-order-param-record/create?workOrderId=${workOrderId}`,
    data,
  );
}

/** 更新参数记录 */
export function updateWorkOrderParamRecord(
  data: MesProWorkOrderParamRecordApi.SaveParamRecord,
) {
  return requestClient.put<boolean>(
    '/mes/pro/work-order-param-record/update',
    data,
  );
}

/** 删除参数记录 */
export function deleteWorkOrderParamRecord(id: number) {
  return requestClient.delete<boolean>(
    `/mes/pro/work-order-param-record/delete?id=${id}`,
  );
}
