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

enum Api {
  Data = '/api/extend/lims/biz/sxt/qushi/data',
  Options = '/api/extend/lims/biz/sxt/qushi/options',
  Prefix = '/api/extend/lims/biz/sxt/kanban',
}

export interface SxtKanbanQuery {
  end_date?: string;
  quyang_didian?: string;
  quyangdian_bianhao?: string;
  start_date?: string;
  suoshu_chejian?: string;
  yangpin_leixing?: string;
}

export interface SxtKanbanRow {
  quyangdian_id?: string;
  quyang_didian: string;
  quyangdian_bianhao: string;
  suoshu_chejian: string;
  yangpin_leixing: string;
  yangpin_leixing_mingcheng?: string;
}

export interface SxtKanbanOption {
  id: string;
  name: string;
}

export interface SxtKanbanOptions {
  chejian_list: SxtKanbanOption[];
  quyang_didian_list: SxtKanbanOption[];
  quyangdian_list: SxtKanbanOption[];
  yangpin_leixing_list: SxtKanbanOption[];
}

export interface SxtKanbanItem extends SxtKanbanRow {
  can_delete: boolean;
  jianyan_xiangmu?: string;
  jianyan_xiangmu_mingcheng?: string;
  jihua_id: string;
  jihua_mingcheng: string;
  jihua_riqi: string;
  qingyandan_id?: string;
  qingyandan_liushuihao?: string;
  renwu_id: string;
  renwu_zhuangtai: 'blocked_config_invalid' | 'generated' | 'generating' | 'pending';
  renwu_zhuangtai_yuanyin?: string;
  renwu_zhuangtai_yuanyin_daima?: string;
}

export interface SxtTrendOption {
  id: string;
  name: string;
}

export interface SxtTrendInspectionItem extends SxtTrendOption {
  biaozhun_shangxian?: string;
  biaozhun_xiaxian?: string;
  jianyan_xiangmu_bianma?: string;
  lilun_shangxian?: string;
  lilun_xiaxian?: string;
  trend_enabled: boolean;
  unit: string;
}

export interface SxtTrendSamplingPoint extends SxtTrendOption {
  chejian_id: string;
  quyang_didian?: string;
  quyangdian_bianhao?: string;
  yangpin_leixing_id: string;
}

export interface SxtTrendOptions {
  chejian_list: SxtTrendOption[];
  jianyan_xiangmu_list: SxtTrendInspectionItem[];
  quyangdian_list: SxtTrendSamplingPoint[];
  yangpin_leixing_list: SxtTrendOption[];
}

export interface SxtTrendQuery {
  chejian_id?: string;
  end_date: string;
  jianyan_xiangmu_ids: string[];
  quyangdian_ids?: string[];
  start_date: string;
  yangpin_leixing_id: string;
}

export interface SxtTrendRecord {
  ceshi_jieguo: null | number;
  jianyan_xiang_id: string;
  jianyan_riqi: string;
  jianyan_xiangmu_id: string;
  quyangdian_id: string;
  quyangdian_mingcheng: string;
  renwu_jianyan_xiang_kuaizhao_id: string;
}

export interface SxtTrendStandard {
  biaozhun_banben?: string;
  biaozhun_bianhao?: string;
  biaozhun_shangxian?: null | number;
  biaozhun_xiaxian?: null | number;
  jianyan_xiangmu_id: string;
  renwu_jianyan_xiang_kuaizhao_id: string;
  trend_enabled: boolean;
  unit: string;
}

export interface SxtTrendData {
  records: SxtTrendRecord[];
  standards: SxtTrendStandard[];
}

export function getSxtKanbanRows(data: SxtKanbanQuery) {
  return defHttp.get({ url: `${Api.Prefix}/rows`, data });
}

export function getSxtKanbanOptions(data: Pick<SxtKanbanQuery, 'quyang_didian' | 'suoshu_chejian' | 'yangpin_leixing'>) {
  return defHttp.get({ url: `${Api.Prefix}/options`, data });
}

export function getSxtKanbanItems(data: SxtKanbanQuery) {
  return defHttp.get({ url: `${Api.Prefix}/items`, data });
}

export function cancelSxtKanbanRenwu(renwuId: string, data: { biz_sign: unknown }) {
  return defHttp.delete({ url: `${Api.Prefix}/renwu/${renwuId}`, data });
}

export function getSxtTrendOptions(data?: { chejian_id?: string; quyangdian_ids?: string[]; yangpin_leixing_id?: string }) {
  return defHttp.get({ url: Api.Options, data, paramsSerializer: { indexes: null } });
}

export function getSxtTrendData(data: SxtTrendQuery) {
  return defHttp.post({ url: Api.Data, data });
}
