import request from '@/config/axios'

// 生产任务单 VO
export interface TaskVO {
  id: number // ID
  code: string // 编码
  orderDate: Date // 下达日期
  deliveryDate: Date // 交货日期
  status: number // 状态
  processInstanceId: string // 流程实例的编号
  remark: string // 备注
  isEnable: boolean // 是否启用
}
// 物料 VO
export interface ItemRequisitionAndStockVO {
  itemId: number // ID
  itemName: string // 编码
  unitId: number // ID
  unitName: string // 编码
  number: number // ID
  stockNumber: number // 编码
  stockWorkshopNumber: number // 编码
}

// 生产任务单明细 VO
export interface TaskDetailVO {
  id: number // ID
  productId: number // 产品ID
  productName: number // 产品ID
  unitId: number // 单位ID
  unitName: number // 单位ID
  taskId: number // task ID
  number: number // 数量
  planNumber: number //已经计划的数量
  packageSize: number // 打包要求(每包/个)
  projectName: string // 项目名称
  techRequirements: string // 技术要求
  remark: string // 备注
  isEnable: boolean // 是否启用
  packageNumber: number // 打包数量
  finishDate: Date // 工厂完成
  boxingDate: Date // 装柜时间
  arriveDate: Date // 到达时间
  barCode: string // 条码
  attachment: string // 附件
  taskDetailId: string
}
// 生产任务单 API
export const TaskApi = {
  // 查询生产任务单分页
  getTaskPage: async (params: any) => {
    return await request.get({ url: `/mes/task/page`, params })
  },
  // 查询生产任务单分页
  getPlanTaskPage: async (params: any) => {
    return await request.get({ url: `/mes/task/pagePlanTask`, params })
  },
  // 查询生产任务单详情
  getTask: async (id: number) => {
    return await request.get({ url: `/mes/task/get?id=` + id })
  },

  // 新增生产任务单
  createTask: async (data: TaskVO) => {
    return await request.post({ url: `/mes/task/create`, data })
  },

  // 修改生产任务单
  updateTask: async (data: TaskVO) => {
    return await request.put({ url: `/mes/task/update`, data })
  },

  // 删除生产任务单
  deleteTask: async (id: number) => {
    return await request.delete({ url: `/mes/task/delete?id=` + id })
  },

  // 导出生产任务单 Excel
  exportTask: async (params) => {
    return await request.download({ url: `/mes/task/export-excel`, params })
  },

// ==================== 子表（生产任务单明细） ====================

  // 获得生产任务单明细分页
  getTaskDetailPage: async (params) => {
    return await request.get({ url: `/mes/task/task-detail/page`, params })
  },
  // 新增生产任务单明细
  createTaskDetail: async (data) => {
    return await request.post({ url: `/mes/task/task-detail/create`, data })
  },

  // 修改生产任务单明细
  updateTaskDetail: async (data) => {
    return await request.put({ url: `/mes/task/task-detail/update`, data })
  },

  // 删除生产任务单明细
  deleteTaskDetail: async (id: number) => {
    return await request.delete({ url: `/mes/task/task-detail/delete?id=` + id })
  },

  // 获得生产任务单明细
  getTaskDetail: async (id: number) => {
    return await request.get({ url: `/mes/task/task-detail/get?id=` + id })
  },

  // ==================== 子表（生产任务单明细） ====================

  // 获得生产任务单明细列表
  getTaskDetailListByTaskId: async (taskId) => {
    return await request.get({ url: `/mes/task/task-detail/list-by-task-id?taskId=` + taskId })
  },
// 获得生产任务单明细汇总列表
  getTaskDetailSummaryListByTaskId: async (taskId) => {
    return await request.get({ url: `/mes/task/task-detail/summary?taskId=` + taskId })
  },

  // 获得可查询计划的生产任务单列表
  getTaskList: async () => {
    return await request.get({ url: `/mes/task/getTaskList`})
  },
  // 获得生产任务单明细
  getPlanTaskList: async (i) => {
    return await request.get({ url: `/mes/task/getPlanTaskList`})
  },

  // 获得订单物料需求
  getOderItemNeedList: async (orderId) => {
    return await request.get({ url: `/mes/task/item-need/order?orderId=` + orderId})
  },
  // 获得生产任务单物料需求
  getTaskItemNeedList: async (taskId) => {
    return await request.get({ url: `/mes/task/item-need/task?taskId=` + taskId})
  },
  // 获得生产任务物料需求
  getPlanItemNeedList: async (planId) => {
    return await request.get({ url: `/mes/task/item-need/plan?planId=` + planId})
  },
  // 获得产品物料需求
  getProductItemNeedList: async (productId, number) => {
    return await request.get({ url: `/mes/task/item-need/product?productId=` + productId +`&number=`+number})
  },

  // 或得生产任务单排程计划列表
  generatePlanByTask: async (params) => {
    return await request.get({ url: `/mes/task/generate-plan/byTask`, params })
  },
  // 修改生产任务单状态
  changeStatus: async (status, id) => {
    return await request.get({ url: `/mes/task/changeStatus?status=` + status +`&id=`+id})
  },
  // 或得生产任务单排程计划列表
  generatePlanByTaskDetail: async (params) => {
    return await request.get({ url: `/mes/task/generate-plan/byTaskDetail`, params })
  },
}
