- 业务流程说明
- 文档说明
- (1) 接口说明
- (2) 鉴权说明
- (3) 环境说明
- 一、 部门管理
- (1) 同步部门
- (2) 删除部门
- 二、 员工管理
- (1) 同步员工
- (2) 删除员工
- (3) 同步员工照片
- (4) 生成员工二维码
- 三、 商品管理
- (1) 同步商品
- (2) 获取在架商品
- 四、 交易管理
- (1)设备领料
- (2)设备补货
- (3)设备还料
- (4)设备退货
- (5)设备盘点
- (6)智能仓领料
- (7)智能仓补货
- 五、 库存管理
- (1) 查询设备商品库存
- 六、 领料工单
- (1) 新建领料工单
- (2) 关闭领料工单
- (3) 查询领料记录
- 七、 对账单查询
- 1、对账单查询–总账
- (1) 对账单明细账—按员工汇总
- (2) 对账单明细账—交易明细
- (3) 对账单明细账—按部门汇总
- (4) 对账单明细账—按商品分类汇总
- (5) 对账单明细账—按员工领用商品汇总
- (6) 对账单明细账—按部门领用商品汇总
- (7) 对账单明细账—按商品汇总
- 八、 成本中心管理
- (1) 同步成本中心
- (2) 同步成本中心员工
- 附录:
- (1) 错误状态码
- (2) 单位枚举表
- (3) 平台辅助接口
- (4) 文档更新记录
业务流程说明
此方案主要用户金蝶、用友、SAP等外部ERP系统与坤同对接;坤同的自助领料可对接MES、WMS、ERP,将领料作为出库,补货作为入库,客户拉到交易数据后在自身数据中台做汇总,让各个系统的数据汇集在中台,实现数据统一化管理。
一般需要对接:
- 基础数据同步或映射
- 出入库相关接口:(1)交易记录查询:对应wms的出入库记录 (2)库存查询
- 其余接口根据自身需要对接
文档说明
(1) 接口说明
- 无特殊说明情况下,所有的接口的Content-Type均为application/json;charset=UTF-8
- 无特殊说明情况下,所有的数据变更类型(新增、修改、删除、同步)均为批量操作,即接口的参数均为list类型,且单次调用list长度不应超过100项,详见各个接口的示例,批量处理时,如果遇到处理失败,则停止处理,并且返回失败状态码,已成功处理数据不会回滚
- 无特殊说明情况下,所有接口中参数的最大长度字段单位均为字符
- 无特殊说明情况下,同步接口可用于新增、修改,且同步接口为无状态接口,与前一次调用无逻辑关系,接口调用时,如果不存在,则新建该数据项,如果存在,则以接口参数更新该数据项
- 无特殊说明情况下,所有接口响应内容均以如下数据结构返回,HTTP状态码为200
{
"code": xxx,
"msg": xxx,
"data": xxx
}
参数说明
参数名 | 类型 | 必选 | 描述 |
---|---|---|---|
code | Integer | 是 | 200:表示操作成功 500:未知错误 其他状态值参见附录错误状态码表 |
msg | String | 否 | 非200状态存在对应值,用于解释说明失败原因 |
data | Object/Array | 否 | 接口返回实际内容 参加具体接口响应内容 |
(2) 鉴权说明
用户接入坤同开放平台时,平台管理员会提供对应的appKey、secretKey,简称ak、sk,该key在使用时区分环境,即测试、生产环境所对应的key不同,用户凭借key按照指定方式生成对应的签名信息,并且在访问平台接口时携带相应的签名信息用于身份鉴定,该key非常重要,请妥善保管,避免因key泄露导致的数据安全问题。
签名生成步骤
- 获取当前系统时间戳(毫秒级),注意该时间戳与平台时间保持在10min差距以内
- 将sk作为HmacSHA256算法的key,对1获取的内容进行摘要计算
- 将2计算的内容以base64形式输出
- 将ak、3计算的内容以英文冒号,即 : 符号拼接,作为签名
签名使用方式
- 将1获取的内容作为HTTP请求头参数X-Kt-Time的值
- 将4获取的内容作为HTTP请求头参数X-Kt-Authorization的值
- 在访问坤同开放平台接口时,附带1、2内容进行访问即可
签名生成方式示例(Java)
public static void main(String[] args) throws Exception {
String ak = "your_ak";
String sk = "your_sk";
Charset utf8 = StandardCharsets.UTF_8;
String currentTimeStr =
String.valueOf(System.currentTimeMillis());
Mac mac = Mac.getInstance("HmacSHA256");
SecretKeySpec secretKeySpec =
new SecretKeySpec(sk.getBytes(utf8), "HmacSHA256");
mac.init(secretKeySpec);
byte[] digest = mac.doFinal(currentTimeStr.getBytes(utf8));
String sign = Base64.getEncoder().encodeToString(digest);
System.out.println("currentTime: " + currentTimeStr);
System.out.println(String.join(":", ak, sign));
}
签名生成方式示例(Python)
import time
import hashlib
import base64
import hmac
ak = "your_ak"
sk = "your_sk"
currentTimeStr = str(int(time.time() * 1000))
digest = hmac.new(
bytes(sk, "UTF-8"),
bytes(currentTimeStr, "UTF-8"),
hashlib.sha256
)
sign = base64.b64encode(digest.digest()).decode()
print("currentTime:", currentTimeStr)
print("sign", ak + ":" + sign)
签名生成方式示例(C#)
using System;
using System.Security.Cryptography;
using System.Text;
namespace HelloWorldApplication
{
class HelloWorld
{ static void Main(string[] args)
{
string ak = "your_ak";
string sk = "your_sk";
Encoding utf8 = Encoding.UTF8;
string currentTimeStr = DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds.ToString("F0");
HMACSHA256 mac = new HMACSHA256(Encoding.UTF8.GetBytes(sk)); byte[] digest = mac.ComputeHash(Encoding.UTF8.GetBytes(currentTimeStr));
string sign = Convert.ToBase64String(digest);
Console.WriteLine("currentTime: " + currentTimeStr);
Console.WriteLine(ak + ":" + sign);
}
}
}
(3) 环境说明
环境名称 | 地址 | 备注 |
---|---|---|
测试环境 | https://openapi.fat.szkunton.com | 当且仅当测试、联调接口时使用 |
生产环境 | https://openapi.szkunton.com | 正式投入生产使用 |
一、 部门管理
(1) 同步部门
请求URL:/department/v1/syncDepartment
请求方式:POST
请求参数:
参数名 | 类型 | 必选 | 最大长度 | 描述 |
---|---|---|---|---|
deptCode | String | 是 | 36 | 部门编号,部门编号只能是英文字母_-数字且长度不能超过36 |
deptName | String | 是 | 64 | 部门名称 |
parentCode | String | 否 | 36 | 上级部门编号 |
注:接口支持层级同步部门,但需确保当前部门的上级部门已经存在,如例子所示
响应参数:
参数名 | 类型 | 描述 |
---|---|---|
errorIdx | Integer | 失败记录对应的下标 |
注:(code>=50XXX时存在)
接口示例:
请求
[
{
"deptCode": "Openy",
"deptName": "Open-y 测试"
},
{
"deptCode": "Openy1",
"deptName": "Open-y-1 测试",
"parentCode": "Openy"
},
{
"deptCode": "Openy11",
"deptName": "Openy11 测试",
"parentCode": "Openy1"
}]
响应
{
"errorIdx": 1
}
(2) 删除部门
请求URL:/department/v1/deleteDepartment
请求方式:POST
请求参数:
参数名 | 类型 | 必选 | 长度 | 描述 |
---|---|---|---|---|
deptCode | String | 是 | 36 | 部门编号 |
注:接口支持层级删除,但需确保当前部门对应的子部门已经删除,如例子所示
响应参数:
参数名 | 类型 | 描述 |
---|---|---|
errorIdx | Integer | 失败记录对应的下标 |
注:(code>=50XXX时存在)
接口示例:
请求
[
"Openy11", "Openy1", "Openy"
]
响应
{
"errorIdx": 1
}
二、 员工管理
(1) 同步员工
请求URL:/user/v1/syncUser/
请求方式:POST
请求参数:
参数名 | 类型 | 必选 | 最大长度 | 描述 |
---|---|---|---|---|
userCode | String | 是 | 32 | 员工编号,员工编号只能是英文字母,数字,中划线,且长度不能超过32 |
userName | String | 是 | 64 | 员工名称 |
deptCode | String | 是 | 36 | 部门编号,部门编号只能是英文字母,数字且长度不能超过36 |
cardCode | String | 否 | 32 | 卡号,卡号只能是英文字母,数字,中划线,且长度不能超过32 |
cardUniqueCode | String | 否 | 32 | 卡序列号,卡序列号只能是英文字母,数字,中划线,且长度不能超过32 |
telephone | String | 否 | 16 | 手机号 |
String | 否 | 64 | 邮箱 | |
remark | String | 否 | 255 | 备注 |
lockStatus | Integer | 是 | 状态,0:开启,1:停用 | |
englishName | String | 否 | 64 | 英文名 |
post | String | 否 | 64 | 职位名称,特别注意,职位需要提前在系统中创建,不存在的职位同步时会自动忽略,即设置为空职位,等价于不设置职位 |
注:卡号、卡序列号要么同时填写,要么同时不填写
响应参数:
参数名 | 类型 | 描述 |
---|---|---|
errorIdx | Integer | 失败记录对应的下标 |
注:(code>=50XXX时存在)
接口示例:
请求
[
{
"userCode": "test",
"userName": "测试账号",
"deptCode": "A100",
"cardCode": "cardCode100",
"cardUniqueCode": "cardUniqueCode100",
"telephone": "15811111111",
"email": "test@szkunton.com",
"remark": "测试账号",
"lockStatus": 0,
"englishName": "test"
}
]
响应
{
"errorIdx": 0
}
(2) 删除员工
请求URL:/user/v1/deleteUser
请求方式:POST
请求参数:
参数名 | 类型 | 必选 | 长度 | 描述 |
---|---|---|---|---|
userCode | String | 是 | 32 | 员工编号 |
接口示例:
请求
[
"test", "test100"
]
(3) 同步员工照片
请求URL:/user/v1/syncUserImg
请求方式:POST
Content-Type:multipart/form-data
请求参数:
参数名 | 类型 | 必选 | 长度 | 描述 |
---|---|---|---|---|
userCode | String | 是 | 32 | 员工编号 |
image | file | 是 | 员工照片,只支持png、jpg格式照片,大小不超过2MB |
(4) 生成员工二维码
请求URL:/user/v1/createQrCode
请求方式:Get
请求参数:
参数名 | 类型 | 必选 | 长度 | 描述 |
---|---|---|---|---|
userCode | String | 是 | 32 | 员工编号 |
type | Integer | 否 | 默认0,二维码类型,当前仅支持领料(0) |
注:二维码有效期为1min,过期需要重新生成才能进行操作,特别注意,该接口返回内容为序列化后的字段串,如下所示:{\"type\":0,\"data\":\"KBALZ1ZfcAoGQUFAQAoMCipWT3xDVjVeDXdfB0FPQUFFXlhzUkh9QlptV1h2WQ==\"}
,在实际生成二维码时,需要将转义符进行替换,即最终生成的二维码内容为:{"type":0,"data":"KBALZ1ZfcAoGQUFAQAoMCipWT3xDVjVeDXdfB0FPQUFFXlhzUkh9QlptV1h2WQ=="}
三、 商品管理
(1) 同步商品
请求URL:/sku/v1/syncSku
请求方法:POST
请求参数:
参数名 | 类型 | 必选 | 长度 | 描述 |
---|---|---|---|---|
skuNo | String | 是 | 32 | 商品编号,商品编号数字、字母、短横、斜杠、逗号、点、加号组成 |
skuName | String | 是 | 255 | 商品名称 |
price | Double | 否 | 商品单价(单位:元) | |
description | String | 否 | 255 | 商品描述 |
manufacture | String | 否 | 64 | 生产厂商 |
brand | String | 否 | 128 | 品牌 |
pack | String | 否 | 255 | 包装 |
unit | String | 否 | 单位名称(枚举值,参见附录单位枚举表) | |
weight | Double | 否 | 商品单重(单位:g) | |
onSale | Integer | 是 | 1:启用,0:禁用 |
接口示例:
请求
[
{
"skuNo": "Test123",
"skuName": "测试商品名称",
"price": 1.23,
"description": "这是一个测试商品",
"manufacture": "制造厂商",
"brand": "品牌",
"pack": "100个/盒",
"unit": "个",
"weight": 0.1,
"onSale": 1
}
]
(2) 获取在架商品
请求URL:/sku/v1/listOnShelfSkus
请求方法:GET
请求参数:
参数名 | 类型 | 必选 | 描述 |
---|---|---|---|
showMinComboPlanNum | Boolean | 否 | 是否获取商品所在货道的容量,默认:否 |
skuNo | String | 否 | 精确查询某个商品(商品编号) |
nodeSkuNo | String | 否 | 精确查询某个商品(工厂商品编号) |
响应内容:
参数名 | 类型 | 描述 |
---|---|---|
skuNo | String | 商品编号 |
skuName | String | 商品名称 |
skuOrigin | Integer | 商品来源,1:供应链,3:客户自建 |
nodeSkuNo | String | 工厂商品编号 |
nodeSkuName | String | 工厂商品名称 |
description | String | 商品描述 |
unit | String | 商品单位 |
skuTaxPrice | Double | 商品含税价格 |
skuNoTaxPrice | Double | 商品未税价格 |
minComboPlanNum | Integer | 商品所在货道的容量,当商品在多个货道且多个货道容量不一致时,返回值为1,用于客户方判断是否可创建领料工单 (A客户定制使用,其他客户请忽略该字段) |
channelDetails | Array | 货道详情 |
deviceCode | String | 设备编号 |
channelLabelCodes | Array | 货道号 |
接口示例:
请求
GET /sku/v1/listOnSaleSkus?showMinComboPlanNum=true&skuNo=AA0048111
响应
[
{
"skuNo":"AA0048111",
"skuName":"断丝取出器套装1-evm测试5",
"skuOrigin":1,
"nodeSkuNo":"AA0048111gcbh",
"nodeSkuName":"AA0048111工厂商品名称",
"unit": "个",
"description":"这是商品描述",
"minComboPlanNum":1,
"channelDetails": [
{
"deviceCode": "SC0011",
"channelLabelCodes": [
9
]
}
]
}
]
四、 交易管理
(1)设备领料
(2)设备补货
(3)设备还料
(4)设备退货
(5)设备盘点
(6)智能仓领料
(7)智能仓补货
当前提供的交易管理接口中,查询的参数与响应内容字段一致,仅接口不同,不同类型交易查询接口如下表所示
交易数据类型 | 请求URL | 请求方法 |
---|---|---|
设备领料交易数据 | /trade/v1/listVmSaleLog | POST |
设备补货交易数据 | /trade/v1/listVmReplenishLog | POST |
设备还料交易数据 | /trade/v1/listVmEscheatLog | POST |
设备退货交易数据 | /trade/v1/listVmRetreatLog | POST |
设备盘点交易数据 | /trade/v1/listVmInventoryLog | POST |
智能仓领料交易数据 | /trade/v1/listSmartWarehouseSaleLog | POST |
智能仓补货交易数据 | /trade/v1/listSmartWarehouseReplenishLog | POST |
请求参数:
参数名 | 类型 | 必选 | 描述 |
---|---|---|---|
page | Long | 是 | 页码 |
size | Long | 是 | 页宽,不超过200 |
startTime | DateTime | 是 | 交易起始时间,时区:CMT+8,格式:yyyy-MM-dd HH:mm:ss |
endTime | DateTime | 是 | 交易结束时间,时区:CMT+8,格式:yyyy-MM-dd HH:mm:ss |
deviceCode | String | 否 | 设备编号 |
skuNo | String | 否 | 商品编号 |
convertCustomSkuInfo | boolean | 否 | 客户商品信息转换(默认false) |
includeCloudMallTradeLog | boolean | 否 | 获取云仓库交易记录(默认false) |
注:单次查询时间跨度不能超过一年
响应内容:
参数名 | 类型 | 描述 |
---|---|---|
page | Object | 分页信息 |
page | Long | 页码 |
size | Long | 页宽 |
total | Long | 总记录数 |
totalPage | Long | 总页数 |
rows | Array | |
tradeNumber | String | 交易单号,表示一次交易操作 |
tradeItemNumber | String | 交易子单号 |
tradeTime | DateTime | 交易时间,时区:CMT+8,格式:yyyy-MM-dd HH:mm:ss |
deviceCode | String | 主机设备编号 |
auxiliaryDeviceCode | String | 辅机设备编号,该字段为空表示当前交易为主机产生 |
channelCode | String | 设备货道号(物理货道号) |
channelLabelCode | String | 映射货道号(逻辑货道号,设备标签上贴的货道号),编号从主机的最后一个货道号开始,如主机最后一个货道号为36,则第一个辅机的第一个货道号为37 |
userNo | String | 交易员工编号 |
userName | String | 交易员工名称 |
deptNo | String | 交易员工部门编号 |
deptName | String | 交易员工部门名称 |
projectCode | String | 项目编号 |
projectName | String | 项目名称 |
costCode | String | 成本中心编号 |
costName | String | 成本中心名称 |
skuNo | String | 商品编号 |
skuName | String | 商品名称 |
nodeSkuNo | String | 工厂商品编号 |
nodeSkuName | String | 工厂商品名称 |
vendorCode | String | 供应商编号 |
vendorName | String | 供应商名称 |
skuTaxPrice | Double | 商品含税价格(单价) |
skuNoTaxPrice | Double | 商品未税价格(单价) |
tradeNum | Long | 交易数量 |
tradeTaxPrice | Double | 交易金额(含税总价) |
tradeNoTaxPrice | Double | 交易金额(未税总价) |
skuUnit | String | 商品单位名称 |
skuPack | String | 商品包装 |
saleType | Integer | 货道销售类型 0:供应商商品1:客户自有商品 |
remark | String | 备注 |
customTradeNum | Long | 客户商品交易数量(convertCustomSkuInfo为true时进行计算) |
customSkuUnit | String | 客户商品单位(convertCustomSkuInfo为true时进行计算) |
接口示例:
请求
{
"page": 1,
"size": 20,
"startTime": "2022-04-10 00:00:00",
"endTime": "2022-04-20 00:00:00",
"deviceCode": "Test",
"skuNo": "test"
}
响应
{
"page": {
"page": 1,
"size": 20,
"total": 100,
"totalPage": 5
},
"rows": [
{
"tradeNumber": "TS2204291055183360523262464",
"tradeItemNumber": "TS2204291055183360523262464001",
"tradeTime": "2022-04-15 12:21:21",
"deviceCode": "主机设备编号",
"auxiliaryDeviceCode": "XDZ017",
"channelCode": "12",
"channelLabelCode": "30",
"userNo": "Test",
"userName": "张三",
"deptNo": "TestDept",
"deptName": "生产部",
"projectCode": "项目编号",
"projectName": "项目名称",
"costCode": "成本中心编号",
"costName": "成本中心名称",
"skuNo": "sku0002",
"skuName": "劳保手套a",
"skuTaxPrice": "26",
"skuNoTaxPrice": "23.01",
"tradeNum": "1",
"tradeTaxPrice": "26",
"tradeNoTaxPrice": "23.01",
"skuUnit": "个",
"skuPack": "12个/盒",
"saleType": 1,
"remark": "这是备注"
}
]
}
五、 库存管理
(1) 查询设备商品库存
请求URL:/stock/v1/listVmStock
请求方法:POST
请求参数:
参数名 | 类型 | 必选 | 描述 |
---|---|---|---|
page | Long | 是 | 页码 |
size | Long | 是 | 页宽,不超过200 |
deviceCode | String | 否 | 设备编号 |
skuNo | String | 否 | 商品编号 |
customerSkuNo | String | 否 | 客户商品编号 |
响应内容:
字段名 | 类型 | 描述 |
---|---|---|
page | Object | 分页信息 |
page | Long | 页码 |
size | Long | 页宽 |
total | Long | 总记录数 |
totalPage | Long | 总页数 |
rows | Array | |
deviceCode | String | 设备编号 |
skuNo | String | 商品编号 |
skuName | String | 商品名称 |
customerSkuNo | String | 客户商品编号 |
customerSkuName | String | 客户商品名称 |
stockQuantity | Long | 库存数(所有在架库存) |
stockDetail | Array | |
channelLabelCode | String | 货道编号 |
stockQuantity | Long | 库存数 |
channelCapacity | Long | 货道容量 |
接口示例:
请求
{
"page": 1,
"size": 20,
"deviceCode": "Test",
"skuNo": "Test"
}
响应
{
"page": {
"page": 1,
"size": 20,
"total": 100,
"totalPage": 5
},
"rows": [
{
"deviceCode": "Test",
"skuNo": "Test",
"skuName": "测试商品",
"stockQuantity": 100,
"stockDetail": [
{
"channelLabelCode": 48,
"stockQuantity": 2,
"channelCapacity": 5
},
{
"channelLabelCode": 49,
"stockQuantity": 1,
"channelCapacity": 8
}
]
}
]
}
接口处理逻辑说明
请求参数说明:
- customerSkuNo、skuNo说明
- 同时查询则表示需要匹配两者
- 如果与震坤行合作,且需要查询震坤行物料,则传skuNo,如果需要查询自定义物料编号,则传customerSkuNo(需提前维护)
- 如果非与震坤行合作,则传skuNo即可
- 如果deviceCode、skuNo同时为空,则查询客户下全面设备库存信息
- 如果deviceCode非空,skuNo为空,则查询指定设备所有商品库存信息
- 如果deviceCode非空,skuNo非空,则查询指定设备指定商品库存信息
响应内容说明:
- 如果客户未绑定设备或者未绑定商品,则rows为空
六、 领料工单
(1) 新建领料工单
请求URL:/comboOrder/v1/createOrder
请求方法:POST
请求参数:
参数名 | 类型 | 必选 | 长度 | 描述 |
---|---|---|---|---|
orderNumber | String | 是 | 36 | 工单单号,不区分大小写英文字母,但如工单号有英文字母,平台会统一转换成大写字母,如工单号为abc,自动转为ABC 因此,如工单号中存在英文字母,建议调用方使用大写字母,与平台保持一致,此外工单单号无其他任何限制 |
pickUserCode | String | 否 | 领料员工编号,如不填写,则表示客户所有员工均可使用该工单 | |
remark | String | 否 | 128 | 备注 |
projectCode | String | 否 | 项目编号 | |
orderDetails | Array | 否 | 工单明细行,可为空,表示创建空工单 | |
skuNo | String | 否 | 商品编号 | |
nodeSkuNo | String | 否 | 工厂商品编号 | |
skuOrigin | Integer | 是 | 商品来源 1:供应链,3:客户自建 | |
plannedNum | Integer | 是 | 计划领用数量,正整数 |
注:
- 同一个工单内,同一种商品仅能下单一次,数量不限制
- 当orderDetails为空时,表示创建空工单,即工单仅包含工单号,不包含工单明细
- 如果orderDetails非空时,对于每一个明细,skuNo、nodeSkuNo至少选择包含一个,如果包含两者,则表示同时匹配
响应参数:
参数名 | 类型 | 描述 |
---|---|---|
errorIdx | Integer | 失败商品对应的下标 |
注:(code=60103、60104时存在)
接口示例:
请求
空工单
{
"orderNumber": "TEST001",
"pickUserCode": "领用员工",
"remark": "备注"
}
非空工单
- 明细行第一行仅指定商品编号
- 明细行第二行仅指定工厂商品编号
- 明细行第三行同时指定商品编号、工厂商品编号
{
"orderNumber": "TEST001",
"pickUserCode": "领用员工",
"remark": "备注",
"orderDetails": [
{
"skuOrigin": "1",
"plannedNum": "10",
"skuNo": "AA9293949"
},
{
"skuOrigin": "1",
"plannedNum": "10",
"nodeSkuNo": "4-2329-694-65-1"
},
{
"skuOrigin": "1",
"plannedNum": "10",
"skuNo": "AE3359938",
"nodeSkuNo": "AE3359938-Test"
}
]
}
(2) 关闭领料工单
请求URL:/comboOrder/v1/closeOrders
请求方法:POST
请求参数:
参数名 | 类型 | 必选 | 长度 | 描述 |
---|---|---|---|---|
orderNumber | String | 是 | 36 | 工单单号 |
接口示例:
请求
[
"ORDERNUMBER_1", "ORDERNUMBER_2"
]
(3) 查询领料记录
请求URL:/comboOrder/v1/listTradeLogs
请求方法:POST
请求参数:
参数名 | 类型 | 必选 | 描述 |
---|---|---|---|
page | Long | 是 | 页码 |
size | Long | 是 | 页宽,不超过200 |
startTime | DateTime | 是 | 交易起始时间,时区:CMT+8,格式:yyyy-MM-dd HH:mm:ss |
endTime | DateTime | 是 | 交易结束时间,时区:CMT+8,格式:yyyy-MM-dd HH:mm:ss |
orderNumbers | Array | 否 | 工单单号列表,不传或者为空表示查询指定时间范围内的工单领料记录 |
注:单次查询时间跨度不能超过一年
响应内容:
字段名 | 类型 | 描述 |
---|---|---|
page | Object | 分页信息 |
page | Long | 页码 |
size | Long | 页宽 |
total | Long | 总记录数 |
totalPage | Long | 总页数 |
rows | Array | |
orderNumber | String | 工单单号 |
userNo | String | 员工编号 |
userName | String | 员工姓名 |
deptNo | String | 部门编号 |
deptName | String | 部门名称 |
skuNo | String | 商品编号 |
skuName | String | 商品名称 |
skuUnit | String | 计量单位 |
skuPack | String | 商品包装 |
skuDescription | String | 商品描述 |
tradeNum | Long | 交易数量 |
deviceCode | String | 设备编号 |
channelLabelCode | String | 货道编号 |
tradeTime | DateTime | 交易时间,时区:CMT+8,格式:yyyy-MM-dd HH:mm:ss |
tradeNumber | String | 交易单号 |
tradeItemNumber | String | 交易子单号 |
接口示例:
请求
{
"startTime": "2022-07-29 18:00:00",
"endTime": "2022-08-10 18:00:00",
"page": 1,
"size": 100,
"orderNumbers": [
]
}
响应
{
"code": 200,
"msg": null,
"data": {
"page": {
"page": 1,
"size": 100,
"total": 1,
"totalPage": 1
},
"rows": [
{
"orderNumber": "XXXX",
"userNo": "XXXX",
"userName": "XXXX",
"deptNo": "Y002",
"deptName": "产品部",
"skuNo": "XY003",
"skuName": "测试产品3",
"skuUnit": null,
"skuPack": null,
"skuDescription": "测试商品描述",
"tradeNum": 2,
"deviceCode": "XY3",
"channelLabelCode": "2",
"tradeTime": "2022-08-05 11:46:08",
"tradeNumber": "TS2208091053392040620659200",
"tradeItemNumber": "TS2208091053392040620659200001"
}
]
}
}
七、 对账单查询
EVM对账单类型 | 请求URL | 请求方法 |
---|---|---|
对账单查询 | /settlement/v1/listSettlementLog | POST |
对账单员工汇总 | /settlement/v1/statSettlementUser | POST |
对账单交易明细 | /settlement/v1/listSettlementTradeLog | POST |
对账单部门汇总 | /settlement/v1/statSettlementDept | POST |
对账单商品分类汇总 | /settlement/v1/statSettlementSkuType | POST |
对账单员工领用商品汇总 | /settlement/v1/statSettlementUserSku | POST |
对账单部门领用商品汇总 | /settlement/v1/statSettlementDeptSku | POST |
对账单商品汇总 | /settlement/v1/statSettlementSku | POST |
1、对账单查询–总账
请求参数:
参数名 | 类型 | 必选 | 描述 |
---|---|---|---|
page | Long | 是 | 页码 |
size | Long | 是 | 页宽,不超过200 |
beginSettlementDate | Date | 是 | 对账周期开始时间,时区:CMT+8,格式:yyyy-MM-dd |
endSettlementDate | Date | 是 | 对账周期结束时间,时区:CMT+8,格式:yyyy-MM-dd |
costCode | String | 否 | 成本中心编号 |
响应内容:
参数名 | 类型 | 描述 |
---|---|---|
page | Object | 分页信息 |
page | Long | 页码 |
size | Long | 页宽 |
total | Long | 总记录数 |
totalPage | Long | 总页数 |
rows | Array | |
beginSettlementDate | Date | 对账周期起始时间 |
endSettlementDate | Date | 对账周期结束时间 |
settlementDate | Date | 结算日期 |
costCode | String | 成本中心编号 |
costName | String | 成本中心名称 |
taxStatus | Boolean | 含/未税 |
settlementTotalPrice | Double | 结算金额 |
接口示例:
请求
{
"page": 1,
"size": 50,
"beginSettlementDate": "2021-11-03",
"endSettlementDate": "2021-11-10",
"costCode": null
}
响应
{
"page": {
"page": 1,
"size": 50,
"total": 1,
"totalPage": 1
},
"rows": {
"beginSettlementDate": "2022-07-02",
"endSettlementDate": "2022-07-02",
"settlementDate": "2022-07-03",
"costCode": null,
"costName": null,
"taxStatus": true,
"settlementTotalPrice": 0.09
}
}
(1) 对账单明细账—按员工汇总
请求参数:
参数名 | 类型 | 必选 | 描述 |
---|---|---|---|
page | Long | 是 | 页码 |
size | Long | 是 | 页宽,不超过200 |
beginSettlementDate | Date | 是 | 对账周期开始时间,时区:CMT+8,格式:yyyy-MM-dd |
endSettlementDate | Date | 是 | 对账周期结束时间,时区:CMT+8,格式:yyyy-MM-dd |
costCode | String | 否 | 成本中心编号 |
注:查询参数的对账周期起始时间必须和实际的对账周期起始时间一致,成本中心为空时只能查询到成本中心为空的数据
响应内容:
参数名 | 类型 | 描述 |
---|---|---|
page | Object | 分页信息 |
page | Long | 页码 |
size | Long | 页宽 |
total | Long | 总记录数 |
totalPage | Long | 总页数 |
settlement | Object | 结算信息 |
beginSettlementDate | Date | 对账周期开始时间,时区:CMT+8,格式:yyyy-MM-dd |
endSettlementDate | Date | 对账周期结束时间,时区:CMT+8,格式:yyyy-MM-dd |
costCode | String | 成本中心编号 |
costName | String | 成本中心名称 |
taxStatus | Boolean | 含/未税 |
settlementTotalPrice | Double | 结算金额 |
rows | Array | |
userNo | String | 交易员工编号 |
userName | String | 交易员工名称 |
tradePrice | Double | 交易总价 |
接口示例:
请求
{
"page": 1,
"size": 50,
"beginSettlementDate": "2021-11-03",
"endSettlementDate": "2021-11-10",
"costCode": null
}
响应
{
"page": {
"page": 1,
"size": 50,
"total": 1,
"totalPage": 1
},
"settlement": {
"beginSettlementDate": "2022-07-02",
"endSettlementDate": "2022-07-02",
"costCode": null,
"costName": null,
"taxStatus": true,
"settlementTotalPrice": 0.09,
"rows": [
{
"userNo": "111",
"userName": "111",
"tradePrice": 0.01
}
]
}
}
(2) 对账单明细账—交易明细
请求参数:
参数名 | 类型 | 必选 | 描述 |
---|---|---|---|
page | Long | 是 | 页码 |
size | Long | 是 | 页宽,不超过200 |
beginSettlementDate | Date | 是 | 对账周期开始时间,时区:CMT+8,格式:yyyy-MM-dd |
endSettlementDate | Date | 是 | 对账周期结束时间,时区:CMT+8,格式:yyyy-MM-dd |
costCode | String | 否 | 成本中心编号 |
注:查询参数的对账周期起始时间必须和实际的对账周期起始时间一致,成本中心为空时只能查询到成本中心为空的数据
响应内容:
参数名 | 类型 | 描述 |
---|---|---|
page | Object | 分页信息 |
page | Long | 页码 |
size | Long | 页宽 |
total | Long | 总记录数 |
totalPage | Long | 总页数 |
settlement | Object | 结算信息 |
beginSettlementDate | Date | 对账周期开始时间,时区:CMT+8,格式:yyyy-MM-dd |
endSettlementDate | Date | 对账周期结束时间,时区:CMT+8,格式:yyyy-MM-dd |
costCode | String | 成本中心编号 |
costName | String | 成本中心名称 |
taxStatus | Boolean | 含/未税 |
settlementTotalPrice | Double | 结算金额 |
rows | Array | |
tradeNumber | String | 交易单号,表示一次交易操作 |
tradeItemNumber | String | 交易子单号 |
tradeTime | DateTime | 交易时间,时区:CMT+8,格式:yyyy-MM-dd HH:mm:ss |
tradeNum | Long | 交易数量 |
deviceCode | String | 主机设备编号 |
auxiliaryDeviceCode | String | 辅机设备编号,该字段为空表示当前交易为主机产生 |
channelCode | String | 设备货道号(物理货道号) |
channelLabelCode | String | 映射货道号(逻辑货道号,设备标签上贴的货道号),编号从主机的最后一个货道号开始,如主机最后一个货道号为36,则第一个辅机的第一个货道号为37 |
userNo | String | 交易员工编号 |
userName | String | 交易员工名称 |
deptNo | String | 交易员工部门编号 |
deptName | String | 交易员工部门名称 |
projectCode | String | 项目编号 |
projectName | String | 项目名称 |
costCode | String | 成本中心编号 |
costName | String | 成本中心名称 |
skuNo | String | 商品编号 |
skuName | String | 商品名称 |
skuTaxPrice | Double | 商品含税价格 |
skuNoTaxPrice | Double | 商品未税价格 |
tradeTaxPrice | Double | 交易金额(含税) |
tradeNoTaxPrice | Double | 交易金额(未税) |
skuUnit | String | 商品单位名称 |
skuPack | String | 商品包装 |
saleType | Integer | 货道销售类型 0:供应商商品1:客户自有商品 |
remark | String | 备注 |
接口示例:
请求
{
"page": 1,
"size": 50,
"beginSettlementDate": "2021-11-03",
"endSettlementDate": "2021-11-10",
"costCode": null
}
响应
{
"page": {
"page": 1,
"size": 50,
"total": 1,
"totalPage": 1
},
"settlement": {
"beginSettlementDate": "2022-07-02",
"endSettlementDate": "2022-07-02",
"costCode": null,
"costName": null,
"taxStatus": true,
"settlementTotalPrice": 0.09,
"rows": [
{
"tradeNumber": "TS2209011141251190648207360",
"tradeItemNumber": "TS2209011141251190648260001",
"tradeTime": null,
"tradeNum": 9,
"deviceCode": "LC0002",
"auxiliaryDeviceCode": null,
"channelCode": null,
"channelLabelCode": 19,
"userNo": null,
"userName": null,
"deptNo": null,
"deptName": null,
"projectCode": "Project018",
"projectName": "项目名称018",
"costCode": "CostCode043",
"costName": "成本中心名称043",
"skuNo": null,
"skuName": null,
"skuTaxPrice": null,
"tradeTaxPrice": null,
"skuNoTaxPrice": null,
"tradeNoTaxPrice": null,
"skuUnit": null,
"skuPack": null,
"saleType": 0,
"remark": null
}
]
}
}
(3) 对账单明细账—按部门汇总
请求参数:
参数名 | 类型 | 必选 | 描述 |
---|---|---|---|
page | Long | 是 | 页码 |
size | Long | 是 | 页宽,不超过200 |
beginSettlementDate | Date | 是 | 对账周期开始时间,时区:CMT+8,格式:yyyy-MM-dd |
endSettlementDate | Date | 是 | 对账周期结束时间,时区:CMT+8,格式:yyyy-MM-dd |
costCode | String | 否 | 成本中心编号 |
注:查询参数的对账周期起始时间必须和实际的对账周期起始时间一致,成本中心为空时只能查询到成本中心为空的数据
响应内容:
参数名 | 类型 | 描述 |
---|---|---|
page | Object | 分页信息 |
page | Long | 页码 |
size | Long | 页宽 |
total | Long | 总记录数 |
totalPage | Long | 总页数 |
settlement | Object | 结算信息 |
beginSettlementDate | Date | 对账周期开始时间,时区:CMT+8,格式:yyyy-MM-dd |
endSettlementDate | Date | 对账周期结束时间,时区:CMT+8,格式:yyyy-MM-dd |
costCode | String | 成本中心编号 |
costName | String | 成本中心名称 |
taxStatus | Boolean | 含/未税 |
settlementTotalPrice | Double | 结算金额 |
rows | Array | |
deptNo | String | 部门编号 |
deptName | String | 部门名称 |
tradePrice | Double | 交易总价 |
接口示例:
请求
{
"page": 1,
"size": 50,
"beginSettlementDate": "2021-11-03",
"endSettlementDate": "2021-11-10",
"costCode": null
}
响应
{
"page": {
"page": 1,
"size": 50,
"total": 1,
"totalPage": 1
},
"settlement": {
"beginSettlementDate": "2022-07-02",
"endSettlementDate": "2022-07-02",
"costCode": null,
"costName": null,
"taxStatus": true,
"settlementTotalPrice": 0.09,
"rows": [
{
"deptNo": "111",
"deptName": "111",
"tradePrice": 0.01,
}
]
}
}
(4) 对账单明细账—按商品分类汇总
请求参数:
参数名 | 类型 | 必选 | 描述 |
---|---|---|---|
page | Long | 是 | 页码 |
size | Long | 是 | 页宽,不超过200 |
beginSettlementDate | Date | 是 | 对账周期开始时间,时区:CMT+8,格式:yyyy-MM-dd |
endSettlementDate | Date | 是 | 对账周期结束时间,时区:CMT+8,格式:yyyy-MM-dd |
costCode | String | 否 | 成本中心编号 |
注:查询参数的对账周期起始时间必须和实际的对账周期起始时间一致,成本中心为空时只能查询到成本中心为空的数据
响应内容:
参数名 | 类型 | 描述 |
---|---|---|
page | Object | 分页信息 |
page | Long | 页码 |
size | Long | 页宽 |
total | Long | 总记录数 |
totalPage | Long | 总页数 |
settlement | Object | 结算信息 |
beginSettlementDate | Date | 对账周期开始时间,时区:CMT+8,格式:yyyy-MM-dd |
endSettlementDate | Date | 对账周期结束时间,时区:CMT+8,格式:yyyy-MM-dd |
costCode | String | 成本中心编号 |
costName | String | 成本中心名称 |
taxStatus | Boolean | 含/未税 |
settlementTotalPrice | Double | 结算金额 |
rows | Array | |
skuTypeCode | String | 商品分类编号 |
skuTypeName | String | 商品分类名称 |
tradePrice | Double | 交易总价 |
接口示例:
请求
{
"page": 1,
"size": 50,
"beginSettlementDate": "2021-11-03",
"endSettlementDate": "2021-11-10",
"costCode": null
}
响应
{
"page": {
"page": 1,
"size": 50,
"total": 1,
"totalPage": 1
},
"settlement": {
"beginSettlementDate": "2022-07-02",
"endSettlementDate": "2022-07-02",
"costCode": null,
"costName": null,
"taxStatus": true,
"settlementTotalPrice": 0.09,
"rows": [
{
"skuTypeCode": "111",
"skuTypeName": "111",
"tradePrice": 0.01,
}
]
}
}
(5) 对账单明细账—按员工领用商品汇总
请求参数:
参数名 | 类型 | 必选 | 描述 |
---|---|---|---|
page | Long | 是 | 页码 |
size | Long | 是 | 页宽,不超过200 |
beginSettlementDate | Date | 是 | 对账周期开始时间,时区:CMT+8,格式:yyyy-MM-dd |
endSettlementDate | Date | 是 | 对账周期结束时间,时区:CMT+8,格式:yyyy-MM-dd |
costCode | String | 否 | 成本中心编号 |
注:查询参数的对账周期起始时间必须和实际的对账周期起始时间一致,成本中心为空时只能查询到成本中心为空的数据
响应内容:
参数名 | 类型 | 描述 |
---|---|---|
page | Object | 分页信息 |
page | Long | 页码 |
size | Long | 页宽 |
total | Long | 总记录数 |
totalPage | Long | 总页数 |
settlement | Object | 结算信息 |
beginSettlementDate | Date | 对账周期开始时间,时区:CMT+8,格式:yyyy-MM-dd |
endSettlementDate | Date | 对账周期结束时间,时区:CMT+8,格式:yyyy-MM-dd |
costCode | String | 成本中心编号 |
costName | String | 成本中心名称 |
taxStatus | Boolean | 含/未税 |
settlementTotalPrice | Double | 结算金额 |
rows | Array | |
tradeNum | Long | 交易数量 |
userNo | String | 交易员工编号 |
userName | String | 交易员工名称 |
skuNo | String | 商品编号 |
skuName | String | 商品名称 |
skuPrice | Double | 商品单价 |
tradePrice | Double | 交易总额 |
nodeSkuCode | String | 工厂商品编号 |
nodeSkuName | String | 工厂商品名称 |
接口示例:
请求
{
"page": 1,
"size": 50,
"beginSettlementDate": "2021-11-03",
"endSettlementDate": "2021-11-10",
"costCode": null
}
响应
{
"page": {
"page": 1,
"size": 50,
"total": 1,
"totalPage": 1
},
"settlement": {
"beginSettlementDate": "2022-07-02",
"endSettlementDate": "2022-07-02",
"costCode": null,
"costName": null,
"taxStatus": true,
"settlementTotalPrice": 0.09,
"rows": [
{
"tradeNum": 10,
"userNo": "111",
"userName": "111",
"skuNo": "111",
"skuName": "111",
"skuPrice": 0.01,
"tradePrice": 0.09,
"nodeSkuCode": "111",
"nodeSkuName": "111",
}
]
}
}
(6) 对账单明细账—按部门领用商品汇总
请求参数:
参数名 | 类型 | 必选 | 描述 |
---|---|---|---|
page | Long | 是 | 页码 |
size | Long | 是 | 页宽,不超过200 |
beginSettlementDate | Date | 是 | 对账周期开始时间,时区:CMT+8,格式:yyyy-MM-dd |
endSettlementDate | Date | 是 | 对账周期结束时间,时区:CMT+8,格式:yyyy-MM-dd |
costCode | String | 否 | 成本中心编号 |
注:查询参数的对账周期起始时间必须和实际的对账周期起始时间一致,成本中心为空时只能查询到成本中心为空的数据
响应内容:
参数名 | 类型 | 描述 |
---|---|---|
page | Object | 分页信息 |
page | Long | 页码 |
size | Long | 页宽 |
total | Long | 总记录数 |
totalPage | Long | 总页数 |
settlement | Object | 结算信息 |
beginSettlementDate | Date | 对账周期开始时间,时区:CMT+8,格式:yyyy-MM-dd |
endSettlementDate | Date | 对账周期结束时间,时区:CMT+8,格式:yyyy-MM-dd |
costCode | String | 成本中心编号 |
costName | String | 成本中心名称 |
taxStatus | Boolean | 含/未税 |
settlementTotalPrice | Double | 结算金额 |
rows | Array | |
tradeNum | Long | 交易数量 |
deptNo | String | 交易员工部门编号 |
deptName | String | 交易员工部门名称 |
skuNo | String | 商品编号 |
skuName | String | 商品名称 |
skuPrice | Double | 商品单价 |
tradePrice | Double | 交易总额 |
nodeSkuCode | String | 工厂商品编号 |
nodeSkuName | String | 工厂商品名称 |
接口示例:
请求
{
"page": 1,
"size": 50,
"beginSettlementDate": "2021-11-03",
"endSettlementDate": "2021-11-10",
"costCode": null
}
响应
{
"page": {
"page": 1,
"size": 50,
"total": 1,
"totalPage": 1
},
"settlement": {
"beginSettlementDate": "2022-07-02",
"endSettlementDate": "2022-07-02",
"costCode": null,
"costName": null,
"taxStatus": true,
"settlementTotalPrice": 0.09,
"rows": [
{
"tradeNum": 10,
"deptNo": "111",
"deptName": "111",
"skuNo": "111",
"skuName": "111",
"skuPrice": 0.01,
"tradePrice": 0.09,
"nodeSkuCode": "111",
"nodeSkuName": "111",
}
]
}
}
(7) 对账单明细账—按商品汇总
请求参数:
参数名 | 类型 | 必选 | 描述 |
---|---|---|---|
page | Long | 是 | 页码 |
size | Long | 是 | 页宽,不超过200 |
beginSettlementDate | Date | 是 | 对账周期开始时间,时区:CMT+8,格式:yyyy-MM-dd |
endSettlementDate | Date | 是 | 对账周期结束时间,时区:CMT+8,格式:yyyy-MM-dd |
costCode | String | 否 | 成本中心编号 |
注:查询参数的对账周期起始时间必须和实际的对账周期起始时间一致,成本中心为空时只能查询到成本中心为空的数据
响应内容:
参数名 | 类型 | 描述 |
---|---|---|
page | Object | 分页信息 |
page | Long | 页码 |
size | Long | 页宽 |
total | Long | 总记录数 |
totalPage | Long | 总页数 |
settlement | Object | 结算信息 |
beginSettlementDate | Date | 对账周期开始时间,时区:CMT+8,格式:yyyy-MM-dd |
endSettlementDate | Date | 对账周期结束时间,时区:CMT+8,格式:yyyy-MM-dd |
costCode | String | 成本中心编号 |
costName | String | 成本中心名称 |
taxStatus | Boolean | 含/未税 |
settlementTotalPrice | Double | 结算金额 |
rows | Array | |
tradeNum | Long | 交易数量 |
skuNo | String | 商品编号 |
skuName | String | 商品名称 |
skuPrice | Double | 商品单价 |
tradePrice | Double | 交易总额 |
nodeSkuCode | String | 工厂商品编号 |
nodeSkuName | String | 工厂商品名称 |
接口示例:
请求
{
"page": 1,
"size": 50,
"beginSettlementDate": "2021-11-03",
"endSettlementDate": "2021-11-10",
"costCode": null
}
响应
{
"page": {
"page": 1,
"size": 50,
"total": 1,
"totalPage": 1
},
"settlement": {
"beginSettlementDate": "2022-07-02",
"endSettlementDate": "2022-07-02",
"costCode": null,
"costName": null,
"taxStatus": true,
"settlementTotalPrice": 0.09,
"rows": [
{
"tradeNum": 10,
"skuNo": "111",
"skuName": "111",
"skuPrice": 0.01,
"tradePrice": 0.09,
"nodeSkuCode": "111",
"nodeSkuName": "111",
}
]
}
}
八、 成本中心管理
注:此模块接口用于震坤行客户的物料开票结算,如非震坤行客户,则按需使用
(1) 同步成本中心
请求URL:/cost/v1/syncCost
请求方式:POST
请求参数:
参数名 | 类型 | 必选 | 最大长度 | 描述 |
---|---|---|---|---|
costCode | String | 是 | 32 | 成本中心编号 |
costName | String | 是 | 36 | 成本中心名称 |
接口示例:
请求
[
{
"costCode": "CostTest",
"costName": "成本中心测试"
}
]
(2) 同步成本中心员工
请求URL:/cost/v1/syncCostUser
请求方式:POST
请求参数:
参数名 | 类型 | 必选 | 最大长度 | 描述 |
---|---|---|---|---|
costCode | String | 否 | 32 | 成本中心编号 |
userCodes | Array | 是 | 员工编号列表 |
响应参数:
参数名 | 类型 | 描述 |
---|---|---|
errorIdx | Integer | 失败记录对应的下标 |
注:如果costCode为空,则表示将userCodes对应的员工从成本中心移出
接口示例:
请求
[
{
"costCode": "CostTest",
"userCodes": [
"test"
]
},
{
"costCode": "CostTest01",
"userCodes": [
"test01",
"test02",
"test03"
]
}
]
响应
{
"errorIdx": 1
}
注:当code=80102/80103时,errorIdx字段存在
附录:
(1) 错误状态码
错误状态码 | 状态码说明 | 备注 |
---|---|---|
10101 | 签名已过期 | 签名时间与平台相差大于10min,请重新生成签名,HTTP状态码401 |
10102 | 签名有误 | HTTP状态码401 |
10201 | 无模块访问权限 | 无对应模块访问权限,联系管理员添加,HTTP状态码401 |
10202 | 无数据访问权限 | 无对应客户数据访问权限,联系管理员添加,HTTP状态码401 |
10301 | 应用已停用 | HTTP状态码401 |
10401 | 调用频率过快,触发限流 | 单应用或IP每分钟调用不超过100次,HTTP状态码403 |
10501 | 请求参数有误 | 请求参数有误,HTTP状态码400 |
50101 | 上级部门不存在 | |
50102 | 员工部门不存在 | |
50103 | 上级部门不能是自身 | |
50104 | 子部门非空,不能删除当前部门 | |
50105 | 部门员工非空,不能删除当前部门 | |
50201 | 卡号已使用 | |
50202 | 卡序列号已使用 | |
50203 | 员工人脸特征信息提取失败 | |
50204 | 员工不存在 | |
50205 | 二维码类型不支持 | |
60101 | 工单单号已存在 | |
60102 | 领料员工不存在 | |
60103 | 商品不存在 | |
60104 | 商品重复下单 | |
70101 | 请求参数关键信息不全 | |
70102 | 无效的请求参数 | |
70103 | 当前客户下无人仓不可用 | |
70104 | 物料信息不存在 | |
70105 | 当前申领人信息有误 | |
80101 | 当前成本中心类型与接口不匹配 | 如:客户成本中心非员工,但通过成本中心员工同步接口 |
80102 | 成本中心不存在 | |
80103 | 员工不存在 |
(2) 单位枚举表
单位名称 |
---|
把 |
对 |
付 |
副 |
个 |
根 |
罐 |
盒 |
架 |
件 |
板 |
节 |
卷 |
颗 |
块 |
粒 |
辆 |
盘 |
片 |
包 |
瓶 |
双 |
台 |
套 |
提 |
条 |
桶 |
筒 |
箱 |
包装 |
扎 |
张 |
支 |
只 |
组 |
捆 |
千只 |
百个 |
部 |
本 |
次 |
打 |
袋 |
顶 |
英尺 |
克 |
公斤 |
升 |
米 |
平方米 |
立方米 |
千克 |
吨 |
(3) 平台辅助接口
平台提供如下接口,用于开发阶段辅助用户调试接口
接口地址 | 接口含义 | 请求方法 |
---|---|---|
/debug/systemTime | 获取平台当前时间戳(毫秒),无需携带签名信息 | GET |
/debug/checkSign | 校验签名计算是否正确,签名方式参照鉴权说明 | GET |
(4) 文档更新记录
更新时间 | 更新内容 | 状态 |
---|---|---|
2022.07.25 | 交易管理接口:新增返回辅机设备编号、映射货道号字段 | 已发布 |
2022.08.10 | 员工管理:新增同步员工照片接口交易管理:新增设备还料记录查询接口批量同步接口:新增返回错误记录索引字段 | 已发布 |
2022.08.23 | 领料工单:新增查询领料工单领料记录接口 | 已发布 |
2022.08.26 | 领料工单:新增新建、关闭工单接口 商品管理:新增查询在架商品接口 | 已发布 |
2022.09.25 | 智能仓:新增智能仓订单、库存、出库单接口 | 已发布 |
2024.09.05 | 成本中心:新增成本中心同步、成本中心员工同步接口 | 待发布 |