ETL转换与旺店通数据写入的集成实现

  • 轻易云集成顾问-杨嫦

金蝶云星空销售出库数据到旺店通·企业奇门的高效集成方案

在本案例中,我们将探讨如何通过技术手段实现金蝶云星空与旺店通·企业奇门两大系统的数据对接。利用轻易云数据集成平台,我们成功创建并运行了名为“星空销售出库(欧派)-旺店通原始订单_copy”的解决方案,极大地提升了数据处理和业务透明度。

首先,该集成方案有效利用了金蝶云星空API的executeBillQuery来抓取实时销售出库数据。这保证了源端数据能够准确无误地被获取。而在目标端,通过使用旺店通·企业奇门提供的wdt.trade.push API接口,实现批量、高速的数据写入。

为了确保整个集成过程中的稳定性及效率,多个技术要点得到了精细设计与优化:

  1. 分页和限流处理:由于API调用频率及单次获取记录数有限制,我们通过分页方式分步获取全量数据,并采用限流机制防止过多请求导致接口性能下降。
  2. 自定义转换逻辑:考虑到两个系统之间可能存在的数据格式差异,通过定制化的映射规则,对抓取到的数据进行必要的字段转换与重组,使之符合目标系统要求。
  3. 异常检测与重试机制:支持对接过程中出现异常情况时进行自动检测,并触发重试策略,如网络波动或接口响应超时等问题,以提高任务执行成功率。

同时,本方案融合了一系列优异特性,例如高吞吐量能力使得我们的订单信息能快速写入目标系统;集中监控和告警功能则保证我们可以实时掌握每一个操作环节,大幅度减少意外事件发生。此外,针对关键业务场景还加强了日志记录,以便于问题追溯和分析优化。

这样的配置不仅满足了当前业务需求,更为未来可能扩展打下坚实基础。在后续内容中,将进一步详细说明具体实施步骤、参数配置以及实际运行效果。 用友与WMS系统接口开发配置

调用金蝶云星空接口executeBillQuery获取并加工数据

在数据集成过程中,调用源系统的API接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery接口,获取并加工销售出库单的数据。

接口调用配置

首先,我们需要配置接口调用的元数据。以下是关键的元数据配置项:

  • api: executeBillQuery
  • method: POST
  • number: FBillNo
  • id: FEntity_FENTRYID
  • pagination: {"pageSize":100}
  • beatFlat: ["FEntry"]
  • idCheck: true

这些配置项定义了接口的基本信息和分页参数。executeBillQuery是一个POST请求,分页大小为100条记录,并且需要对返回的数据进行扁平化处理。

请求参数配置

在请求参数中,我们需要根据业务需求选择合适的字段。以下是一些关键字段及其描述:

[
  {"field":"FBillTypeID_FNumber","label":"单据类型","type":"string","describe":"单据类型","value":"FBillTypeID.FNumber"},
  {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"FBillNo"},
  {"field":"FDate","label":"日期","type":"string","describe":"日期","value":"FDate"},
  {"field":"FSaleOrgId_FNumber","label":"销售组织","type":"string","describe":"组织","value":"FSaleOrgId.FNumber"},
  {"field":"FCustomerID_FNumber","label":"客户编码","type":"string","describe":"基础资料","value":"FCustomerID.FNumber"},
  {"field":"FCustomerID_FName","label":"客户名称","type":"string","describe":"基础资料","value":"FCustomerID.FName"}
]

这些字段涵盖了单据类型、单据编号、日期、销售组织、客户编码和客户名称等信息。在实际应用中,可以根据具体需求添加或删除字段。

分页参数

为了处理大量数据,我们需要设置分页参数:

[
  {"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"},
  {"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"},
  {"field": "TopRowCount", "label": "返回总行数", "type": "int", "describe": "金蝶的查询分页参数"}
]

这些参数确保每次请求都能正确地获取到指定范围内的数据,并支持多次请求以完成全量数据的提取。

过滤条件

为了提高查询效率,可以设置过滤条件。例如,只查询最近同步时间之后且状态为“已审核”的记录:

[
  {
    "field": "FilterString",
    "label": "过滤条件",
    "type": "string",
    "describe": "示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=",
    "value": 
      "FCreateDate>='{{LAST_SYNC_TIME|datetime}}' and FDocumentStatus='A' and F_VTRK_Assistant <> '' and F_VTRK_Text11 <> '' and F_VTRK_Text12 <> '' and F_VTRK_Text13 <> '' and F_VTRK_Text10 =''"
  }
]

这个过滤条件确保只提取符合特定条件的数据,从而减少不必要的数据传输,提高效率。

字段键集合

最后,需要定义需查询的字段键集合:

