### 金蝶云星空与管易云的数据集成案例分享
在企业级数据管理中,实现系统间的数据无缝集成是关键步骤之一。本文将详细介绍如何通过轻易云平台将金蝶云星空的调拨申请单数据高效、可靠地集成到管易云的采购订单中。
此次案例实施方案“金蝶调拨申请单-->管易采购订单新增”具体目标是:当外购商品入非OMS仓库后,通过一系列自动化流程,将其由金蝶接收到的信息同步到管易云,以生成相应的采购订单。为此,使用了两个核心API接口:
- **executeBillQuery**: 从金蝶云星空获取调拨申请单数据。
- **gy.erp.purchase.add**: 向管易云写入新的采购订单信息。
#### 解决方案设计与技术要点
1. **定时抓取和可靠性确保**
采用定时任务机制,每隔固定时间段调用`executeBillQuery`接口,从金蝶系统中抓取最新的调拨申请单数据,并存储在临时缓存区。在这个过程中,通过预定义的日志记录和异常处理机制,确保每次抓取操作都能够准确执行,不遗漏任何一个符合条件的数据条目。
2. **高吞吐量批量写入**
针对大量请求,我们实现了批处理逻辑,即将多个待写入记录打包,通过`gy.erp.purchase.add` API进行一次性提交,大大提高了整体效率。同时,在实际开发过程中,考虑了香卫 API 限流问题以及分页处理策略,以确保不会因超出限额而造成请求失败。
3. **自定义转换及差异适配**
由于两套系统在业务逻辑和数据结构上存在差异,需要对从金蝶获取到的数据进行格式转换以适应管易输入要求。例如,为每个字段设置映射关系及必要的数据清洗步骤,使得最终提交给 `gy.erp.purchase.add` 的参数完全符合预期。这一步主要借助于轻易云平台提供的可视化数据流设计工具,使整个过程更加直观和便捷。
4. **实时监控与告警系统**
为了保证集成过程中的透明可控,我们启用了轻易平台自带的实时监控功能,可以随时查看各个任务节点状态,并根据设定规则触发告警。当检测到例如网络异常或接口响应超时等情况时,第一时间向运维团队发送通知,以便及时采取措施,避免影响正常业务运行。
综合以上技术手段,此次成功实现了从金蝶云星空至管易之间安全、快速、准确的数据传输,为企业跨系统应用提供了一种有效解决方案。
![打通金蝶云星空数据接口](https://pic.qeasy.cloud/D13.png~tplv-syqr462i7n-qeasy.image)
### 调用金蝶云星空接口executeBillQuery获取并加工数据
在轻易云数据集成平台的生命周期中,调用源系统接口是数据处理的第一步。本文将深入探讨如何通过金蝶云星空接口`executeBillQuery`获取调拨申请单数据,并进行初步加工,以便后续的数据转换与写入。
#### 接口配置与调用
首先,我们需要配置并调用金蝶云星空的`executeBillQuery`接口。该接口主要用于查询业务单据信息,支持POST请求方式。以下是元数据配置的关键部分:
```json
{
"api": "executeBillQuery",
"effect": "QUERY",
"method": "POST",
"number": "FBillNo",
"id": "FEntity_FEntryID",
"idCheck": true,
...
}
```
在这个配置中,`api`字段指定了要调用的接口名称,`method`字段定义了请求方法为POST,`number`和`id`字段分别指定了单据编号和分录主键ID。
#### 请求参数设置
为了成功调用接口,我们需要设置请求参数。这些参数包括查询条件、分页参数以及需要返回的字段集合等。以下是部分关键请求参数的配置:
```json
{
"request": [
{"field":"FID","label":"FID","type":"int","describe":"FID","value":"FID"},
{"field":"FEntity_FEntryID","label":"FEntity_FEntryID","type":"int","describe":"FEntity_FEntryID","value":"FEntity_FEntryID"},
{"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"FBillNo"},
...
],
"otherRequest": [
{"field":"Limit","label":"最大行数","type":"int","describe":"金蝶的查询分页参数","value":"100"},
{"field":"StartRow","label":"开始行索引","type":"int","describe":"金蝶的查询分页参数","value":"{PAGINATION_START_ROW}"},
{"field":"FilterString","label":"过滤条件","type":"string","describe":"示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=","value":"FApproveDate>='{{LAST_SYNC_TIME|datetime}}'"},
{"field":"FieldKeys","label":"需查询的字段key集合","type":"array","describe":"金蝶分录主键ID格式:FPOOrderEntry_FEntryId,其它格式 FPurchaseOrgId.FNumber"}
]
}
```
在这些参数中,`FilterString`用于设置过滤条件,例如根据上次同步时间筛选数据;`FieldKeys`则指定了需要查询的字段集合。
#### 数据获取与初步加工
成功调用接口后,我们将获得调拨申请单的数据。接下来,需要对这些数据进行初步加工,以便后续处理。例如,可以根据业务需求对某些字段进行转换或过滤。以下是一个简单的数据加工示例:
```python
def process_data(data):
processed_data = []
for entry in data:
if entry['F_UQRW_DRCKLX'] == 'OMS' and entry['F_UQRW_DCCKLX'] == '非OMS':
processed_entry = {
'单据编号': entry['FBillNo'],
'申请数量': entry['FQty'],
'调入仓库外部码': entry['F_UQRW_BaseProperty2'],
'物料编码': entry['FMATERIALID.FNumber'],
...
}
processed_data.append(processed_entry)
return processed_data
```
在这个示例中,我们根据特定条件筛选出符合要求的数据,并提取出所需字段进行重新组织。
#### 自动填充响应
轻易云平台支持自动填充响应功能,这意味着我们可以预先定义好需要返回的数据结构,并让平台自动处理响应数据。这一功能极大地简化了数据处理流程,提高了效率。
```json
{
"autoFillResponse": true,
...
}
```
通过以上步骤,我们成功实现了从金蝶云星空获取调拨申请单数据并进行初步加工,为后续的数据转换与写入奠定了基础。在实际应用中,可以根据具体业务需求进一步调整和优化这些配置和处理逻辑。
![金蝶与外部系统打通接口](https://pic.qeasy.cloud/S18.png~tplv-syqr462i7n-qeasy.image)
### 使用轻易云数据集成平台进行ETL转换并写入管易云API接口的技术案例
在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL(提取、转换、加载)转换,转为目标平台——管易云API接口所能够接收的格式,并最终写入目标平台。本文将详细探讨如何通过轻易云数据集成平台实现这一过程。
#### API接口元数据配置解析
在本案例中,我们的目标是将金蝶调拨申请单的数据转换并写入管易云的采购订单新增接口。以下是我们需要配置的元数据:
```json
{
"api": "gy.erp.purchase.add",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"request": [
{
"field": "warehouse_code",
"label": "仓库代码",
"type": "string",
"describe": "111",
"value": "{F_UQRW_BaseProperty2}"
},
{
"field": "supplier_code",
"label": "供应商代码",
"type": "string",
"describe": "111",
"value": "JD001"
},
{
"field": "wms_biz_code",
"label": "外部订单号",
"type": "string",
"describe": "外部订单号",
"value": "{FBillNo}"
},
{
"field": "note",
"label": "备注",
"type": "string",
"value": "{FBillNo}"
},
{
"field": "detail_list",
...
```
该元数据配置定义了调用管易云API接口所需的字段和结构。我们需要确保从金蝶调拨申请单中提取的数据能够正确映射到这些字段上。
#### 数据提取与转换
首先,我们需要从金蝶系统中提取相关数据。这一步通常通过轻易云提供的数据请求功能实现。在这里,我们假设已经成功获取了源数据,并进入ETL转换阶段。
1. **字段映射**:
- `warehouse_code` 映射到 `{F_UQRW_BaseProperty2}`
- `supplier_code` 固定值为 `JD001`
- `wms_biz_code` 映射到 `{FBillNo}`
- `note` 映射到 `{FBillNo}`
- `detail_list` 是一个数组,需要进一步处理每个子项
2. **子项处理**:
在 `detail_list` 中,每个子项包含以下字段:
- `qty` 映射到 `{FQty}`
- `price` 需要根据业务逻辑计算或直接提供
- `item_code` 映射到 `{F_UQRW_BaseProperty}`
- `note` 映射到 `{FEntity_FEntryID}`
#### 数据加载
在完成上述字段映射和子项处理后,我们需要将转换后的数据通过HTTP POST方法发送到管易云API接口。以下是一个示例请求体:
```json
{
...
{
“warehouse_code”: “WH001”,
“supplier_code”: “JD001”,
“wms_biz_code”: “ORD12345”,
“note”: “ORD12345”,
“detail_list”: [
{
“qty”: “10”,
“price”: “100.00”,
“item_code”: “ITEM001”,
“note”: “ENTRY001”
},
...
]
}
}
```
#### 实现细节
1. **配置请求头**:
确保请求头包含必要的认证信息和内容类型设置,例如:
```http
Content-Type: application/json
Authorization: Bearer <token>
```
2. **发送请求**:
使用轻易云的数据集成平台提供的HTTP客户端功能发送POST请求。例如:
```python
import requests
url = 'https://api.guanyiyun.com/gy.erp.purchase.add'
headers = {'Content-Type': 'application/json', 'Authorization': 'Bearer <token>'}
response = requests.post(url, headers=headers, json=payload)
if response.status_code == 200:
print('Data successfully written to Guanyi Cloud')
else:
print('Failed to write data:', response.text)
```
3. **错误处理**:
在实际操作中,需要对可能出现的错误进行处理,例如网络问题、认证失败或API返回错误信息等。
通过以上步骤,我们可以实现将金蝶调拨申请单的数据经过ETL转换后,成功写入管易云采购订单新增接口。这一过程充分利用了轻易云数据集成平台强大的异构系统集成能力,实现了高效、透明的数据流动和处理。
![轻易云数据集成平台金蝶集成接口配置](https://pic.qeasy.cloud/T30.png~tplv-syqr462i7n-qeasy.image)