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

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

export namespace WmsApprovalApi {
  /** 审批配置 */
  export interface ApprovalConfig {
    id?: number;
    warehouseId: number;
    warehouseName?: string;
    bizType: string;
    approvalEnabled: boolean;
    processDefinitionKey?: string;
    processDefinitionName?: string;
    categoryCode?: string;
    createTime?: Date;
  }

  /** 流程定义简单信息 */
  export interface ProcessSimpleInfo {
    key: string;
    name: string;
  }

  /** 业务类型 */
  export type BizType = 'INBOUND' | 'OUTBOUND' | 'TRANSFER' | 'CHECK';
}

/** 获取单个审批配置 */
export function getApprovalConfig(warehouseId: number, bizType: string) {
  return requestClient.get<WmsApprovalApi.ApprovalConfig>(
    '/mes/wms/approval/config/get',
    {
      params: { warehouseId, bizType },
    },
  );
}

/** 获取仓库所有审批配置 */
export function getApprovalConfigList(warehouseId: number) {
  return requestClient.get<WmsApprovalApi.ApprovalConfig[]>(
    '/mes/wms/approval/config/list',
    {
      params: { warehouseId },
    },
  );
}

/** 获取所有仓库的审批配置列表 */
export function getApprovalConfigAllList() {
  return requestClient.get<WmsApprovalApi.ApprovalConfig[]>(
    '/mes/wms/approval/config/all-list',
  );
}

/** 保存审批配置 */
export function saveApprovalConfig(data: WmsApprovalApi.ApprovalConfig) {
  return requestClient.post('/mes/wms/approval/config/save', data);
}

/** 获取可用审批流程列表 */
export function getAvailableProcessList(warehouseId: number, bizType: string) {
  return requestClient.get<WmsApprovalApi.ProcessSimpleInfo[]>(
    '/mes/wms/approval/process-list',
    {
      params: { warehouseId, bizType },
    },
  );
}