轻易云数据集成平台ETL配置:从小满到金蝶K3-WISE的实践

  • 轻易云集成顾问-蔡威

案例分享:小满OKKICRM销售订单集成金蝶K3-WISE

在企业的数字化管理中,数据集成是确保不同系统之间信息流通的重要环节。本文将介绍如何通过技术手段,将小满OKKICRM中的销售订单数据无缝集成到金蝶K3-WISE系统中,以实现高效、准确的数据共享和业务流程整合。

作为此次案例实施的核心,我们采用了轻易云数据集成平台,通过其强大的可视化设计工具和自定义转换逻辑,实现了从小满OKKICRM到金蝶K3-WISE的数据对接。具体来说,我们需要处理以下几个关键问题:

  1. API接口调用与数据抓取

    • 获取小满OKKICRM销售订单数据:使用/v1/invoices/order/list API接口,定时可靠地拉取最新的销售订单信息。
    • 分页与限流处理:由于API接口的访问限制,必须考虑分页机制及限流策略,以确保连续稳定的数据抓取过程。
  2. 数据转换与映射

    • 小满OKKICRM与金蝶K3-WISE在数据结构上存在差异,需要通过自定义转换逻辑,对字段进行对应映射,以满足目标系统要求。例如,从“客户名称”到“K3客户编码”的映射等。
  3. 大批量高吞吐量写入

    • 使用金蝶K3-WISE提供的/SO/Save API接口,大量快速写入经过转换的数据,并保证每笔交易都能被正确记录,不丢失、不重复。
  4. 实时监控与异常处理机制

    • 利用集中监控和告警系统,实时跟踪集成任务状态。当出现故障或异常时,如网络波动或API超限调用,通过重试机制和日志记录功能,有效恢复并修正错误,提高整体稳定性。
  5. 特殊场景应对措施

    • 针对多种复杂业务场景,比如跨日结算、退货单回执等情况,通过二次开发定制化解决方案,实现细致入微且灵活可控的数据同步需求。

在下文中,我们将详细拆解以上步骤,并结合实际操作示例展示具体实现方法,为大家带来一套完整且实战性强的小满OKKICRM—>金蝶 K3WISE 数据集成解决方案。 如何对接用友BIP接口

调用小满OKKICRM接口/v1/invoices/order/list获取并加工数据

在数据集成生命周期的第一步中,调用源系统接口获取数据是至关重要的一环。本文将详细探讨如何通过轻易云数据集成平台调用小满OKKICRM的/v1/invoices/order/list接口,并对获取的数据进行初步加工。

接口调用配置

根据元数据配置,我们需要调用/v1/invoices/order/list接口来获取销售订单数据。该接口采用GET方法,支持多种查询参数,以便灵活地筛选所需的数据。

以下是关键的请求参数及其配置:

  • start_time: 时间查询范围的开始日期,使用模板变量{{LAST_SYNC_TIME|datetime}}表示上次同步时间。
  • end_time: 时间查询范围的结束日期,使用模板变量{{CURRENT_TIME|datetime}}表示当前时间。
  • start_index: 分页参数,表示第几页,默认值为1。
  • count: 每页记录数,默认值为10。
  • removed: 查询已删除的数据列表时设置为1,默认值为0。
  • approval: 查询通过审批的数据列表时设置为1,默认值为0。
  • status: 查询特定状态的数据列表,可以支持多个状态值,用半角逗号分割。

请求示例

以下是一个典型的请求示例:

{
  "api": "/v1/invoices/order/list",
  "method": "GET",
  "params": {
    "start_time": "{{LAST_SYNC_TIME|datetime}}",
    "end_time": "{{CURRENT_TIME|datetime}}",
    "start_index": 1,
    "count": 10,
    "removed": 0,
    "approval": 0,
    "status": "0"
  }
}

数据加工与处理

在获取到原始数据后,需要对其进行初步加工,以便后续的数据转换和写入步骤。以下是一些常见的数据加工操作:

  1. 字段映射:将源系统中的字段映射到目标系统中的字段。例如,将order_no映射到目标系统中的订单编号字段。
  2. 数据清洗:去除无效或重复的数据,根据业务需求过滤掉不必要的信息。
  3. 格式转换:将日期、数字等字段转换为目标系统所需的格式。

示例代码

以下是一个简单的Python示例代码,用于调用接口并处理返回的数据:

import requests
import datetime

# 配置请求参数
params = {
    "start_time": (datetime.datetime.now() - datetime.timedelta(days=1)).strftime('%Y-%m-%d %H:%M:%S'),
    "end_time": datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
    "start_index": 1,
    "count": 10,
    "removed": 0,
    "approval": 0,
    "status": "0"
}

# 发起GET请求
response = requests.get("https://api.xiaoman.com/v1/invoices/order/list", params=params)

