ETL转换与数据写入:金蝶调拨单至旺店通案例分析

  • 轻易云集成顾问-贺强

金蝶云星空数据集成到旺店通·企业奇门:调拨单同步方案

在实际的系统集成项目中,数据的准确传递和实时更新是确保业务顺畅运行的关键环节。本文将分享一个具体案例,即如何通过轻易云数据集成平台,将金蝶云星空中的调拨单数据高效、安全地同步到旺店通·企业奇门对应的其他出库单(退货仓)。

调拨单同步需求分析

本次集成任务涉及两个主要API接口:

  1. 金蝶云星空:获取调拨单数据使用的是 executeBillQuery 接口。
  2. 旺店通·企业奇门:写入数据信息至 wdt.stockout.order.push 接口。

为了确保整个流程的数据完整性和一致性,我们需要实现以下几个目标:

  • 高吞吐量的数据写入能力,快速将大量调拨单信息导入旺店通系统。
  • 集中的监控及告警机制,实时跟踪每个步骤的数据处理状态,以便立即应对潜在问题。
  • 支持自定义的数据转换逻辑,使得两套系统之间的数据格式差异能够自动调整。

数据抓取与转换过程

对于从金蝶云星空提取调拨单这一环节,我们采用了定时可靠抓取机制,通过设定合理的时间间隔调用 executeBillQuery API,并结合分页策略,以确保不遗漏任何一张有效订单。同时,为了应对高并发场景,需要特别关注接口限流的问题,通过配置限流器来保障系统稳定运行。

数据质量与异常管理

在进行大批量数据写入前,通过预设的校验规则,对金蝶云星空返回的数据进行质量检查。针对可能出现的不合规或者异常数据,实现提前捕获并记录错误日志。此外,当写入过程中若发生网络中断或API响应超时等意外情况时,启用了重试机制以最大程度保证最终的一致性。

这是本次技术案例整理中的首要阶段内容。在接下来的章节中,将详细解读如何利用可视化工具创建直观、易于管理的数据流,以及各项参数配置细节,从而完成整个从金蝶云星空到旺店通·企业奇门的数据集成任务。 钉钉与ERP系统接口开发配置

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

在数据集成的生命周期中,第一步是调用源系统接口以获取原始数据。本文将详细介绍如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery接口,并对获取的数据进行初步加工。

接口配置与调用

首先,我们需要配置并调用金蝶云星空的executeBillQuery接口。该接口主要用于查询单据信息,支持POST请求。以下是关键的元数据配置:

{
  "api": "executeBillQuery",
  "effect": "QUERY",
  "method": "POST",
  "number": "FBillNo",
  "id": "FBillEntry_FEntryID",
  "idCheck": true,
  ...
}

在这个配置中,api字段指定了要调用的接口名称,method字段定义了请求方法为POST,numberid字段分别表示单据编号和分录ID。

请求参数设置

为了准确地从金蝶云星空获取所需的数据,我们需要设置请求参数。这些参数包括单据ID、单据编号、日期等。以下是部分关键字段的配置:

{
  "request": [
    {"field": "FBillEntry_FEntryID", "label": "FBillEntry_FEntryID", "type": "string", "value": "FBillEntry_FEntryID"},
    {"field": "FID", "label": "FID", "type": "string", "value": "FID"},
    {"field": "FBillNo", "label": "FBillNo", "type": "string", "value":"FBillNo"},
    {"field": "FDocumentStatus", "label":"FDocumentStatus","type":"string","value":"FDocumentStatus"},
    ...
  ],
  ...
}

这些字段定义了我们希望从金蝶云星空获取的数据项。例如,FBillNo表示单据编号,FDocumentStatus表示单据状态。

数据过滤与分页

为了提高查询效率,我们可以使用过滤条件和分页参数。以下是相关配置示例:

