借助轻易云平台实现异构系统数据同步的技术要点

  • 轻易云集成顾问-叶威宏

旺店通·企业奇门数据集成到金蝶云星辰V1的技术实现

在企业信息化系统之间进行数据集成时,确保高效、准确的数据传输是一项关键任务。本文将聚焦于通过轻易云数据集成平台,实现旺店通·企业奇门与金蝶云星辰V1之间的数据对接。本案例中的方案名称为“物料同步(星辰v1)”,其核心目标是通过wdt.goods.query接口从旺店通·企业奇门提取商品物料数据,并利用jdy/basedata/material_save接口将其批量写入到金蝶云星辰V1中。

为达到高效稳定的集成效果,我们采取了一系列技术措施:

首先,为了处理大规模的数据量,我们充分利用了平台支持的高吞吐量能力,通过并行处理和分片机制,加速了大量数据从旺店通·企业奇门系统向外输出。具体而言,在调用wdt.goods.query接口时,设计了分页获取策略,并设置合理的限流参数,以避免API请求频繁触发风控机制,从而保障数据抓取过程的稳定性和连续性。

其次,通过自定义的数据转换逻辑,解决两种异构系统间格式差异的问题。例如,将旺店通返回的数据结构进行解析后,根据需求重新映射字段,再按照金蝶云星辰V1 API规范封装。在这一过程中,还特别关注异常处理机制:当出现格式错误或网络异常时,及时记录日志并触发重试流程,确保不丢失任何重要数据信息。

为了强化全程监控与控制,我们借助集中监控和告警系统,对每一个数据集成环节进行实时跟踪。这不仅包括任务状态和性能指标,也涵盖详细的日志记录以及即时问题提醒功能,使得运维人员能够迅速定位和解决可能存在的问题,大幅提升故障排除效率。

最后,通过可视化工具设计与管理数据流动,使得复杂的数据处理流程变得更加直观且易于操作。从源头抓取,到中间转换,再到最终写入,每一步骤都清晰显示在统一界面上,有助于深入理解并优化整个业务流程。 钉钉与MES系统接口开发配置

调用源系统旺店通·企业奇门接口wdt.goods.query获取并加工数据

在数据集成生命周期的第一步中,调用源系统接口获取数据是至关重要的一环。本文将深入探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口wdt.goods.query来获取物料信息,并对其进行初步加工。

接口概述

wdt.goods.query接口用于查询物料信息,支持按最后修改时间增量查询。该接口采用POST请求方式,返回的数据包含物料的基本信息,如条码、名称等。

元数据配置解析

元数据配置如下:

{
  "api": "wdt.goods.query",
  "effect": "QUERY",
  "method": "POST",
  "number": "goods_no",
  "id": "goods_no",
  "name": "goods_name",
  "idCheck": true,
  "request": [
    {
      "field": "start_time",
      "label": "开始时间",
      "type": "datetime",
      "describe": "按最后修改时间增量查询数据,start_time作为开始时间,格式:yyyy-MM-dd HH:mm:ss",
      "value": "{{LAST_SYNC_TIME|datetime}}"
    },
    {
      "field": "end_time",
      "label": "结束时间",
      "type": "datetime",
      "describe": "按最后修改时间增量查询数据,end_time作为结束时间,格式:yyyy-MM-dd HH:mm:ss",
      "value": "{{CURRENT_TIME|datetime}}"
    },
    {
      "field": "deleted",
      "label": "已删除货品",
      "type": "string",
      "describe": "默认为0, 0:只返回未删除货品 1:返回未删除和已删除货品"
    },
    {
      "field": "goods_no",
      "label": "条码",
      "type": "string",
      "describe": ""
    }
  ],
  ...
}

请求参数详解

  1. start_timeend_time

    • start_timeend_time用于指定查询的时间范围。通过设置这两个参数,可以实现按最后修改时间的增量查询。
    • {{LAST_SYNC_TIME|datetime}}{{CURRENT_TIME|datetime}}分别代表上次同步时间和当前时间,这些占位符会在实际请求时被替换为具体的日期时间值。
  2. deleted

    • 此参数用于指定是否包含已删除的货品。默认值为0,即只返回未删除的货品。如果需要同时返回已删除和未删除的货品,可以将其设置为1。
  3. goods_no

    • 用于指定要查询的物料条码。如果不传值,则返回所有符合条件的物料。
  4. 分页参数

    • page_sizepage_no用于控制分页查询。通过设置分页大小和页号,可以有效管理大批量数据的获取。

调用示例

以下是一个调用该接口的示例代码:

import requests
import datetime

# 设置请求URL
url = 'https://api.wangdian.cn/openapi2/goods_query.php'

# 设置请求头
headers = {
    'Content-Type': 'application/json'
}

# 设置请求参数
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'),
    'deleted': '0',
    'page_size': '100',
    'page_no': '0'
}

