案例分享:用友BIP数据集成到旺店通·企业奇门
在本案例中,我们将详细展示如何通过“供应商集成同步-v”这一方案,实现用友BIP系统的数据精准高效地对接到旺店通·企业奇门平台。
首先,确保用友BIP的供应商信息不漏单是整个数据对接过程中的首要任务。我们使用了/yonbip/digitalModel/vendor/list接口从用友BIP获取必要的供应商数据。为了保证所有数据都能准确抓取,我们设置了定时任务,这些任务能够可靠地调用API并抓取最新的数据。这不仅确保了实时监控与日志记录,还提高了整体流程的透明度和管理效率。
同时,为了解决大批量数据快速写入到旺店通·企业奇门的问题,采用了wdt.purchase.provider.create接口进行批量写入。由于两个系统之间存在一定的数据格式差异,在实施过程中,需要进行定制化的数据映射,并有效处理分页和限流问题,以避免任何潜在的系统负载过重或超时错误。
最后,不可忽视的是,对接异常情况及错误重试机制也是整个项目成功的重要环节之一。当出现API调用失败或者网络故障等异常状况时,通过预设的重试策略,可以自动重新尝试连接,从而保障业务不中断,大幅提升稳定性和可靠性。
通过上述各个步骤,本案例展示了如何使用专业技术手段,高效、安全且无缝地实现不同系统间的数据集成,为后续更多复杂业务场景提供了一种行之有效的解决方法。
用友BIP接口/yonbip/digitalModel/vendor/list数据调用与加工
在数据集成的生命周期中,调用源系统接口并获取数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用用友BIP接口/yonbip/digitalModel/vendor/list
,并对获取的数据进行必要的加工处理。
接口调用配置
首先,我们需要配置接口调用的元数据。以下是该接口的基本配置信息:
- API路径:
/yonbip/digitalModel/vendor/list
- 请求方法:
POST
- 主要字段:
pageIndex
: 页号,默认值为1pageSize
: 每页行数,默认值为10vendororg
: 使用组织idcode
: 供应商编码helpcode
: 助记码vendorclass
: 所属分类idshipvia
: 发运方式idcorrespondingcust
: 对应客户idstopstatus
: 状态(false:启用、true:停用),默认值为falseperson
: 专管业务员idorg
: 管理组织iddeliveryvendor
: 发货供应商idinvoicevendor
: 开票供应商idcurrency
: 交易币种idtaxrate
: 进项税率parentVendor
: 上级供应商idretailInvestors
: 散户(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接口获取数据到对数据进行格式化和过滤的全过程。这些操作确保了我们能够高效地集成和处理异构系统间的数据,为后续的数据转换与写入奠定了坚实基础。
数据集成生命周期中的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"}
]
}
数据转换过程
-
提取(Extract): 从源系统提取原始数据。假设我们从一个ERP系统中提取了以下数据:
{ "code": "S12345", "name": "ABC Supplies", "supplyType": "Raw Materials", // 其他字段 }
-
转换(Transform): 将提取的数据转换为目标系统所需的格式。根据元数据配置,我们需要将提取的数据映射到对应的字段上。
provider_no
对应{code}
provider_name
对应{name}
provider_group
对应{supplyType}
假设我们还需要填充其他字段,如最小采购量、采购周期等,可以使用默认值或从其他来源获取。
-
加载(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}')
注意事项
- 字段映射:确保所有必需字段都已正确映射,并且数据类型符合目标平台要求。
- 错误处理:在实际应用中,需要增加错误处理机制,以便在请求失败时进行重试或记录日志。
- 安全性:确保API密钥和敏感信息不被泄露,可以使用环境变量或加密存储。
通过上述步骤,我们可以高效地将源平台的数据转换并写入到旺店通·企业奇门API接口,实现不同系统间的数据无缝对接。这不仅提升了业务流程的自动化程度,也确保了数据的一致性和准确性。