{
  ...
  "otherRequest":[
    {"field":"Limit","label":"Limit","type":"string","describe":"金蝶的查询分页参数","value":"{PAGINATION_PAGE_SIZE}"},
    {"field":"FieldKeys","label":"FieldKeys","type":"array","describe":"金蝶分录主键ID格式:FPOOrderEntry_FEntryId,其它格式 FPurchaseOrgId.FNumber","value":"{MAIN_REQUEST}"},
    {"field":"TopRowCount","label":"TopRowCount","type":"int","describe":"金蝶的查询分页参数"},
    {"field":"FilterString","label":"FilterString","type":"string","describe":"示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=","value":"FApproveDate>='{{LAST_SYNC_TIME|datetime}}' and FStockOrgId.FNumber='100' and FSrcStockId.FNumber ='01.09'"},
    {"field":"FormId","label":"FormId","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"STK_TransferDirect"},
    {"field":"StartRow","label":"StartRow","type":"string","describe":"金蝶的查询分页参数","value":"{PAGINATION_START_ROW}"}
  ],
  ...
}
  • FilterString: 用于设置过滤条件,例如根据日期和组织编号筛选数据。
  • Limit, TopRowCount, StartRow: 用于分页控制,以避免一次性返回过多数据。

数据加工与清洗

在获取到原始数据后,需要对其进行初步加工和清洗,以便后续处理。以下是一些常见的数据加工操作:

  1. 字段映射:将原始数据中的字段映射到目标系统所需的字段。例如,将金蝶中的FMaterialId_FNumber映射到目标系统中的物料编号。
  2. 数据转换:根据业务需求,对某些字段进行格式转换或单位换算。例如,将日期格式从YYYY-MM-DD转换为DD/MM/YYYY。
  3. 数据校验:对关键字段进行校验,如检查单据状态是否为已审核状态。

实际案例

假设我们需要同步调拨单到旺店通其他出库单(退货仓),首先通过调用金蝶云星空接口获取调拨单信息,然后对其进行必要的数据加工,再写入到目标系统。以下是一个简化的流程示例:

  1. 调用接口

    {
     // 调用executeBillQuery接口,传入必要的请求参数
     // 获取调拨单信息
    }
  2. 数据加工

    {
     // 对获取的数据进行字段映射、格式转换和校验
     // 将结果存储在临时变量中以便后续处理
    }
  3. 写入目标系统

    {
     // 将加工后的数据写入旺店通其他出库单(退货仓)
    }

通过以上步骤,我们可以高效地实现不同系统间的数据集成,并确保每个环节都透明可控。 金蝶与SCM系统接口开发配置

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

在数据集成的生命周期中,ETL(Extract, Transform, Load)转换是关键步骤之一。本文将详细探讨如何利用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,并转为目标平台——旺店通·企业奇门API接口所能够接收的格式,最终写入目标平台。

API接口配置及元数据解析

我们需要将调拨单同步到旺店通其他出库单(退货仓),使用的API接口为wdt.stockout.order.push。该接口采用POST方法提交数据,并且需要进行ID校验。以下是元数据配置的具体内容:

{
  "api": "wdt.stockout.order.push",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {
      "field": "outer_no",
      "label": "外部单号",
      "type": "string",
      "value": "{FBillNo}"
    },
    {
      "field": "warehouse_no",
      "label": "仓库编号",
      "type": "string",
      "value": "006"
    },
    {
      "field": "remark",
      "label": "备注",
      "type": "string",
      "value": "金蝶调拨单"
    },
    {
      "field": "is_check",
      "label": "是否审核",
      "type": "string",
      "value": "1"
    },
    {
      "field": "detail_list",
      ...

数据请求与清洗

在进行ETL转换之前,首先需要从源系统请求并清洗数据。假设我们已经从源系统获取了调拨单数据,包括单据编号(FBillNo)、物料编码(FMaterialId_FNumber)、数量(FQty)等字段。

数据转换

接下来,我们将这些源数据按照目标平台API接口的要求进行转换。具体步骤如下:

  1. 映射字段:将源系统中的字段映射到目标系统所需的字段。例如,源系统中的FBillNo对应目标系统中的outer_no
  2. 设置固定值:某些字段在目标系统中需要固定值,如仓库编号warehouse_no设置为"006",备注remark设置为"金蝶调拨单"。
  3. 处理数组结构:对于复杂的数据结构,如货品明细节点,需要将其转换为目标系统所需的数组格式。

以下是一个示例代码片段,用于将源数据转换为目标格式:

{
  ...
  {
    field: 'detail_list',
    label: '货品明细节点{FBillEntry_FEntryID}',
    type: 'array',
    value: 'detail_listss',
    children: [
      { field: 'spec_no', label: '商家编码', type: 'string', value: '{{detail_listss.FMaterialId_FNumber}}' },
      { field: 'num', label: '出库数量', type: 'string', value: '{{detail_listss.FQty}}' },
      { field: 'price', label: '原价', type: 'string' },
      { field: 'batch_no', label: '批次', type: 'string', value: '{{details_listss.FLot_FNumber}}' }
    ]
  }
}

数据写入

完成数据转换后,即可通过调用API接口将数据写入到旺店通·企业奇门。以下是一个示例请求体:

{
  outer_no: sourceData.FBillNo,
  warehouse_no: '006',
  remark: '金蝶调拨单',
  is_check: '1',
  detail_list: sourceData.detailList.map(item => ({
    spec_no: item.FMaterialId_FNumber,
    num: item.FQty,
    price: item.price,
    batch_no: item.FLot_FNumber
  }))
}

通过POST方法,将上述请求体发送至wdt.stockout.order.push接口,实现数据的最终写入。

操作配置与延迟处理

为了确保操作的一致性和可靠性,我们还可以配置一些操作参数,例如合并方法、延迟时间等:

{
  operation:{
    method:"merge",
    field:"FBillNo",
    bodyName:"detail_listss",
    bodySum:["FQty"],
    header:["FBillNo","FSrcStockId_FNumber"],
    body:["FMaterialId_FNumber","FQty","FDestStockLocId_FNumber1","FDestStockLocId_FNumber2","FDestStockLocId_FNumber3","FDestStockLocId_FNumber4","FLot_FNumber"]
  },
  delay:140
}

以上配置确保了在特定条件下的数据合并和延迟处理,以提高数据一致性和传输效率。

通过以上步骤,我们成功地实现了从源平台到旺店通·企业奇门API接口的数据ETL转换和写入。这一过程不仅保障了数据的准确性和完整性,还提升了业务流程的自动化程度。 电商OMS与ERP系统接口开发配置

更多系统对接方案