# 检查响应状态码
if response.status_code == 200:
    data = response.json()

    # 数据清洗与加工
    processed_data = []
    for order in data['orders']:
        processed_order = {
            'order_id': order['order_id'],
            'order_no': order['order_no'],
            'customer_name': order['customer']['name'],
            'total_amount': float(order['total_amount']),
            'order_date': datetime.datetime.strptime(order['order_date'], '%Y-%m-%d %H:%M:%S')
        }
        processed_data.append(processed_order)

    # 输出处理后的数据
    print(processed_data)
else:
    print(f"Failed to fetch data: {response.status_code}")

小结

通过上述步骤,我们成功地调用了小满OKKICRM的接口,并对返回的数据进行了初步加工。这一步骤不仅确保了数据的准确性和完整性,也为后续的数据转换和写入奠定了坚实基础。在实际应用中,还可以根据具体业务需求进一步优化和扩展数据处理逻辑。 金蝶与CRM系统接口开发配置

轻易云数据集成平台ETL转换配置:从小满到金蝶K3-WISE

在数据集成生命周期的第二步中,主要任务是将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,并转为目标平台金蝶K3-WISE API接口所能够接收的格式,最终写入目标平台。本文将详细介绍如何利用轻易云数据集成平台的元数据配置,实现这一过程。

数据请求与清洗

首先,我们需要确保从源系统(如小满)获取的数据是干净且符合预期的。这一步通常涉及基本的数据验证和清洗操作,如去除空值、格式转换等。然而,在本文中,我们将重点放在数据转换与写入阶段。

数据转换与写入

通过轻易云数据集成平台,我们可以利用提供的元数据配置,将源系统的数据转换为金蝶K3-WISE API接口所需的格式。以下是具体的元数据配置解析:

API配置
{
  "api": "/SO/Save",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {
      "field": "Page1",
      "label": "Page1",
      "type": "array",
      "children": [
        {"field": "FCancellation", "label": "作废标志", "type": "string", "value": "false"},
        {"field": "Fdate", "label": "日期", "type": "string", "value": "{account_date}"},
        {
          "field": "FCustID",
          "label": "客户",
          "type": "object",
          ...
        }
      ]
    },
    {
      ...
    }
  ],
  ...
}
核心字段解析
  1. FCancellation(作废标志):固定值false,表示订单未作废。
  2. Fdate(日期):动态值{account_date},从源系统获取并映射到目标字段。
  3. FCustID(客户)
    • FNumber(编码):通过SQL查询映射,_findCollection find serial_id from ... where company_id={new_customerid}
    • FName(名称):固定值1
子对象和嵌套结构

对于复杂的对象结构,如客户信息、销售范围等,需要特别注意子对象的处理。例如:

{
  "field": "FAreaPS",
  ...
}
  • FAreaPS(销售范围)
    • FNumber(编码):固定值1
    • FName(名称):固定值1
数据计算与函数应用

在某些情况下,需要对原始数据进行计算或函数处理。例如:

  • 汇率计算

    {
    ...
    {"field":"FExchangeRate","label":"汇率","type":"string","value":"_function {exchange_rate}/100"}
    ...
    }
  • 含税单价计算

    {
    ...
    {"field":"FAuxTaxPrice","label":"含税单价","type":"string","value":"_function {{product_list.product_list_cost_amount}}/{{product_list.product_list_count}}"}
    ...
    }

这些计算通过轻易云的平台内置函数实现,确保数据在传输过程中保持一致性和准确性。

商品明细处理

商品明细部分通常包含多个条目,需要逐条处理并映射到目标系统。例如:

{
  ...
  {"field":"Page2","label":"Page2","type":"array","value":"product_list","children":[
    {"field":"FItemID","label":"物料代码","type":"object","children":[{"field":"FNumber","label":"编码","type":"string","value":"{{product_list.product_list_product_no}}"}]},
    {"field":"FAuxQty","label":"数量","type":"string","value":"{{product_list.product_list_count}}"},
    {"field":"FAuxTaxPrice","label":"含税单价","type":"string","value":"_function {{product_list.product_list_cost_amount}}/{{product_list.product_list_count}}"},
    ...
  ]}
}

每个商品条目都需要进行字段映射和必要的计算,以确保最终生成的数据符合金蝶K3-WISE的要求。

数据写入目标平台

完成所有字段映射和计算后,通过配置好的API接口,将转换后的数据发送到金蝶K3-WISE系统。该过程通常使用HTTP POST请求,并包含必要的身份验证和错误处理机制。

{
  ...
  "method": "POST",
  ...
}

通过上述步骤,我们可以实现从小满到金蝶K3-WISE的数据无缝对接,确保业务流程高效、准确地运行。 如何对接金蝶云星空API接口

更多系统对接方案