### 案例分享:钉钉数据集成到金蝶云星空
在企业财务管理中,实现多个系统之间的数据无缝对接是提升业务效率的关键一步。本案例将详细介绍如何通过轻易云数据集成平台,实现钉钉报销【项目报销类】数据与金蝶付款单【晨丰】的高效对接。
首先,我们需要确保从钉钉获取的数据不漏单且能够快速、可靠地写入到金蝶云星空。为了实现这一目标,使用了以下几个关键API和技术方案:
1. **定时抓取与接口调用**:
- 钉钉提供了`topapi/processinstance/get`接口,用于获取报销流程实例的信息。通过配置定时任务,平台可以在预设时间点自动调用该接口,从而保证数据及时抓取。
2. **分页和限流处理**:
- 当读取大量记录时,为避免超过API调用限制,对返回结果进行分页处理,同时遵循限流机制,确保不会触发API访问上限。
3. **批量写入到金蝶云星空**:
- 将从钉钉采集到的数据批量写入至金蝶云星空,提高操作效率。这里主要用到了`batchSave`接口,该接口支持一次性提交多条记录,有效减少网络请求次数,加快整体操作速度。
4. **格式差异化处理与映射**:
- 由于两大平台的数据结构存在差异,在读入数据后,需要进行适当的格式转换和映射。例如,将不同字段名及其对应值平滑过渡,以符合目标系统要求。此外,还执行必要的数据校验步骤以提高成功率。
5. **异常处理与重试机制**:
- 在整个过程中,对于可能出现的任何异常情况(如网络中断或第三方服务端问题),我们设计了一套完善的错误捕捞和重试机制。这包括实时监控每次操作日志,当检测到失败时自动尝试重新执行相应步骤,并记录所有相关信息供进一步分析。
本案例展示了如何借助轻易云平台,一步步解决从初始需求分析,到具体实施过程中的各项挑战,最终实现两个重要系统间高效、安全、稳定的数据同步。在接下来的部分,将更深入探讨上述每个环节所涉及的实际配置细节及代码示例。
![系统集成平台API接口配置](https://pic.qeasy.cloud/D13.png~tplv-syqr462i7n-qeasy.image)
### 调用钉钉接口topapi/processinstance/get获取并加工数据的技术案例
在数据集成过程中,调用源系统的API接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用钉钉接口`topapi/processinstance/get`,获取并加工报销数据,以实现与金蝶付款单的无缝对接。
#### 接口调用配置
首先,我们需要配置调用钉钉接口的元数据。根据提供的元数据配置,可以看到我们需要使用POST方法来调用`topapi/processinstance/get`接口,并且需要传递特定的参数和条件。
```json
{
"api": "topapi/processinstance/get",
"method": "POST",
"number": "number",
"id": "id",
"idCheck": true,
"condition": [
[
{
"field": "报销类别",
"logic": "eq",
"value": "项目报销类"
}
]
]
}
```
#### 数据请求与清洗
1. **构建请求参数**:
根据元数据配置,我们需要构建一个POST请求,其中包含必要的参数,如报销类别为“项目报销类”的条件。
```json
{
"process_instance_id": "<process_instance_id>",
"user_id": "<user_id>"
}
```
2. **发送请求**:
使用轻易云平台提供的API调用功能,发送上述构建好的请求到钉钉接口。
3. **处理响应**:
钉钉接口返回的数据可能包含多个字段,我们需要根据业务需求进行筛选和清洗。例如,只保留与项目报销相关的信息,并去除冗余字段。
#### 数据转换与写入
1. **数据转换**:
将从钉钉获取的数据转换为金蝶付款单所需的数据格式。这一步通常涉及字段映射和数据类型转换。例如,将“报销金额”字段从字符串转换为数值类型,以便后续处理。
2. **写入目标系统**:
最后,将处理好的数据写入金蝶系统中。轻易云平台支持多种异构系统间的数据对接,因此可以方便地将转换后的数据通过API或数据库连接写入金蝶付款单模块。
#### 实际案例
假设我们从钉钉获取到以下原始数据:
```json
{
"process_instance_id": "1234567890",
"title": "项目报销 - 张三",
"create_time": "2023-10-01T12:00:00Z",
"finish_time": null,
"form_component_values": [
{
"name": "报销金额",
"value": "1000"
},
{
"name": "报销类别",
"value": "项目报销类"
},
{
"name": "备注",
"value": ""
}
]
}
```
经过清洗和转换后,得到如下格式的数据准备写入金蝶:
```json
{
"单据编号": "<自动生成>",
"申请人": "<user_id>",
"申请日期": "<create_time>",
"金额": 1000,
"备注信息": ""
}
```
在这个过程中,轻易云平台通过全透明可视化操作界面,使得每一步的数据处理都清晰可见,并实时监控数据流动和处理状态,大大提升了业务透明度和效率。
通过以上步骤,我们成功实现了从钉钉获取项目报销类数据,并将其无缝对接到金蝶付款单中。这不仅提高了数据处理效率,还确保了数据的一致性和准确性。
![金蝶与MES系统接口开发配置](https://pic.qeasy.cloud/S21.png~tplv-syqr462i7n-qeasy.image)
### 将钉钉报销数据转换并写入金蝶云星空API接口的技术案例
在数据集成过程中,第二步是将已经集成的源平台数据进行ETL(提取、转换、加载)转换,转为目标平台所能够接收的格式。本文将详细探讨如何使用轻易云数据集成平台,将钉钉报销【项目报销类】的数据转换为金蝶付款单【晨丰】的数据格式,并通过金蝶云星空API接口进行写入。
#### 数据请求与清洗
在这一步中,我们已经从钉钉获取了报销数据。接下来,我们需要对这些数据进行清洗和预处理,以确保其符合目标系统的要求。这包括字段的映射、数据类型的转换以及必要的数据校验。
#### 数据转换与写入
我们主要使用金蝶云星空API接口`batchSave`方法来实现数据的批量保存操作。以下是具体的元数据配置和对应的字段映射。
##### API 接口配置
```json
{
"api": "batchSave",
"method": "POST",
"idCheck": true,
"operation": {
"method": "batchArraySave",
"rows": 1,
"rowsKey": "array"
},
"request": [
{"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{{extend.business_id}}"},
{"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNUMBER"},"value":"FKDLX04_SYS"},
{"field":"FDATE","label":"业务日期","type":"string","describe":"业务日期","value":"{{extend.create_time}}"},
{"field":"FSETTLEORGID","label":"结算组织","type":"string","describe":"100","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_findCollection find Number from 723e2cb6-f80f-3823-8b4f-6e98b9713ba3 where Name={{费用归属项目}}"},
{"field":"FPAYORGID","label":"付款组织","type":"string","describe":"100","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_findCollection find Number from 723e2cb6-f80f-3823-8b4f-6e98b9713ba3 where Name={{费用归属项目}}"},
{"field":"FCURRENCYID","label":"币别","type":"string","describe":"币别","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"PRE001"},
{"field":"FCONTACTUNITTYPE","label":"往来单位类型","type":"","describe":"","value":"","parser":{"name":"","params":""},"defaultValue":"","required":false},
{"field":"","label":"","type":"","describe":"","value":"","parser":{"name":"","params":""},"defaultValue":"","required":false},
...
],
"otherRequest":[
{"field": "FormId", "label": "业务对象表单Id", "type": "string", "describe": "", "value": ""},
...
]
}
```
##### 字段映射与解析
1. **单据编号 (FBillNo)**
- 来源:`{{extend.business_id}}`
- 类型:字符串
- 描述:单据编号
2. **单据类型 (FBillTypeID)**
- 来源:固定值 `FKDLX04_SYS`
- 类型:字符串
- 描述:单据类型
- 解析器:`ConvertObjectParser`,参数 `FNUMBER`
3. **业务日期 (FDATE)**
- 来源:`{{extend.create_time}}`
- 类型:字符串
- 描述:业务日期
4. **结算组织 (FSETTLEORGID)**
- 来源:动态查询 `_findCollection find Number from ... where Name={{费用归属项目}}`
- 类型:字符串
- 描述:结算组织
- 解析器:`ConvertObjectParser`,参数 `FNumber`
5. **付款组织 (FPAYORGID)**
- 来源:动态查询 `_findCollection find Number from ... where Name={{费用归属项目}}`
- 类型:字符串
- 描述:付款组织
- 解析器:`ConvertObjectParser`,参数 `FNumber`
6. **币别 (FCURRENCYID)**
- 来源:固定值 `PRE001`
- 类型:字符串
- 描述:币别
- 解析器:`ConvertObjectParser`,参数 `FNumber`
7. **往来单位类型 (FCONTACTUNITTYPE)**
- 来源:固定值 `BD_Department`
- 类型:字符串
- 描述:往来单位类型
8. **往来单位 (FCONTACTUNIT)**
- 来源:`{{费用归属部门_关联}}`
- 类型:字符串
- 描述:往来单位
- 解析器:`ConvertObjectParser`,参数 `FNumber`
9. **收款单位类型 (FRECTUNITTYPE)**
- 来源:固定值 `BD_Department`
- 类型:字符串
- 描述:"收款单位类型"
10. **收款单位 (FRECTUNIT)**
- 来源: `{{费用归属部门_关联}}`
- 类型: 字符串
...
##### 子表明细配置
1. **结算方式 (FPAYBILLENTRY.FSETTLETYPEID)**
```json
{
"field": "FPAYBILLENTRY.FSETTLETYPEID",
...
...
...
...
...
...
...
...
...
...
...
...
...
![如何开发用友BIP接口](https://pic.qeasy.cloud/T6.png~tplv-syqr462i7n-qeasy.image)