PDA ERP 对接接口汇总
服务根地址:http://127.0.0.1:8980
仅登录 MES,不直连金蝶 ERP
PDA 请统一使用 POST(表单或 query 参数均可;部分辅助接口也兼容 GET 供 PC 调试)
所有 PDA 接口统一返回 CommonResp 结构(与 pdaQueryIsSn 一致)
提交类接口(submitInStock、submitPickMaterial、submit)均支持 表单 POST 与 JSON Body 两种方式
统一响应格式
| 字段 |
类型 |
说明 |
| result |
string |
"true" 成功 / "false" 失败 |
| message |
string |
提示信息 |
| data |
object |
业务数据,结构因接口而异,见各接口「返回字段说明」 |
data 分页结构(Page,列表类接口通用)
| 字段 |
类型 |
中文说明 |
| pageNo |
int |
当前页码 |
| pageSize |
int |
每页条数 |
| count |
long |
总记录数(ERP 游标式分页,末页可能为估算值) |
| list |
array |
当前页数据行 |
仓库选项 stockList[](单条)
| 字段 |
类型 |
中文说明 |
| stockNumber |
string |
仓库编码 |
| stockName |
string |
仓库名称 |
| displayLabel |
string |
展示文本,一般为「编码 + 名称」 |
仓位选项 locations[](单条)
| 字段 |
类型 |
中文说明 |
| locNumber |
string |
仓位编码 |
| locName |
string |
仓位名称 |
| displayLabel |
string |
展示文本 |
| locKey |
string |
仓位维度键(因仓库而异,仅展示用;提交可不回传,见下文「仓库与仓位」) |
批号选项 lots[](单条)
| 字段 |
类型 |
中文说明 |
| lotNumber |
string |
批号 |
| qtyText |
string |
可用/库存数量展示文本 |
MES 批次码 batch / batchList[](单条)
| 字段 |
类型 |
中文说明 |
| id |
string |
mes_batch_sn 主键,生产入库提交 batchIds 用此值 |
| batchSn |
string |
MES 托盘批次码(扫码值) |
| lineSn |
string |
产线编号,如 HEVXT、115XT |
| nums |
long |
已绑定工件数量,须 >0 才可入库 |
| instockStatus |
string |
入库状态,0 未入库 / 1 已入库 |
成功示例
{
"result": "true",
"message": "成功",
"data": { ... }
}
失败示例
{
"result": "false",
"message": "参数错误",
"data": null
}
PC 端页面仍使用原 selectOrderData、listData 等接口(直接返回 Page);PDA 请使用下文 pda/ 前缀接口。
仓库与仓位(通用)
PDA 推荐统一调用公共接口(来料检 / 生产入库 / 直接调拨共用,避免各模块重复实现与权限不一致):
| 用途 |
URL |
| 仓库列表 |
POST /js/a/mes/erpStockPda/stockList |
| 仓位选项 |
POST /js/a/mes/erpStockPda/stockLocOptions?stockNumber=1100105 |
| 初始化(仓库+默认仓位) |
POST /js/a/mes/erpStockPda/init 或 ?stockNumber= |
权限:拥有 来料检 / 生产入库 / 直接调拨 任一模块的 view 权限即可调用。
各业务模块下原有的 stockList、pda/stockLocOptions 仍保留兼容,数据与公共接口一致。
涉及来料检、生产入库、直接调拨的接口,仓库/仓位规则一致:
| 步骤 |
PDA 行为 |
| 1 |
调 /mes/erpStockPda/stockList 或业务 init 接口,获取 stockList、defaultStockNumber |
| 2 |
用户选定仓库后,调 /mes/erpStockPda/stockLocOptions?stockNumber= |
| 3 |
若返回 data.required=true,提交时必须带仓位编码(stockLocNumber,或调拨的 srcStockLocNumber / destStockLocNumber) |
| 4 |
不要写死 stockLocKey:MES 后台按仓库查金蝶档案并解析仓位内码 |
PDA 崩溃常见原因(返回 HTML 登录页)
| 现象 |
原因 |
处理 |
Logcat 出现 <title>登录 - MES生产管理系统</title> |
Session 失效或未带 Cookie |
重新登录 MES,请求头携带 Cookie: jeesite.session.id=... 或参数 __sid |
| 第一次能选仓位、第二次 Gson 崩溃 |
第二次请求未带登录态,把 HTML 当 JSON 解析 |
解析前先判断 result 字段或 Content-Type 含 json;统一改用 erpStockPda 公共接口 |
生产入库却调 erpInStock/... 仓位接口 |
模块权限不一致 |
改用 /mes/erpStockPda/stockLocOptions |
locKey / stockLocKey
| 项 |
说明 |
| 是否固定 |
否。由 ERP 仓库弹性域决定,因仓库而异。例:五金库 1100105 → F100004;半成品仓 1100104 → F100002 |
| 谁解析 |
MES 后台。根据 stockNumber + stockLocNumber 查 BD_FLEXVALUESDETAIL.FID,以整数写入金蝶 FStockLocId |
| PDA 是否必传 |
stockLocKey 可选。仓位选项返回的 locKey 仅供展示/日志;只传 stockNumber + stockLocNumber 即可 |
| 无仓位仓库 |
stockLocOptions 返回 required=false 时,提交不传仓位字段 |
提交最少字段示例(来料检)【已改:须带 checkResult】**
{
"billNo": "CGDD110260602003",
"checkResult": "OK",
"channel": "PDA",
"stockNumber": "1100105",
"stockLocNumber": "A22",
"entryIds": ["194383", "194384", "194385"],
"lines": [
{ "inspectQty": 10, "lotNumber": "11020260603" },
{ "inspectQty": 10, "lotNumber": "20250101" },
{ "inspectQty": 600 }
]
}
公共:仓库列表(推荐)
来料检、生产入库、直接调拨 共用。PDA 请优先使用本接口,勿再按业务模块分别调用各模块下的 stockList。
请求URL
/js/a/mes/erpStockPda/stockList
请求方式
权限
mes:erpInStock:view / mes:erpPrdInStock:view / mes:erpTransferDirect:view 任一即可
参数
参数示例
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpStockPda/stockList' \
--header 'Cookie: jeesite.session.id=你的会话ID'
返回示例
成功
{
"result": "true",
"message": "成功",
"data": {
"defaultStockNumber": "1100105",
"stockHint": "共 5 个可用仓库",
"stockList": [
{ "stockNumber": "1100105", "stockName": "五金库", "displayLabel": "1100105 五金库" }
]
}
}
返回字段说明
| 字段路径 |
类型 |
中文说明 |
| result |
string |
业务成功 "true" / 失败 "false" |
| message |
string |
提示信息 |
| data.defaultStockNumber |
string |
推荐默认入库仓库编码 |
| data.stockHint |
string |
仓库加载提示文本 |
| data.stockList[] |
array |
可用仓库列表,字段见「仓库选项 stockList[]」 |
公共:仓位选项(推荐)
来料检、生产入库、直接调拨 共用。用户切换仓库后须重新调用本接口。
请求URL
/js/a/mes/erpStockPda/stockLocOptions
请求方式
权限
mes:erpInStock:view / mes:erpPrdInStock:view / mes:erpTransferDirect:view 任一即可
参数
| 参数名 |
必选 |
类型 |
说明 |
| stockNumber |
是 |
string |
仓库编码(来自 stockList 或 init) |
参数示例
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpStockPda/stockLocOptions?stockNumber=1100105' \
--header 'Cookie: jeesite.session.id=你的会话ID'
返回示例
成功
{
"result": "true",
"message": "成功",
"data": {
"stockNumber": "1100105",
"required": true,
"defaultLocNumber": "A",
"locKey": "F100004",
"locHint": "共 278 个仓位,数据来自 ERP 仓位值集",
"locations": [
{ "locNumber": "A", "locName": "A", "locKey": "F100004", "displayLabel": "A A" }
]
}
}
失败(未传仓库)
{
"result": "false",
"message": "仓库编码不能为空",
"data": null
}
返回字段说明
| 字段路径 |
类型 |
中文说明 |
| result |
string |
业务成功 "true" / 失败 "false" |
| message |
string |
提示信息 |
| data.stockNumber |
string |
请求的仓库编码 |
| data.required |
boolean |
该仓库是否启用仓位(true 时须选择仓位) |
| data.defaultLocNumber |
string |
推荐默认仓位编码 |
| data.locHint |
string |
仓位加载提示文本 |
| data.locKey |
string |
仓位维度键(因仓库而异,展示用;提交可不回传) |
| data.locKeys |
array |
仓库启用的全部维度键(多维度仓库时有值) |
| data.locations[] |
array |
仓位列表,字段见「仓位选项 locations[]」 |
公共:初始化(仓库 + 默认仓位预览)
一次返回仓库列表及默认仓库(或指定仓库)的仓位预览,减少 PDA 往返。完整仓位列表仍须调「公共:仓位选项」。
请求URL
/js/a/mes/erpStockPda/init
请求方式
权限
mes:erpInStock:view / mes:erpPrdInStock:view / mes:erpTransferDirect:view 任一即可
参数
| 参数名 |
必选 |
类型 |
说明 |
| stockNumber |
否 |
string |
指定仓库编码;不传则取 defaultStockNumber 查仓位预览 |
参数示例
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpStockPda/init' \
--header 'Cookie: jeesite.session.id=你的会话ID'
返回示例
成功
{
"result": "true",
"message": "成功",
"data": {
"defaultStockNumber": "1100105",
"stockHint": "共 5 个可用仓库",
"stockList": [
{ "stockNumber": "1100105", "stockName": "五金库", "displayLabel": "1100105 五金库" }
],
"stockLoc": {
"stockNumber": "1100105",
"required": true,
"defaultLocNumber": "A11",
"locKey": "F100004",
"locHint": "共 278 个仓位,数据来自 ERP 仓位值集",
"locations": [
{ "locNumber": "A11", "locName": "A11区", "locKey": "F100004", "displayLabel": "A11 A11区" }
]
}
}
}
返回字段说明
| 字段路径 |
类型 |
中文说明 |
| result |
string |
业务成功 "true" / 失败 "false" |
| message |
string |
提示信息 |
| data.defaultStockNumber |
string |
推荐默认入库仓库编码 |
| data.stockHint |
string |
仓库加载提示文本 |
| data.stockList[] |
array |
可用仓库列表,字段见「仓库选项 stockList[]」 |
| data.stockLoc |
object |
默认/指定仓库的仓位预览,字段同「公共:仓位选项」返回的 data |
一、来料检(采购入库)
【新增·来料检记录】 提交时必传 checkResult(OK/NG);仅 OK 生成 CGRK;NG 只留 MES 检验记录。
详细对照与适配说明见:docs/erp/PDA来料检接口说明.md(文首「本次变更说明」)。
采购订单列表
请求URL
/js/a/mes/erpInStock/pda/selectOrderData
请求方式
参数
| 参数名 |
必选 |
类型 |
说明 |
| pageNo |
否 |
int |
页码,默认 1 |
| pageSize |
否 |
int |
每页条数,默认 20 |
| billNo |
否 |
string |
采购订单号 |
| materialNumberQuery |
否 |
string |
物料编码模糊 |
| documentStatusQuery |
否 |
string |
单据状态 A/B/C/D,建议默认 C 已审核 |
参数示例
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpInStock/pda/selectOrderData?pageNo=1&pageSize=20&documentStatusQuery=C'
返回示例
成功
{
"result": "true",
"message": "成功",
"data": {
"pageNo": 1,
"pageSize": 20,
"count": 1,
"list": [
{
"billNo": "CGDD110260602003",
"date": "2026-06-02",
"documentStatusName": "已审核",
"supplierName": "某某供应商",
"entryCount": 3,
"totalQty": 1500
}
]
}
}
返回字段说明
| 字段路径 |
类型 |
中文说明 |
| result |
string |
业务成功 "true" / 失败 "false" |
| message |
string |
提示信息 |
| data.pageNo |
int |
当前页码 |
| data.pageSize |
int |
每页条数 |
| data.count |
long |
总记录数 |
| data.list[].billNo |
string |
采购订单号 |
| data.list[].date |
string |
单据日期 |
| data.list[].documentStatusName |
string |
单据状态名称(如已审核) |
| data.list[].supplierName |
string |
供应商名称 |
| data.list[].entryCount |
int |
订单分录行数 |
| data.list[].totalQty |
number |
订单合计数量 |
待入分录列表
请求URL
/js/a/mes/erpInStock/pda/selectDetailData
请求方式
参数
| 参数名 |
必选 |
类型 |
说明 |
| billNo |
是 |
string |
采购订单号 |
参数示例
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpInStock/pda/selectDetailData?billNo=CGDD110260602003'
返回示例
成功
{
"result": "true",
"message": "成功",
"data": {
"pageNo": 1,
"pageSize": 20,
"count": 2,
"list": [
{
"entryId": "123456",
"seq": "1",
"materialNumber": "3.01.001",
"materialName": "某原材料",
"qty": 1000,
"instockQty": 200,
"remainQty": 800,
"unitName": "千克"
}
]
}
}
失败(已全部入库,data 中 list 为空)
{
"result": "true",
"message": "成功",
"data": {
"pageNo": 1,
"pageSize": 20,
"count": 0,
"list": []
}
}
返回字段说明
| 字段路径 |
类型 |
中文说明 |
| result |
string |
业务成功 "true" / 失败 "false" |
| message |
string |
提示信息;失败时说明原因 |
| data.pageNo |
int |
当前页码 |
| data.pageSize |
int |
每页条数 |
| data.count |
long |
总记录数,无待入分录时为 0 |
| data.list[].entryId |
string |
采购订单分录内码(提交入库 lines[].entryId 用) |
| data.list[].seq |
string |
行号 |
| data.list[].materialNumber |
string |
物料编码 |
| data.list[].materialName |
string |
物料名称 |
| data.list[].qty |
number |
订单数量 |
| data.list[].instockQty |
number |
已入库数量 |
| data.list[].remainQty |
number |
剩余可入数量(检验数量不得超过此值) |
| data.list[].unitName |
string |
计量单位 |
来料检页初始化
请求URL
/js/a/mes/erpInStock/inspectInit
请求方式
参数
| 参数名 |
必选 |
类型 |
说明 |
| billNo |
是 |
string |
采购订单号 |
| entryIds |
是 |
string / array |
勾选分录内码;多条英文逗号分隔,或 JSON 数组;仅一条时也传此字段 |
参数示例
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpInStock/inspectInit?billNo=CGDD110260602003&entryIds=123456,123457'
返回示例
成功
{
"result": "true",
"message": "",
"data": {
"billNo": "CGDD110260602003",
"defaultStockNumber": "1100105",
"inspectorCode": "zhangsan",
"inspectorName": "张三",
"inspectTime": "2026-09-11 13:30:00",
"checkResultOptions": ["OK", "NG"],
"stockList": [
{ "stockNumber": "1100105", "stockName": "五金库", "displayLabel": "1100105 五金库" }
],
"stockLoc": {
"required": true,
"defaultLocNumber": "A11",
"locKey": "F100004",
"locHint": "共 278 个仓位,数据来自 ERP 仓位值集",
"locations": [
{ "locNumber": "A11", "locName": "A11区", "locKey": "F100004", "displayLabel": "A11 A11区" }
]
},
"lines": [
{
"entryId": "123456",
"seq": "1",
"materialNumber": "3.01.001",
"materialName": "螺栓M8",
"remainQty": 800,
"batchManage": true,
"suggestedLotNumber": "LOT202606001"
}
]
}
}
仓库/仓位说明:defaultStockNumber + stockList 为仓库;stockLoc 为默认仓库的仓位预览(完整列表请调「仓位选项」)。required=true 时提交必须带 stockLocNumber;stockLocKey 可选(后台自动解析)。切换仓库后须重新调「仓位选项」。
【新增】 inspectorCode / inspectorName / inspectTime / checkResultOptions:供 PDA 预填固定检查项。
失败
{
"result": "false",
"message": "所选分录已无剩余可入数量",
"data": {
"billNo": "CGDD110260602003",
"lines": [],
"stockList": [],
"defaultStockNumber": "1100105"
}
}
返回字段说明
| 字段路径 |
类型 |
中文说明 |
变更 |
| result |
string |
业务成功 "true" / 失败 "false" |
原有 |
| message |
string |
提示信息;成功时可能为空 |
原有 |
| data.billNo |
string |
采购订单号 |
原有 |
| data.defaultStockNumber |
string |
推荐默认入库仓库编码 |
原有 |
| data.stockList[] |
array |
可用仓库列表,字段见「仓库选项 stockList[]」 |
原有 |
| data.stockLoc |
object |
默认仓库的仓位信息,字段同「仓位选项」返回的 data |
原有 |
| data.inspectorCode |
string |
默认检验员账号 |
【新增】 |
| data.inspectorName |
string |
默认检验员姓名 |
【新增】 |
| data.inspectTime |
string |
默认检验时间 |
【新增】 |
| data.checkResultOptions |
array |
固定 ["OK","NG"] |
【新增】 |
| data.lines[].entryId |
string |
分录内码 |
原有 |
| data.lines[].seq |
string |
行号 |
原有 |
| data.lines[].materialNumber |
string |
物料编码 |
原有 |
| data.lines[].materialName |
string |
物料名称 |
原有 |
| data.lines[].remainQty |
number |
剩余可入数量 |
原有 |
| data.lines[].batchManage |
boolean |
是否启用批号管理(true 时须填批号) |
原有 |
| data.lines[].suggestedLotNumber |
string |
推荐批号(批号管理物料) |
原有 |
仓位选项
请求URL
/js/a/mes/erpInStock/pda/stockLocOptions
请求方式
参数
| 参数名 |
必选 |
类型 |
说明 |
| stockNumber |
是 |
string |
仓库编码 |
参数示例
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpInStock/pda/stockLocOptions?stockNumber=1100105'
返回示例
成功
{
"result": "true",
"message": "成功",
"data": {
"required": true,
"defaultLocNumber": "A",
"locKey": "F100004",
"locHint": "共 278 个仓位,数据来自 ERP 仓位值集",
"locations": [
{ "locNumber": "A", "locName": "A", "locKey": "F100004", "displayLabel": "A A" }
]
}
}
返回字段说明
| 字段路径 |
类型 |
中文说明 |
| result |
string |
业务成功 "true" / 失败 "false" |
| message |
string |
提示信息 |
| data.required |
boolean |
该仓库是否启用仓位(true 时须选择仓位) |
| data.defaultLocNumber |
string |
推荐默认仓位编码 |
| data.locHint |
string |
仓位加载提示文本 |
| data.locKey |
string |
仓位维度键(因仓库而异,展示用;提交可不回传) |
| data.locKeys |
array |
仓库启用的全部维度键(多维度仓库时有值) |
| data.locations[] |
array |
仓位列表,字段见「仓位选项 locations[]」 |
仓库列表
请求URL
/js/a/mes/erpInStock/stockList
请求方式
参数
参数示例
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpInStock/stockList'
返回示例
成功
{
"result": "true",
"message": "成功",
"data": {
"defaultStockNumber": "1100105",
"stockHint": "共 5 个可用仓库",
"stockList": [
{ "stockNumber": "1100105", "stockName": "五金库", "displayLabel": "1100105 五金库" }
]
}
}
返回字段说明
| 字段路径 |
类型 |
中文说明 |
| result |
string |
业务成功 "true" / 失败 "false" |
| message |
string |
提示信息 |
| data.defaultStockNumber |
string |
推荐默认入库仓库编码 |
| data.stockHint |
string |
仓库加载提示文本 |
| data.stockList[] |
array |
可用仓库列表,字段见「仓库选项 stockList[]」 |
批号搜索
请求URL
/js/a/mes/erpInStock/pda/lotSearch
请求方式
参数
| 参数名 |
必选 |
类型 |
说明 |
| materialNumber |
是 |
string |
物料编码 |
| lotKeyword |
否 |
string |
批号关键字 |
参数示例
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpInStock/pda/lotSearch?materialNumber=3.01.001&lotKeyword=LOT'
返回示例
成功
{
"result": "true",
"message": "成功",
"data": {
"lots": [
{ "lotNumber": "LOT202606001", "qtyText": "0" }
],
"lotHint": "共查到 1 条批号档案"
}
}
返回字段说明
| 字段路径 |
类型 |
中文说明 |
| result |
string |
业务成功 "true" / 失败 "false" |
| message |
string |
提示信息 |
| data.lots[] |
array |
匹配的批号档案列表,字段见「批号选项 lots[]」 |
| data.lotHint |
string |
查询结果提示(无结果时可手工录入新批号) |
批号列表
请求URL
/js/a/mes/erpInStock/pda/lotOptions
请求方式
参数
| 参数名 |
必选 |
类型 |
说明 |
| materialNumber |
是 |
string |
物料编码 |
参数示例
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpInStock/pda/lotOptions?materialNumber=3.01.001'
返回示例
成功
{
"result": "true",
"message": "成功",
"data": {
"lots": [
{ "lotNumber": "LOT202606001", "qtyText": "0" }
],
"suggestedLotNumber": "LOT202606001",
"lotHint": "共 3 条批号档案,已推荐第一条"
}
}
返回字段说明
| 字段路径 |
类型 |
中文说明 |
| result |
string |
业务成功 "true" / 失败 "false" |
| message |
string |
提示信息 |
| data.lots[] |
array |
物料批号档案列表,字段见「批号选项 lots[]」 |
| data.suggestedLotNumber |
string |
推荐默认批号 |
| data.lotHint |
string |
批号加载提示文本 |
提交采购入库(含来料检)【已改:必传 checkResult】
请求URL
/js/a/mes/erpInStock/submitInStock
请求方式
参数
| 参数名 |
必选 |
类型 |
说明 |
变更 |
| billNo |
是 |
string |
采购订单号 |
原有 |
| checkResult |
是 |
string |
检验结果 OK/NG;仅 OK 生成采购入库单,NG 只保存检验记录 |
【新增】必填 |
| inspectorName |
否 |
string |
检验员,默认当前用户 |
【新增】 |
| inspectorCode |
否 |
string |
检验员账号 |
【新增】 |
| inspectTime |
否 |
string |
检验时间,默认当前时间 |
【新增】 |
| remarks |
否 |
string |
备注 |
【新增】 |
| channel |
否 |
string |
建议 PDA 传 PDA |
【新增】 |
| stockNumber |
条件 |
string |
入库仓库编码;OK 时必填 |
原有 |
| stockLocNumber |
条件 |
string |
仓库启用仓位且 OK 时必填 |
原有 |
| stockLocKey |
否 |
string |
仓位维度键,可选 |
原有 |
| entryIds |
条件 |
string / array |
分录内码;与 lines 二选一或组合 |
原有 |
| lines |
条件 |
array / string |
入库明细 JSON 数组;表单方式时 lines 为 URL 编码后的 JSON 字符串 |
原有 |
| lines[].entryId |
条件 |
string |
PO 分录内码 |
原有 |
| lines[].inspectQty |
条件 |
number |
检验数量 |
原有 |
| lines[].lotNumber |
条件 |
string |
批号管理物料必填 |
原有 |
Content-Type(二选一): application/x-www-form-urlencoded(PDA 推荐)或 application/json;charset=UTF-8
参数示例
# PDA 表单(OK 入库)
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpInStock/submitInStock' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'billNo=CGDD110260602003' \
--data-urlencode 'checkResult=OK' \
--data-urlencode 'channel=PDA' \
--data-urlencode 'stockNumber=1100105' \
--data-urlencode 'stockLocNumber=A22' \
--data-urlencode 'lines=[{"entryId":"194383","inspectQty":10,"lotNumber":"11020260603"}]'
返回示例
OK 成功【返回字段含新增】
{
"result": "true",
"message": "来料检合格,采购入库单保存成功,单号:CGRK110260624001",
"data": {
"inspectId": "xxx",
"checkResult": "OK",
"inStockCreated": "1",
"inStockBillNo": "CGRK110260624001"
}
}
NG 仅留痕【新增场景】
{
"result": "true",
"message": "来料检不合格,已保存检验记录,未生成采购入库单",
"data": {
"inspectId": "xxx",
"checkResult": "NG",
"inStockCreated": "0",
"inStockBillNo": ""
}
}
失败
{
"result": "false",
"message": "请选择来料检结果(OK/NG)"
}
返回 data 字段
| 字段 |
说明 |
变更 |
| inspectId |
MES 来料检记录 id |
【新增】 |
| checkResult |
OK / NG |
【新增】 |
| inStockCreated |
1 已生成入库单 / 0 未生成 |
【新增】 |
| inStockBillNo |
CGRK 单号;未生成时为空 |
原有 |
来料检记录列表【新增·整节】
请求URL
/js/a/mes/mesErpInStockInspect/pda/listData
请求方式
参数
| 参数名 |
必选 |
类型 |
说明 |
| pageNo |
否 |
int |
页码 |
| pageSize |
否 |
int |
每页条数 |
| poBillNo |
否 |
string |
采购订单号 |
| checkResult |
否 |
string |
OK / NG |
| inStockBillNo |
否 |
string |
入库单号 |
| inspectorName |
否 |
string |
检验员 |
参数示例
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/mesErpInStockInspect/pda/listData?pageNo=1&pageSize=20&checkResult=NG'
说明
- 【新增】 整接口:查 MES 检验留痕(含 NG);与「采购入库历史」查金蝶 CGRK 不同。
- PC 菜单:生产管理 → ERP来料检记录(需执行
db/mysql/add_mes_erp_in_stock_inspect.sql)
若仍报仓位维度为空,请确认 MES 已部署最新后端(FStockLocId 须为 ERP 仓位内码整数)。stockLocKey 传错或不传均不影响,关键是 stockNumber + stockLocNumber 正确。
ERP 下推日志:每次提交(成功/失败)均写入「生产管理 → ERP下推日志」。失败时 result_message / response_summary 含金蝶报错;request_summary 含仓库、仓位、entryIds。需先执行 db/mysql/add_mes_erp_interaction_log.sql 并重启 MES。
返回字段说明
| 字段路径 |
类型 |
中文说明 |
| result |
string |
业务成功 "true" / 失败 "false" |
| message |
string |
保存结果说明;成功时含 ERP 入库单号 |
| data.inStockBillNo |
string |
成功时返回,ERP 采购入库单号(CGRK 开头) |
采购入库历史列表
请求URL
/js/a/mes/erpInStock/pda/listData
请求方式
参数
| 参数名 |
必选 |
类型 |
说明 |
| pageNo |
否 |
int |
页码 |
| pageSize |
否 |
int |
每页条数 |
| poOrderNoQuery |
否 |
string |
采购订单号 |
| billNoQuery |
否 |
string |
入库单号 CGRK |
| materialNumberQuery |
否 |
string |
物料编码模糊 |
| documentStatusQuery |
否 |
string |
C=已审核 |
参数示例
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpInStock/pda/listData?pageNo=1&pageSize=20'
返回示例
成功
{
"result": "true",
"message": "成功",
"data": {
"pageNo": 1,
"pageSize": 20,
"count": 1,
"list": [
{
"billNo": "CGRK110260624001",
"date": "2026-06-24",
"poOrderNo": "CGDD110260602003",
"materialNumber": "3.01.001",
"realQty": 800,
"lotNumber": "LOT202606001"
}
]
}
}
返回字段说明
| 字段路径 |
类型 |
中文说明 |
| result |
string |
业务成功 "true" / 失败 "false" |
| message |
string |
提示信息 |
| data.pageNo / pageSize / count |
— |
分页字段,见「data 分页结构」 |
| data.list[].billNo |
string |
采购入库单号(CGRK) |
| data.list[].date |
string |
入库日期 |
| data.list[].poOrderNo |
string |
来源采购订单号 |
| data.list[].materialNumber |
string |
物料编码 |
| data.list[].realQty |
number |
实收数量 |
| data.list[].lotNumber |
string |
批号 |
查看入库单明细
请求URL
/js/a/mes/erpInStock/pda/detailData
请求方式
参数
| 参数名 |
必选 |
类型 |
说明 |
| billNo |
是 |
string |
采购入库单号 CGRK |
参数示例
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpInStock/pda/detailData?billNo=CGRK110260624001'
返回字段说明
| 字段路径 |
类型 |
中文说明 |
| data.list[].seq |
string |
行号 |
| data.list[].materialNumber |
string |
物料编码 |
| data.list[].realQty |
number |
实收数量 |
| data.list[].lotNumber |
string |
批号 |
| data.list[].stockName |
string |
仓库名称 |
二、生产入库
生产入库单列表
请求URL
/js/a/mes/erpPrdInStock/pda/listData
请求方式
参数
| 参数名 |
必选 |
类型 |
说明 |
| pageNo |
否 |
int |
页码 |
| pageSize |
否 |
int |
每页条数 |
| billNoQuery |
否 |
string |
入库单号 SCRK |
| moBillNoQuery |
否 |
string |
生产订单号 |
| materialNumberQuery |
否 |
string |
物料编码模糊 |
| documentStatusQuery |
否 |
string |
C=已审核 |
参数示例
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpPrdInStock/pda/listData?pageNo=1&pageSize=20'
返回示例
成功
{
"result": "true",
"message": "成功",
"data": {
"pageNo": 1,
"pageSize": 20,
"count": 1,
"list": [
{
"billNo": "SCRK110260605001",
"moBillNo": "SCDD110260605001",
"materialNumber": "8.10.HEV.10.047696",
"realQty": 150,
"lotNumber": "110260605001"
}
]
}
}
返回字段说明
| 字段路径 |
类型 |
中文说明 |
| result |
string |
业务成功 "true" / 失败 "false" |
| message |
string |
提示信息 |
| data.pageNo / pageSize / count |
— |
分页字段,见「data 分页结构」 |
| data.list[].billNo |
string |
生产入库单号(SCRK) |
| data.list[].moBillNo |
string |
来源生产订单号 |
| data.list[].materialNumber |
string |
物料编码(.10 半成品) |
| data.list[].realQty |
number |
入库数量 |
| data.list[].lotNumber |
string |
ERP 批号 |
选择生产订单
请求URL
/js/a/mes/erpPrdInStock/pda/selectOrderData
请求方式
参数
| 参数名 |
必选 |
类型 |
说明 |
| pageNo |
否 |
int |
页码 |
| pageSize |
否 |
int |
每页条数 |
| billNo |
否 |
string |
生产订单号 |
参数示例
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpPrdInStock/pda/selectOrderData?pageNo=1&pageSize=20'
返回示例
成功
{
"result": "true",
"message": "成功",
"data": {
"pageNo": 1,
"pageSize": 20,
"count": 10,
"list": [
{
"billNo": "SCDD110260605001",
"date": "2026-06-01",
"documentStatusName": "已审核",
"inventoryCategory": "HEV",
"entryCount": 1,
"totalQty": 1500
}
]
}
}
返回字段说明
| 字段路径 |
类型 |
中文说明 |
| result |
string |
业务成功 "true" / 失败 "false" |
| message |
string |
提示信息 |
| data.pageNo / pageSize / count |
— |
分页字段,见「data 分页结构」 |
| data.list[].billNo |
string |
生产订单号 |
| data.list[].date |
string |
单据日期 |
| data.list[].documentStatusName |
string |
单据状态名称 |
| data.list[].inventoryCategory |
string |
存货类别(HEV / 115 等) |
| data.list[].entryCount |
int |
订单分录行数 |
| data.list[].totalQty |
number |
订单合计数量 |
选择订单分录
请求URL
/js/a/mes/erpPrdInStock/pda/selectDetailData
请求方式
参数
| 参数名 |
必选 |
类型 |
说明 |
| billNo |
是 |
string |
生产订单号 |
参数示例
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpPrdInStock/pda/selectDetailData?billNo=SCDD110260605001'
返回示例
成功
{
"result": "true",
"message": "成功",
"data": {
"pageNo": 1,
"pageSize": 20,
"count": 1,
"list": [
{
"entryId": "266500",
"seq": "1",
"materialNumber": "8.10.HEV.10.047696",
"materialName": "下壳体",
"qty": 1500,
"instockQty": 264,
"remainQty": 1236,
"unitName": "件"
}
]
}
}
返回字段说明
| 字段路径 |
类型 |
中文说明 |
| result |
string |
业务成功 "true" / 失败 "false" |
| message |
string |
提示信息 |
| data.pageNo / pageSize / count |
— |
分页字段,见「data 分页结构」 |
| data.list[].entryId |
string |
生产订单分录内码(formInit、submit 用) |
| data.list[].seq |
string |
行号 |
| data.list[].materialNumber |
string |
物料编码(.10 半成品) |
| data.list[].materialName |
string |
物料名称 |
| data.list[].qty |
number |
订单数量 |
| data.list[].instockQty |
number |
已入库数量 |
| data.list[].remainQty |
number |
剩余可入数量 |
| data.list[].unitName |
string |
计量单位 |
选批次入库页初始化
请求URL
/js/a/mes/erpPrdInStock/formInit
请求方式
参数
| 参数名 |
必选 |
类型 |
说明 |
| moBillNo |
是 |
string |
生产订单号 |
| entryId |
是 |
string |
订单分录内码 |
参数示例
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpPrdInStock/formInit?moBillNo=SCDD110260605001&entryId=266500'
返回示例
成功
{
"result": "true",
"message": "",
"data": {
"moBillNo": "SCDD110260605001",
"entryId": "266500",
"moEntry": {
"qty": 1500,
"instockQty": 264,
"remainQty": 1236
},
"batchList": [
{
"id": "batch-id-001",
"batchSn": "20260527133003",
"lineSn": "HEVXT",
"nums": 50
}
],
"defaultStockNumber": "1100105",
"stockList": [
{ "stockNumber": "1100105", "stockName": "五金库" }
]
}
}
失败(无待入库批次)
{
"result": "true",
"message": "暂无待入库 MES 批次码。须产线 [HEVXT]、nums>0、且未入库",
"data": {
"moBillNo": "SCDD110260605001",
"entryId": "266500",
"moEntry": { "qty": 1500, "instockQty": 264, "remainQty": 1236 },
"batchList": [],
"stockList": [],
"defaultStockNumber": "1100105"
}
}
返回字段说明
| 字段路径 |
类型 |
中文说明 |
| result |
string |
业务成功 "true" / 失败 "false" |
| message |
string |
提示信息;无待入库批次时说明原因 |
| data.moBillNo |
string |
生产订单号 |
| data.entryId |
string |
订单分录内码 |
| data.moEntry.qty |
number |
订单数量 |
| data.moEntry.instockQty |
number |
已入库数量 |
| data.moEntry.remainQty |
number |
剩余可入数量 |
| data.batchList[] |
array |
待入库 MES 批次码,字段见「MES 批次码 batch」 |
| data.defaultStockNumber |
string |
推荐默认入库仓库编码 |
| data.stockList[] |
array |
可用仓库列表 |
扫 MES 批次码校验
请求URL
/js/a/mes/erpPrdInStock/batchScan
请求方式
参数
| 参数名 |
必选 |
类型 |
说明 |
| batchSn |
是 |
string |
MES 托盘批次码 |
| materialNumber |
是 |
string |
当前订单分录物料编码 |
参数示例
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpPrdInStock/batchScan?batchSn=20260527133003&materialNumber=8.10.HEV.10.047696'
返回示例
成功
{
"result": "true",
"message": "可以入库",
"data": {
"batch": {
"id": "batch-id-001",
"batchSn": "20260527133003",
"lineSn": "HEVXT",
"nums": 50
}
}
}
失败
{
"result": "false",
"message": "批次码产线 115XT 与当前物料 8.10.HEV.10.047696 不匹配,不能入库",
"data": {
"batch": {
"id": "batch-id-001",
"batchSn": "20260527133003",
"lineSn": "115XT",
"nums": 50
}
}
}
返回字段说明
| 字段路径 |
类型 |
中文说明 |
| result |
string |
业务成功 "true" / 失败 "false" |
| message |
string |
校验结果说明(如「可以入库」或失败原因) |
| data.batch |
object |
MES 批次码信息,字段见「MES 批次码 batch」 |
仓位选项
请求URL
/js/a/mes/erpPrdInStock/pda/stockLocOptions
请求方式
参数
| 参数名 |
必选 |
类型 |
说明 |
| stockNumber |
是 |
string |
仓库编码 |
参数示例
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpPrdInStock/pda/stockLocOptions?stockNumber=1100105'
返回示例
成功
{
"result": "true",
"message": "成功",
"data": {
"required": true,
"defaultLocNumber": "A",
"locKey": "F100004",
"locHint": "共 278 个仓位,数据来自 ERP 仓位值集",
"locations": [
{ "locNumber": "A", "locName": "A", "locKey": "F100004", "displayLabel": "A A" }
]
}
}
返回字段说明
| 字段路径 |
类型 |
中文说明 |
| result |
string |
业务成功 "true" / 失败 "false" |
| message |
string |
提示信息 |
| data.required |
boolean |
是否必须选择仓位 |
| data.defaultLocNumber |
string |
推荐默认仓位编码 |
| data.locHint |
string |
仓位加载提示 |
| data.locKey |
string |
仓位维度键(展示用;提交可不回传) |
| data.locations[] |
array |
仓位列表,字段见「仓位选项 locations[]」 |
仓库列表
请求URL
/js/a/mes/erpPrdInStock/stockList
请求方式
参数
参数示例
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpPrdInStock/stockList'
返回示例
成功
{
"result": "true",
"message": "成功",
"data": {
"defaultStockNumber": "1100105",
"stockHint": "共 5 个可用仓库",
"stockList": [
{ "stockNumber": "1100105", "stockName": "五金库" }
]
}
}
返回字段说明
| 字段路径 |
类型 |
中文说明 |
| result |
string |
业务成功 "true" / 失败 "false" |
| message |
string |
提示信息 |
| data.defaultStockNumber |
string |
推荐默认入库仓库编码 |
| data.stockHint |
string |
仓库加载提示 |
| data.stockList[] |
array |
可用仓库列表 |
提交生产入库
请求URL
/js/a/mes/erpPrdInStock/submit
请求方式
参数
| 参数名 |
必选 |
类型 |
说明 |
| moBillNo |
是 |
string |
生产订单号 |
| entryId |
是 |
string |
订单分录内码 |
| batchIds |
是 |
array / string |
mes_batch_sn.id 列表;表单方式传 JSON 数组字符串或逗号分隔 |
| stockNumber |
是 |
string |
入库仓库编码 |
| stockLocNumber |
条件 |
string |
仓库启用仓位时必填 |
| stockLocKey |
否 |
string |
仓位维度键,可选 |
Content-Type(二选一): application/x-www-form-urlencoded(PDA 推荐)或 application/json;charset=UTF-8
参数示例
# PDA 表单
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpPrdInStock/submit' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'moBillNo=SCDD110260605001' \
--data-urlencode 'entryId=266500' \
--data-urlencode 'batchIds=["batch-id-001"]' \
--data-urlencode 'stockNumber=1100105' \
--data-urlencode 'stockLocNumber=A22'
# JSON Body
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpPrdInStock/submit' \
--header 'Content-Type: application/json;charset=UTF-8' \
--data '{"moBillNo":"SCDD110260605001","entryId":"266500","batchIds":["batch-id-001"],"stockNumber":"1100105","stockLocNumber":"A22"}'
返回示例
成功
{
"result": "true",
"message": "生产入库单保存成功,单号:SCRK110260605002;合计数量 100,绑定批次 1 个",
"data": {
"billNo": "SCRK110260605002",
"totalQty": 100,
"batchCount": 1,
"lotNumber": "110260605002"
}
}
失败
{
"result": "false",
"message": "请至少选择一个 MES 批次码"
}
返回字段说明
| 字段路径 |
类型 |
中文说明 |
| result |
string |
业务成功 "true" / 失败 "false" |
| message |
string |
保存结果说明 |
| data.billNo |
string |
成功时返回,ERP 生产入库单号(SCRK) |
| data.totalQty |
number |
本次合计入库数量(所选批次 nums 之和) |
| data.batchCount |
int |
绑定的 MES 批次码个数 |
| data.lotNumber |
string |
ERP 生成的批号(若有) |
查看生产入库单明细
请求URL
/js/a/mes/erpPrdInStock/pda/detailData
请求方式
参数
| 参数名 |
必选 |
类型 |
说明 |
| billNo |
是 |
string |
生产入库单号 SCRK |
参数示例
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpPrdInStock/pda/detailData?billNo=SCRK110260605002'
三、生产领料
领料单列表
请求URL
/js/a/mes/erpPickMaterialBill/pda/listData
请求方式
参数
| 参数名 |
必选 |
类型 |
说明 |
| 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",
"moBillNo": "SCDD110260603003",
"materialNumber": "3.02.xxx",
"actualQty": 100
}
]
}
}
返回字段说明
| 字段路径 |
类型 |
中文说明 |
| result |
string |
业务成功 "true" / 失败 "false" |
| message |
string |
提示信息 |
| data.pageNo / pageSize / count |
— |
分页字段,见「data 分页结构」 |
| data.list[].billNo |
string |
生产领料单号(SCLL) |
| data.list[].moBillNo |
string |
来源生产订单号 |
| data.list[].materialNumber |
string |
子项物料编码 |
| data.list[].actualQty |
number |
实发数量 |
选择生产订单
请求URL
/js/a/mes/erpPickMaterialBill/pda/selectOrderData
请求方式
参数
| 参数名 |
必选 |
类型 |
说明 |
| 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'
返回示例
成功
{
"result": "true",
"message": "成功",
"data": {
"pageNo": 1,
"pageSize": 20,
"count": 5,
"list": [
{
"billNo": "SCDD110260603003",
"documentStatusName": "已审核",
"inventoryCategory": "HEV",
"entryCount": 1,
"totalQty": 1200
}
]
}
}
返回字段说明
| 字段路径 |
类型 |
中文说明 |
| result |
string |
业务成功 "true" / 失败 "false" |
| message |
string |
提示信息 |
| data.pageNo / pageSize / count |
— |
分页字段,见「data 分页结构」 |
| data.list[].billNo |
string |
生产订单号 |
| data.list[].documentStatusName |
string |
单据状态名称 |
| data.list[].inventoryCategory |
string |
存货类别 |
| data.list[].entryCount |
int |
订单分录行数 |
| data.list[].totalQty |
number |
订单合计数量 |
选择订单分录
请求URL
/js/a/mes/erpPickMaterialBill/pda/selectDetailData
请求方式
参数
| 参数名 |
必选 |
类型 |
说明 |
| 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",
"qty": 1200,
"workshopName": "冲压壳体线"
}
]
}
}
返回字段说明
| 字段路径 |
类型 |
中文说明 |
| result |
string |
业务成功 "true" / 失败 "false" |
| message |
string |
提示信息 |
| data.pageNo / pageSize / count |
— |
分页字段,见「data 分页结构」 |
| data.list[].entryId |
string |
生产订单分录内码(materialInit、submit 用) |
| data.list[].seq |
string |
行号 |
| data.list[].materialNumber |
string |
成品物料编码(.05) |
| data.list[].qty |
number |
订单数量 |
| data.list[].workshopName |
string |
生产车间名称 |
领料页初始化(用料清单)
请求URL
/js/a/mes/erpPickMaterialBill/materialInit
请求方式
参数
| 参数名 |
必选 |
类型 |
说明 |
| 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,
"canPickQty": 80,
"stockNumber": "1100101",
"batchManage": true,
"pickStatusLabel": "可领料"
},
{
"id": "250404",
"ppbomNo": "PPBOM00150358",
"materialNumber": "8.10.HEV.04.02001047696-2",
"materialName": "横梁-2",
"mustQty": 120,
"pickedQty": 0,
"canPickQty": 120,
"stockNumber": "1100101",
"batchManage": true,
"pickStatusLabel": "可领料"
}
]
}
}
失败
{
"result": "false",
"message": "未找到生产订单分录",
"data": null
}
返回字段说明
| 字段路径 |
类型 |
中文说明 |
| result |
string |
业务成功 "true" / 失败 "false" |
| message |
string |
提示信息;用料清单为空时可能有说明 |
| data.billNo |
string |
生产订单号 |
| data.entryId |
string |
订单分录内码 |
| data.materialName |
string |
订单分录成品物料名称(页头展示用,与 moEntry 一致) |
| data.moEntry.seq |
string |
订单分录行号 |
| data.moEntry.materialNumber |
string |
成品物料编码 |
| data.moEntry.materialName |
string |
成品物料名称 |
| data.moEntry.qty |
number |
订单数量 |
| data.materialList[].id |
string |
用料清单分录 id(提交 lines[].ppbomEntryId 用) |
| data.materialList[].ppbomNo |
string |
生产用料清单号 |
| data.materialList[].materialNumber |
string |
子项物料编码 |
| data.materialList[].materialName |
string |
子项物料名称(如「内胆」「横梁-2」,PDA 列表必用) |
| data.materialList[].mustQty |
number |
应发数量 |
| data.materialList[].pickedQty |
number |
已领数量 |
| data.materialList[].canPickQty |
number |
可领数量(领料数不得超过此值) |
| data.materialList[].stockNumber |
string |
默认发料仓库编码 |
| data.materialList[].batchManage |
boolean |
是否批号管理(true 时须选批号) |
| data.materialList[].pickStatusLabel |
string |
领料状态展示(如可领料) |
批号库存选项
请求URL
/js/a/mes/erpPickMaterialBill/pda/lotOptions
请求方式
参数
| 参数名 |
必选 |
类型 |
说明 |
| 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 条可用批号"
}
}
返回字段说明
| 字段路径 |
类型 |
中文说明 |
| result |
string |
业务成功 "true" / 失败 "false" |
| message |
string |
提示信息 |
| data.lots[] |
array |
可用批号库存列表,字段见「批号选项 lots[]」 |
| data.suggestedLotNumber |
string |
推荐批号 |
| data.lotPickable |
boolean |
是否存在可领批号库存 |
| data.lotHint |
string |
批号/库存提示(无库存时为诊断说明) |
批号搜索
请求URL
/js/a/mes/erpPickMaterialBill/pda/lotSearch
请求方式
参数
| 参数名 |
必选 |
类型 |
说明 |
| 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'
返回示例
成功
{
"result": "true",
"message": "成功",
"data": {
"lots": [
{ "lotNumber": "LOT001", "qtyText": "200" }
],
"lotHint": "共查到 1 条"
}
}
返回字段说明
| 字段路径 |
类型 |
中文说明 |
| result |
string |
业务成功 "true" / 失败 "false" |
| message |
string |
提示信息 |
| data.lots[] |
array |
匹配的批号库存列表 |
| data.lotHint |
string |
查询结果提示 |
提交领料
请求URL
/js/a/mes/erpPickMaterialBill/submitPickMaterial
请求方式
参数
| 参数名 |
必选 |
类型 |
说明 |
| billNo |
是 |
string |
生产订单号 |
| entryId |
是 |
string |
订单分录内码 |
| lines |
是 |
array / string |
领料明细;表单方式时 lines 为 URL 编码后的 JSON 字符串 |
| lines[].ppbomEntryId |
是 |
string |
用料清单分录 id |
| lines[].pickQty |
是 |
number |
领料数量 |
| lines[].lotNumber |
条件 |
string |
批号管理物料必填 |
Content-Type(二选一): application/x-www-form-urlencoded(PDA 推荐)或 application/json;charset=UTF-8
参数示例
# 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": "领料数量不能超过可领数量"
}
返回字段说明
| 字段路径 |
类型 |
中文说明 |
| result |
string |
业务成功 "true" / 失败 "false" |
| message |
string |
保存结果说明 |
| data.pickBillNo |
string |
成功时返回,ERP 领料单号(SCLL) |
| data.syncedKcCount |
int |
同步到 MES 库存的行数 |
| data.syncedMaterialCount |
int |
新增 MES 物料档案数 |
| data.kcSyncFailed |
boolean |
领料单已保存但 MES 库存同步是否失败 |
查看领料单明细
请求URL
/js/a/mes/erpPickMaterialBill/pda/detailData
请求方式
参数
| 参数名 |
必选 |
类型 |
说明 |
| billNo |
是 |
string |
领料单号 SCLL |
参数示例
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpPickMaterialBill/pda/detailData?billNo=SCLL110260603010'
四、直接调拨
与 PC「增加直接调拨单」一致:不关联生产订单。点新增调用 formInit 直接进入填单页;选物料和调出仓库后调 pda/lotOptions 选批号;调拨数量通过 batchScan 扫批次码累加,须已发货检合格;提交传 traySns(托盘码逗号拼接),成功后托盘改为已发货并绑定调拨单号。
详细说明见 PDA直接调拨接口说明.md。
调拨单列表
请求URL
/js/a/mes/erpTransferDirect/pda/listData
请求方式
参数
| 参数名 |
必选 |
类型 |
说明 |
| pageNo |
否 |
int |
页码 |
| pageSize |
否 |
int |
每页条数 |
| billNoQuery |
否 |
string |
调拨单号 |
| moBillNoQuery |
否 |
string |
生产订单号 |
参数示例
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpTransferDirect/pda/listData?pageNo=1&pageSize=20'
返回示例
成功
{
"result": "true",
"message": "成功",
"data": {
"pageNo": 1,
"pageSize": 20,
"count": 1,
"list": [
{
"billNo": "ZJDB110260605001",
"moBillNo": "SCDD110260605001",
"materialNumber": "8.10.HEV.10.047696",
"lotNumber": "110260605001",
"realQty": 100
}
]
}
}
返回字段说明
| 字段路径 |
类型 |
中文说明 |
| result |
string |
业务成功 "true" / 失败 "false" |
| message |
string |
提示信息 |
| data.pageNo / pageSize / count |
— |
分页字段,见「data 分页结构」 |
| data.list[].billNo |
string |
直接调拨单号(ZJDB) |
| data.list[].moBillNo |
string |
来源生产订单号 |
| data.list[].materialNumber |
string |
物料编码(.10 半成品) |
| data.list[].lotNumber |
string |
批号 |
| data.list[].realQty |
number |
调拨数量 |
选择生产订单(兼容旧版,新增流程不再调用)
请求URL
/js/a/mes/erpTransferDirect/pda/selectOrderData
请求方式
参数
| 参数名 |
必选 |
类型 |
说明 |
| pageNo |
否 |
int |
页码 |
| pageSize |
否 |
int |
每页条数 |
| billNo |
否 |
string |
生产订单号 |
参数示例
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpTransferDirect/pda/selectOrderData?pageNo=1&pageSize=20'
返回示例
成功
{
"result": "true",
"message": "成功",
"data": {
"pageNo": 1,
"pageSize": 20,
"count": 10,
"list": [
{
"billNo": "SCDD110260605001",
"date": "2026-06-01",
"inventoryCategory": "HEV",
"entryCount": 1,
"totalQty": 1500
}
]
}
}
返回字段说明
| 字段路径 |
类型 |
中文说明 |
| result |
string |
业务成功 "true" / 失败 "false" |
| message |
string |
提示信息 |
| data.pageNo / pageSize / count |
— |
分页字段,见「data 分页结构」 |
| data.list[].billNo |
string |
生产订单号(仅 HEV/115 物料 .10) |
| data.list[].date |
string |
单据日期 |
| data.list[].inventoryCategory |
string |
存货类别 |
| data.list[].entryCount |
int |
订单分录行数 |
| data.list[].totalQty |
number |
订单合计数量 |
调拨页初始化
请求URL
/js/a/mes/erpTransferDirect/formInit
请求方式
参数
无(不再传 moBillNo,点新增直接进入填单页)
参数示例
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpTransferDirect/formInit'
返回示例
成功
{
"result": "true",
"message": "成功",
"data": {
"transferCategory": "3",
"transferCategoryName": "外发调拨",
"scanHint": "调拨数量通过扫描批次码累加,扫码前须已完成发货检",
"materialList": [
{
"materialNumber": "8.10.HEV.10.047696",
"materialName": "HEV",
"displayLabel": "8.10.HEV.10.047696(HEV)",
"defaultUnitNumber": "Pcs",
"units": [
{ "unitNumber": "Pcs", "unitName": "个" }
]
}
],
"defaultSrcStockNumber": "1100105",
"defaultDestStockNumber": "",
"stockList": [
{ "stockNumber": "1100105", "stockName": "五金库" }
]
}
}
返回字段说明
| 字段路径 |
类型 |
中文说明 |
| result |
string |
业务成功 "true" / 失败 "false" |
| message |
string |
提示信息 |
| data.transferCategoryName |
string |
固定「外发调拨」 |
| data.materialList[] |
array |
HEV / 115 可调拨物料(含单位) |
| data.defaultSrcStockNumber |
string |
推荐默认调出仓库编码 |
| data.defaultDestStockNumber |
string |
推荐默认调入仓库编码(配置项) |
| data.stockList[] |
array |
可用仓库列表 |
| data.scanHint |
string |
扫码累加数量说明 |
选批号(选物料和调出仓库后调用)
请求URL
/js/a/mes/erpTransferDirect/pda/lotOptions
请求方式
参数
| 参数名 |
必选 |
类型 |
说明 |
| materialNumber |
是 |
string |
物料编码 |
| stockNumber |
是 |
string |
调出仓库编码 |
| stockName |
否 |
string |
仓库名称,仅提示用 |
| lotKeyword |
否 |
string |
批号关键字,传入则搜索 |
| pickQty |
否 |
number |
计划数量,用于推荐批号 |
参数示例
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpTransferDirect/pda/lotOptions?materialNumber=8.10.HEV.10.047696&stockNumber=1100105'
返回示例
成功
{
"result": "true",
"message": "成功",
"data": {
"materialNumber": "8.10.HEV.10.047696",
"stockNumber": "1100105",
"lots": [
{ "lotNumber": "110260605001", "qty": 100, "qtyText": "100" }
],
"suggestedLotNumber": "110260605001",
"lotPickable": true,
"lotHint": "共 1 条可用批号"
}
}
PDA:选中 lots[].lotNumber 作为提交 lotNumber。切换物料或调出仓后须重调。
扫批次码(累加数量 + 发货检校验)
请求URL
/js/a/mes/erpTransferDirect/batchScan
请求方式
参数
| 参数名 |
必选 |
类型 |
说明 |
| batchSn |
是 |
string |
批次码(扫码值) |
| materialNumber |
否 |
string |
当前已选物料;传入时须与批次产线物料一致 |
参数示例
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpTransferDirect/batchScan?batchSn=20260804084909&materialNumber=8.10.HEV.10.047696'
返回示例
成功
{
"result": "true",
"message": "扫码成功,可累加数量 2",
"data": {
"batchSn": "20260804084909",
"nums": 2,
"qtyIncrement": 2,
"materialNumber": "8.10.HEV.10.047696",
"lotNumber": "110260605001",
"batchStatus": "1",
"inspected": true
}
}
PDA:qty = qty + data.qtyIncrement。须 batchStatus=1(已发货检合格)才允许累加。
生产入库源行列表(兼容旧版,新增流程不再调用)
请求URL
/js/a/mes/erpTransferDirect/pda/instockSourceData
请求方式
参数
| 参数名 |
必选 |
类型 |
说明 |
| moBillNo |
是 |
string |
生产订单号 |
参数示例
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpTransferDirect/pda/instockSourceData?moBillNo=SCDD110260605001'
返回示例
成功
{
"result": "true",
"message": "成功",
"data": {
"pageNo": 1,
"pageSize": 20,
"count": 1,
"list": [
{
"billNo": "SCRK110260605001",
"entryId": "12345",
"lotNumber": "110260605001",
"realQty": 150
}
]
}
}
返回字段说明
| 字段路径 |
类型 |
中文说明 |
| result |
string |
业务成功 "true" / 失败 "false" |
| message |
string |
提示信息 |
| data.pageNo / pageSize / count |
— |
分页字段,见「data 分页结构」 |
| data.list[].billNo |
string |
生产入库单号(SCRK) |
| data.list[].entryId |
string |
生产入库分录内码 |
| data.list[].lotNumber |
string |
批号 |
| data.list[].realQty |
number |
入库数量 |
仓位选项
请求URL
/js/a/mes/erpTransferDirect/pda/stockLocOptions
请求方式
参数
| 参数名 |
必选 |
类型 |
说明 |
| stockNumber |
是 |
string |
仓库编码(调出仓、调入仓各调一次) |
参数示例
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpTransferDirect/pda/stockLocOptions?stockNumber=1100105'
返回示例
成功
{
"result": "true",
"message": "成功",
"data": {
"required": true,
"defaultLocNumber": "A",
"locKey": "F100004",
"locHint": "共 278 个仓位,数据来自 ERP 仓位值集",
"locations": [
{ "locNumber": "A", "locName": "A", "locKey": "F100004", "displayLabel": "A A" }
]
}
}
返回字段说明
| 字段路径 |
类型 |
中文说明 |
| result |
string |
业务成功 "true" / 失败 "false" |
| message |
string |
提示信息 |
| data.required |
boolean |
是否必须选择仓位 |
| data.defaultLocNumber |
string |
推荐默认仓位编码 |
| data.locHint |
string |
仓位加载提示 |
| data.locKey |
string |
仓位维度键(展示用;提交可不回传) |
| data.locations[] |
array |
仓位列表,字段见「仓位选项 locations[]」 |
仓库列表
请求URL
/js/a/mes/erpTransferDirect/stockList
请求方式
参数
参数示例
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpTransferDirect/stockList'
返回示例
成功
{
"result": "true",
"message": "成功",
"data": {
"defaultStockNumber": "1100105",
"defaultDestStockNumber": "",
"stockHint": "共 5 个可用仓库",
"stockList": [
{ "stockNumber": "1100105", "stockName": "五金库" }
]
}
}
返回字段说明
| 字段路径 |
类型 |
中文说明 |
| result |
string |
业务成功 "true" / 失败 "false" |
| message |
string |
提示信息 |
| data.defaultStockNumber |
string |
推荐默认调出仓库编码 |
| data.defaultDestStockNumber |
string |
推荐默认调入仓库编码(配置项) |
| data.stockHint |
string |
仓库加载提示 |
| data.stockList[] |
array |
可用仓库列表 |
提交调拨
请求URL
/js/a/mes/erpTransferDirect/submit
请求方式
参数
| 参数名 |
必选 |
类型 |
说明 |
| materialNumber |
是 |
string |
物料编码(HEV / 115) |
| lotNumber |
是 |
string |
ERP 批号 |
| qty |
是 |
number |
调拨数量(扫码 qtyIncrement 合计) |
| unitNumber |
否 |
string |
计量单位;不传则取物料默认单位 |
| srcStockNumber |
是 |
string |
调出仓库 |
| srcStockLocNumber |
条件 |
string |
调出仓库启用仓位时必填 |
| srcStockLocKey |
否 |
string |
调出仓位维度键,可选 |
| destStockNumber |
是 |
string |
调入仓库 |
| destStockLocNumber |
条件 |
string |
调入仓库启用仓位时必填 |
| destStockLocKey |
否 |
string |
调入仓位维度键,可选 |
| traySns |
是 |
string |
托盘码逗号拼接,如 20260804084909,20260804085001。成功后改为已发货并绑定调拨单号 |
| batchSns |
否 |
string / array |
兼容旧参数,与 traySns 合并去重 |
不再传 moBillNo / instockBillNo / instockEntryId。
Content-Type(二选一): application/x-www-form-urlencoded(PDA 推荐)或 application/json;charset=UTF-8
参数示例
# PDA 表单
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpTransferDirect/submit' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'materialNumber=8.10.HEV.10.047696' \
--data-urlencode 'lotNumber=110260605001' \
--data-urlencode 'qty=2' \
--data-urlencode 'srcStockNumber=1100105' \
--data-urlencode 'srcStockLocNumber=A' \
--data-urlencode 'destStockNumber=1100217' \
--data-urlencode 'traySns=20260804084909,20260804085001'
# JSON Body
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpTransferDirect/submit' \
--header 'Content-Type: application/json;charset=UTF-8' \
--data '{"materialNumber":"8.10.HEV.10.047696","lotNumber":"110260605001","qty":2,"srcStockNumber":"1100105","srcStockLocNumber":"A","destStockNumber":"1100217","traySns":"20260804084909,20260804085001"}'
返回示例
成功
{
"result": "true",
"message": "直接调拨单保存成功,单号:ZJDB110260605001",
"data": {
"billNo": "ZJDB110260605001"
}
}
失败
{
"result": "false",
"message": "批次码 20260804084909 尚未发货检,不能调拨"
}
返回字段说明
| 字段路径 |
类型 |
中文说明 |
| result |
string |
业务成功 "true" / 失败 "false" |
| message |
string |
保存结果说明 |
| data.billNo |
string |
成功时返回,ERP 直接调拨单号(ZJDB) |
查看调拨单明细
请求URL
/js/a/mes/erpTransferDirect/pda/detailData
请求方式
参数
| 参数名 |
必选 |
类型 |
说明 |
| billNo |
是 |
string |
直接调拨单号 ZJDB |
参数示例
curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpTransferDirect/pda/detailData?billNo=ZJDB110260605001'