Files
LabelChange-server/到货及出库模块接口对接文档.md
2026-06-01 16:30:29 +08:00

20 KiB
Raw Permalink Blame History

到货及出库模块接口对接文档

1. 接口概述

到货及出库模块提供了一系列RESTful API接口用于到货交接单和出库交接单的创建、查询、更新以及与袋牌的关联操作。本文档详细描述了这些接口的使用方法、请求参数和响应格式。

测试环境请求地址:http://172.232.21.79:5002 正式环境请求地址:https://lr.tooexp.com

1.1 接口基础信息

  • 到货交接单基础URLhttp://{服务器地址}:{端口}/api/arrival-handover
  • 出库交接单基础URLhttp://{服务器地址}:{端口}/api/shipping-handover
  • 请求方式POST/GET
  • 数据格式JSON
  • 响应格式JSON

1.2 状态码说明

状态码 描述
200 操作成功
400 请求参数错误或操作失败
404 资源不存在
500 服务器内部错误

2. 接口详细说明

2.1 到货交接单模块

2.1.1 查询到货交接单信息

接口路径/receipt-query 请求方法POST 功能描述:根据到货编号查询到货交接单详细信息,包括包裹数、已有标签率、到货时间等

请求参数
参数名 类型 必填 描述 示例值
arrivalNumber string 到货编号(提单号或大箱号) "TEST1ZX30Y730494260906"
callback string JSONP回调函数 "callback"

请求体示例:

{
  "arrivalNumber": "TEST1ZX30Y730494260906",
  "callback": null
}
Mock数据
到货编号 包裹数 已有标签率 到货时间 提单号 大箱号
TEST1ZX30Y730494260906 1200 0.8 1744032000000 TEST1ZX30Y730494260906 testS169-3-20-2-1
TEST1ZX30Y730494260907 - - - TEST1ZX30Y730494260907 -
响应格式

成功响应

{
  "code": 0,
  "message": "success",
  "data": {
    "packageCount": 1200,
    "labelRate": 0.8,
    "arrivalTime": 1744032000000,
    "billOfLadingNumber": "TEST1ZX30Y730494260906",
    "masterPackageNumber": "testS169-3-20-2-1"
  }
}

响应字段说明:

字段名 类型 描述
packageCount int 包裹总数
labelRate double 已有标签率
arrivalTime long? 到货时间戳毫秒UTC
billOfLadingNumber string 提单号
masterPackageNumber string 大箱号

失败响应

{
  "code": 9999,
  "message": "无预报数据",
  "data": {
    "billOfLadingNumber": "TEST1ZX30Y730494260907",
    "masterPackageNumber": ""
  }
}

2.2 出库交接单模块

2.2.1 查询出库交接单详细信息

接口路径/details/{handoverNumber} 请求方法GET 功能描述根据出库交接单号查询详细信息包括BOL单号、渠道商、袋牌数量和总包裹数

请求参数
参数名 类型 必填 描述 示例值
handoverNumber string 出库交接单号(路径参数) "TESTBOL001"
callback string JSONP回调函数 "callback"
Mock数据
出库交接单号 渠道商 袋牌数量 总包裹数
TESTBOL001 GOFO 3 150
TESTBOL002 USPS 5 250
TESTBOL003 UPS 0 0
请求示例
GET /api/shipping-handover/details/TESTBOL001
响应格式

成功响应

{
  "code": 0,
  "message": "success",
  "data": {
    "handoverNumber": "TESTBOL001",
    "channel": "GOFO",
    "bagTagCount": 3,
    "totalPackageCount": 150,
    "status": "Draft"
  }
}

响应字段说明:

字段名 类型 描述
handoverNumber string 交接单号
channel string 渠道商
bagTagCount int 袋牌数量
totalPackageCount int 总包裹数
status string 状态

失败响应

{
  "code": 9999,
  "message": "Shipping handover form not found"
}

2.2.2 确认出库交接单

接口路径/confirm 请求方法POST 功能描述:确认出库交接单,将状态从草稿修改为已出库

