import request from '@/config/axios'

// PMS 保养计划明细BOM VO
export interface IotMaintenanceBomVO {
  id: number // 主键
  planId: number // 保养计划id
  planDetailId: number // 保养计划明细id
  deviceCategoryId: number // 所属设备分类
  deviceId: number // 设备id
  rule: string // 保养规则(里程 运行时间 自然日期) 可多选
  mileageRule: number // 保养规则-里程(0启用 1停用)
  naturalDateRule: number // 保养规则-自然日期(0启用 1停用)
  runningTimeRule: number // 保养规则-运行时间(0启用 1停用)
  lastRunningTime: number // 上次保养运行时长(小时)
  nextRunningTime: number // 下次保养运行时长(小时) 运行时长周期
  timePeriod: number // 时间周期(小时) 距离下次保养运行时长
  kilometerCycle: number // 公里数周期(千米) 距离下次保养公里数
  naturalDatePeriod: number // 自然日周期(天) 下次保养自然日期
  timePeriodLead: number // 运行时长周期提前量 H
  lastRunningKilometers: number // 上次保养运行公里数(千米)
  nextRunningKilometers: number // 下次保养运行公里数(千米)
  kiloCycleLead: number // 公里数周期-提前量 km
  lastNaturalDate: Date // 上次保养自然日期(天)
  tempLastNaturalDate: string | null // 上次保养自然日期(天) 临时变量
  nextNaturalDate: number | null // 下次保养自然日期(天)
  naturalDatePeriodLead: number // 自然日周期-提前量(天)
  bomNodeId: number // bom节点id
  name: string // BOM名称
  code: string | null // BOM编码
  parentId: number // 父BOM id 顶级为0
  childIds: string // 子节点id 逗号分隔
  level: number // 层级
  leafFlag: number // 是否叶子节点 0是 1否
  sort: number // 显示顺序
  type: string | null // 1维修 2保养 维修+保养
  status: number // 状态 0启用  1停用
  remark: string // 备注
  version: number // 版本
  // 扩展字段
  deviceName: string // 设备名称
  deviceCode: string // 设备编码
  deviceStatus: string // 设备状态
  assetProperty: string //资产性质
  totalMileage: number | null // 累计运行公里数
  totalRunTime: number | null // 累计运行时间
  tempTotalMileage: number | null // 临时 累计运行公里数
  tempTotalRunTime: number | null // 临时 累计运行时间
  isRuntimeFromTemp: boolean
  isMileageFromTemp: boolean
  // 运行记录模板中 包含多个 累计时长 属性列表
  timeAccumulatedAttrs: Array<{
    pointName: string
    totalRunTime: number
    totalMileage: number
  }>
  // 运行记录模板中 包含多个 累计公里数 属性列表
  mileageAccumulatedAttrs: Array<{
    pointName: string
    totalRunTime: number
    totalMileage: number
  }>
  // 上次保养时间 不同于自然日保养规则下的 上次保养自然日期
  lastMaintenanceDate: Date
  // 下次保养公里数
  nextMaintenanceKm: number | null
  // 剩余保养公里数
  remainKm: number | null
  // 下次保养运行时长
  nextMaintenanceH: number | null
  // 剩余保养运行时长
  remainH: number | null
  // 下次保养日期
  nextMaintenanceDate: string | null
  // 自然日期保养 剩余天数
  remainDay: number | null
}

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

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

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

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

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

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

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