PDA生产领料接口说明.md 10 KB

PDA 生产领料 — 接口说明

模块:ErpPickMaterialBillController(/mes/erpPickMaterialBill)
权限:mes:erpPickMaterialBill:view
服务地址示例:http://127.0.0.1:8980
只登录 MES,不直连金蝶

PDA 统一返回 CommonResp(result / message / data);列表类接口 data 为分页结构。提交接口支持 表单 POST 与 JSON Body 两种方式。


页面流程(5 步)

① 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

参数示例:

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 查看明细


2. 选择生产订单

请求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


3. 选择订单分录

请求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


4. 领料页初始化(用料清单)

请求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 提交


5. 批号库存(按子项物料)

请求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 条可用批号"
  }
}

6. 批号搜索

请求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'

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 表单:

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": "领料数量不能超过可领数量"
}

8. 查看领料单明细(可选)

请求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": "原材料仓"
      }
    ]
  }
}