PDA直接调拨接口说明.md 31 KB

PDA 直接调拨 — 接口说明

模块:ErpTransferDirectController(/mes/erpTransferDirect)
权限:mes:erpTransferDirect:view
服务地址示例:http://127.0.0.1:8980
只登录 MES,不直连金蝶;请求须带会话(Cookie jeesite.session.id 或 __sid + __ajax=json)。

PDA 统一返回 CommonResp(result / message / data)。
提交接口支持 表单 POST 与 JSON Body 两种方式。

与 PC「增加直接调拨单」一致:不关联生产订单。点新增直接进入填单页;调拨数量通过扫描批次码累加;扫码时校验是否已发货检合格。


统一响应格式

字段 类型 说明
result string "true" 业务成功 / "false" 业务失败
message string 提示信息。成功时可空或为「成功」;失败时为原因,PDA 直接展示
data object / null 业务数据。失败时也可能带部分字段(如扫码失败仍返回批次状态)

列表类接口的 data 为分页结构:

字段 类型 说明
data.pageNo int 当前页码
data.pageSize int 每页条数
data.count long 总记录数(ERP 游标式分页,末页可能为估算值)
data.list array 当前页数据行

页面流程

① pda/listData                         调拨单列表(模块首页)
        ↓ 点「新增」(无需选生产订单)
② formInit                             物料、单位、仓库列表、默认仓
        ↓ 选调出仓库 / 调入仓库后
③ erpStockPda/stockLocOptions          查该仓库仓位(调出、调入各调一次)
   或 erpTransferDirect/pda/stockLocOptions
        ↓ 选物料 + 调出仓库后
④ pda/lotOptions                       查 ERP 即时库存可用批号
        ↓ 扫批次码(可多次,累加数量)
⑤ batchScan                            校验已发货检,qty += qtyIncrement
        ↓ 填完仓库仓位、批号后
⑥ submit                               提交;传 traySns(托盘码逗号拼接)

仓库列表:formInit 已返回 stockList,一般不必再调。若要单独刷新仓库,用接口 3。

发货检规则:

批次状态 batchStatus 含义 可否扫码累加调拨数量
3 待装中(尚未生产入库) 否
0 仓库中(含发货检 NG) 否
1 合格(发货检 OK) 是
2 已发货 否

1. 调拨单列表

模块首页。点某行可看明细(接口 8);点「新增」调接口 2。

请求URL: /js/a/mes/erpTransferDirect/pda/listData

请求方式: POST

参数:

参数名 必选 类型 说明
pageNo 否 int 页码,默认 1
pageSize 否 int 每页条数,默认 20
billNoQuery 否 string 调拨单号模糊查询
materialNumberQuery 否 string 物料编码。不传则 HEV+115;可传 8.10.HEV.10.047696 或 8.35.115.10.5003146600021
documentStatusQuery 否 string 单据状态:A 创建 / B 审核中 / C 已审核 / D 重新审核

参数示例:

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",
        "date": "2026-06-05",
        "documentStatus": "C",
        "documentStatusName": "已审核",
        "billTypeName": "直接调拨",
        "seq": "1",
        "materialNumber": "8.10.HEV.10.047696",
        "materialName": "下壳体",
        "qty": 100,
        "unitName": "个",
        "srcStockNumber": "1100105",
        "srcStockName": "五金库",
        "destStockNumber": "1100217",
        "destStockName": "成品仓",
        "lotNumber": "110260605001"
      }
    ]
  }
}

返回字段说明:

字段路径 类型 说明
result string "true" / "false"
message string 提示信息
data.pageNo int 当前页码
data.pageSize int 每页条数
data.count long 总记录数(游标估算)
data.list[] array 调拨明细分录(一行一条)
data.list[].billNo string 直接调拨单号(ZJDB),点行看明细时回传
data.list[].date string 调拨日期,yyyy-MM-dd
data.list[].documentStatus string 单据状态码:A 创建 / B 审核中 / C 已审核 / D 重新审核
data.list[].documentStatusName string 单据状态中文
data.list[].billTypeNumber string 单据类型编码
data.list[].billTypeName string 单据类型名称
data.list[].stockOrgNumber string 调入库存组织编码
data.list[].stockOrgName string 调入库存组织名称
data.list[].seq string 分录行号
data.list[].materialNumber string 物料编码
data.list[].materialName string 物料名称
data.list[].qty number 调拨数量
data.list[].unitName string 单位名称
data.list[].srcStockNumber string 调出仓库编码
data.list[].srcStockName string 调出仓库名称
data.list[].destStockNumber string 调入仓库编码
data.list[].destStockName string 调入仓库名称
data.list[].lotNumber string ERP 批号
data.list[].note string 备注,可空
data.list[].entryId string 分录内码
data.list[].id / fid string ERP 单据内码,一般不展示