# 发起POST请求
response = requests.post(url, headers=headers, json=params)

# 检查响应状态码
if response.status_code == 200:
    data = response.json()
    # 对返回的数据进行处理
else:
    print(f"Error: {response.status_code}")

数据加工与清洗

在获取到原始数据后,需要对其进行初步加工与清洗,以确保后续的数据转换与写入过程顺利进行。常见的数据加工操作包括:

  1. 字段映射

    • 将接口返回的数据字段映射到目标系统所需的字段。例如,将goods_no映射为目标系统中的物料编号字段。
  2. 数据过滤

    • 根据业务需求过滤掉不需要的数据。例如,只保留状态为“有效”的物料记录。
  3. 格式转换

    • 将日期、数值等字段转换为目标系统所需的格式。例如,将日期格式从字符串转换为日期对象。

通过上述步骤,我们可以高效地从旺店通·企业奇门接口获取并加工物料数据,为后续的数据转换与写入奠定基础。 轻易云数据集成平台金蝶集成接口配置

使用轻易云数据集成平台实现金蝶云星辰V1 API接口的数据转换与写入

在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,转为目标平台金蝶云星辰V1 API接口所能够接收的格式,并最终写入目标平台。本文将详细探讨如何使用轻易云数据集成平台配置元数据,实现这一过程。

配置元数据

首先,我们需要了解金蝶云星辰V1 API接口的具体要求。根据提供的元数据配置,API接口信息如下:

  • API路径: jdy/basedata/material_save
  • 请求方法: POST
  • 是否检查ID: true

请求字段主要包括商品编码、商品名称、计量单位ID、商品类别编码等。以下是一些关键字段及其配置说明:

  1. 商品编码 (number):

    • 类型: string
    • 描述: 商品编码,不传递则由后台生成(不设置有编码规则和更新时必传)
    • 值: {spec_list_spec_no}
  2. 商品名称 (name):

    • 类型: string
    • 描述: 商品名称
    • 值: {goods_name}
  3. 计量单位ID (baseunitid_id):

    • 类型: string
    • 描述: 计量单位ID
    • 值: _mongoQuery 580a8aad-97c9-336e-9338-883ef74bb6d6 findField=content.id where={"content.number":{"$eq":"{spec_list_spec_unit_name}"}}
  4. 商品类别编码 (parent_number):

    • 类型: string
    • 值: 01
  5. 辅1属性组ID (yt_auxtypeid1_id):

    • 类型: string
    • 值: 1670214487648519168
  6. 辅2属性组ID (yt_auxtypeid2_id):

    • 类型: string
    • 值: 1670214653189364736
  7. 规格型号 (model):

    • 类型: string
    • 值: {spec_list_spec_name}
  8. 辅助属性 (auxentity): 辅助属性是一个数组,包含多个子字段,如辅1 ID、辅2 ID等。

数据转换与写入

在实际操作中,我们需要按照以上配置进行数据转换和写入。以下是具体步骤:

  1. 提取数据: 从源系统中提取相关字段的数据,例如商品编码、商品名称等。

  2. 转换数据: 根据元数据配置,将提取的数据转换为目标格式。例如,通过_mongoQuery查询获取计量单位ID,将其填充到baseunitid_id字段中。

  3. 构建请求体: 将所有转换后的字段值按照API要求组织成JSON格式的请求体。例如:

    {
        "number": "12345",
        "name": "示例商品",
        "baseunitid_id": "580a8aad-97c9-336e-9338-883ef74bb6d6",
        "parent_number": "01",
        "yt_auxtypeid1_id": "1670214487648519168",
        "yt_auxtypeid2_id": "1670214653189364736",
        "model": "示例型号",
        "auxentity": [
            {
                "auxid1_id": "1670214733006969856",
                "auxid1_number": "010001",
                ...
            },
            ...
        ],
        ...
    }
  4. 发送请求: 使用HTTP POST方法将构建好的请求体发送到金蝶云星辰V1 API接口jdy/basedata/material_save

  5. 处理响应: 接收并处理API响应,确保数据成功写入目标系统。如果出现错误,根据错误信息进行相应调整和重试。

示例代码

以下是一个简化的Python示例代码,用于展示如何实现上述步骤:

import requests
import json

# 构建请求体
data = {
    "number": "12345",
    "name": "示例商品",
    ...
}

# 发送POST请求
response = requests.post(
    url="https://api.kingdee.com/jdy/basedata/material_save",
    headers={"Content-Type": "application/json"},
    data=json.dumps(data)
)

# 处理响应
if response.status_code == 200:
    print("Data successfully written to Kingdee Cloud.")
else:
    print(f"Failed to write data. Status code: {response.status_code}, Response: {response.text}")

通过以上步骤,我们可以高效地将源平台的数据转换并写入到金蝶云星辰V1 API接口,从而实现不同系统间的数据无缝对接。 轻易云数据集成平台金蝶集成接口配置

更多系统对接方案