将销售数据转换为金蝶云星辰V2API格式并写入目标平台

  • 轻易云集成顾问-卢剑航

实现聚水潭·奇门数据集成到金蝶云星辰V2:销售出库单的无缝对接

通过轻易云数据集成平台,我们成功实现了聚水潭·奇门销售出库单的数据高效对接至金蝶云星辰V2。这个过程中,我们利用API接口和定制化映射,确保了数据在整个传输过程中的准确和及时。

可靠的数据抓取与接口调用

首先,为确保没有遗漏任何待处理的订单,我们调用了聚水潭·奇门提供的jushuitan.saleout.list.query接口,该接口支持分页查询,用于抓取最新生成和更新的销售出库单。在使用该API时,需要特别注意其限流机制,通过适当设置请求频率,避免触发限制条件导致丢单的问题。

为进一步保证数据抓取的稳定性,我们采用了定时调度策略,每隔固定时间周期自动执行一次数据拉取任务,并结合日志记录实时监控每次拉取操作。如遇异常,还能根据日志信息迅速定位问题并进行重试,提升整体系统可靠性。

数据格式差异与批量写入

获取到的原始数据需要进行必要的转换,以符合金蝶云星辰V2 API /jdy/v2/scm/sal_out_bound 的要求。在这一环节中,通过自定义规则,对字段名称、结构层级等方面进行精细化映射,解决两者间格式不一致的问题。例如,将聚水潭中的客户编号对应到金蝶云系统中的买方代码字段,这是一个典型的数据转换案例。

经过清洗和转换后的数据会被批量写入到金蝶云星辰V2。这一步骤不仅提高了传输效率,还减少了网络延迟影响。我们采取分段式提交的方法,将大量待写入的数据划分成若干小块,使之更有效地通过网络通道,而不是一次性传输全部内容,从而降低失败风险。

实时监控与异常处理

在整个集成过程中,每个关键步骤都会实时记录详细日志,包括成功上传的数据条目数以及可能出现的错误信息。一旦发现有某些记录未成功插入目标系统,会立即触发错误重试机制,通过再次尝试或人工介入修正,实现精准化故障恢复。此外,这些日志还可用于后续分析与优化,为将来的改进提供宝贵参考依据。

要点总结:

  1. 可靠抓取:定时调度+限流处理。
  2. 精准映射:格式差异自定义调整。
  3. 效能保障:批量提交+错误重启。

下一步将深入展示具体配置流程及参数设定细节,以指导类似 打通金蝶云星空数据接口

调用聚水潭·奇门接口获取并加工数据

在数据集成生命周期的第一步,我们需要调用聚水潭·奇门接口 jushuitan.saleout.list.query 来获取销售出库单数据,并进行必要的加工处理。以下将详细介绍如何配置和使用该接口。

接口概述

jushuitan.saleout.list.query 是一个用于查询销售出库单的API接口。该接口采用POST请求方式,主要参数包括页数、每页行数、修改时间范围以及单据状态等。通过这些参数,我们可以灵活地获取所需的数据。

请求参数配置

根据元数据配置,我们需要设置以下请求参数:

  • page_index: 页数,从第一页开始,默认值为1。
  • page_size: 每页行数,默认25,最大25。在这里我们设置为30。
  • start_time: 修改开始时间,格式为 {{LAST_SYNC_TIME|datetime}},表示上次同步时间。
  • end_time: 修改结束时间,格式为 {{CURRENT_TIME|datetime}},表示当前时间。
  • status: 单据状态,这里我们设置为 "Confirmed" 表示已出库的单据。
  • date_type: 固定值2。

以下是请求参数的JSON配置示例:

{
  "page_index": "1",
  "page_size": "30",
  "start_time": "{{LAST_SYNC_TIME|datetime}}",
  "end_time": "{{CURRENT_TIME|datetime}}",
  "status": "Confirmed",
  "date_type": "2"
}

数据过滤与清洗

在获取数据后,我们需要对数据进行过滤和清洗,以确保数据质量。根据元数据配置中的条件部分,我们需要排除标签中包含“导入发货”的记录。具体条件如下:

{
  "field": "labels",
  "logic": "notlike",
  "value": "导入发货"
}

这意味着我们需要在处理过程中检查每条记录的标签字段,如果包含“导入发货”,则将其排除。

自动填充响应与接管机制

为了确保数据的完整性和连续性,我们启用了自动填充响应功能,并配置了接管机制。在某些情况下(例如定时任务失败),接管机制会自动填充缺失的数据。具体配置如下:

{
  "crontab": "0 0 * * *",
  "takeOverRequest": [
    {
      "field": "start_time",
      "value": "_function FROM_UNIXTIME( unix_timestamp() -604800 , '%Y-%m-%d %H:%i:%s' )",
      "type": "string"
    }
  ]
}

上述配置表示每隔一周(604800秒)重新计算一次起始时间,以确保不会遗漏任何数据。

数据转换与写入

在完成数据请求与清洗后,我们需要将数据转换并写入目标系统。在这个案例中,我们将聚水潭销售出库单的数据转换为星辰销售出库单的数据格式。这一步骤涉及字段映射和格式转换,需要根据目标系统的要求进行相应处理。

实际操作步骤

  1. 发送请求:使用POST方法向 jushuitan.saleout.list.query 接口发送请求,携带上述配置的参数。
  2. 接收响应:解析接口返回的数据,根据条件过滤不符合要求的记录。
  3. 数据清洗:对剩余的数据进行必要的清洗和格式转换。
  4. 写入目标系统:将处理后的数据写入星辰销售出库单系统。