请求参数
参数名 类型 必填 描述 示例值
handoverNumber string 出库交接单号 "TESTBOL001"
deliveryTime long? 出货时间戳毫秒UTC 1744032000000
pod string POD图片链接至少包含两张图片用逗号分隔 "https://example.com/pod1.jpg,https://example.com/pod2.jpg"
callback string JSONP回调函数 "callback"

请求体示例:

{
  "handoverNumber": "TESTBOL001",
  "deliveryTime": 1744032000000,
  "pod": "https://example.com/pod1.jpg,https://example.com/pod2.jpg",
  "callback": null
}
Mock数据
出库交接单号 操作结果
TESTBOL001 成功
TESTBOL002 成功
TESTBOL003 成功
请求示例
POST /api/shipping-handover/confirm
Content-Type: application/json

{
  "handoverNumber": "TESTBOL001",
  "deliveryTime": 1744032000000,
  "pod": "https://example.com/pod1.jpg,https://example.com/pod2.jpg"
}
响应格式

成功响应

{
  "code": 0,
  "message": "success",
  "data": true
}

响应字段说明:

字段名 类型 描述
data bool 操作结果

失败响应

{
  "code": 9999,
  "message": "错误信息"
}
业务规则
  1. 一旦执行确认出库操作后,系统不允许对同一交接单再次执行出库操作
  2. 每次出库操作至少关联一个袋牌信息
  3. POD字段必须至少包含两张图片的S3链接

2.2.3 创建出库交接单

接口路径/create 请求方法GET 功能描述:创建出库交接单

请求参数
参数名 类型 必填 描述 示例值
HandoverNumber string 交接单号,为空时自动生成 "BOL-ORD-GOFO-20260325-001"
Channel string 渠道 "GOFO"
DeliveryTime long? 交货时间戳毫秒UTC 1744032000000
POD string POD图片链接 "https://example.com/pod1.jpg,https://example.com/pod2.jpg"
Remarks string 备注 "测试备注"
Creator string 创建人 "test_user"
TimeZone string 时区 "America/New_York"
callback string JSONP回调函数 "callback"
请求示例
GET /api/shipping-handover/create?Channel=GOFO&Creator=test_user&TimeZone=America/New_York
响应格式

成功响应

{
  "code": 0,
  "message": "success",
  "data": 1
}

响应字段说明:

字段名 类型 描述
data int 新增记录ID

失败响应

{
  "code": 9999,
  "message": "错误信息"
}

2.2.4 获取出库交接单列表

接口路径/list 请求方法GET 功能描述:获取出库交接单列表,支持分页和筛选

请求参数
参数名 类型 必填 描述 示例值
page int 页码默认1 1
pageSize int 每页数量默认10 10
sortBy string 排序字段默认CreatedAt "CreatedAt"
sortOrder string 排序方向默认desc "desc"
handoverNumber string 交接单号 "BOL-ORD-GOFO-20260325120000"
channel string 渠道 "GOFO"
creator string 创建人 "test_user"
startDeliveryTime long? 开始交货时间戳毫秒UTC 1744032000000
endDeliveryTime long? 结束交货时间戳毫秒UTC 1744118400000
callback string JSONP回调函数 "callback"
请求示例
GET /api/shipping-handover/list?page=1&pageSize=10&channel=GOFO
响应格式

成功响应

{
  "code": 0,
  "message": "success",
  "data": {
    "forms": [
      {
        "Id": 1,
        "HandoverNumber": "BOL-ORD-GOFO-20260325120000",
        "BigBagCount": 3,
        "SmallBagCount": 150,
        "Channel": "GOFO",
        "DeliveryTime": 1744032000000,
        "POD": "https://example.com/pod1.jpg",
        "Remarks": "测试备注",
        "Creator": "test_user",
        "CreatedAt": 1744032000000,
        "UpdatedAt": 1744032000000,
        "TimeZone": "America/New_York",
        "Status": 0
      }
    ],
    "totalCount": 1
  }
}

响应字段说明:

字段名 类型 描述
forms array 交接单列表
totalCount int 总记录数

ShippingHandoverFormEntity 字段说明:

