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

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

export namespace MesPdCtcApi {
  /** 换位导线产品技术参数 */
  export interface Ctc {
    id?: number; // 编号
    itemId?: number; // 物料ID
    itemName?: string; // 物料名称
    itemCode?: string; // 物料编码
    orderSpec?: string; // 订货规格
    bareConductorSpec?: string; // 裸导线规格
    enameledSpec?: string; // 漆包线规格
    transpositionSpec?: string; // 换位规格
    conductorType?: string; // 导体类型
    crossSection?: number; // 截面积 mm²
    outerDiameter?: number; // 外径 mm
    resistance20c?: number; // 20℃直流电阻 Ω/km
    wrappingAngle?: number; // 绕包角度 °
    insulationThickness?: number; // 绝缘厚度 mm
    ratedVoltage?: string; // 额定电压 kV
    testVoltage?: string; // 试验电压 kV
    minBendingRadius?: number; // 最小弯曲半径 mm
    weightPerKm?: number; // 每公里重量 kg/km
    standardCode?: string; // 执行标准代号
    remark?: string; // 备注
    createTime?: Date; // 创建时间
  }

  /** 绕包角度计算 */
  export interface AngleCalcReq {
    conductorThickness?: number; // 导体厚度 mm
    conductorWidth?: number; // 导体宽度 mm
    cornerRadius?: number; // 圆角半径 mm
    insulationThickness?: number; // 绝缘厚度 mm
    tapeWidth?: number; // 纸带宽度 mm
    overlapWidth?: number; // 重叠宽度 mm
  }

  /** 绕包角度计算结果 */
  export interface AngleCalcResp {
    circumference?: number; // 导线周长 mm
    wrappingAngle?: number; // 绕包角度 °
    wrappingPitch?: number; // 绕包节距 mm
  }

  /** 直流电阻计算 */
  export interface ResistanceCalcReq {
    conductorThickness?: number; // 导体厚度 mm
    conductorWidth?: number; // 导体宽度 mm
    temperature?: number; // 计算温度 ℃
    material?: string; // 导体材质
  }

  /** 直流电阻计算结果 */
  export interface ResistanceCalcResp {
    crossSection?: number; // 截面积 mm²
    resistance20cKm?: number; // 20℃直流电阻 Ω/km
    resistanceAtTemp?: number; // 指定温度直流电阻 Ω/m
    resistanceAtTempKm?: number; // 指定温度直流电阻 Ω/km
  }

  /** 盘具容量计算 */
  export interface ReelCalcReq {
    reelOuterDiameter?: number; // 盘具外径 d1 mm
    reelInnerDiameter?: number; // 盘芯内径 d2 mm
    reelWidth?: number; // 盘宽 l2 mm
    ctcThickness?: number; // CTC 最大高度 mm
    ctcWidth?: number; // CTC 最大宽度 mm
  }

  /** 盘具容量计算结果 */
  export interface ReelCalcResp {
    capacityMeter?: number; // 每盘长度 m
    capacityKm?: number; // 每盘长度 km
  }
}

/** 查询换位导线产品技术参数分页 */
export function getCtcPage(params: PageParam) {
  return requestClient.get<PageResult<MesPdCtcApi.Ctc>>('/mes/pd/ctc/page', {
    params,
  });
}

/** 查询换位导线产品技术参数详情 */
export function getCtc(id: number) {
  return requestClient.get<MesPdCtcApi.Ctc>(`/mes/pd/ctc/get?id=${id}`);
}

/** 新增换位导线产品技术参数 */
export function createCtc(data: MesPdCtcApi.Ctc) {
  return requestClient.post('/mes/pd/ctc/create', data);
}

/** 修改换位导线产品技术参数 */
export function updateCtc(data: MesPdCtcApi.Ctc) {
  return requestClient.put('/mes/pd/ctc/update', data);
}

/** 删除换位导线产品技术参数 */
export function deleteCtc(id: number) {
  return requestClient.delete(`/mes/pd/ctc/delete?id=${id}`);
}

/** 导出换位导线产品技术参数 */
export function exportCtc(params: any) {
  return requestClient.download('/mes/pd/ctc/export-excel', { params });
}

/** 绕包角度计算 */
export function calcCtcAngle(data: MesPdCtcApi.AngleCalcReq) {
  return requestClient.post<MesPdCtcApi.AngleCalcResp>('/mes/pd/ctc/calc-angle', data);
}

/** 直流电阻计算 */
export function calcCtcResistance(data: MesPdCtcApi.ResistanceCalcReq) {
  return requestClient.post<MesPdCtcApi.ResistanceCalcResp>(
    '/mes/pd/ctc/calc-resistance',
    data,
  );
}

/** 盘具容量计算 */
export function calcCtcReel(data: MesPdCtcApi.ReelCalcReq) {
  return requestClient.post<MesPdCtcApi.ReelCalcResp>('/mes/pd/ctc/calc-reel', data);
}
