使用轻易云实现金蝶云星空数据的ETL转换与写入

  • 轻易云集成顾问-杨嫦

旺店通·企业奇门数据集成到金蝶云星空:销售出库单对接案例分享

有效的系统集成对于业务流程自动化至关重要。在本次技术案例中,我们将详细探讨如何通过轻易云平台实现旺店通·企业奇门中的销售出库单(API接口:wdt.stockout.order.query.trade)与金蝶云星空的数据对接(API接口:batchSave)。我们不仅会展示整个数据处理过程,包括实时监控和日志记录,还会深入解析分页限流、数据格式差异处理及异常重试机制,以确保高效可靠的数据传输。

数据获取与分页管理

在实际操作过程中,首先要解决的是从旺店通·企业奇门接口定时抓取销售出库单数据的问题。这涉及调用wdt.stockout.order.query.trade API,并结合分页策略来有效地管理和限制每次请求的数据量。为了避免超时或性能瓶颈,我们采用了一种智能调度机制,可以动态调整页面大小并控制请求频率,即使在高负载情况下,也能保证系统稳定运行。

数据转换与格式适配

不同系统之间通常存在数据格式不一致的情况,这一点在旺店通·企业奇门和金蝶云星空之间尤为明显。在这个项目中,我们设计了一套灵活的映射规则,通过脚本进行定制化转换,以适应两个平台间的数据标准。例如,将数字类型转变为字符串类型,或者日期格式从YYYY-MM-DD HH:mm:ss调整为YYYY/MM/DD等。这些细致入微的转换配置大大提升了数据写入成功率,同时确保了信息准确无误。

高效批量写入及错误重试机制

针对大量数据需要快速写入到金蝶云星空这一挑战,我们采用了其提供的batchSave API进行批量操作,避免逐条插入带来的性能问题。此外,为提高整体流程的鲁棒性,每个写入步骤都包含详细的事务控制逻辑。一旦出现异常,无论是网络故障还是目标服务器响应慢,都能触发自动重试机制,从而极大提高了任务完成率。

实时监控与透明可视

借助轻易云平台强大的实时监控功能,我们可以全程跟踪每一笔销售出库单从获取、转换到最终写入的状态,不仅提升了运维效率,也有助于及时发现和解决潜在问题。同时,通过详尽日志记录,实现了对所有操作步骤的透明审计,有效地支持后续分析与优化工作。 如何对接钉钉API接口

调用源系统旺店通·企业奇门接口wdt.stockout.order.query.trade获取并加工数据

在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口wdt.stockout.order.query.trade来获取并加工销售出库单数据。

接口概述

wdt.stockout.order.query.trade接口用于查询销售出库单信息。该接口采用POST请求方式,支持增量获取数据,并且可以根据多种条件进行筛选。以下是元数据配置的关键字段及其作用:

  • start_timeend_time:用于增量获取数据,分别表示开始时间和结束时间。
  • status:用于筛选订单状态,如已取消、已审核、已发货等。
  • src_order_nosrc_tid:分别表示系统订单编号和原始单号,用于精确查询特定订单。
  • stockout_no:出库单号。
  • shop_nowarehouse_no:分别表示店铺编号和仓库编号,用于区分不同店铺和仓库的数据。

请求参数配置

在实际操作中,我们需要配置请求参数以确保能够正确调用接口并获取所需数据。以下是具体的请求参数配置示例:

{
  "start_time": "{{LAST_SYNC_TIME|datetime}}",
  "end_time": "{{CURRENT_TIME|datetime}}",
  "status": "95,105,110",
  "page_size": "{PAGINATION_PAGE_SIZE}",
  "page_no": "{PAGINATION_START_PAGE}"
}
  • start_timeend_time 使用模板变量分别表示上次同步时间和当前时间,确保每次调用都是增量获取。
  • status 设置为"95,105,110",表示只获取已发货、部分打款和已完成的订单。
  • page_sizepage_no 用于分页处理,确保每次请求的数据量可控。

数据清洗与转换

在获取到原始数据后,需要对其进行清洗与转换,以便后续处理和写入目标系统。以下是常见的数据清洗与转换步骤:

  1. 字段映射与重命名

    • 将原始字段映射到目标系统所需的字段。例如,将order_no映射为目标系统中的订单编号字段。
  2. 数据格式转换

    • 将日期时间格式统一转换为目标系统要求的格式。例如,将"yyyy-MM-dd HH:mm:ss"格式转换为"yyyy/MM/dd HH:mm:ss"。
  3. 异常数据处理

    • 对缺失值或异常值进行处理,例如填充默认值或丢弃异常记录。

自动填充响应

轻易云平台提供了自动填充响应功能,可以根据预定义的规则自动解析并填充响应数据。这一功能极大简化了开发工作,提高了效率。在元数据配置中,我们可以看到autoFillResponse: true,这意味着平台会自动处理响应数据,无需手动解析。

实际案例

假设我们需要从旺店通系统中获取2023年10月1日至2023年10月31日期间所有已发货、部分打款和已完成的销售出库单,并将其导入金蝶系统。具体步骤如下:

  1. 配置请求参数:

    {
     "start_time": "2023-10-01 00:00:00",
     "end_time": "2023-10-31 23:59:59",
     "status": "95,105,110",
     "page_size": "50",
     "page_no": "0"
    }
  2. 调用接口并获取原始数据:

    POST /api/wdt.stockout.order.query.trade
    {
     ...
    }
  3. 对原始数据进行清洗与转换:

    • 映射字段:将order_no映射为金蝶系统中的订单编号。
    • 转换日期格式:将日期时间格式从"yyyy-MM-dd HH:mm:ss"转换为"yyyy/MM/dd HH:mm:ss"。
  4. 将清洗后的数据写入金蝶系统。