字段名 类型 描述
Id int 主键ID
HandoverNumber string 交接单号
BigBagCount int 袋牌数量
SmallBagCount int 包裹数量
Channel string 渠道
DeliveryTime long? 交货时间戳毫秒UTC
POD string POD图片链接
Remarks string 备注
Creator string 创建人
CreatedAt long 创建时间戳毫秒UTC
UpdatedAt long 更新时间戳毫秒UTC
TimeZone string 时区
Status int 状态0=草稿1=已出库)

失败响应

{
  "code": 9999,
  "message": "错误信息"
}

2.3 出库交接单与袋牌关联模块

2.3.1 关联袋牌到出货交接单

接口路径/bag-tag/associate/{shippingHandoverFormId} 请求方法POST 功能描述:关联袋牌到出货交接单

请求参数
参数名 类型 必填 描述 示例值
shippingHandoverFormId int 出货交接单ID路径参数 1
bagTagIds List<int> 袋牌ID列表请求体 [1, 2, 3]
请求示例
POST /api/shipping-handover/bag-tag/associate/1
Content-Type: application/json

[1, 2, 3]
响应格式

成功响应

{
  "code": 0,
  "message": "success",
  "data": true
}

失败响应

{
  "code": 9999,
  "message": "错误信息"
}

2.3.2 获取出货交接单关联的袋牌列表

接口路径/bag-tag/list/{shippingHandoverFormId} 请求方法GET 功能描述:获取出货交接单关联的袋牌列表

请求参数
参数名 类型 必填 描述 示例值
shippingHandoverFormId int 出货交接单ID路径参数 1
callback string JSONP回调函数 "callback"
请求示例
GET /api/shipping-handover/bag-tag/list/1
响应格式

成功响应

{
  "code": 0,
  "message": "success",
  "data": [
    {
      "Id": 1,
      "TagNumber": "USPS202601271200000001",
      "ChannelName": "USPS",
      "Status": "Closed",
      "Creator": "system",
      "CreatedAt": 1706361600000,
      "OpenedAt": 1706361900000,
      "ClosedAt": 1706363400000
    }
  ]
}

BagTagEntity 字段说明:

字段名 类型 描述
Id int 主键ID
TagNumber string 袋牌号
ChannelName string 渠道名
Status string 状态
Creator string 创建人
CreatedAt long 创建时间戳毫秒UTC
OpenedAt long? 开袋时间戳毫秒UTC
ClosedAt long? 封袋时间戳毫秒UTC

失败响应

{
  "code": 9999,
  "message": "错误信息"
}

2.3.3 从出货交接单中移除袋牌

接口路径/bag-tag/remove/{relationId} 请求方法GET 功能描述:从出货交接单中移除袋牌

请求参数
参数名 类型 必填 描述 示例值
relationId int 关联ID路径参数 1
callback string JSONP回调函数 "callback"
请求示例
GET /api/shipping-handover/bag-tag/remove/1
响应格式

成功响应

{
  "code": 0,
  "message": "success",
  "data": true
}

失败响应

{
  "code": 9999,
  "message": "错误信息"
}

2.3.4 清空出货交接单的所有袋牌关联

接口路径/bag-tag/clear/{shippingHandoverFormId} 请求方法GET 功能描述:清空出货交接单的所有袋牌关联

请求参数
参数名 类型 必填 描述 示例值
shippingHandoverFormId int 出货交接单ID路径参数 1
callback string JSONP回调函数 "callback"
请求示例
GET /api/shipping-handover/bag-tag/clear/1
响应格式

成功响应

{
  "code": 0,
  "message": "success",
  "data": true
}

失败响应

{
  "code": 9999,
  "message": "错误信息"
}

2.3.5 统计出货交接单的袋牌数量和包裹数量

接口路径/bag-tag/count/{shippingHandoverFormId} 请求方法GET 功能描述:统计出货交接单的袋牌数量和包裹数量

请求参数
参数名 类型 必填 描述 示例值
shippingHandoverFormId int 出货交接单ID路径参数 1
callback string JSONP回调函数 "callback"
请求示例
GET /api/shipping-handover/bag-tag/count/1
响应格式

成功响应

{
  "code": 0,
  "message": "success",
  "data": {
    "bagTagCount": 3,
    "packageCount": 150
  }
}

