1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import type { PageParam, PageResult } from '@vben/request';
 
import { requestClient } from '#/api/request';
 
export namespace MesProWorkOrderBomApi {
  /** MES 生产订单 BOM */
  export interface WorkOrderBom {
    id?: number; // 编号
    workOrderId?: number; // 生产订单编号
    itemId?: number; // BOM 物料编号
    itemName?: string; // 物料名称
    itemCode?: string; // 物料编码
    itemSpecification?: string; // 规格型号
    unitMeasureId?: number; // 单位编号
    unitMeasureName?: string; // 单位名称
    quantity?: number; // 预计使用量
    remark?: string; // 备注
    itemOrProduct?: string; // 物料产品标识
  }
 
  /** 辅料需求预览(按产品与数量计算,含库存充足判断) */
  export interface BomItemPreview {
    itemId?: number; // 物料编号
    itemCode?: string; // 物料编码
    itemName?: string; // 物料名称
    itemSpecification?: string; // 规格型号
    unitMeasureName?: string; // 单位名称
    quantity?: number; // 需求数量
    stockQuantity?: number; // 可用库存
    purchaseOrderQuantity?: number; // 在途采购数
    stockSufficient?: boolean; // 库存是否充足
    itemOrProduct?: string; // 物料/产品标识
  }
 
  /** MES 生产订单 BOM 分页查询参数 */
  export interface PageParams extends PageParam {
    workOrderId?: number;
  }
}
 
/** 查询订单 BOM 分页 */
export function getWorkOrderBomPage(params: MesProWorkOrderBomApi.PageParams) {
  return requestClient.get<PageResult<MesProWorkOrderBomApi.WorkOrderBom>>(
    '/mes/pro/work-order-bom/page',
    { params },
  );
}
 
/** 查询订单 BOM 详情 */
export function getWorkOrderBom(id: number) {
  return requestClient.get<MesProWorkOrderBomApi.WorkOrderBom>(
    `/mes/pro/work-order-bom/get?id=${id}`,
  );
}
 
/** 新增订单 BOM */
export function createWorkOrderBom(data: MesProWorkOrderBomApi.WorkOrderBom) {
  return requestClient.post('/mes/pro/work-order-bom/create', data);
}
 
/** 修改订单 BOM */
export function updateWorkOrderBom(data: MesProWorkOrderBomApi.WorkOrderBom) {
  return requestClient.put('/mes/pro/work-order-bom/update', data);
}
 
/** 删除订单 BOM */
export function deleteWorkOrderBom(id: number) {
  return requestClient.delete(`/mes/pro/work-order-bom/delete?id=${id}`);
}
 
/** 查询订单物料需求列表 */
export function getWorkOrderBomItemListByWorkOrderId(workOrderId: number) {
  return requestClient.get<MesProWorkOrderBomApi.WorkOrderBom[]>(
    `/mes/pro/work-order-bom/item-list-by-work-order-id?workOrderId=${workOrderId}`,
  );
}
 
/** 按产品与数量预览辅料需求(新增工单时判断库存是否充足) */
export function getWorkOrderBomItemPreview(
  productId: number,
  quantity: number,
) {
  return requestClient.get<MesProWorkOrderBomApi.BomItemPreview[]>(
    '/mes/pro/work-order-bom/item-list-preview',
    { params: { productId, quantity } },
  );
}