下一步: 点「新增」→ 接口 2;点某行 → 接口 8,传 billNo


2. 调拨页初始化

点「新增」后调用。无请求参数,不传生产订单号。一次返回可调拨物料(含单位)、仓库列表、默认调出/调入仓。

请求URL: /js/a/mes/erpTransferDirect/formInit

请求方式: POST(也兼容 GET)

参数: 无

参数示例:

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": "个", "displayLabel": "个" }
        ]
      },
      {
        "materialNumber": "8.35.115.10.5003146600021",
        "materialName": "115",
        "displayLabel": "8.35.115.10.5003146600021(115)",
        "defaultUnitNumber": "Pcs",
        "units": [
          { "unitNumber": "Pcs", "unitName": "个", "displayLabel": "个" }
        ]
      }
    ],
    "defaultSrcStockNumber": "1100105",
    "defaultDestStockNumber": "",
    "stockList": [
      {
        "stockNumber": "1100105",
        "stockName": "五金库",
        "displayLabel": "1100105 五金库"
      }
    ]
  }
}

返回字段说明:

字段路径 类型 说明
result string "true" / "false"
message string 提示信息
data.transferCategory string 调拨类别编码,当前固定 3(外发调拨),展示用,提交不必回传
data.transferCategoryName string 调拨类别中文,固定「外发调拨」,页面标题/标签用
data.scanHint string 扫码说明文案,可展示在数量输入旁
data.defaultSrcStockNumber string 推荐默认调出仓库编码。进入页面时预选该仓,再调接口 4 查仓位
data.defaultDestStockNumber string 推荐默认调入仓库编码。空字符串表示未配置,须用户自选。不能与调出仓相同
data.materialList array 可调拨物料,目前 HEV、115 两条。下拉数据源
data.materialList[].materialNumber string 物料编码。提交 materialNumber、扫码 materialNumber 用此值
data.materialList[].materialName string 简称:HEV 或 115
data.materialList[].displayLabel string 下拉展示文本,如 8.10.HEV.10.047696(HEV)
data.materialList[].defaultUnitNumber string 该物料默认单位编码。提交 unitNumber 可直接用此值;无单位时可能缺此字段
data.materialList[].units array 该物料计量单位列表(来自 ERP)
data.materialList[].units[].unitNumber string 单位编码,提交 unitNumber 用此值
data.materialList[].units[].unitName string 单位名称,如「个」
data.materialList[].units[].displayLabel string 单位下拉展示文本,优先名称
data.stockList array 可用仓库列表。调出仓、调入仓共用同一份,用户各选一次
data.stockList[].stockNumber string 仓库编码。提交 srcStockNumber / destStockNumber,以及查仓位的 stockNumber
data.stockList[].stockName string 仓库名称
data.stockList[].displayLabel string 仓库下拉展示文本,一般为「编码 + 空格 + 名称」

页面用法:

  1. 调拨类别只展示 transferCategoryName,不可改。
  2. 物料下拉绑定 materialList,选中后记录 materialNumber、defaultUnitNumber。
  3. 调出仓库、调入仓库都绑定 stockList;调出仓预选 defaultSrcStockNumber,调入仓预选 defaultDestStockNumber(有值时)。
  4. 选定(或切换)调出仓库后,用该仓 stockNumber 调接口 4,加载调出仓位。
  5. 选定(或切换)调入仓库后,再调一次接口 4,加载调入仓位。
  6. 选定物料和调出仓库后,调接口 5 加载可用批号,选中后作为提交 lotNumber。
  7. 数量不要手填初始值,用接口 6 扫码累加。

下一步: 选仓库 → 接口 4;选物料+调出仓 → 接口 5;扫批次码 → 接口 6;填完 → 接口 7


3. 仓库列表(可选)

formInit 已含 stockList,一般不用再调。需要单独刷新仓库时用本接口。

推荐(来料检 / 生产入库 / 直接调拨共用):

请求URL: /js/a/mes/erpStockPda/stockList

本模块兼容别名: /js/a/mes/erpTransferDirect/stockList(调拨多返回默认调入仓)

请求方式: POST(也兼容 GET)

权限: mes:erpTransferDirect:view(公共接口也可用来料检或生产入库的 view)

