ETL转换与数据加载:调拨单同步至旺店通企业奇门

  • 轻易云集成顾问-胡秀丛

案例分享:金蝶云星空调拨单同步到旺店通其他出库单(中专仓默认货位)

在本案例中,我们将探讨如何利用轻易云数据集成平台,将金蝶云星空系统的调拨单数据高效、可靠地同步至旺店通·企业奇门的其他出库单模块,并将默认为中专仓的货位进行管理。该方案涉及多项技术要点,包括API接口调用、数据质量监控和异常处理,旨在确保数据无缝对接、高效运行。

首先,通过金蝶云星空提供的API接口executeBillQuery,定时且可靠地抓取所需的数据。此过程不仅要求高吞吐量的数据写入能力以支持大量数据快速传输,还需要应对分页和限流带来的挑战。因此,我们制定了详细的数据获取策略,以确保不会出现漏单现象。

为了处理两大系统之间的数据格式差异,我们使用了自定义的数据转换逻辑,环节包括字段映射和数据类型转换等,使得最终输出符合旺店通·企业奇门API规范。对于这一部分,对接所使用的API接口是wdt.stockout.order.push,可以实现批量写入操作,以提高整体效率,同时借助实时监控与告警机制来跟踪任务状态及性能表现。

另外,在实际应用过程中,不可忽视的是异常处理与错误重试机制。例如,当网络不稳定或外部依赖服务不可用时,保证集成任务能够自动检测并进行有效重试,从而避免资源浪费和重复操作。

通过这些措施,不仅成功实现了从金蝶云星空到旺店通·企业奇门之间的顺利对接,同时也提升了整个业务流程透明度和灵活性,为进一步优化资源配置打下坚实基础。在随后的内容中,将具体展示每一个实施步骤以及代码示例。 泛微OA与ERP系统接口开发配置

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

在数据集成的生命周期中,第一步是从源系统获取数据,并对其进行初步加工。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery接口来实现这一过程。

接口配置与调用

金蝶云星空的executeBillQuery接口主要用于查询业务单据。我们需要通过POST请求方式调用该接口,并传递必要的参数以获取所需的数据。以下是元数据配置中的关键字段及其作用:

  • api: "executeBillQuery" - 指定要调用的API。
  • method: "POST" - 指定请求方法为POST。
  • number: "FBillNo" - 单据编号字段。
  • id: "FBillEntry_FEntryID" - 分录主键ID字段。
  • idCheck: true - 启用ID检查。

请求参数详解

请求参数分为两部分:requestotherRequest。其中,request部分包含了具体的业务字段,而otherRequest则包含了一些控制查询行为的参数。

request 部分

以下是一些关键字段及其描述:

  • FBillEntry_FEntryID: 分录主键ID。
  • FID: 单据内码。
  • FBillNo: 单据编号。
  • FDocumentStatus: 单据状态。
  • FStockOrgId_FNumber: 库存组织编码。
  • FDate: 日期。
  • FBillTypeID_FNumber: 单据类型编码。

这些字段在实际调用时会被映射到相应的业务数据中,以确保查询结果的准确性和完整性。

otherRequest 部分

控制查询行为的参数包括:

  • Limit: 分页参数,指定每页返回的数据量。
  • FieldKeys: 查询返回的字段列表,例如:"FPOOrderEntry_FEntryId, FPurchaseOrgId.FNumber"
  • TopRowCount: 查询前N条记录,用于限制返回结果数量。
  • FilterString: 过滤条件字符串,例如:"FApproveDate>='{{LAST_SYNC_TIME|datetime}}' and FStockOrgId.FNumber='100'",用于精确筛选数据。
  • FormId: 表单ID,例如:"STK_TransferDirect",必须填写以指定查询的业务表单类型。
  • StartRow: 分页起始行,用于控制分页查询。

实际应用案例

