业务流程说明

此方案主要用户金蝶、用友、SAP等外部ERP系统与坤同对接;坤同的自助领料可对接MES、WMS、ERP,将领料作为出库,补货作为入库,客户拉到交易数据后在自身数据中台做汇总,让各个系统的数据汇集在中台,实现数据统一化管理。

一般需要对接:

  1. 基础数据同步或映射
  2. 出入库相关接口:(1)交易记录查询:对应wms的出入库记录 (2)库存查询
  3. 其余接口根据自身需要对接

文档说明

(1) 接口说明

  1. 无特殊说明情况下,所有的接口的Content-Type均为application/json;charset=UTF-8
  2. 无特殊说明情况下,所有的数据变更类型(新增、修改、删除、同步)均为批量操作,即接口的参数均为list类型,且单次调用list长度不应超过100项,详见各个接口的示例,批量处理时,如果遇到处理失败,则停止处理,并且返回失败状态码,已成功处理数据不会回滚
  3. 无特殊说明情况下,所有接口中参数的最大长度字段单位均为字符
  4. 无特殊说明情况下,同步接口可用于新增、修改,且同步接口为无状态接口,与前一次调用无逻辑关系,接口调用时,如果不存在,则新建该数据项,如果存在,则以接口参数更新该数据项
  5. 无特殊说明情况下,所有接口响应内容均以如下数据结构返回,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泄露导致的数据安全问题。

签名生成步骤

  1. 获取当前系统时间戳(毫秒级),注意该时间戳与平台时间保持在10min差距以内
  2. 将sk作为HmacSHA256算法的key,对1获取的内容进行摘要计算
  3. 将2计算的内容以base64形式输出
  4. 将ak、3计算的内容以英文冒号,即 : 符号拼接,作为签名

签名使用方式

  1. 将1获取的内容作为HTTP请求头参数X-Kt-Time的值
  2. 将4获取的内容作为HTTP请求头参数X-Kt-Authorization的值
  3. 在访问坤同开放平台接口时,附带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 手机号
email 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
                }
            ]
        }
    ]
}

接口处理逻辑说明

请求参数说明:

  1. customerSkuNo、skuNo说明
    1. 同时查询则表示需要匹配两者
    2. 如果与震坤行合作,且需要查询震坤行物料,则传skuNo,如果需要查询自定义物料编号,则传customerSkuNo(需提前维护)
    3. 如果非与震坤行合作,则传skuNo即可
  2. 如果deviceCode、skuNo同时为空,则查询客户下全面设备库存信息
  3. 如果deviceCode非空,skuNo为空,则查询指定设备所有商品库存信息
  4. 如果deviceCode非空,skuNo非空,则查询指定设备指定商品库存信息

响应内容说明:

  1. 如果客户未绑定设备或者未绑定商品,则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 计划领用数量,正整数

注:

  1. 同一个工单内,同一种商品仅能下单一次,数量不限制
  2. 当orderDetails为空时,表示创建空工单,即工单仅包含工单号,不包含工单明细
  3. 如果orderDetails非空时,对于每一个明细,skuNo、nodeSkuNo至少选择包含一个,如果包含两者,则表示同时匹配

响应参数:

参数名 类型 描述
errorIdx Integer 失败商品对应的下标

注:(code=60103、60104时存在)

接口示例:

请求

空工单

{
    "orderNumber": "TEST001",
    "pickUserCode": "领用员工",
    "remark": "备注"
}

非空工单

  1. 明细行第一行仅指定商品编号
  2. 明细行第二行仅指定工厂商品编号
  3. 明细行第三行同时指定商品编号、工厂商品编号
{
    "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 成本中心:新增成本中心同步、成本中心员工同步接口 待发布
文档更新时间: 2024-09-05 06:45   作者:朱敏