ETL转换:从用友BIP到旺店通的集成实现

  • 轻易云集成顾问-曾平安

案例分享:用友BIP数据集成到旺店通·企业奇门

在本案例中,我们将详细展示如何通过“供应商集成同步-v”这一方案,实现用友BIP系统的数据精准高效地对接到旺店通·企业奇门平台。

首先,确保用友BIP的供应商信息不漏单是整个数据对接过程中的首要任务。我们使用了/yonbip/digitalModel/vendor/list接口从用友BIP获取必要的供应商数据。为了保证所有数据都能准确抓取,我们设置了定时任务,这些任务能够可靠地调用API并抓取最新的数据。这不仅确保了实时监控与日志记录,还提高了整体流程的透明度和管理效率。

同时,为了解决大批量数据快速写入到旺店通·企业奇门的问题,采用了wdt.purchase.provider.create接口进行批量写入。由于两个系统之间存在一定的数据格式差异,在实施过程中,需要进行定制化的数据映射,并有效处理分页和限流问题,以避免任何潜在的系统负载过重或超时错误。

最后,不可忽视的是,对接异常情况及错误重试机制也是整个项目成功的重要环节之一。当出现API调用失败或者网络故障等异常状况时,通过预设的重试策略,可以自动重新尝试连接,从而保障业务不中断,大幅提升稳定性和可靠性。

通过上述各个步骤,本案例展示了如何使用专业技术手段,高效、安全且无缝地实现不同系统间的数据集成,为后续更多复杂业务场景提供了一种行之有效的解决方法。 系统集成平台API接口配置

用友BIP接口/yonbip/digitalModel/vendor/list数据调用与加工

在数据集成的生命周期中,调用源系统接口并获取数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用用友BIP接口/yonbip/digitalModel/vendor/list,并对获取的数据进行必要的加工处理。

接口调用配置

首先,我们需要配置接口调用的元数据。以下是该接口的基本配置信息:

  • API路径: /yonbip/digitalModel/vendor/list
  • 请求方法: POST
  • 主要字段:
    • pageIndex: 页号,默认值为1
    • pageSize: 每页行数,默认值为10
    • vendororg: 使用组织id
    • code: 供应商编码
    • helpcode: 助记码
    • vendorclass: 所属分类id
    • shipvia: 发运方式id
    • correspondingcust: 对应客户id
    • stopstatus: 状态(false:启用、true:停用),默认值为false
    • person: 专管业务员id
    • org: 管理组织id
    • deliveryvendor: 发货供应商id
    • invoicevendor: 开票供应商id
    • currency: 交易币种id
    • taxrate: 进项税率
    • parentVendor: 上级供应商id
    • retailInvestors: 散户(true:是、false:否)

此外,还有一个嵌套对象simple,包含一个字段:

  • pubts: 时间戳,用于查询大于等于该时间的供应商档案

请求参数解析与设置

在实际操作中,我们需要根据业务需求设置请求参数。以下是一个示例请求参数配置:

{
    "pageIndex": "1",
    "pageSize": "10",
    "vendororg": "[666666]",
    "code": "03004",
    "helpcode": "IntelZGGS",
    "vendorclass": "2165398870233344",
    "shipvia": "[1869874060415232]",
    "correspondingcust": "1965830945558784",
    "stopstatus": "false",
    "person": "[1888966431069184]",
    "org": "[666666]",
    "deliveryvendor": "[2166990446334208]",
    "invoicevendor": "[2166990446334208]",
    "currency": "[\"G001ZM0000DEFAULTCURRENCT00000000006\"]",
    "taxrate": "[13]",
    "parentVendor": "[2164161776636160]",
    "retailInvestors": "true",
    "simple": {
        "pubts": "{{LAST_SYNC_TIME|datetime}}"
    }
}

数据格式化与转换

在获取到原始数据后,我们需要对其进行格式化和转换。根据元数据配置中的formatResponse字段,我们可以看到需要将返回结果中的id字段重命名为new_id,并将其格式化为字符串类型。

例如,假设原始响应数据如下:

{
    "data": [
        {
            "id": 12345,
            "name": "供应商A"
        },
        {
            "id": 67890,
            "name": "供应商B"
        }
    ]
}

我们需要将其转换为:

{
    "data": [
        {
            "new_id": "12345",
            "name": "供应商A"
        },
        {
            "new_id": "67890",
            "name": "供应商B"
        }
    ]
}

条件过滤

根据元数据中的条件配置,我们还需要对返回的数据进行过滤。例如,过滤掉vendorApplyRange_org_name不等于“北京翼讯世纪科技有限公司”和“企业账号级”的记录。

假设返回的数据如下:

{
    ...
}

我们可以使用以下逻辑进行过滤:

filtered_data = [item for item in data if item['vendorApplyRange_org_name'] not in ["北京翼讯世纪科技有限公司", 
"企业账号级"]]

通过以上步骤,我们完成了从调用用友BIP接口获取数据到对数据进行格式化和过滤的全过程。这些操作确保了我们能够高效地集成和处理异构系统间的数据,为后续的数据转换与写入奠定了坚实基础。 如何开发金蝶云星空API接口

数据集成生命周期中的ETL转换:对接旺店通·企业奇门API接口

在数据集成生命周期中,ETL(Extract, Transform, Load)转换是关键的一步。本文将深入探讨如何将已经集成的源平台数据通过ETL转换,转为目标平台旺店通·企业奇门API接口所能够接收的格式,并最终写入目标平台。

元数据配置解析

首先,我们需要理解元数据配置,这是进行ETL转换的基础。以下是我们需要配置的元数据:

{
  "api": "wdt.purchase.provider.create",
  "method": "POST",
  "idCheck": true,
  "request": [
    {"field": "provider_no", "label": "供应商编号", "type": "string", "describe": "代表供应商所有属性的唯一编码,用于供应商区分,ERP内支持自定义(ERP供应商界面设置),用于创建供应商数据信息", "value": "{code}"},
    {"field": "provider_name", "label": "供应商名称", "type": "string", "describe": "供应商名称", "value": "{name}"},
    {"field": "provider_group", "label":":"供应商分组","type":"string","describe":"供应商名称","value":"{supplyType}"},
    {"field":"min_purchase_num","label":"最小采购量","type":"string","describe":"最小采购量"},
    {"field":"purchase_cycle_days","label":"采购周期","type":"string","describe":"采购周期"},
    {"field":"arrive_cycle_days","label":"到货周期","type":"string","describe":"到货周期"},
    {"field":"contact","label":"联系人","type":"string","describe":"联系人"},
    {"field":"last_purchase_time","label":"最后采购日期","type":"string","describe":"对供应商最后一次采购日期,不传默认接口创建供应商的年月日,格式:yyyy-MM-dd HH:mm:ss"},
    {"field":"charge_cycle_days","label":"结算周期","type":"string","describe":"对供应商的账款结算周期,单位(天),不传默认0"}
  ]
}

数据转换过程

  1. 提取(Extract): 从源系统提取原始数据。假设我们从一个ERP系统中提取了以下数据:

    {
     "code": "S12345",
     "name": "ABC Supplies",
     "supplyType": "Raw Materials",
     // 其他字段
    }
  2. 转换(Transform): 将提取的数据转换为目标系统所需的格式。根据元数据配置,我们需要将提取的数据映射到对应的字段上。

    • provider_no 对应 {code}
    • provider_name 对应 {name}
    • provider_group 对应 {supplyType}

    假设我们还需要填充其他字段,如最小采购量、采购周期等,可以使用默认值或从其他来源获取。

  3. 加载(Load): 将转换后的数据通过API接口写入目标系统。使用HTTP POST请求,将JSON格式的数据发送到旺店通·企业奇门API接口。

示例代码实现

以下是一个示例代码片段,展示如何进行上述步骤:

import requests
import json

# 提取的数据
source_data = {
    "code": "S12345",
    "name": "ABC Supplies",
    "supplyType": "Raw Materials"
}

# 转换后的数据
transformed_data = {
    'provider_no': source_data['code'],
    'provider_name': source_data['name'],
    'provider_group': source_data['supplyType'],
    'min_purchase_num': '100',  # 示例值
    'purchase_cycle_days': '30',  # 示例值
    'arrive_cycle_days': '15',  # 示例值
    'contact': 'John Doe',  # 示例值
    'last_purchase_time': '2023-10-01 00:00:00',  # 示例值
    'charge_cycle_days': '60'  # 示例值
}

# API请求URL和头信息
url = 'https://api.wangdian.cn/openapi2/wdt.purchase.provider.create'
headers = {'Content-Type': 'application/json'}

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

# 检查响应状态码和内容
if response.status_code == 200:
    print('Data successfully loaded to target platform.')
else:
    print(f'Failed to load data: {response.text}')

注意事项

  1. 字段映射:确保所有必需字段都已正确映射,并且数据类型符合目标平台要求。
  2. 错误处理:在实际应用中,需要增加错误处理机制,以便在请求失败时进行重试或记录日志。
  3. 安全性:确保API密钥和敏感信息不被泄露,可以使用环境变量或加密存储。

通过上述步骤,我们可以高效地将源平台的数据转换并写入到旺店通·企业奇门API接口,实现不同系统间的数据无缝对接。这不仅提升了业务流程的自动化程度,也确保了数据的一致性和准确性。 钉钉与CRM系统接口开发配置

更多系统对接方案