### 聚水潭数据集成到金蝶云星空案例分享
在本技术案例中,我们将详细探讨如何通过轻易云数据集成平台,实现聚水潭采购入库单数据同步至金蝶云星空。该方案于实际运行中的名称为:[自动]-采购入库单同步[关联]-V1.0。本文重点关注以下几个方面的技术实现和优化:
#### 确保集成过程中的准确性与高效性
为了保证聚水潭的数据能够精准无误地写入到金蝶云星空,我们首先需要有效调用其开放API接口 `/open/purchasein/query`,从而获取采购入库单的详细信息。在这个过程中,需要特别注意处理分页与限流问题,确保抓取的数据不漏单且符合业务需求。
#### 批量数据快速写入
当大量的数据被成功抓取后,下一个关键环节是如何高效地批量写入到金蝶云星空。这通过使用 `batchSave` API 接口来实现,该接口支持同时保存多个记录,从而显著提升了数据写入的效率。然而,在此过程中对接可能会遇到多种异常情况,因此我们还引入了错误重试机制,以确保稳定可靠的数据传输。
#### 数据格式差异处理
聚水潭与金蝶云星空之间存在着一定的数据格式差异,这就要求我们在数据映射上进行定制化处理。例如,不同字段之间可能存在命名或类型上的不一致,通过轻易云平台提供的可视化配置界面,可以直观清晰地完成这些映射操作,大大减少了开发和调试时间。
#### 实时监控与日志管理
整个集成流程结束后,为了进一步保障系统对接的稳健运行,还需设置实时监控和日志记录功能。这样可以及时发现并解决潜在的问题,例如网络波动导致的数据丢失或延迟。通过详尽的日志记录,每个步骤都能追踪溯源,有问题可第一时间回顾分析并采取补救措施。
以上几大技术要点勾勒出了本次系统对接项目的重要脉络。在随后的具体实施部分,将进一步探讨每一个细节及代码实例,以供深度参考和借鉴。
![企业微信与ERP系统接口开发配置](https://pic.qeasy.cloud/D32.png~tplv-syqr462i7n-qeasy.image)
### 调用聚水潭接口/open/purchasein/query获取并加工数据的技术案例
在数据集成生命周期的第一步,我们需要从源系统获取数据。本文将详细探讨如何使用轻易云数据集成平台调用聚水潭接口`/open/purchasein/query`,并对获取的数据进行加工处理。
#### 接口调用配置
首先,我们需要了解接口的基本配置和元数据定义。以下是接口的元数据配置:
```json
{
"api": "/open/purchasein/query",
"effect": "QUERY",
"method": "POST",
"number": "io_id",
"id": "io_id",
"idCheck": true,
"request": [
{
"field": "page_index",
"label": "第几页,从1开始",
"type": "string",
"describe": "第几页,从1开始",
"value": "1"
},
{
"field": "page_size",
"label": "默认30,最大不超过50",
"type": "string",
"describe": "默认30,最大不超过50",
"value": "50"
},
{
"field": "modified_begin",
"label": "修改起始时间",
"type": "string",
"describe":
"
修改起始时间,起始时间和结束时间必须同时存在,时间间隔不能超过七天,与采购单号不能同时为空
",
"
value
": "{{LAST_SYNC_TIME|datetime}}"
},
{
"
field
": "
modified_end
",
"
label
": "
修改结束时间
",
"
type
": "
string
",
"
describe
":
"
修改起始时间,起始时间和结束时间必须同时存在,时间间隔不能超过七天,与采购单号不能同时为空
",
"
value
": "{{CURRENT_TIME|datetime}}"
}
],
"
omissionRemedy
": {
"
crontab
":
"
2 6-7 * * *
",
"
takeOverRequest
": [
{
"
field
":
"
modified_begin
",
"
value
": "{{DAYS_AGO_2|datetime}}",
"
type
":
"
string
",
"
label
":
"
接管字段
",
"
formModel
": {
enable: false},
tableModel: {enable: false},
physicalModel: {enable: false}
}
]
},
condition: [[{"field":"wms_co_id","logic":"neqv2","value":"10404759"}]]
}
```
#### 请求参数解析
在调用该接口时,我们需要传递以下几个关键参数:
- `page_index`: 表示请求的页码,从1开始。
- `page_size`: 每页返回的数据条数,默认值为30,最大不超过50。
- `modified_begin`: 数据修改的起始时间。
- `modified_end`: 数据修改的结束时间。
这些参数确保了我们能够分页获取数据,并且可以根据修改时间范围进行筛选。
#### 时间参数动态生成
为了确保数据同步的准确性,我们使用了动态生成的时间参数:
- `{{LAST_SYNC_TIME|datetime}}`: 上次同步的时间。
- `{{CURRENT_TIME|datetime}}`: 当前请求的时间。
这两个参数保证了每次请求的数据都是最新的,并且不会重复获取已经处理过的数据。
#### 异常处理与补偿机制
为了应对可能出现的数据遗漏问题,我们配置了一个定时任务(`crontab`),每天早上6点到7点之间执行一次补偿请求。补偿请求会使用两天前的日期作为`modified_begin`,确保即使某次同步失败,也能在后续补偿中重新获取遗漏的数据。
#### 条件过滤
在实际应用中,我们可能需要对返回的数据进行进一步过滤。例如,在上述配置中,我们添加了一个条件过滤:
```json
"condition":[[{"field":"wms_co_id","logic":"neqv2","value":"10404759"}]]
```
这个条件表示我们只获取`wms_co_id`不等于`10404759`的数据。这种过滤机制可以帮助我们精确控制数据集成范围,提高数据处理效率。
#### 数据加工与清洗
在成功获取到原始数据后,需要对其进行必要的清洗和转换,以便后续写入目标系统。常见的数据清洗操作包括:
- 去除重复记录。
- 格式化日期和数值字段。
- 根据业务需求合并或拆分字段。
这些操作可以通过轻易云平台提供的可视化工具实现,无需编写复杂代码,大大简化了数据处理流程。
#### 实时监控与日志记录
为了确保整个过程透明可控,轻易云平台提供了实时监控和日志记录功能。通过这些功能,可以随时查看每个步骤的执行状态,及时发现并解决问题。
综上所述,通过合理配置聚水潭接口调用参数、动态生成时间参数、设置异常处理机制以及进行必要的数据清洗和转换,可以高效地完成数据集成生命周期中的第一步,为后续的数据转换与写入奠定坚实基础。
![打通金蝶云星空数据接口](https://pic.qeasy.cloud/S27.png~tplv-syqr462i7n-qeasy.image)
### 采购入库单同步至金蝶云星空API接口的ETL转换技术案例
在轻易云数据集成平台中,生命周期的第二步是将已经集成的源平台数据进行ETL(提取、转换、加载)处理,并转为目标平台金蝶云星空API接口所能够接收的格式,最终写入目标平台。本文将详细探讨这一过程中涉及的技术细节和实现方法。
#### 元数据配置解析
在本案例中,我们需要将采购入库单的数据同步至金蝶云星空。以下是元数据配置的详细解析:
```json
{
"api": "batchSave",
"method": "POST",
"idCheck": true,
"operation": {
"rowsKey": "array",
"rows": 1,
"method": "batchArraySave"
},
"request": [
{
"field": "FBillTypeID",
"label": "单据类型",
"type": "string",
"parser": {
"name": "ConvertObjectParser",
"params": "FNumber"
},
"value": "RKD01_SYS",
...
}
],
...
}
```
#### 数据字段映射与转换
1. **单据类型(FBillTypeID)**
- 类型:字符串
- 转换器:`ConvertObjectParser`
- 参数:`FNumber`
- 固定值:`RKD01_SYS`
2. **业务类型(FBusinessType)**
- 类型:字符串
- 固定值:`CG`
3. **单据编号(FBillNo)**
- 类型:字符串
- 动态值:`{io_id}`
4. **货主类型(FOwnerTypeIdHead)**
- 类型:字符串
- 固定值:`BD_OwnerOrg`
5. **货主(FOwnerIdHead)**
- 类型:字符串
- 转换器:`ConvertObjectParser`
- 参数:`FNumber`
- 动态查询:
```json
"_mongoQuery ea710470-3755-3c67-bb3e-ab919d96c695 findField=content.FStockOrgId_FNumber where={\"content.FBillNo\":{\"$eq\":\"{KDFNumber}\"}}"
```
#### 嵌套对象与数组处理
1. **财务信息(FInStockFin)**
包含两个子字段:
- **结算组织(FSettleOrgId)**
- 类型:字符串
- 转换器:`ConvertObjectParser`
- 参数:`FNumber`
- 动态查询:
```json
"_mongoQuery ea710470-3755-3c67-bb3e-ab919d96c695 findField=content.FPurOrgId where={\"content.FBillNo\":{\"$eq\":\"{KDFNumber}\"}}"
```
- **付款组织(FPayOrgId)**
同上。
2. **明细信息(FInStockEntry)**
包含多个子字段,如物料编码、应收数量、实收数量等。这些字段通过动态映射和查询来获取相应的数据。例如:
- **物料编码(FMaterialId)**
```json
{
"field": "FMaterialId",
...
"value": "{{items.sku_id}}"
}
```
#### 特殊处理与关联关系
1. **源单类型(FSRCBILLTYPEID)** 和 **源单编号(FSRCBillNo)**
2. **关联关系(FInStockEntry_Link)**
该部分涉及源单表名、下推关系、源单ID及表体ID等信息,通过动态查询获取。例如:
```json
{
"_mongoQuery ea710470-3755-3c67-bb3e-ab919d96c695 findField=content.FDetailEntity_FEntryID where={\"content.FBillNo\":{\"$eq\":\"{KDFNumber}\"},\"content.FMaterialId\":{\"$eq\":\"{{items.sku_id}}\"}}"
}
```
#### API调用与数据提交
最终,所有字段经过转换和映射后,通过POST请求调用金蝶云星空的批量保存API接口:
```json
{
"api": "/k3cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.BatchSave",
...
}
```
请求体包含所有映射后的数据,并设置必要的操作参数如自动提交审核等:
```json
{
...
{
"field":"IsAutoSubmitAndAudit",
...
,"value":"true"
}
}
```
通过以上步骤,我们实现了从源平台到目标平台的数据ETL转换,并确保了数据格式符合金蝶云星空API接口要求。
![如何开发用友BIP接口](https://pic.qeasy.cloud/T6.png~tplv-syqr462i7n-qeasy.image)