[
  {
    "field": 
      {
        name: 'ArrayToString',
        params: ','
      },
    label: '需查询的字段key集合',
    type: 'array',
    describe: '金蝶分录主键ID格式:FPOOrderEntry_FEntryId,其它格式 FPurchaseOrgId.FNumber'
  }
]

该配置项将所有需查询的字段转换为字符串,以便在API请求中使用。

数据处理与写入

在获取到数据后,需要对其进行清洗和转换,然后写入目标系统。这一步通常包括以下操作:

  1. 数据清洗:去除无效或重复的数据。
  2. 数据转换:将源系统的数据格式转换为目标系统所需的格式。
  3. 数据写入:将处理后的数据写入目标系统,如数据库或另一个API接口。

通过上述步骤,我们可以高效地从金蝶云星空获取销售出库单的数据,并进行必要的加工处理,以满足业务需求。 泛微OA与ERP系统接口开发配置

轻易云数据集成平台生命周期第二步:ETL转换与写入旺店通·企业奇门API接口

在轻易云数据集成平台中,数据处理的第二步是将已经集成的源平台数据进行ETL(提取、转换、加载)转换,并最终写入目标平台。在本案例中,我们将探讨如何将星空销售出库(欧派)的原始订单数据转换为旺店通·企业奇门API接口所能接收的格式,并写入到目标平台。

数据提取与清洗

首先,我们从源系统中提取原始订单数据。假设我们已经完成了第一步的数据请求与清洗,这些数据现在已经被整合到一个统一的格式中,准备进行进一步的转换和写入操作。

数据转换

在数据转换阶段,我们需要根据旺店通·企业奇门API接口的要求,将提取的数据映射到相应的字段。这一步骤主要涉及字段名称的映射、数据格式的调整以及必要的数据合并操作。以下是详细的元数据配置:

{
  "api": "wdt.trade.push",
  "method": "POST",
  "operation": {
    "method": "merge",
    "field": "F_VTRK_Text,F_VTRK_Text1,F_VTRK_Text3,F_VTRK_Text2,F_VTRK_Text8,FMaterialID.FNumber,FEntity_FENTRYID",
    "bodyName": "details_list",
    "bodySum": ["FRealQty"],
    "header": ["FBillNo","FCustomerID_FName","FDate","FID","F_VTRK_Assistant"],
    "body": ["FEntry_FMaterialID_FNumber","bfn_id","FEntry_FRealQty","FTaxPrice","F_VTRK_Text11","F_VTRK_Text12","F_VTRK_Text13","F_VTRK_Text","F_VTRK_Text1","F_VTRK_Text2","F_VTRK_Text3","F_VTRK_Text6","F_VTRK_Text9","FEntry_FMaterialName","FAllAmount","FStockID_FNumber","FEntity_FENTRYID"]
  },
  "request": [
    {
      "field": "tid",
      "label": "原始单号",
      "type": "string",
      "describe": "指商城、官网等平台的订单编号,ERP称之为原始单号,同一个sid下通过本接口新增订单的tid保证唯一。",
      "value": "{{details_list.F_VTRK_Text}}-{{details_list.FEntity_FENTRYID}}_{FID}",
      "parent": "trade_list"
    },
    {
      "field": "trade_status",
      ...

在这个配置中,我们定义了如何将源系统中的字段映射到目标系统中的字段。例如:

  • tid(原始单号)由 {{details_list.F_VTRK_Text}}-{{details_list.FEntity_FENTRYID}}_{FID} 生成。
  • buyer_nick(客户网名)直接映射为 {FCustomerID_FName}
  • receiver_name(收件人)映射为 {{details_list.F_VTRK_Text1}}

通过这种方式,我们确保每个字段都能正确地映射到目标系统所需的位置。

数据加载

最后一步是将转换后的数据通过API接口写入到旺店通·企业奇门。我们使用HTTP POST方法调用 wdt.trade.push 接口,将转换后的JSON数据发送到目标系统。

{
  ...
  {
    "field":"order_list",
    ...
    {"field":"oid", ...},
    {"field":"num", ...},
    {"field":"price", ...},
    {"field":"status", ...},
    {"field":"refund_status", ...},
    {"field":"goods_id", ...},
    {"field":"spec_id", ...},
    {"field":"goods_no", ...},
    {"field":"spec_no", ...},
    {"field":"goods_name", ...}
  }
}

在这个过程中,确保所有必须字段都被正确填充,并且符合API接口文档中的要求。例如,子订单列表中的每个子订单需要包含 oid(子订单编号)、num(数量)、price(单价)等字段。

通过上述步骤,我们成功地将源平台的数据经过ETL转换后写入到了目标平台,实现了不同系统间的数据无缝对接。这不仅提高了业务流程的自动化程度,也确保了数据的一致性和准确性。 金蝶与外部系统打通接口

更多系统对接方案