轻易云平台在ETL转换中的应用:从金蝶到旺店通企业奇门

  • 轻易云集成顾问-曹润

采购订单集成案例分享:金蝶云星辰V2对接旺店通·企业奇门

在本系统对接集成案例中,我们将重点探讨如何高效实现金蝶云星辰V2的采购订单数据到旺店通·企业奇门的数据集成。本次集成主要涉及两个核心API接口,分别是从金蝶云星辰V2获取数据的/jdy/v2/scm/pur_order接口,以及向旺店通·企业奇门写入数据的wdt.purchase.order.push接口。

为了确保每一笔采购订单都能准确、高效地流转至目标系统,本方案采用了轻易云平台提供的一系列关键技术和工具:

首先,通过轻易云平台提供的自定义数据转换逻辑,处理金蝶云星辰V2与旺店通·企业奇门之间的数据格式差异。例如,将金蝶中的字段映射到旺店通所需的结构上,这部分工作可以在可视化的数据流设计工具中直观完成,使得后续维护更加便捷。

其次,为了应对API分页和限流问题,特别设计了一套可靠抓取机制。该机制会定时触发调用 /jdy/v2/scm/pur_order 接口,并分段获取完整数据,同时处理好分页参数,以确保所有新增或变更的采购订单都不会遗漏。

除了稳定获取外,还必须考虑大量数据快速写入到目标系统的问题。借助于轻易云平台支持高吞吐量的数据写入能力,大幅提升了批量导入效率。在实际运行过程中,可以通过集中监控和告警系统实时监督任务状态,一旦出现异常,会及时启动错误重试机制,将影响降至最低。

本次技术实践还针对常见问题如网络抖动、网络断开等场景做了全面考察与优化,通过日志记录详细存档每一次操作细节及其结果,有助于发现并解决潜在问题,提高整体流程透明度与可靠性。这些措施共同保障了整个集成过程中的无缝衔接,实现业务流程自动化与高效管理。 用友BIP接口开发配置

调用金蝶云星辰V2接口获取并加工采购订单数据

在数据集成的生命周期中,调用源系统接口获取数据是至关重要的第一步。本文将深入探讨如何通过轻易云数据集成平台调用金蝶云星辰V2接口/jdy/v2/scm/pur_order来获取采购订单数据,并进行初步加工。

接口概述

金蝶云星辰V2提供了丰富的API接口,其中/jdy/v2/scm/pur_order用于查询采购订单信息。该接口支持GET请求,能够根据多种条件过滤和分页返回数据。以下是该接口的元数据配置:

{
  "api": "/jdy/v2/scm/pur_order",
  "effect": "QUERY",
  "method": "GET",
  "number": "bill_no",
  "id": "id",
  "name": "bill_no",
  "idCheck": true,
  "request": [
    {"field": "dept_id", "label": "部门ID", "type": "string", "describe": "部门ID"},
    {"field": "supplier_id", "label": "供应商ID", "type": "string", "describe": "供应商ID"},
    {"field": "bill_status", "label": "单据状态", "type": "string", 
        "describe": "(所有:“”,已审核:“C”,未审核:“Z”)", 
        "value":"C"},
    {"field": "create_start_time", 
        "label":"创建开始时间","type":"string","describe":"格式:“时间戳”,-1表示不过滤),创建时间"},
    {"field":"create_end_time","label":"创建结束时间","type":"string","describe":"格式:“时间戳”,-1表示不过滤),创建时间"},
    {"field":"modify_start_time","label":"修改开始时间","type":"string","describe":"格式:“时间戳”,-1表示不过滤),修改时间","value":"_function {LAST_SYNC_TIME}*1000"},
    {"field":"modify_end_time","label":"修改结束时间","type":"string","describe":"格式:“时间戳”,-1表示不过滤),修改时间","value":"_function {CURRENT_TIME}*1000"},
    {"field":"start_bill_date","label":"单据开始日期","type":"string","describe":"格式:“yyyy-MM-dd”,为空表示不过滤),单据日期"},
    {"field":"end_bill_date","label":"单据结束日期","type":"string","describe":"格式:“yyyy-MM-dd”,为空表示不过滤),单据日期"},
    {"field":"search","label":"模糊搜索","type":"string","describe":"支持供应商名称、职员名称、商品名称、单据编码"},
    {"field":"page","label":"当前页","type":"string","describe":"默认1)","value":"1"},
    {"field":"page_size","label":"每页显示条数,","type":"string","describe":"默认10,最大值100)",
        "value":
        "{PAGINATION_PAGE_SIZE}"},
    {"field":
        "top",
        "label":
        "截取单据前top个商品数据返回",
        "type":
        "string",
        "describe":
        "截取单据前top个商品数据返回"}
  ],
  ...
}

请求参数详解

在调用该接口时,可以通过设置不同的请求参数来过滤和分页查询采购订单。以下是一些关键参数及其作用:

  • dept_id:部门ID,用于筛选特定部门的采购订单。
  • supplier_id:供应商ID,用于筛选特定供应商的采购订单。
  • bill_status:单据状态,默认为已审核状态(“C”)。
  • create_start_timecreate_end_time:创建开始和结束时间,用于筛选特定创建时间范围内的订单。
  • modify_start_timemodify_end_time:修改开始和结束时间,用于筛选特定修改时间范围内的订单。
  • start_bill_dateend_bill_date:单据开始和结束日期,用于筛选特定日期范围内的订单。
  • search:模糊搜索字段,支持按供应商名称、职员名称、商品名称或单据编码进行模糊搜索。
  • pagepage_size:分页参数,分别指定当前页码和每页显示条数。

数据请求与清洗

