### 钉钉数据集成到金蝶云星空案例分享:receive-新收款单(其他业务收款)V4.0
在企业级应用场景中,实现不同系统间的数据无缝对接是提升业务效率的重要手段。本篇文章将聚焦于一个具体的技术案例,介绍如何使用轻易云数据集成平台,将钉钉系统中的数据成功集成到金蝶云星空的信息流中。方案名称为“receive-新收款单(其他业务收款)V4.0”,该方案旨在解决财务管理流程中数据分散、处理复杂的问题。
**1. 获取钉钉接口数据**
此解决方案首先通过调用钉钉API v1.0/yida/processes/instances定期可靠地抓取所需的数据信息。为了应对大规模多频次的数据请求,从接口限流与分页处理出发,我们设计了一套高吞吐量的数据获取机制。这不仅确保了实时性,还避免了遗漏单据的问题。
**2. 数据质量监控与异常检测**
获取到原始数据后,进行必要的质量监控和异常检测极为重要。一旦发现不合规或异常数据信息,会触发预设的告警并记录日志,以便后续操作人员检查和纠正。在这个过程中,利用统一视图和控制台功能,有效帮助我们全面掌握API资产情况,实现资源优化配置。
**3. 数据转换与映射**
由于钉钉与金蝶云星空之间存在显著的数据格式差异,我们专门开发了自定义的数据转换逻辑,根据特定业务需求进行细粒度调整。此步骤采用可视化工具来设计和管理整个转换过程,使得配置更加直观简洁,减少人为错误几率,同时提高开发效率。
**4. 批量写入至金蝶云星空**
经过上述清洗与转化后的优质数据会批量提交至金蝶云星空,通过其batchSave API完成最终存储操作。这需要特别关注两个方面:一是确保大量突发性负载下依然能保持稳定、高效的数据写入能力;二是在出现网络波动或者API故障时能及时启动重试机制,以保证任务执行的一致性和完整性。
——
以上就是整合过程中四个关键环节之概述,下文将进一步详解每个环节中的细节实现及特定挑战应对策略。
![电商OMS与ERP系统接口开发配置](https://pic.qeasy.cloud/D34.png~tplv-syqr462i7n-qeasy.image)
### 调用钉钉接口v1.0/yida/processes/instances获取并加工数据
在数据集成生命周期的第一步,我们需要调用源系统的API接口以获取原始数据。本文将详细探讨如何通过钉钉接口`v1.0/yida/processes/instances`来获取数据,并进行初步加工处理。
#### 接口调用配置
首先,我们需要配置API调用的元数据。根据提供的metadata,我们可以看到该接口使用POST方法,并包含多个请求参数。以下是关键参数及其配置:
- **分页页码(pageNumber)**:用于控制分页,初始值为`{PAGINATION_START_PAGE}`。
- **分页大小(pageSize)**:每页返回的数据条数,初始值为`{PAGINATION_PAGE_SIZE}`。
- **应用ID(appType)**:固定值为`APP_WTSCMZ1WOOHGIM5N28BQ`。
- **应用秘钥(systemToken)**:固定值为`IS866HB1DXJ8ODN3EXSVD750RBTK2X72R8MELL4`。
- **用户ID(userId)**:固定值为`16000443318138909`。
- **语言(language)**:默认为中文,即`zh_CN`。
- **表单ID(formUuid)**:固定值为`FORM-OS566L910XZ9MAUKDXIG9BZKX2P12AUKTGKGL5`。
此外,还有一些可选的过滤条件,如费用类型、部门过滤、创建时间范围等,这些条件可以根据实际需求进行调整。
#### 请求示例
以下是一个完整的请求示例:
```json
{
"pageNumber": "1",
"pageSize": "20",
"appType": "APP_WTSCMZ1WOOHGIM5N28BQ",
"systemToken": "IS866HB1DXJ8ODN3EXSVD750RBTK2X72R8MELL4",
"userId": "16000443318138909",
"language": "zh_CN",
"formUuid": "FORM-OS566L910XZ9MAUKDXIG9BZKX2P12AUKTGKGL5",
"searchFieldJson": {
"selectField_lgkgut6u": ["其他业务收款", "银行理财"],
"selectField_lgkgut6b": ""
},
"createFromTimeGMT": "_function DATE_FORMAT(DATE_ADD(NOW(),INTERVAL - 25 DAY),'%Y-%m-%d 00:00:00')",
"createToTimeGMT": "{{CURRENT_TIME|datetime}}",
"instanceStatus": "COMPLETED",
"approvedResult": "agree"
}
```
#### 数据清洗与转换
在获取到原始数据后,需要对数据进行清洗和转换,以便后续的数据处理和写入。以下是几个关键步骤:
1. **字段映射与重命名**:
- 将原始数据中的字段映射到目标系统所需的字段名称。例如,将`processInstanceId`映射为目标系统中的唯一标识符。
2. **数据格式转换**:
- 将日期格式从UTC时间转换为本地时间,或者根据业务需求进行其他格式转换。
3. **数据过滤与筛选**:
- 根据业务逻辑对数据进行过滤,例如只保留审批结果为“agree”的记录。
#### 实践案例
假设我们需要集成一个新的收款单(其他业务收款),我们可以按照以下步骤进行操作:
1. **调用API获取数据**:
- 使用上述请求示例,通过POST方法调用钉钉接口,获取符合条件的流程实例数据。
2. **解析响应数据**:
- 对响应的数据进行解析,提取出需要的字段信息,如标题、流程实例ID等。
3. **清洗与转换**:
- 对提取出的字段进行必要的清洗和转换,例如将日期格式统一、去除无效字符等。
4. **写入目标系统**:
- 将清洗后的数据写入目标系统,以便进一步处理和分析。
通过以上步骤,我们可以高效地从钉钉系统中获取并加工所需的数据,为后续的数据处理和分析奠定基础。
![数据集成平台API接口配置](https://pic.qeasy.cloud/S26.png~tplv-syqr462i7n-qeasy.image)
### 使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口
在数据集成过程中,将源平台的数据转换为目标平台所能接受的格式是关键步骤。本文将详细探讨如何使用轻易云数据集成平台,将已集成的源数据通过ETL(提取、转换、加载)过程,转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。
#### 元数据配置解析
元数据配置是ETL过程中的核心部分,它定义了如何将源数据字段映射到目标平台的字段。以下是元数据配置的详细解析:
```json
{
"api": "batchSave",
"method": "POST",
"idCheck": true,
"operation": {
"method": "batchArraySave",
"rows": 1,
"rowsKey": "array"
},
"request": [
{"field":"FBillNo","label":"单据编号","type":"string","value":"{serialNumberField_lgorr6rv}(SKD)"},
{"field":"FBillTypeID","label":"单据类型","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"SKDLX02_SYS"},
{"field":"FDATE","label":"日期","type":"string","value":"_function FROM_UNIXTIME( ( {dateField_lgkgut9r} \/ 1000 ) ,'%Y-%m-%d' )"},
{"field":"FPAYORGID","label":"收款组织","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{textField_lgkgut7u}"},
{"field":"FCONTACTUNITTYPE","label":"往来单位类型","type":"string","value":"{textField_lgkgut7p}"},
{"field":"FCONTACTUNIT","label":"往来单位","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{textField_lgkgut7o}"},
{"field":"FPAYUNITTYPE","label":"付款单位类型","type":"string","value":"{textField_lgkgut7p}"},
{"field":"FPAYUNIT","label":"付款单位","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{textField_lgkgut7o}"},
{"field":"FCURRENCYID","label":"币别","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"PRE001"},
{"field":...
```
#### 数据字段映射与转换
1. **单据编号(FBillNo)**:
- 类型:字符串
- 值:`{serialNumberField_lgorr6rv}(SKD)`
- 描述:将源数据中的`serialNumberField_lgorr6rv`字段值添加后缀“(SKD)”作为单据编号。
2. **单据类型(FBillTypeID)**:
- 类型:字符串
- 转换器:`ConvertObjectParser`
- 参数:`FNumber`
- 值:`SKDLX02_SYS`
- 描述:使用固定值“SKDLX02_SYS”并通过`ConvertObjectParser`进行转换。
3. **日期(FDATE)**:
- 类型:字符串
- 值:`_function FROM_UNIXTIME( ( {dateField_lgkgut9r} / 1000 ) ,'%Y-%m-%d' )`
- 描述:将UNIX时间戳转换为标准日期格式。
4. **收款组织(FPAYORGID)**:
- 类型:字符串
- 转换器:`ConvertObjectParser`
- 参数:`FNumber`
- 值:`{textField_lgkgut7u}`
- 描述:将源数据中的文本字段值通过转换器进行处理。
5. **往来单位类型与往来单位**:
- 类型:字符串
- 转换器与参数同上,分别为`{textField_lgkgut7p}`和`{textField_lgkgut7o}`。
6. **币别、结算币别、结算本位币、帐薄**:
- 类型:字符串
- 转换器:`ConvertObjectParser`
- 参数:`FNumber`
- 固定值:“PRE001”
#### 分录处理
分录部分涉及多个子字段,每个子字段都需要进行相应的映射和转换:
1. **结算方式(FSETTLETYPEID)**:
- 类型:字符串
- 转换器:`ConvertObjectParser`
- 参数:`FNumber`
- 值:“JSFS04_SYS”
2. **收款用途(FPURPOSEID)**:
- 类型:字符串
- 转换器同上,值为 `{textField_lgkgut9o}`。
3. **费用承担部门、应收金额、我方银行账号、登账日期、备注**:
各自对应不同的源字段,通过相应的转换器进行处理。
#### API请求构建
根据上述元数据配置,我们需要构建一个符合金蝶云星空API要求的请求体。以下是示例请求体结构:
```json
{
"FormId": "AR_RECEIVEBILL",
"Operation": "BatchSave",
"IsAutoSubmitAndAudit": true,
"IsVerifyBaseDataField": false,
"Model": {
"FBillNo": "{serialNumberField_lgorr6rv}(SKD)",
...
// 更多字段映射...
"FRECEIVEBILLENTRY": [
{
...
// 分录子字段映射...
}
]
}
}
```
#### 数据写入
使用轻易云的数据集成功能,通过HTTP POST方法将构建好的请求体发送到金蝶云星空API接口,实现数据写入。具体步骤如下:
1. 配置HTTP请求头,确保包含必要的认证信息。
2. 使用POST方法发送请求体到指定API地址。
3. 捕获响应结果,处理成功或失败情况。
通过上述步骤,我们可以高效地完成从源平台到金蝶云星空的ETL过程,实现不同系统间的数据无缝对接。这不仅提升了业务透明度和效率,还确保了数据的一致性和准确性。
![用友与MES系统接口开发配置](https://pic.qeasy.cloud/T13.png~tplv-syqr462i7n-qeasy.image)