参数: 无

参数示例:

curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpStockPda/stockList'

或本模块:

curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpTransferDirect/stockList'

返回示例(本模块 erpTransferDirect/stockList):

{
  "result": "true",
  "message": "成功",
  "data": {
    "defaultStockNumber": "1100105",
    "defaultSrcStockNumber": "1100105",
    "defaultDestStockNumber": "",
    "stockHint": "共 5 个可用仓库",
    "stockList": [
      {
        "stockNumber": "1100105",
        "stockName": "五金库",
        "displayLabel": "1100105 五金库"
      }
    ]
  }
}

返回字段说明:

字段路径 类型 说明
result string "true" / "false"
message string 提示信息
data.stockList array 可用仓库,字段同接口 2 的 stockList[]
data.stockList[].stockNumber string 仓库编码
data.stockList[].stockName string 仓库名称
data.stockList[].displayLabel string 下拉展示文本
data.defaultStockNumber string 通用默认仓库编码(与默认调出仓相同)
data.defaultSrcStockNumber string 推荐调出仓库编码(仅本模块 erpTransferDirect/stockList 有)
data.defaultDestStockNumber string 推荐调入仓库编码(仅本模块有;空表示未配置)
data.stockHint string 加载提示,如「共 5 个可用仓库」;失败时提示检查 ERP 连接

公共接口 erpStockPda/stockList 没有 defaultSrcStockNumber / defaultDestStockNumber,只有 defaultStockNumber、stockHint、stockList。

PDA 处理: 用 stockList 刷新调出/调入仓库下拉。切换仓库后必须重新调接口 4。


4. 仓位选项(选仓库后必调)

用户选定或切换调出仓库、调入仓库后,用对应 stockNumber 各调一次。
formInit 不含仓位列表。

推荐(共用):

请求URL: /js/a/mes/erpStockPda/stockLocOptions

本模块兼容别名:

  • /js/a/mes/erpTransferDirect/pda/stockLocOptions
  • /js/a/mes/erpTransferDirect/stockLocOptions

请求方式: POST(也兼容 GET)

参数:

参数名 必选 类型 说明
stockNumber 是 string 仓库编码,来自 stockList[].stockNumber

参数示例:

调出仓:

curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpStockPda/stockLocOptions?stockNumber=1100105'

调入仓:

curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpStockPda/stockLocOptions?stockNumber=1100217'

返回示例(仓库启用仓位):

{
  "result": "true",
  "message": "成功",
  "data": {
    "stockNumber": "1100105",
    "required": true,
    "defaultLocNumber": "A",
    "locKey": "F100004",
    "locKeys": ["F100004"],
    "locHint": "共 278 个仓位,数据来自 ERP 仓位值集",
    "locations": [
      {
        "locNumber": "A",
        "locName": "A",
        "locKey": "F100004",
        "locEntryId": "123",
        "displayLabel": "A"
      }
    ]
  }
}

返回示例(仓库未启用仓位):

{
  "result": "true",
  "message": "成功",
  "data": {
    "stockNumber": "1100217",
    "required": false,
    "defaultLocNumber": "",
    "locHint": "该仓库未启用仓位或未配置仓位值集",
    "locations": []
  }
}

失败示例:

{
  "result": "false",
  "message": "仓库编码不能为空",
  "data": null
}

返回字段说明:

字段路径 类型 说明
result string "true" / "false"
message string 成功为「成功」;未传仓库为「仓库编码不能为空」
data.stockNumber string 本次查询的仓库编码,与请求一致
data.required boolean 是否必须选仓位。true:下拉必选,提交必须带仓位编码;false:可不选,提交不传仓位
data.defaultLocNumber string 推荐默认仓位编码,进入页/切仓后可预选;无则空
data.locHint string 提示文案,可显示在仓位下拉下方
data.locKey string 该仓库主仓位维度键(如 F100004),仅展示/日志用。提交可不传,MES 会按仓库+仓位编码自行解析
data.locKeys array 该仓库全部维度键。多维度仓库才有;可忽略
data.locations array 仓位下拉数据源。required=false 时为空数组
data.locations[].locNumber string 仓位编码。提交调出仓用 srcStockLocNumber,调入仓用 destStockLocNumber
data.locations[].locName string 仓位名称
data.locations[].displayLabel string 下拉展示文本
data.locations[].locKey string 该仓位维度键,展示用,提交可不回传
data.locations[].locEntryId string 仓位值集分录内码,PDA 不用