通过以上步骤,我们实现了从聚水潭·奇门接口获取销售出库单并加工处理的数据集成过程。这不仅提高了业务透明度和效率,也确保了不同系统间的数据无缝对接。 金蝶与外部系统打通接口

将源平台数据转换为金蝶云星辰V2API格式并写入目标平台

在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL转换,转为目标平台金蝶云星辰V2API接口所能够接收的格式,并最终写入目标平台。以下是具体的技术实现过程。

API接口元数据配置解析

根据提供的元数据配置,我们需要将聚水潭销售出库单的数据转换为金蝶云星辰V2API接口所需的格式。该接口的基本信息如下:

  • API路径: /jdy/v2/scm/sal_out_bound
  • HTTP方法: POST
  • 操作类型: EXECUTE

数据字段映射与转换

我们需要将源平台的数据字段映射到目标平台所需的数据字段,并进行必要的转换。以下是主要字段的映射和转换逻辑:

  1. 出库日期(bill_date)

    • 源字段:io_date
    • 目标字段:bill_date
    • 描述:出库日期,格式为YYYY-MM-DD
  2. 单据编号(bill_no)

    • 源字段:o_id
    • 目标字段:bill_no
    • 描述:单据ID,修改单据时必填
  3. 客户信息(customer_id)

    • 源字段:shop_id
    • 目标字段:customer_id
    • 描述:通过查找集合获取客户信息
      _findCollection find id from 6f83c928-6667-36fa-a154-9bd0ab2b9d4b where number={shop_id}
  4. 整单折扣额(bill_dis_amount)

    • 源字段:order_type, free_amount
    • 目标字段:bill_dis_amount
    • 描述:根据订单类型进行条件判断
      _function CASE '{order_type}' WHEN '换货订单' THEN '0.0' WHEN '补发订单' THEN '0' ELSE '{free_amount}' END
  5. 操作类型(operation_key)

    • 固定值:audit
  6. 单据备注(remark)

    • 源字段:remark
    • 目标字段:remark
  7. 商品分录(material_entity) 商品分录是一个数组,每个商品项包含以下子字段:

    a. 商品编号(material_number)

    • 源字段:items.sku_id
    • 目标字段:material_number

    b. 仓库编号(stock_id)

    • 源字段:wms_co_id
    • 目标字段:stock_id
      _findCollection find id from 07c0fe43-86f2-30da-9fe5-d7459ecb961d where number={wms_co_id}-1

    c. 数量(qty)

    • 源字段:items.qty
    • 目标字段:qty

    d. 单位(unit_id)

    • 源字段:items.sku_id
    • 目标字段:unit_id
      _findCollection find base_unit_id from b4a428a0-beb9-3d69-b96c-97c34a217550 where number={{items.sku_id}}

    e. 含税单价(tax_price)

    • 源字段:order_type, items.sale_price
    • 目标字段:tax_price
      _function CASE '{order_type}' WHEN '换货订单' THEN 0 WHEN '补发订单' THEN 0 ELSE '{{items.sale_price}}' END

    f. 是否赠品(is_free)

    • 源字段:items.is_gift
    • 目标字段:is_free
      _function CASE '{{items.is_gift}}' WHEN '1' THEN 'true' ELSE 'false' END

    g. 金额(amount)

    • 源字段:items.sale_amount
    • 目标字段:amount
  8. 费用明细分录(cus_bear_fee_entry)

    a. 客户承担金额(cus_bear_amount)

    • 源字段: order_type, freight
      _function CASE '{order_type}' WHEN '换货订单' THEN 0 WHEN '补发订单' THEN 0 ELSE '{freight}' END

    b. 备注(comment) 固定值: 客户承担运费

    c. 收入名称ID(income_name_id) 固定值: 1

实际请求示例

基于上述映射和转换逻辑,构建实际请求示例如下:

{
    "bill_date": "2023-10-01",
    "bill_no": "O123456789",
    "customer_id": "_findCollection find id from 6f83c928-6667-36fa-a154-9bd0ab2b9d4b where number=SHOP123",
    "bill_dis_amount": "_function CASE '普通订单' WHEN '换货订单' THEN '0.0' WHEN '补发订单' THEN '0' ELSE '100' END",
    "operation_key": "audit",
    "remark": "这是一个测试备注",
    "material_entity": [
        {
            "material_number": "SKU12345",
            "stock_id": "_findCollection find id from 07c0fe43-86f2-30da-9fe5-d7459ecb961d where number=WMS001",
            "qty": "10",
            "unit_id": "_findCollection find base_unit_id from b4a428a0-beb9-3d69-b96c-97c34a217550 where number=SKU12345",
            "tax_price": "_function CASE '普通订单' WHEN '换货订单' THEN 0 WHEN '补发订单' THEN 0 ELSE '50' END",
            "is_free": "_function CASE '1' WHEN '1' THEN 'true' ELSE 'false' END",
            "amount": "500"
        }
    ],
    "cus_bear_fee_entry": [
        {
            "cus_bear_amount": "_function CASE '普通订单' WHEN '换货订单' THEN 0 WHEN '补发订单' THEN 0 ELSE '20' END",
            "comment": "客户承担运费",
            "income_name_id": "1"
        }
    ]
}

通过上述配置和示例,我们可以将聚水潭销售出库单的数据成功转换并写入金蝶云星辰V2API接口,实现系统间的数据无缝对接。 如何开发金蝶云星空API接口

更多系统对接方案