import request from '@/config/axios'

// PMS 保养计划明细BOM VO
export interface IotMainWorkOrderBomVO {
  id: number // 主键
  planId: number // 保养计划id
  planDetailId: number // 保养计划明细id
  workOrderId: number // 保养工单id
  deviceCategoryId: number // 所属设备分类
  deviceId: number // 设备id
  deviceCode: string  // 设备编码
  deviceName: string  // 设备名称
  rule: string // 是否需要更换备件(0需要 1不需要)
  mileageRule: number // 保养规则-里程(0启用 1停用)
  naturalDateRule: number // 保养规则-自然日期(0启用 1停用)
  runningTimeRule: number // 保养规则-运行时间(0启用 1停用)
  lastRunningTime: number // 上次保养运行时长(小时)
  nextRunningTime: number // 下次保养运行时长(小时)
  delayDuration: number // 推迟运行时长(小时)
  lastRunningKilometers: number // 上次保养运行公里数(千米)
  nextRunningKilometers: number // 下次保养运行公里数(千米)
  delayKilometers: number // 推迟运行公里数(千米)
  lastNaturalDate: number // 上次保养自然日期(天)
  nextNaturalDate: number // 下次保养自然日期(天)
  delayNaturalDate: number // 推迟自然日期(天)
  delayReason: string // 推迟原因
  lastMainDate: Date // 上次保养日期
  timePeriod: number // 时间周期(小时)
  timePeriodLead: number // 时间周期-提前量(小时)
  kilometerCycle: number // 公里数周期(千米)
  kiloCycleLead: number // 公里数周期-提前量(千米)
  naturalDatePeriod: number // 自然日周期(天)
  naturalDatePeriodLead: number // 自然日周期-提前量(天)
  bomNodeId: number // BOM节点id
  name: string // BOM名称
  code: string // BOM编码
  parentId: number // 父BOM id 顶级为0
  childIds: string // 子节点id 逗号分隔
  level: number // 层级
  leafFlag: number // 是否叶子节点 0是 1否
  sort: number // 显示顺序
  type: string // 1维修 2保养 维修+保养 (1,2)
  mainType: number // 保养类型(1临时保养  2计划保养)
  status: number // 状态 0启用  1停用
  remark: string // 备注
  version: number // 版本
  // 扩展字段
  timeError: string // 运行时间周期 错误提示

  totalMileage: number  // 累计运行公里数
  totalRunTime: number  // 累计运行时间
  tempTotalMileage: number  // 临时 累计运行公里数
  tempTotalRunTime: number  // 临时 累计运行时间
  mainRuntime: number  // 保养时累计运行公里数
  mainMileage: number  // 保养时累计运行时间
  // 上次保养时间 不同于自然日保养规则下的 上次保养自然日期
  lastMaintenanceDate: Date
  // 下次保养公里数
  nextMaintenanceKm: number
  // 剩余保养公里数
  remainKm: number
  // 下次保养运行时长
  nextMaintenanceH: number
  // 剩余保养运行时长
  remainH: number
  // 下次保养日期
  nextMaintenanceDate: Date
  // 自然日期保养 剩余天数
  remainDay: number
  // 设备BOM节点已经绑定的物料
  deviceBomMaterials: []
}

// PMS 保养计划明细BOM API
export const IotMainWorkOrderBomApi = {
  // 查询PMS 保养计划明细BOM分页
  getIotMainWorkOrderBomPage: async (params: any) => {
    return await request.get({ url: `/pms/iot-main-work-order-bom/page`, params })
  },

  // 获得PMS 保养工单明细BOM列表
  getWorkOrderBOMs: async (params: any) => {
    return await request.get({ url: `/pms/iot-main-work-order-bom/getWorkOrderBOMs`, params })
  },

  // 获得PMS 保养工单明细BOM列表 保养时累计公里数 时长
  maintenanceCumulativeValue: async (params: any) => {
    return await request.get({ url: `/pms/iot-main-work-order-bom/maintenanceCumulativeValue`, params })
  },

  // 查询PMS 保养计划明细BOM详情
  getIotMainWorkOrderBom: async (id: number) => {
    return await request.get({ url: `/pms/iot-main-work-order-bom/get?id=` + id })
  },

  // 新增PMS 保养计划明细BOM
  createIotMainWorkOrderBom: async (data: IotMainWorkOrderBomVO) => {
    return await request.post({ url: `/pms/iot-main-work-order-bom/create`, data })
  },

  // 修改PMS 保养计划明细BOM
  updateIotMainWorkOrderBom: async (data: IotMainWorkOrderBomVO) => {
    return await request.put({ url: `/pms/iot-main-work-order-bom/update`, data })
  },

  // 删除PMS 保养计划明细BOM
  deleteIotMainWorkOrderBom: async (id: number) => {
    return await request.delete({ url: `/pms/iot-main-work-order-bom/delete?id=` + id })
  },

  // 导出PMS 保养计划明细BOM Excel
  exportIotMainWorkOrderBom: async (params) => {
    return await request.download({ url: `/pms/iot-main-work-order-bom/export-excel`, params })
  },
}