PDA 处理:

步骤 说明
1 选中调出仓库 srcStockNumber 后,请求本接口,结果赋给调出仓位下拉
2 选中调入仓库 destStockNumber 后,再请求一次,结果赋给调入仓位下拉
3 required=true 时仓位必选,默认选 defaultLocNumber
4 required=false 时仓位可隐藏或显示「无库位」,提交不传对应 Loc 字段
5 切换仓库必须重新调用,不要沿用上一仓库的仓位列表
6 不要写死 locKey。提交时 srcStockLocKey / destStockLocKey 可选

提交对应关系:

页面 仓库字段 仓位字段 仓位来源
调出 srcStockNumber srcStockLocNumber 调出仓这次 locations[].locNumber
调入 destStockNumber destStockLocNumber 调入仓这次 locations[].locNumber

5. 选批号(选物料和调出仓库后必调)

用户选定 物料 和 调出仓库 后调用。查 ERP 即时库存中该物料在该仓的可用批号,供下拉选择。
切换物料或调出仓库后须重新调用。

请求URL: /js/a/mes/erpTransferDirect/pda/lotOptions

请求方式: POST(也兼容 GET)

参数:

参数名 必选 类型 说明
materialNumber 是 string 物料编码,来自 materialList[].materialNumber
stockNumber 是 string 调出仓库编码,来自 stockList[].stockNumber
stockName 否 string 仓库名称,仅用于缺批号时的提示文案
lotKeyword 否 string 批号关键字。传入则按关键字搜索,不传则返回该仓全部可用批号
pickQty 否 number 计划调拨数量,用于推荐 suggestedLotNumber

参数示例:

curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpTransferDirect/pda/lotOptions?materialNumber=8.10.HEV.10.047696&stockNumber=1100105'

带关键字搜索:

curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpTransferDirect/pda/lotOptions?materialNumber=8.10.HEV.10.047696&stockNumber=1100105&lotKeyword=11026'

返回示例(有可用批号):

{
  "result": "true",
  "message": "成功",
  "data": {
    "materialNumber": "8.10.HEV.10.047696",
    "stockNumber": "1100105",
    "lots": [
      {
        "lotNumber": "110260605001",
        "qty": 100,
        "qtyText": "100",
        "stockNumber": "1100105",
        "stockName": "五金库"
      }
    ],
    "suggestedLotNumber": "110260605001",
    "lotPickable": true,
    "lotHint": "共 1 条可用批号"
  }
}

返回示例(无批号):

{
  "result": "true",
  "message": "成功",
  "data": {
    "materialNumber": "8.10.HEV.10.047696",
    "stockNumber": "1100105",
    "lots": [],
    "suggestedLotNumber": "",
    "lotPickable": false,
    "lotHint": "未查到符合条件的批号库存"
  }
}

失败示例:

{
  "result": "false",
  "message": "请先选择调出仓库",
  "data": null
}

返回字段说明:

字段路径 类型 说明
result string "true" / "false"。未传物料或调出仓为 "false"
message string 成功为「成功」;失败为「请先选择物料编码」或「请先选择调出仓库」
data.materialNumber string 本次查询的物料编码
data.stockNumber string 本次查询的调出仓库编码
data.lots array 可用批号列表,绑定下拉
data.lots[].lotNumber string ERP 批号。提交 lotNumber 用此值
data.lots[].qty number 该批号在该仓可用库存
data.lots[].qtyText string 可用库存展示文本
data.lots[].stockNumber string 仓库编码
data.lots[].stockName string 仓库名称
data.suggestedLotNumber string 推荐批号。有 pickQty 时优先选够量的最小批号;可预选
data.lotPickable boolean 是否有可选批号。false 时下拉为空,展示 lotHint
data.lotHint string 提示文案,显示在批号下拉下方

PDA 处理:

  1. 物料、调出仓库都选好后再调,缺一不可。
  2. 下拉绑定 lots[],展示 lotNumber + qtyText。
  3. 有 suggestedLotNumber 时可预选。
  4. 选中后记录 lotNumber,提交时回传。
  5. 切换物料或调出仓库必须重新调用,并清空已选批号。

失败 message:

message 原因
请先选择物料编码 未传 materialNumber
请先选择调出仓库 未传 stockNumber

6. 扫批次码(累加数量 + 发货检校验)

每扫一次调一次。成功则 qty = qty + data.qtyIncrement。
同一张调拨单应扫同一物料、同一 ERP 批号;可用返回的 materialNumber / lotNumber 自动带出。

