使用轻易云进行ETL转换并推送数据至旺店通API的最佳实践

  • 轻易云集成顾问-李国敏

采购入库单对接:金蝶云星空—旺店通·企业奇门数据集成案例

本篇技术案例聚焦于如何实现将金蝶云星空的采购入库单数据高效、安全地集成到旺店通·企业奇门这一实际应用场景。

为了确保金蝶云星空的数据不会在传输过程中漏失,我们采用了定时可靠的抓取机制,调用金蝶云星空接口executeBillQuery,精确而批量地获取所需的数据。同时,通过处理分页和限流问题,实现了大规模数据的稳健采集。针对不同系统间的数据格式差异,本方案设计了一套定制化的数据映射配置,以满足旺店通·企业奇门平台特定需求,并利用其API:wdt.stockin.purchase.push进行快速写入。

面对实际运行中的潜在异常与错误重试机制,方案内置了完善的日志记录和实时监控功能,以保障整个数据处理过程清晰可追溯。因此,无论是初始配置还是后续维护,都达到了最高效透明、稳定可靠的效果。这不仅提升了业务流程自动化程度,也极大优化了操作效率。 如何开发钉钉API接口

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

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

接口配置与调用

首先,我们需要了解executeBillQuery接口的基本配置和调用方法。根据提供的元数据配置,以下是该接口的主要参数:

  • API名称: executeBillQuery
  • 请求方法: POST
  • 主要字段:
    • FInStockEntry_FEntryId: 入库单分录ID
    • FID: 实体主键
    • FBillNo: 单据编号
    • FDocumentStatus: 单据状态
    • FStockOrgId_FNumber: 收料组织编码
    • FDate: 入库日期
    • FBillTypeID_FNumber: 单据类型编码
    • 更多字段详见元数据配置...

请求参数构建

在实际调用中,我们需要根据业务需求构建请求参数。以下是一个示例请求参数构建过程:

{
    "FormId": "STK_InStock",
    "FieldKeys": [
        "FInStockEntry_FEntryId",
        "FID",
        "FBillNo",
        "FDocumentStatus",
        "FStockOrgId.FNumber",
        "FDate",
        "FBillTypeID.FNumber"
    ],
    "FilterString": "FDocumentStatus='C' and FStockId.FNumber='1.10' and FApproveDate>='{{LAST_SYNC_TIME|dateTime}}'",
    "Limit": "{PAGINATION_PAGE_SIZE}",
    "StartRow": "{PAGINATION_START_ROW}"
}

上述请求参数中,FormId指定了业务对象表单ID为STK_InStock,即采购入库单。FieldKeys定义了需要查询的字段集合,这些字段将作为返回结果的一部分。FilterString用于过滤条件,例如只查询状态为已审核且仓库编码为1.10的记录。

数据清洗与转换

获取到原始数据后,需要对其进行清洗和转换,以满足目标系统的数据格式要求。例如,我们可能需要将日期格式统一、字段名称映射等操作。

以下是一个简单的数据清洗示例:

def clean_data(raw_data):
    cleaned_data = []
    for record in raw_data:
        cleaned_record = {
            "entry_id": record["FInStockEntry_FEntryId"],
            "bill_no": record["FBillNo"],
            "status": record["FDocumentStatus"],
            "stock_org_code": record["FStockOrgId.FNumber"],
            "date": format_date(record["FDate"]),
            # 更多字段转换...
        }
        cleaned_data.append(cleaned_record)
    return cleaned_data

def format_date(date_str):
    # 假设日期格式为 YYYY-MM-DD,将其转换为目标系统所需格式
    return date_str.replace("-", "/")

数据写入目标系统

在完成数据清洗和转换后,下一步是将处理后的数据写入目标系统(如旺店通)。这一步通常涉及调用目标系统的API,将清洗后的数据逐条写入。

def write_to_target_system(cleaned_data):
    for record in cleaned_data:
        response = target_system_api.write(record)
        if response.status_code != 200:
            log_error(f"Failed to write record {record['bill_no']}: {response.text}")

# 示例API调用函数
def target_system_api.write(data):
    url = 'https://target-system-api.com/write'
    headers = {'Content-Type': 'application/json'}
    response = requests.post(url, json=data, headers=headers)
    return response