在实际应用中,我们通常需要根据业务需求设置这些参数,以确保获取到所需的数据。例如,我们可以设置如下参数来获取最近一次同步后的所有已审核采购订单:

{
  ...
  {
    "modify_start_time": "_function {LAST_SYNC_TIME}*1000",
    "modify_end_time": "_function {CURRENT_TIME}*1000"
  },
  ...
}

这些参数确保我们只获取最近一次同步后的已审核采购订单,从而避免重复处理相同的数据。

数据转换与写入

在获取到原始数据后,我们需要对其进行清洗和转换,以便写入目标系统。在轻易云平台上,可以通过编写自定义脚本或使用内置的数据转换工具来实现这一过程。例如,可以将原始JSON数据转换为目标系统所需的格式,并进行必要的数据校验和处理。

以下是一个简单的数据转换示例:

def transform_data(raw_data):
    transformed_data = []
    for record in raw_data:
        transformed_record = {
            'order_id': record['id'],
            'order_number': record['bill_no'],
            'supplier': record['supplier_id'],
            'department': record['dept_id'],
            'status': record['bill_status'],
            'created_at': record['create_start_time'],
            'updated_at': record['modify_start_time']
        }
        transformed_data.append(transformed_record)
    return transformed_data

通过上述步骤,我们可以高效地从金蝶云星辰V2获取并加工采购订单数据,为后续的数据集成奠定基础。 企业微信与OA系统接口开发配置

轻易云数据集成平台ETL转换:金蝶采购订单到旺店通·企业奇门API接口

在数据集成的生命周期中,ETL(Extract, Transform, Load)转换是至关重要的一环。本文将详细探讨如何使用轻易云数据集成平台,将来自金蝶系统的采购订单数据转换为旺店通·企业奇门API接口所能接收的格式,并最终写入目标平台。

元数据配置解析

在进行ETL转换之前,首先需要理解元数据配置。以下是针对旺店通·企业奇门API接口wdt.purchase.order.push的元数据配置:

{
    "api": "wdt.purchase.order.push",
    "effect": "EXECUTE",
    "method": "POST",
    "idCheck": true,
    "operation": {
        "method": "merge",
        "field": "bill_no",
        "bodyName": "material_entity",
        "bodySum": ["material_entity_qty"],
        "header": ["supplier_number", "material_entity_stock_number", "bill_no"],
        "body": ["material_entity_material_number", "material_entity_qty", 
                 "material_entity_tax_price", "material_entity_cess", 
                 "material_entity_comment"]
    },
    "request": [
        {"field": "purchase_no", "label": "采购订单号", 
         "type": "string", 
         "value": "{bill_no}"},
        {"field": "provider_no", 
         ...

数据请求与清洗

首先,从金蝶系统提取原始采购订单数据。这一步骤通常包括对源数据的清洗和标准化,以确保数据的一致性和完整性。假设我们已经获得了如下结构的数据:

{
    "bill_no": "PO123456",
    ...
}

数据转换与写入

接下来,我们将这些清洗后的数据进行ETL转换,以适应旺店通·企业奇门API接口的要求。

  1. 字段映射

    • 将金蝶系统中的字段映射到目标API所需字段。例如,bill_no映射为purchase_nosupplier_number映射为provider_no等。
  2. 数组处理

    • 对于包含多条记录的字段,如采购明细,需要将其转换为目标API所需的数组格式。这里我们使用元数据配置中的details_list节点进行处理。
  3. 计算与合并

    • 根据元数据配置中的操作部分,对某些字段进行计算和合并。例如,将所有物料数量求和并存储在material_entity_qty_sum中。

以下是一个具体的代码示例,用于将金蝶系统的数据转换并写入旺店通·企业奇门API接口:

import requests
import json

# 假设从金蝶系统获取的数据
kingdee_data = {
    ...
}

# 构建请求体
request_body = {
    'purchase_no': kingdee_data['bill_no'],
    'provider_no': kingdee_data['supplier_number'],
    'warehouse_no': kingdee_data['material_entity'][0]['material_entity_stock_number'],
    'is_use_outer_no': '1',
    'outer_no': kingdee_data['bill_no'],
    'is_check': '1',
    'details_list': []
}

# 处理采购明细节点
for item in kingdee_data['material_entity']:
    detail = {
        'spec_no': item['material_entity_material_number'],
        'num': item['material_entity_qty'],
        'price': item['material_entity_tax_price'],
        'tax': item['material_entity_cess'],
        'tax_price': '',
        'remark': item['material_entity_comment']
    }
    request_body['details_list'].append(detail)

# 发起POST请求
response = requests.post(
    url='https://api.wangdian.cn/openapi2/wdt.purchase.order.push',
    headers={'Content-Type': 'application/json'},
    data=json.dumps(request_body)
)

# 检查响应状态
if response.status_code == 200:
    print("Data successfully pushed to Wangdian Tong")
else:
    print(f"Failed to push data: {response.text}")

关键技术点总结

  • 字段映射与转换:通过元数据配置文件中的字段映射规则,将源系统的数据准确地转换为目标系统所需格式。
  • 数组处理:对于复杂结构的数据(如包含多个明细记录),通过迭代和嵌套处理,将其转换为目标API所需的数组格式。
  • 实时监控与错误处理:在实际应用中,实时监控和错误处理至关重要。确保每次请求都能正确执行,并在失败时提供详细的错误信息以便调试。

通过以上步骤,我们成功地将金蝶系统中的采购订单数据转换并写入到旺店通·企业奇门API接口,实现了不同系统间的数据无缝对接。这不仅提升了业务效率,也确保了数据的一致性和准确性。 如何对接钉钉API接口

更多系统对接方案