假设我们需要同步调拨单到旺店通其他出库单(中专仓默认货位),可以通过以下步骤实现:

  1. 配置请求参数:

    {
       "api": "executeBillQuery",
       "method": "POST",
       "number": "FBillNo",
       "id": "FBillEntry_FEntryID",
       "idCheck": true,
       "request": [
           {"field": "FBillEntry_FEntryID", "value": "FBillEntry_FEntryID"},
           {"field": "FID", "value": "FID"},
           {"field": "FBillNo", "value": "FBillNo"},
           {"field": "FDocumentStatus", "value": "FDocumentStatus"},
           {"field": "FStockOrgId_FNumber", "value": "FStockOrgId.FNumber"},
           {"field": "FDate", "value": "FDate"},
           {"field": "FBillTypeID_FNumber", "value": "FBillTypeID.FNumber"}
       ],
       ...
    }
  2. 配置过滤条件:

    {
       ...
       "otherRequest": [
           {"field": "Limit", "value": "{PAGINATION_PAGE_SIZE}"},
           {"field": "FieldKeys", 
            "value":"FBillEntry_FEntryID, FBillNo, FDocumentStatus, FStockOrgId.FNumber, FDate, FBillTypeID.FNumber"},
           {"field":"FilterString","value":"FApproveDate>='{{LAST_SYNC_TIME|datetime}}' and  FStockOrgId.FNumber='100' and FSrcStockId.FNumber ='01.08' and (FDestStockId.FNumber ='01.06' or FDestStockId.FNumber ='CK001')"},
           {"field":"FormId","value":"STK_TransferDirect"}
       ]
    }
  3. 发起API请求并处理响应:

    import requests
    import json
    
    url = 'https://api.kingdee.com/executeBillQuery'
    headers = {'Content-Type': 'application/json'}
    
    payload = {
       # 填入上述配置
    }
    
    response = requests.post(url, headers=headers, data=json.dumps(payload))
    
    if response.status_code == 200:
       data = response.json()
       # 对返回的数据进行处理
       process_data(data)
    else:
       print(f"Error {response.status_code}: {response.text}")

通过上述步骤,我们可以成功调用金蝶云星空接口获取调拨单数据,并对其进行初步加工,为后续的数据转换与写入做好准备。这一过程不仅提高了数据集成的效率,也确保了数据的一致性和准确性。 泛微OA与ERP系统接口开发配置

将调拨单同步到旺店通其他出库单的ETL转换

在数据集成生命周期的第二步中,我们需要将已经从源平台集成的数据进行ETL(提取、转换、加载)处理,以适配目标平台——旺店通·企业奇门API接口的格式。本文将详细探讨如何通过轻易云数据集成平台完成这一过程。

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": "005"
    },
    {
      "field": "remark",
      "label": "备注",
      "type": "string",
      "value": "金蝶调拨单"
    },
    {
      "field": "is_check",
      "label": "是否审核",
      "type": "string",
      "value": "1"
    },
    {
      "field": "detail_list",
      ...

数据提取与转换

在数据提取阶段,我们从源平台获取调拨单的数据,这些数据通常包括单据编号、仓库编号、备注信息、审核状态以及货品明细等。在轻易云平台上,这些字段通过元数据配置中的request部分进行定义和映射。

例如,外部单号(outer_no)对应的是源平台的FBillNo字段,仓库编号(warehouse_no)固定为"005",备注(remark)固定为"金蝶调拨单",审核状态(is_check)固定为"1"。

货品明细部分则是一个数组结构,包含多个字段,如商家编码(spec_no)、出库数量(num)、批次(batch_no)等。这些字段通过子节点进行定义和映射,例如:

{
  ...
  {
    ...
    {
      ...
        {
          ...
          {
            ...
            {
              ...
              {
                ...
                {
                  ...
                  {
                    ...
                    {
                      ...
                      {
                        ...
                        {
                          ...
                          {
                            ...
                            {
                              ...
                              {
                                ...
                                {
                                  field: 'spec_no',
                                  label: '商家编码',
                                  type: 'string',
                                  value: '{{detail_listss.FMaterialId_FNumber}}'
                                },
                                field: 'num',
                                label: '出库数量',
                                type: 'string',
                                value: '{{detail_listss.FQty}}'
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }

数据加载

在数据转换完成后,我们需要将这些数据写入目标平台——旺店通·企业奇门API接口。这个过程同样通过轻易云平台实现,具体操作包括:

  1. 合并操作:根据元数据配置中的操作部分,我们需要对某些字段进行合并处理。例如,通过合并操作将多个货品明细节点合并到一个数组中。
  2. 延迟处理:有时为了确保数据的一致性和完整性,我们可能需要设置一定的延迟时间。在本例中,延迟时间设置为140秒。

以下是元数据配置中的操作部分示例:

{
  ...
  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
}

实际案例应用

在实际应用中,通过轻易云平台,我们可以轻松地将来自不同源系统的数据提取、转换并加载到目标系统中。以调拨单同步为例,通过上述配置和操作步骤,可以确保调拨单的数据准确无误地传输到旺店通其他出库单中,实现不同系统间的数据无缝对接。

以上就是通过轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,并最终写入目标平台旺店通·企业奇门API接口的全过程。希望这些技术细节能够帮助您更好地理解和应用这一过程。 用友与CRM系统接口开发配置

更多系统对接方案