### 案例分享:金蝶云星空数据集成到金蝶云星空的方案「收款退款单-miniluo」
在实际业务场景中,多系统间的数据对接往往是实现企业信息流通的关键一步。本次技术案例将展示如何通过轻易云平台,将金蝶云星空中的数据无缝集成到同样为金蝶云星空的目标系统,具体案例为“收款退款单-miniluo”。
#### 系统对接背景
我们面临一个主要挑战,即如何确保来自源端金蝶云星空的数据能够快速、高效且不丢失地写入目标端。为了处理这一问题,我们设计了如下几个核心步骤,其中包括高吞吐量的数据写入、实时监控和告警机制,以及定制化的数据转换逻辑等。
#### 实现方案概述
1. **获取与解析数据**
- 利用executeBillQuery接口抓取源端金蝶云星空中的收款退款单数据。这一过程需要考虑分页和限流的问题,以避免API调用次数超出限制。
2. **数据转换与映射**
- 针对不同系统之间可能存在的数据格式差异,采用自定义的数据转换逻辑,使得抓取来的原始数据适配目标系统要求。
3. **批量写入**
- 使用batchSave接口实现大量数据的批量写入,提高了整体效率,并能有效支持高吞吐量需求。
4. **实时监控与异常处理**
- 建立集中式的监控和告警体系,对每一个任务进行全程跟踪。一旦出现错误,通过异常重试机制保证任务最终成功完成,从而提高系统可靠性。
5. **日志记录及分析**
- 在整个过程中,对各个环节进行详细的日志记录,便于后期分析与优化。同时,利用可视化工具直观展示每一步操作详情和执行状态。
这种方法不仅提升了所需业务流程自动化程度,还确保了从源头到目标端每个环节都得到严密控制,实现业务透明度最大化。对于大多数涉及复杂多变数据信息桥接的问题,此类解决方案提供了一种全面且灵活的方法来应对多样化挑战。
![如何对接钉钉API接口](https://pic.qeasy.cloud/D35.png~tplv-syqr462i7n-qeasy.image)
### 调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口来获取收款退款单的数据,并进行初步加工。
#### 接口配置与请求参数
首先,我们需要配置接口和请求参数。根据元数据配置,我们使用POST方法调用`executeBillQuery`接口,主要参数如下:
- **api**: `executeBillQuery`
- **method**: `POST`
- **number**: `FBillNo`
- **id**: `FREFUNDBILLENTRY_FEntryID`
- **pagination**: 支持分页,每页500条记录
- **idCheck**: true,表示需要检查ID
请求字段包括但不限于以下内容:
```json
[
{"field":"FREFUNDBILLENTRY_FEntryID","label":"FREFUNDBILLENTRY_FEntryID","type":"string"},
{"field":"FID","label":"实体主键","type":"string"},
{"field":"FBillNo","label":"单据编号","type":"string"},
{"field":"FDOCUMENTSTATUS","label":"单据状态","type":"string"},
{"field":"FCreaterId","label":"创建人","type":"string"},
{"field":"FCreateDate","label":"创建日期","type":"string"},
// 更多字段...
]
```
其他请求参数包括分页参数、过滤条件等:
```json
[
{"field": "Limit", "label": "最大行数", "type": "string", "value": "{PAGINATION_PAGE_SIZE}"},
{"field": "StartRow", "label": "开始行索引", "type": "string", "value": "{PAGINATION_START_ROW}"},
{"field": "FilterString", "label": "过滤条件", "type": "string", "value": "FCONTACTUNIT.FNumber= 'PDD14' and FDate >='2024-08-01 00:00:00'"},
{"field": "FieldKeys", "label": "需查询的字段key集合", "type": "array", "parser":{"name":"ArrayToString","params": ","}},
{"field": "FormId", "label": "业务对象表单Id", "type": "string", "value": "AR_REFUNDBILL"}
]
```
#### 调用接口获取数据
在轻易云平台上配置好上述参数后,我们可以发起API请求。示例代码如下:
```python
import requests
url = 'https://api.kingdee.com/executeBillQuery'
headers = {'Content-Type': 'application/json'}
payload = {
'FormId': 'AR_REFUNDBILL',
'FieldKeys': 'FID,FBillNo,FDOCUMENTSTATUS,FCreateDate,FREFUNDBILLENTRY_FEntryID',
'FilterString': 'FCONTACTUNIT.FNumber= \'PDD14\' and FDate >=\'2024-08-01 00:00:00\'',
'Limit': 500,
'StartRow': 0
}
response = requests.post(url, headers=headers, json=payload)
data = response.json()
```
#### 数据清洗与初步加工
获取到数据后,需要对其进行清洗和初步加工,以便后续处理。以下是一些常见的数据清洗步骤:
1. **去除空值和重复值**:确保数据完整性。
2. **字段格式转换**:例如,将日期字符串转换为日期对象。
3. **数据筛选**:根据业务需求筛选出需要的记录。
示例代码如下:
```python
import pandas as pd
# 假设data是从API返回的数据列表
df = pd.DataFrame(data)
# 去除空值和重复值
df.dropna(inplace=True)
df.drop_duplicates(inplace=True)
# 字段格式转换
df['FCreateDate'] = pd.to_datetime(df['FCreateDate'])
# 数据筛选
filtered_df = df[df['FDOCUMENTSTATUS'] == 'A']
```
#### 小结
通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口,可以高效地获取收款退款单的数据。在此过程中,合理配置API请求参数、有效地清洗和加工数据,是确保数据集成成功的关键步骤。
![电商OMS与ERP系统接口开发配置](https://pic.qeasy.cloud/S16.png~tplv-syqr462i7n-qeasy.image)
### 使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口
在轻易云数据集成平台中,将已经集成的源平台数据进行ETL转换,并最终写入目标平台金蝶云星空API接口,是一个复杂但高效的过程。本文将深入探讨这一过程中的技术细节,特别是如何利用元数据配置来实现这一目标。
#### 数据请求与清洗
在数据生命周期的第一步,我们已经完成了数据的请求与清洗。这一步确保了从源系统获取的数据是干净且结构化的,为后续的ETL转换打下了坚实的基础。
#### 数据转换与写入
接下来,我们重点关注如何将清洗后的数据转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。以下是详细步骤和技术要点:
#### 配置API接口元数据
根据提供的元数据配置,我们需要将各个字段映射到金蝶云星空所需的格式。以下是关键字段及其配置解析:
1. **单据类型(FBillTypeID)**
- 类型:字符串
- 解析器:`ConvertObjectParser`
- 参数:`FNumber`
- 默认值:`SKTKDLX01_SYS`
2. **日期(FDATE)**
- 类型:字符串
- 值:`{FDATE}`
3. **往来类型(FCONTACTUNITTYPE)**
- 类型:字符串
- 值:`{FCONTACTUNITTYPE}`
4. **往来单位(FCONTACTUNIT)**
- 类型:字符串
- 解析器:`ConvertObjectParser`
- 参数:`FNumber`
- 映射目标ID:`63556c380bc98d4c8e11c30d`
5. **收款单位类型(FRECTUNITTYPE)**
- 类型:字符串
- 值:`{FRECTUNITTYPE}`
6. **收款单位(FRECTUNIT)**
- 类型:字符串
- 解析器:`ConvertObjectParser`
- 参数:`FNumber`
- 映射目标ID:`63556c380bc98d4c8e11c30d`
7. **币别(FCURRENCYID)**
- 类型:字符串
- 解析器:`ConvertObjectParser`
- 参数:`FNumber`
- 默认值:`PRE001`
8. **结算组织(FSETTLEORGID)**
- 类型:字符串
- 解析器:`ConvertObjectParser`
- 参数:`FNumber`
- 映射目标ID:`6355fe20c4a6d536d27cd8dc`
9. **销售组织(FSALEORGID)**
同上,与结算组织类似。
10. **业务类型(FBUSINESSTYPE)**
同上,直接映射。
11. **汇率(FEXCHANGERATE)**
同上,直接映射。
12. **支付组织(FPAYORGID)**
同上,与结算组织类似。
13. **结算本位币(FSETTLEMAINBOOKID)**
同上,默认值为 `PRE001`.
14. **明细部分 (数组) FREFUNDBILLENTRY**
明细部分包含多个字段,每个字段都有其特定配置。例如:
```json
{
"field": "FACCOUNTID",
"label": "我方银行账号",
"type": "string",
"parser": {
"name": "ConvertObjectParser",
"params": "FNumber"
},
"value": "_function case when '{FCONTACTUNIT}' ='PDD14' then '18011967948' else '{FACCOUNTID}' end",
"parent": "FREFUNDBILLENTRY"
}
```
上述配置表明,如果 `FCONTACTUNIT` 为 `PDD14`, 则银行账号为 `18011967948`, 否则使用 `{FACCOUNTID}` 的值。
#### 批量保存操作
最后一步是将处理后的数据通过批量保存操作 (`batchSave`) 写入金蝶云星空。具体请求参数如下:
```json
{
"FormId": "AR_REFUNDBILL",
"Operation": "BatchSave",
"IsAutoSubmitAndAudit": false,
"IsVerifyBaseDataField": false,
}
```
这些参数确保了我们可以批量保存并提交审核,同时验证基础资料有效性。
### 总结
通过上述详细步骤和技术要点,我们成功地将源平台的数据进行了ETL转换,并最终写入到金蝶云星空API接口中。这一过程充分利用了轻易云数据集成平台提供的强大功能,实现了不同系统间的数据无缝对接,大大提升了业务效率和透明度。
![用友与WMS系统接口开发配置](https://pic.qeasy.cloud/T5.png~tplv-syqr462i7n-qeasy.image)