请求URL: /js/a/mes/erpTransferDirect/batchScan

请求方式: POST(也兼容 GET)

参数:

参数名 必选 类型 说明
batchSn 是 string 批次码(扫码值)
materialNumber 否 string 当前已选物料编码。传入时须与该批次产线物料一致,用于防止 HEV/115 扫串

参数示例:

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,
    "lineSn": "HEVXT",
    "materialNumber": "8.10.HEV.10.047696",
    "materialName": "HEV",
    "lotNumber": "110260605001",
    "batchStatus": "1",
    "batchStatusName": "合格",
    "inspected": true
  }
}

返回示例(失败,尚未发货检):

{
  "result": "false",
  "message": "批次码 20260804084909 尚未发货检,不能调拨",
  "data": {
    "batchSn": "20260804084909",
    "nums": 2,
    "qtyIncrement": 2,
    "lineSn": "HEVXT",
    "materialNumber": "8.10.HEV.10.047696",
    "materialName": "HEV",
    "lotNumber": "",
    "batchStatus": "0",
    "batchStatusName": "仓库中",
    "inspected": false
  }
}

返回字段说明:

字段路径 类型 说明
result string "true" 允许累加数量 / "false" 不允许
message string 成功含累加数量;失败为原因,PDA 弹窗展示
data.batchSn string 本次扫到的批次码
data.nums long 该批次已绑定工件数量
data.qtyIncrement long 本次应累加的调拨数量,与 nums 相同。qty += qtyIncrement
data.lineSn string 产线编号,如 HEVXT、115XT
data.materialNumber string 按产线解析的物料编码。第一枪可用来自动选中物料
data.materialName string HEV 或 115
data.lotNumber string 生产入库回写的 ERP 批号。有值时自动填提交用的 lotNumber;可能为空
data.batchStatus string 批次状态:3 待装中 / 0 仓库中 / 1 合格 / 2 已发货
data.batchStatusName string 状态中文(字典 mes_batch_sn_status)
data.inspected boolean 是否已发货检合格。仅 true 时 result 才为 "true"

PDA 处理:

  1. result != "true":提示 message,数量不加。
  2. result == "true":记录该 batchSn(提交 traySns 用逗号拼接),qty += qtyIncrement。
  3. 若页面还没选物料,用返回的 materialNumber 选中。
  4. 若 lotNumber 非空且页面批号为空,填入批号。
  5. 再扫时若物料或批号与已选不一致,接口或本地都应拒绝。
  6. 同一批次码不要重复累加。

失败 message:

message 原因
批次码不能为空 未传 batchSn
未找到该 MES 批次码 批次码无效
尚未生产入库,不能调拨 batchStatus=3 待装中
尚未发货检,不能调拨 batchStatus 不是 1(含仓库中、发货检 NG)
已发货,不能调拨 batchStatus=2
绑定数量为 0,不能调拨 nums<=0
与当前选择物料不一致 传入的 materialNumber 与批次产线物料不符

7. 提交调拨

请求URL: /js/a/mes/erpTransferDirect/submit

请求方式: POST

Content-Type(二选一):

方式 Content-Type 说明
PDA 推荐 application/x-www-form-urlencoded 表单参数
调试/脚本 application/json;charset=UTF-8 整包 JSON Body

请求参数:

参数名 必选 类型 说明
materialNumber 是 string 物料编码,来自 materialList[].materialNumber 或扫码返回值
lotNumber 是 string ERP 批号,优先用扫码返回的 lotNumber
qty 是 number 调拨数量 = 各次扫码 qtyIncrement 合计,且不超过该批号在调出仓可用量
unitNumber 否 string 计量单位编码,来自 defaultUnitNumber 或 units[].unitNumber。不传则后台取物料默认单位
srcStockNumber 是 string 调出仓库编码
srcStockLocNumber 条件 string 调出仓位编码。调出仓 required=true 时必填
srcStockLocKey 否 string 调出仓位维度键,可选,不传由后台解析
destStockNumber 是 string 调入仓库编码,不能与调出仓相同
destStockLocNumber 条件 string 调入仓位编码。调入仓 required=true 时必填
destStockLocKey 否 string 调入仓位维度键,可选
traySns 是 string 托盘码(MES 批次码)逗号拼接,如 20260804084909,20260804085001。提交成功后将这些托盘改为已发货(batchStatus=2),并绑定本次调拨单号
batchSns 否 string / array 兼容旧参数,与 traySns 合并去重。表单逗号分隔,JSON 可用数组