通过以上步骤,我们实现了从金蝶云星空获取采购入库单数据,并经过清洗和转换后写入目标系统的完整流程。这一过程不仅提高了数据处理效率,还确保了数据的一致性和准确性。 企业微信与ERP系统接口开发配置

使用轻易云数据集成平台进行ETL转换并写入旺店通·企业奇门API接口

在数据集成生命周期的第二阶段,我们需要将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,并最终写入目标平台——旺店通·企业奇门API接口。本文将详细探讨这一过程中的技术细节和元数据配置。

数据请求与清洗

首先,我们需要从源平台提取数据,并进行必要的清洗和预处理。这一步骤确保了我们获取的数据是准确且一致的,为后续的转换和写入打下基础。

数据转换与写入

接下来,我们重点关注如何将清洗后的数据转换为旺店通·企业奇门API接口所能接收的格式,并通过API接口将数据写入目标平台。

元数据配置解析

以下是我们需要配置的元数据,用于定义如何将采购入库单的数据推送到旺店通·企业奇门API接口:

{
  "api": "wdt.stockin.purchase.push",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {"field": "warehouse_no", "label": "仓库编号", "type": "string", "describe": "...", "value": "1.10"},
    {"field": "purchase_no", "label": "采购单号", "type": "string", "describe": "...", "value": "{FBillNo}"},
    {"field": "outer_no", "label": "外部单号", "type": "string", "describe": "...", "value": "{FBillNo}"},
    {"field": "is_check", "label": "自动审核", "type": "string", "describe": "...", "value": "1"},
    {"field": ...},
    ...
  ],
  ...
}
请求参数详解
  1. warehouse_no: 仓库编号,ERP内自定义的代表仓库的编号信息。
  2. purchase_no: 采购单号,由ERP生成的唯一标识。
  3. outer_no: 外部系统采购入库单的唯一单据编号。
  4. is_check: 自动审核标志,1表示审核,0表示不审核。
  5. logistics_code: 物流编号,ERP内自定义的物流公司编号。
  6. remark: 备注信息,如“采购入库”。
  7. details_list: 入库货品列表节点,包含所有货品明细信息。
子节点详解(details_list)
{
  ...
  {
    "field":"details_list",
    ...
    ,"children":[
      {"field":"spec_no","label":"商家编码","type":"string","describe":"...","value":"{FMaterialId_FNumber}"},
      {"field":"stockin_num","label":"入库数量","type":"string","describe":"...","value":"{FRealQty}"},
      {"field":"tax","label":"税率","type":"string","describe":"..."},
      {"field":"stockin_price","label":"入库价","type":"string","describe":"...","value":"{FTaxPrice}"},
      {"field":"tax_price","label":"税后单价","type":"string","describe":"...","value":"{FPrice}"},
      ...
    ]
  }
}
  1. spec_no: 商家编码,ERP内单品唯一编码(SKU)。
  2. stockin_num: 入库数量。
  3. tax_price: 税后单价,如果传值则覆盖入库价。
数据转换示例

假设我们从源平台获取到如下数据:

{
  ...
  {
    FBillNo: 'PO12345',
    FMaterialId_FNumber: 'SKU123',
    FRealQty: '100',
    FTaxPrice: '10',
    FPrice: '11'
  }
}

我们需要将其转换为符合旺店通·企业奇门API接口格式的数据:

{
  ...
  {
    warehouse_no: '1.10',
    purchase_no: 'PO12345',
    outer_no: 'PO12345',
    is_check: '1',
    details_list: [
      {
        spec_no: 'SKU123',
        stockin_num: '100',
        stockin_price: '10',
        tax_price: '11'
      }
    ]
  }
}
API请求示例

通过HTTP POST方法,将上述JSON对象发送到旺店通·企业奇门API接口:

POST /wdt.stockin.purchase.push HTTP/1.1
Host: api.wangdiantong.com
Content-Type: application/json

{
  ...
}

实施与监控

最后,通过轻易云数据集成平台,我们可以实时监控每个环节的数据流动和处理状态,确保整个ETL过程透明且高效。

通过以上步骤,我们成功实现了从源平台到目标平台的数据ETL转换和写入。 钉钉与MES系统接口开发配置

更多系统对接方案