响应字段说明:

字段名 类型 描述
bagTagCount int 袋牌数量
packageCount int 包裹数量

失败响应

{
  "code": 9999,
  "message": "错误信息"
}

2.3.6 检查袋牌是否已关联到出货交接单

接口路径/bag-tag/check/{bagTagId} 请求方法GET 功能描述:检查袋牌是否已关联到出货交接单

请求参数
参数名 类型 必填 描述 示例值
bagTagId int 袋牌ID路径参数 1
callback string JSONP回调函数 "callback"
请求示例
GET /api/shipping-handover/bag-tag/check/1
响应格式

成功响应

{
  "code": 0,
  "message": "success",
  "data": true
}

失败响应

{
  "code": 9999,
  "message": "错误信息"
}

2.3.7 通过袋牌号关联袋牌到出货交接单

接口路径/bag-tag/associate-by-number/{shippingHandoverFormId} 请求方法GET 功能描述:通过袋牌号关联袋牌到出货交接单

请求参数
参数名 类型 必填 描述 示例值
shippingHandoverFormId int 出货交接单ID路径参数 1
bagTagNumbers string 袋牌号列表(逗号分隔) "USPS202601271200000001,USPS202601271200000002"
callback string JSONP回调函数 "callback"
请求示例
GET /api/shipping-handover/bag-tag/associate-by-number/1?bagTagNumbers=USPS202601271200000001,USPS202601271200000002
响应格式

成功响应

{
  "code": 0,
  "message": "success",
  "data": true
}

失败响应

{
  "code": 9999,
  "message": "错误信息"
}

3. 接口调用示例

3.1 使用cURL调用

查询出库交接单详细信息

curl -X GET "http://localhost:5002/api/shipping-handover/details/TESTBOL001"

创建出库交接单

curl -X GET "http://localhost:5002/api/shipping-handover/create?Channel=GOFO&Creator=test_user&TimeZone=America/New_York"

查询到货交接单信息POST请求

curl -X POST "http://localhost:5002/api/arrival-handover/receipt-query" \
-H "Content-Type: application/json" \
-d '{"arrivalNumber": "TEST1ZX30Y730494260906"}'

3.2 使用PowerShell调用

查询出库交接单详细信息

Invoke-RestMethod -Uri "http://localhost:5002/api/shipping-handover/details/TESTBOL001" `
  -Method GET

创建出库交接单

Invoke-RestMethod -Uri "http://localhost:5002/api/shipping-handover/create?Channel=GOFO&Creator=test_user&TimeZone=America/New_York" `
  -Method GET

查询到货交接单信息POST请求

$body = @{
  arrivalNumber = "TEST1ZX30Y730494260906"
} | ConvertTo-Json

Invoke-RestMethod -Uri "http://localhost:5002/api/arrival-handover/receipt-query" `
  -Method POST `
  -Body $body `
  -ContentType "application/json"

4. 注意事项

4.1 数据验证

  • 渠道不能为空
  • 创建人不能为空
  • 时区不能为空
  • 时间戳均使用UTC时间毫秒

4.2 性能考虑

  • 批量操作时,建议合理控制数据量
  • 频繁的接口调用可能会影响系统性能,建议合理控制调用频率

5. 常见问题

5.1 创建出库交接单失败

可能原因

  • 渠道为空
  • 创建人为空
  • 时区为空

解决方案

  • 确保必填参数不为空

5.2 查询出库交接单失败

可能原因

  • 出库交接单号不存在

解决方案

  • 检查出库交接单号是否正确

6. 接口版本管理

版本 变更内容 发布日期
v1.4 恢复接口入参时间参数类型为DateTime/string返回值保持为long类型时间戳 2026-05-08
v1.3 修改确认出库交接单接口为POST方法 2026-05-08
v1.2 修改receipt-query接口为POST方法时间字段改为long类型时间戳增加响应字段类型说明 2026-05-08
v1.1 新增查询到货交接单信息接口 2026-03-25
v1.0 初始版本,包含所有基础接口 2026-03-25

7. 联系信息

如有接口使用问题,请联系系统管理员或开发团队。