# PDA 生产领料 — 接口说明 > 模块:`ErpPickMaterialBillController`(`/mes/erpPickMaterialBill`) > 权限:`mes:erpPickMaterialBill:view` > 服务地址示例:`http://127.0.0.1:8980` > **只登录 MES,不直连金蝶** > PDA 统一返回 `CommonResp`(`result` / `message` / `data`);列表类接口 `data` 为分页结构。提交接口支持 **表单 POST** 与 **JSON Body** 两种方式。 --- ## 页面流程(5 步) ```text ① pda/listData 领料单列表 ↓ 新增 ② pda/selectOrderData 选生产订单(HEV/115 存货类别) ↓ ③ pda/selectDetailData 选订单分录 ↓ ④ materialInit 用料清单 + 填领料数量/批号 └ pda/lotOptions 选批号(按行物料+仓库) └ pda/lotSearch 搜批号 ↓ ⑤ submitPickMaterial 提交 ERP 领料单(SCLL) ``` --- ## 1. 领料单列表 **请求URL:** `/js/a/mes/erpPickMaterialBill/pda/listData` **请求方式:** `POST` **参数:** | 参数名 | 必选 | 类型 | 说明 | |--------|------|------|------| | pageNo | 否 | int | 页码 | | pageSize | 否 | int | 每页条数 | | moBillNoQuery | 否 | string | 生产订单号 | | billNoQuery | 否 | string | 领料单号 SCLL | **参数示例:** ```bash curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpPickMaterialBill/pda/listData?pageNo=1&pageSize=20' ``` **返回示例:** 成功: ```json { "result": "true", "message": "成功", "data": { "pageNo": 1, "pageSize": 20, "count": 1, "list": [ { "billNo": "SCLL110260603001", "date": "2026-06-03", "moBillNo": "SCDD110260603003", "materialNumber": "3.02.xxx", "materialName": "某原材料", "actualQty": 100 } ] } } ``` **页面显示:** 领料单号、日期、生产订单、物料、实发数量 **下一步:** 点「新增」→ 接口 2;点某行 → 接口 10 查看明细 --- ## 2. 选择生产订单 **请求URL:** `/js/a/mes/erpPickMaterialBill/pda/selectOrderData` **请求方式:** `POST` **参数:** | 参数名 | 必选 | 类型 | 说明 | |--------|------|------|------| | pageNo | 否 | int | 页码 | | pageSize | 否 | int | 每页条数 | | billNo | 否 | string | 生产订单号 | **参数示例:** ```bash curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpPickMaterialBill/pda/selectOrderData?pageNo=1&pageSize=20' ``` **说明:** 按存货类别 HEV / 欣旺达115 / 115 筛选(与 ERP 生产订单列表一致) **返回示例:** ```json { "result": "true", "message": "成功", "data": { "pageNo": 1, "pageSize": 20, "count": 5, "list": [ { "billNo": "SCDD110260603003", "documentStatusName": "已审核", "inventoryCategory": "HEV", "entryCount": 1, "totalQty": 1200 } ] } } ``` **下一步:** 点选 → 接口 3,传 `billNo` --- ## 3. 选择订单分录 **请求URL:** `/js/a/mes/erpPickMaterialBill/pda/selectDetailData` **请求方式:** `POST` **参数:** | 参数名 | 必选 | 类型 | 说明 | |--------|------|------|------| | billNo | 是 | string | 生产订单号 | **参数示例:** ```bash curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpPickMaterialBill/pda/selectDetailData?billNo=SCDD110260603003' ``` **返回示例:** ```json { "result": "true", "message": "成功", "data": { "pageNo": 1, "pageSize": 20, "count": 1, "list": [ { "entryId": "266268", "seq": "1", "materialNumber": "8.10.HEV.05.049025", "materialName": "成品", "qty": 1200, "workshopName": "冲压壳体线" } ] } } ``` **页面显示:** 行号、物料、订单数量、车间等 **下一步:** 选一行 → 接口 4,传 `billNo` + `entryId` --- ## 4. 领料页初始化(用料清单) **请求URL:** `/js/a/mes/erpPickMaterialBill/materialInit` **请求方式:** `POST`(也兼容 GET) **参数:** | 参数名 | 必选 | 类型 | 说明 | |--------|------|------|------| | billNo | 是 | string | 生产订单号 | | entryId | 是 | string | 订单分录内码 | **参数示例:** ```bash curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpPickMaterialBill/materialInit?billNo=SCDD110260603003&entryId=266268' ``` **返回示例:** 成功: ```json { "result": "true", "message": "", "data": { "billNo": "SCDD110260603003", "entryId": "266268", "materialName": "成品", "moEntry": { "seq": "1", "materialNumber": "8.10.HEV.05.049025", "materialName": "成品", "qty": 1200 }, "materialList": [ { "id": "250403", "ppbomNo": "PPBOM00150358", "materialNumber": "8.10.HEV.04.01001047696", "materialName": "内胆", "mustQty": 100, "pickedQty": 20, "noPickedQty": 80, "canPickQty": 80, "stockNumber": "1100101", "stockName": "原材料仓", "batchManage": true, "lotPickable": true, "pickStatusLabel": "可领料" } ] } } ``` 失败: ```json { "result": "false", "message": "未找到生产订单分录", "data": null } ``` **字段说明:** | 字段 | 含义 | |------|------| | `data.materialName` | 订单分录**成品**名称(页头,如「成品」) | | `materialList[].materialNumber` | **子项**物料编码 | | `materialList[].materialName` | **子项**物料名称(与 PC 用料清单「子项物料名称」列一致,如「内胆」) | **页面显示:** 列表每行用 `materialNumber` + `materialName` 展示子项;应发/已领/可领看 `mustQty`/`pickedQty`/`canPickQty` **下一步:** 填领料行 → 接口 5/6 查批号 → 接口 7 提交 --- ## 5. 批号库存(按子项物料) **请求URL:** `/js/a/mes/erpPickMaterialBill/pda/lotOptions` **请求方式:** `POST`(也兼容 GET) **参数:** | 参数名 | 必选 | 类型 | 说明 | |--------|------|------|------| | materialNumber | 是 | string | 子项物料编码 | | stockNumber | 否 | string | 发料仓库(用料清单行带出) | | stockStatusNumber | 否 | string | 库存状态 | | stockOrgNumber | 否 | string | 库存组织,默认 110 | | pickQty | 否 | number | 本次领料数量(推荐批号用) | **参数示例:** ```bash curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpPickMaterialBill/pda/lotOptions?materialNumber=3.02.xxx&stockNumber=1100101&pickQty=50' ``` **返回示例:** ```json { "result": "true", "message": "成功", "data": { "lots": [ { "lotNumber": "LOT001", "qtyText": "200" } ], "suggestedLotNumber": "LOT001", "lotPickable": true, "lotHint": "共 3 条可用批号" } } ``` --- ## 6. 批号搜索 **请求URL:** `/js/a/mes/erpPickMaterialBill/pda/lotSearch` **请求方式:** `POST`(也兼容 GET) **参数:** | 参数名 | 必选 | 类型 | 说明 | |--------|------|------|------| | materialNumber | 是 | string | 子项物料编码 | | stockNumber | 否 | string | 发料仓库 | | stockStatusNumber | 否 | string | 库存状态 | | stockOrgNumber | 否 | string | 库存组织 | | lotKeyword | 否 | string | 批号关键字 | **参数示例:** ```bash curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpPickMaterialBill/pda/lotSearch?materialNumber=3.02.xxx&stockNumber=1100101&lotKeyword=LOT' ``` --- ## 7. 提交领料 **请求URL:** `/js/a/mes/erpPickMaterialBill/submitPickMaterial` **请求方式:** `POST` **Content-Type(二选一):** | 方式 | Content-Type | 说明 | |------|--------------|------| | PDA 推荐 | `application/x-www-form-urlencoded` | 表单参数,`lines` 传 JSON 数组字符串 | | 调试/脚本 | `application/json;charset=UTF-8` | 整包 JSON Body | **参数:** | 参数名 | 必选 | 类型 | 说明 | |--------|------|------|------| | billNo | 是 | string | 生产订单号 | | entryId | 是 | string | 订单分录内码 | | lines | 是 | array / string | 领料明细;表单方式时 `lines` 为 URL 编码后的 JSON 字符串 | | lines[].ppbomEntryId | 是 | string | 用料清单分录 id | | lines[].pickQty | 是 | number | 领料数量,≤ canPickQty | | lines[].lotNumber | 条件 | string | 批号管理物料必填 | **参数示例:** PDA 表单: ```bash curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpPickMaterialBill/submitPickMaterial' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'billNo=SCDD110260603003' \ --data-urlencode 'entryId=266268' \ --data-urlencode 'lines=[{"ppbomEntryId":"250403","pickQty":50,"lotNumber":"LOT001"}]' ``` JSON Body: ```bash curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpPickMaterialBill/submitPickMaterial' \ --header 'Content-Type: application/json;charset=UTF-8' \ --data '{"billNo":"SCDD110260603003","entryId":"266268","lines":[{"ppbomEntryId":"250403","pickQty":50,"lotNumber":"LOT001"}]}' ``` **返回示例:** 成功: ```json { "result": "true", "message": "领料单保存成功,单号:SCLL110260603010", "data": { "pickBillNo": "SCLL110260603010", "syncedKcCount": 1, "syncedMaterialCount": 0, "kcSyncFailed": false } } ``` 失败: ```json { "result": "false", "message": "领料数量不能超过可领数量" } ``` --- ## 8. 查看领料单明细(可选) **请求URL:** `/js/a/mes/erpPickMaterialBill/pda/detailData` **请求方式:** `POST` **参数:** | 参数名 | 必选 | 类型 | 说明 | |--------|------|------|------| | billNo | 是 | string | 领料单号 SCLL | **参数示例:** ```bash curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpPickMaterialBill/pda/detailData?billNo=SCLL110260603010' ``` **返回示例:** ```json { "result": "true", "message": "成功", "data": { "pageNo": 1, "pageSize": 20, "count": 1, "list": [ { "seq": "1", "materialNumber": "3.02.xxx", "materialName": "子项物料", "actualQty": 50, "lotNumber": "LOT001", "stockName": "原材料仓" } ] } } ```