不再传 moBillNo / instockBillNo / instockEntryId。
提交成功后:ERP 生成直接调拨单;同时把 traySns 中每个托盘的 batch_status 改为 2(已发货),erp_transfer_bill_no 写入本次 billNo。

参数示例:

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 'unitNumber=Pcs' \
--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,"unitNumber":"Pcs","srcStockNumber":"1100105","srcStockLocNumber":"A","destStockNumber":"1100217","traySns":"20260804084909,20260804085001"}'

返回示例(成功):

{
  "result": "true",
  "message": "直接调拨单保存成功,单号:ZJDB110260605001",
  "data": {
    "billNo": "ZJDB110260605001"
  }
}

返回示例(失败):

{
  "result": "false",
  "message": "批次码 20260804084909 尚未发货检,不能调拨",
  "data": null
}

返回字段说明:

字段路径 类型 说明
result string "true" 保存成功 / "false" 失败
message string 成功含 ERP 单号;失败为原因,PDA 展示
data object 失败时一般为 null
data.billNo string 成功时 ERP 直接调拨单号(ZJDB)

常见失败 message:

message 原因
请选择物料编码 未传 materialNumber
物料 xxx 不在 HEV/115 调拨范围内 物料不在配置清单
请选择批号 未传 lotNumber
调拨数量必须大于 0 qty 空或 ≤0
请选择调出仓库 / 请选择调入仓库 仓库未选
调入仓库不能与调出仓库相同 两仓相同
所选批号在调出仓库无可用库存 ERP 即时库存无该批号
调拨数量不能超过批号可用库存 n qty 大于可用量
调出仓库:… / 调入仓库:… 仓位校验失败(启用仓位却未选等)
请选择计量单位 未传单位且 ERP 也未加载到默认单位
尚未发货检 / 已发货 / 物料不一致 传入了 traySns 且复核未通过

传 traySns 时额外规则:

  • 每条托盘码须已发货检合格(batchStatus=1)
  • 各托盘物料、ERP 批号须一致
  • 若未传 materialNumber / lotNumber,用扫码结果回填
  • 若未传 qty,用各托盘 nums 合计
  • ERP 保存成功后:托盘状态改为已发货(2),并写入调拨单号 erp_transfer_bill_no

8. 查看调拨单明细

列表点某行调用。

请求URL: /js/a/mes/erpTransferDirect/pda/detailData

请求方式: POST

参数:

参数名 必选 类型 说明
billNo 是 string 直接调拨单号 ZJDB,来自列表 list[].billNo

参数示例:

curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/erpTransferDirect/pda/detailData?billNo=ZJDB110260605001'

返回示例:

{
  "result": "true",
  "message": "成功",
  "data": {
    "pageNo": 1,
    "pageSize": 20,
    "count": 1,
    "list": [
      {
        "seq": "1",
        "materialNumber": "8.10.HEV.10.047696",
        "materialName": "下壳体",
        "qty": 100,
        "unitName": "个",
        "srcStockNumber": "1100105",
        "srcStockName": "五金库",
        "destStockNumber": "1100217",
        "destStockName": "成品仓",
        "lotNumber": "110260605001",
        "documentStatusName": "已审核",
        "date": "2026-06-05"
      }
    ]
  }
}

返回字段说明: 分页字段同接口 1;list[] 字段与接口 1 的 list[] 相同(该单全部分录)。展示建议:行号、物料、数量、单位、调出仓、调入仓、批号。


仓库 / 仓位选用小结

用途 推荐 URL 何时调用
物料 + 仓库(进新增页) POST /js/a/mes/erpTransferDirect/formInit 点新增一次
只刷新仓库 POST /js/a/mes/erpStockPda/stockList 可选
查仓位 POST /js/a/mes/erpStockPda/stockLocOptions?stockNumber= 调出仓、调入仓各一次;切换仓库再调
选批号 POST /js/a/mes/erpTransferDirect/pda/lotOptions 选物料 + 调出仓库后;切换后再调
扫码加数量 POST /js/a/mes/erpTransferDirect/batchScan 每扫一枪
提交 POST /js/a/mes/erpTransferDirect/submit 填完提交,traySns 逗号拼接托盘码

仓位规则:data.required=true 必须选仓位并提交对应 *StockLocNumber;false 不传仓位。不要写死 locKey。


兼容旧接口(新增流程不再调用)

接口 说明
pda/selectOrderData 旧:选生产订单
pda/instockSourceData 旧:按生产订单查入库源行