通过以上步骤,我们实现了从旺店通到金蝶系统的数据无缝对接,并确保了每个环节的数据准确性和一致性。这一过程展示了轻易云平台在异构系统集成中的强大能力,为企业提供了高效可靠的数据解决方案。 钉钉与MES系统接口开发配置

使用轻易云数据集成平台实现金蝶云星空API接口的ETL转换与写入

在数据集成的生命周期中,将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,并转为目标平台金蝶云星空API接口所能够接收的格式,是一个至关重要的步骤。本文将详细探讨如何利用轻易云数据集成平台完成这一过程。

元数据配置解析

在进行ETL转换时,首先需要理解和配置元数据。以下是针对金蝶云星空API接口的元数据配置解析:

{
  "api": "batchSave",
  "effect": "EXECUTE",
  "method": "POST",
  "operation": {
    "rowsKey": "array",
    "rows": 1,
    "method": "batchArraySave"
  },
  "idCheck": true,
  "request": [
    {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"XSCKD01_SYS"},
    {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{order_no}"},
    {"field":"FDate","label":"日期","type":"string","describe":"日期","value":"{consign_time}"},
    {"field":"FSaleOrgId","label":"销售组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100"},
    {"field":"FCustomerID","label":"客户","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"3.001"},
    {"field":"FSaleDeptID","label":"销售部门","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"}},
    {"field":"FCorrespondOrgId","label":"对应组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100"},
    {"field":"FSalesManID","label":"销售员","type":"","describe":"","parser":{"name":"","params":""},"value":""},
    {"field":"","label":"","type":"","describe":"","parser":{"name":"","params":""},"value":""},
    ...
  ],
  ...
}

配置解析与字段映射

  1. 基本字段配置

    • FBillTypeID:单据类型,固定值为XSCKD01_SYS
    • FBillNo:单据编号,对应源平台的订单号 {order_no}
    • FDate:日期,对应源平台的发货时间 {consign_time}
  2. 组织与客户信息

    • FSaleOrgIdFCorrespondOrgIdFStockOrgId 等字段均需使用 ConvertObjectParser 将值转换为金蝶系统识别的编码格式。
    • FCustomerID:客户信息,固定值为 3.001
  3. 明细信息: 明细信息通过数组形式传递,每个字段需要详细映射。例如:

    • FMaterialID:物料编码,对应源平台的规格编号 {detail_list.spec_no}
    • FRealQty:实发数量,对应源平台的商品数量 {details_list.goods_count}
    • FTaxPrice:含税单价,通过函数计算得出 {details_list.paid}/{details_list.goods_count}
  4. 特殊字段处理: 某些字段如 FLot(批号)需要根据条件进行处理。例如:

    {
     "field": "FLot",
     "label": "批号",
     "type": "string",
     "value": "_function case '_findCollection find FIsBatchManage from ... where FNumber={{details_list.goods_no}} _endFind' WHEN 'true' THEN '0' ELSE '' END",
     "parser": {
       "name": "ConvertObjectParser",
       "params": "FNumber"
     }
    }

数据转换与写入

在完成元数据配置后,需要将源平台的数据按照上述配置进行转换,并通过API接口写入到金蝶云星空系统中。具体步骤如下:

  1. 提取数据:从源平台提取原始数据,确保所有必要字段均已获取。
  2. 数据清洗:对提取的数据进行清洗和预处理,确保符合目标系统要求。
  3. 数据转换:根据元数据配置,将清洗后的数据进行格式转换,特别是涉及到复杂逻辑和条件判断时,需要确保转换准确无误。
  4. API请求构建:根据配置构建HTTP POST请求,包含所有必要的字段和参数。
  5. 发送请求并处理响应:将构建好的请求发送至金蝶云星空API接口,并处理返回结果,确保操作成功。

示例代码

以下是一个简化示例,用于展示如何通过Python脚本实现上述过程:

import requests
import json

# 构建请求头
headers = {
    'Content-Type': 'application/json'
}

# 构建请求体
payload = {
    # 基本信息
    'FBillTypeID': {'FNumber': 'XSCKD01_SYS'},
    'FBillNo': order_no,
    'FDate': consign_time,

    # 组织与客户信息
    'FSaleOrgId': {'FNumber': '100'},
    'FCustomerID': {'FNumber': '3.001'},

    # 明细信息
    'FEntity': [
        {
            'FMaterialID': {'FNumber': detail['spec_no']},
            'FRealQty': detail['goods_count'],
            'FTaxPrice': detail['paid'] / detail['goods_count'],
            # 更多明细字段...
        } for detail in details_list
    ],

    # 其他配置信息...
}

# 将请求体转为JSON格式
data = json.dumps(payload)

# 发送POST请求
response = requests.post('https://api.kingdee.com/batchSave', headers=headers, data=data)

# 打印响应结果
print(response.json())

通过上述步骤和示例代码,可以高效地将源平台的数据转换并写入到金蝶云星空系统中,实现跨系统的数据集成。 用友与SCM系统接口开发配置

更多系统对接方案