模块:
ErpPickMaterialBillController(/mes/erpPickMaterialBill)
权限:mes:erpPickMaterialBill:view
服务地址示例:http://127.0.0.1:8980
只登录 MES,不直连金蝶PDA 统一返回
CommonResp(result/message/data);列表类接口data为分页结构。提交接口支持 表单 POST 与 JSON Body 两种方式。
① pda/listData 领料单列表
↓ 新增
② pda/selectOrderData 选生产订单(HEV/115 存货类别)
↓
③ pda/selectDetailData 选订单分录
↓
④ materialInit 用料清单 + 填领料数量/批号
└ pda/lotOptions 选批号(按行物料+仓库)
└ pda/lotSearch 搜批号
↓
⑤ submitPickMaterial 提交 ERP 领料单(SCLL)
请求URL: /js/a/mes/erpPickMaterialBill/pda/listData
请求方式: POST
参数:
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| pageNo | 否 | int | 页码 |
| pageSize | 否 | int | 每页条数 |
| moBillNoQuery | 否 | string | 生产订单号 |
| billNoQuery | 否 | string | 领料单号 SCLL |
参数示例:
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpPickMaterialBill/pda/listData?pageNo=1&pageSize=20'
返回示例:
成功:
{
"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 查看明细
请求URL: /js/a/mes/erpPickMaterialBill/pda/selectOrderData
请求方式: POST
参数:
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| pageNo | 否 | int | 页码 |
| pageSize | 否 | int | 每页条数 |
| billNo | 否 | string | 生产订单号 |
参数示例:
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpPickMaterialBill/pda/selectOrderData?pageNo=1&pageSize=20'
说明: 按存货类别 HEV / 欣旺达115 / 115 筛选(与 ERP 生产订单列表一致)
返回示例:
{
"result": "true",
"message": "成功",
"data": {
"pageNo": 1,
"pageSize": 20,
"count": 5,
"list": [
{
"billNo": "SCDD110260603003",
"documentStatusName": "已审核",
"inventoryCategory": "HEV",
"entryCount": 1,
"totalQty": 1200
}
]
}
}
下一步: 点选 → 接口 3,传 billNo
请求URL: /js/a/mes/erpPickMaterialBill/pda/selectDetailData
请求方式: POST
参数:
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| billNo | 是 | string | 生产订单号 |
参数示例:
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpPickMaterialBill/pda/selectDetailData?billNo=SCDD110260603003'
返回示例:
{
"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
请求URL: /js/a/mes/erpPickMaterialBill/materialInit
请求方式: POST(也兼容 GET)
参数:
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| billNo | 是 | string | 生产订单号 |
| entryId | 是 | string | 订单分录内码 |
参数示例:
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpPickMaterialBill/materialInit?billNo=SCDD110260603003&entryId=266268'
返回示例:
成功:
{
"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": "可领料"
}
]
}
}
失败:
{
"result": "false",
"message": "未找到生产订单分录",
"data": null
}
字段说明:
| 字段 | 含义 |
|---|---|
data.materialName |
订单分录成品名称(页头,如「成品」) |
materialList[].materialNumber |
子项物料编码 |
materialList[].materialName |
子项物料名称(与 PC 用料清单「子项物料名称」列一致,如「内胆」) |
页面显示: 列表每行用 materialNumber + materialName 展示子项;应发/已领/可领看 mustQty/pickedQty/canPickQty
下一步: 填领料行 → 接口 5/6 查批号 → 接口 7 提交
请求URL: /js/a/mes/erpPickMaterialBill/pda/lotOptions
请求方式: POST(也兼容 GET)
参数:
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| materialNumber | 是 | string | 子项物料编码 |
| stockNumber | 否 | string | 发料仓库(用料清单行带出) |
| stockStatusNumber | 否 | string | 库存状态 |
| stockOrgNumber | 否 | string | 库存组织,默认 110 |
| pickQty | 否 | number | 本次领料数量(推荐批号用) |
参数示例:
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpPickMaterialBill/pda/lotOptions?materialNumber=3.02.xxx&stockNumber=1100101&pickQty=50'
返回示例:
{
"result": "true",
"message": "成功",
"data": {
"lots": [
{ "lotNumber": "LOT001", "qtyText": "200" }
],
"suggestedLotNumber": "LOT001",
"lotPickable": true,
"lotHint": "共 3 条可用批号"
}
}
请求URL: /js/a/mes/erpPickMaterialBill/pda/lotSearch
请求方式: POST(也兼容 GET)
参数:
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| materialNumber | 是 | string | 子项物料编码 |
| stockNumber | 否 | string | 发料仓库 |
| stockStatusNumber | 否 | string | 库存状态 |
| stockOrgNumber | 否 | string | 库存组织 |
| lotKeyword | 否 | string | 批号关键字 |
参数示例:
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpPickMaterialBill/pda/lotSearch?materialNumber=3.02.xxx&stockNumber=1100101&lotKeyword=LOT'
请求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 表单:
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:
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"}]}'
返回示例:
成功:
{
"result": "true",
"message": "领料单保存成功,单号:SCLL110260603010",
"data": {
"pickBillNo": "SCLL110260603010",
"syncedKcCount": 1,
"syncedMaterialCount": 0,
"kcSyncFailed": false
}
}
失败:
{
"result": "false",
"message": "领料数量不能超过可领数量"
}
请求URL: /js/a/mes/erpPickMaterialBill/pda/detailData
请求方式: POST
参数:
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| billNo | 是 | string | 领料单号 SCLL |
参数示例:
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpPickMaterialBill/pda/detailData?billNo=SCLL110260603010'
返回示例:
{
"result": "true",
"message": "成功",
"data": {
"pageNo": 1,
"pageSize": 20,
"count": 1,
"list": [
{
"seq": "1",
"materialNumber": "3.02.xxx",
"materialName": "子项物料",
"actualQty": 50,
"lotNumber": "LOT001",
"stockName": "原材料仓"
}
]
}
}