轻易云数据集成:从金蝶付款申请单到钉钉的实践案例

  • 轻易云集成顾问-李国敏
### 案例分享:金蝶付款申请单->钉钉供应商月结付款① 在本案例中,我们将详细探讨如何通过轻易云数据集成平台,将金蝶云星空的付款申请单数据集成到钉钉平台,实现供应商月结付款的自动化处理。该方案基于实际业务需求,通过调用金蝶云星空的数据查询API`executeBillQuery`,获取相关的付款申请单数据,并利用钉钉的数据写入API`topapi/processinstance/create`进行目标系统的数据同步。 #### 集成过程中关键技术要点: 1. **高效数据写入**: 使用轻易云提供的大量数据快速写入机制,实现了从金蝶云星空到钉钉的大吞吐量数据传输,从而确保了支付信息能够及时、准确地更新到目标系统中。这一过程极大提升了整体处理时效性。 2. **集中监控与告警**: 通过轻易云平台提供的集中监控和告警功能,实时追踪整个集成任务的状态和性能。一旦出现异常情况,例如接口响应时间过长或请求失败,系统会立即触发告警通知相关运维人员,保障业务连续性和可靠性。 3. **自定义转换逻辑**: 在集成过程中,由于需求不同,需要对原始数据进行特定格式转换。例如,从金蝶云星空获取的数据可能包含多个字段,而这些字段在传输至钉钉之前需要经过映射与变换。我们使用自定义转换规则,以保证两套系统间的数据一致性和兼容性。 4. **分页与限流管理**: 对于大量记录导出操作,我们采取了分页处理方式来规避接口限流问题。在每次调用`executeBillQuery` API时,对返回结果设置合理的分页参数,这不仅能有效避免超时风险,还能确保每次批量提取均得到完整且无遗漏的数据集合。 5. **错误重试机制**: 为应对网络波动或临时故障等不可抗力因素,我们设计了一套完善的错误重试机制。当某个请求失败后,系统将根据预设策略执行多次尝试,同时记录日志并生成相应报表,用以事后审查和优化流程,提高整体稳定性。 这一系列措施共同作用,使得“金蝶付款申请单-> 钉订单采购”这一场景中的复杂业务逻辑得以简化为直观且可管理的工作流程,为企业实现财务模块自动化带来了显著价值。在接下来的部分中,我们将深入解析具体配置步骤及代码示例,以便读者更好地理解其实现细节。 ![打通用友BIP数据接口](https://pic.qeasy.cloud/D28.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口来获取付款申请单的数据,并进行初步加工。 #### 接口配置与请求 首先,我们需要配置元数据,以便正确调用金蝶云星空的API接口。以下是关键的元数据配置: ```json { "api": "executeBillQuery", "method": "POST", "number": "FBillNo", "id": "FBillNo", "pagination": { "pageSize": 500 }, "idCheck": true, "condition": [ [ { "field": "FPAYORGID", "logic": "eq", "value": "9.01" } ] ], ... } ``` 该配置指定了API名称为`executeBillQuery`,请求方法为POST,并设置了分页参数,每页返回500条记录。同时,通过条件过滤字段`FPAYORGID`等于`9.01`来限定查询范围。 #### 请求字段与响应处理 为了确保我们获取到所需的所有信息,需要在请求中指定多个字段。以下是部分关键字段: ```json { "request": [ {"field":"FID","label":"实体主键","type":"string","value":"FID"}, {"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"}, {"field":"FDOCUMENTSTATUS","label":"单据状态","type":"string","value":"FDOCUMENTSTATUS"}, {"field":"FCREATORID","label":"创建人","type":"string","value":"FCREATORID"}, ... ], ... } ``` 这些字段包括实体主键、单据编号、单据状态、创建人等,确保我们能够全面了解每一条付款申请单的详细信息。 #### 分页与过滤条件 为了高效地处理大量数据,我们采用分页机制。分页参数如下: ```json { "otherRequest": [ {"field":"Limit","label":"最大行数","type":"string","describe":"金蝶的查询分页参数","value":"{PAGINATION_PAGE_SIZE}"}, {"field":"StartRow","label":"开始行索引","type":"string","describe":"金蝶的查询分页参数","value":"{PAGINATION_START_ROW}"}, ... ] } ``` 此外,我们可以通过过滤条件进一步精确查询,例如: ```json { "otherRequest": [ {"field":"FilterString","label":"过滤条件","type":"string","describe":"示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=","value":"FApproveDate>='{{LAST_SYNC_TIME|dateTime}}'"} ] } ``` 此处的过滤条件用于筛选特定供应商或特定时间段内的数据。 #### 数据清洗与转换 在获取到原始数据后,下一步是进行数据清洗和转换。清洗步骤包括去除重复记录、格式化日期和金额字段等。转换步骤则可能涉及将某些字段值映射到目标系统中的对应值。例如,将金蝶中的币别代码转换为钉钉系统中的对应代码。 #### 实际应用案例 假设我们需要将金蝶云星空中的付款申请单数据同步到钉钉供应商月结付款系统。具体操作步骤如下: 1. **调用API**:使用上述配置,通过轻易云平台调用`executeBillQuery`接口。 2. **解析响应**:解析API返回的数据,提取所需字段。 3. **数据清洗**:对提取的数据进行清洗,如去除无效记录、格式化日期。 4. **数据转换**:将清洗后的数据转换为目标系统所需格式。 5. **写入目标系统**:通过轻易云平台,将处理后的数据写入钉钉供应商月结付款系统。 通过以上步骤,我们实现了从金蝶云星空到钉钉系统的数据无缝对接,确保业务流程顺畅、高效。 以上内容详细介绍了如何利用轻易云平台调用金蝶云星空接口获取并加工付款申请单数据。这一过程不仅提升了业务透明度,还极大地提高了工作效率。 ![打通金蝶云星空数据接口](https://pic.qeasy.cloud/S16.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台实现金蝶付款申请单到钉钉供应商月结付款的ETL转换 在数据集成的过程中,将金蝶付款申请单的数据转换为钉钉API接口所能够接收的格式是一个关键步骤。本文将详细探讨如何利用轻易云数据集成平台完成这一过程,重点介绍如何配置和使用元数据来实现ETL(Extract, Transform, Load)转换,并最终将数据写入钉钉目标平台。 #### 钉钉API接口配置 首先,我们需要了解钉钉API接口的配置要求。在本案例中,目标平台为钉钉,其API接口为`topapi/processinstance/create`,请求方法为`POST`。以下是具体的元数据配置: ```json { "api": "topapi/processinstance/create", "method": "POST", "idCheck": true, "request": [ { "field": "process_code", "label": "审批流的唯一码", "type": "string", "describe": "process_code在审批流程编辑页面的URL网址中获取。", "value": "PROC-BB90A28C-0800-4F37-A972-E23EA258CA09" }, { "field": "originator_user_id", "label": "发起人", "type": "string", "describe": "审批实例发起人的userid。", "value": "_findCollection find user_id from ac26166e-93e7-382b-80ad-25a9eba3166e where name={F_VAOJ_FQR}" }, { "field": "dept_id", "label": "发起人所在部门", "type": "string", "describe": "发起人所在的部门,如果发起人属于根部门,传-1。", "value": "_findCollection find leader_in_dept.0.dept_id from ac26166e-93e7-382b-80ad-25a9eba3166e where name={F_VAOJ_FQR}" }, { "field": "form_component_values", "label": "审批流表单参数", "type": "object", ... } ] } ``` #### 数据提取与转换 在ETL流程中,首先需要从源系统(即金蝶)提取相关数据。提取的数据包括单据编号、货款所属项目、供应商名称、付款时间等。接下来是数据转换阶段,我们需要将这些数据转换为符合钉钉API接口要求的格式。 1. **提取单据编号**:从金蝶系统中提取单据编号并赋值给`form_component_values`中的`单据编号`字段。 ```json { ... {"field":"单据编号","type":"string","value":"{FBillNo}","parent":"form_component_values"} ... } ``` 2. **货款所属项目**:此字段需要进行映射和反向映射操作。 ```json { ... {"field":"货款所属项目","type":"string","value":"{FSETTLEORGID}","parent":"form_component_values","mapping":"6295fa8ab3945438dd215d24","mappingDirection":"reverse"} ... } ``` 3. **供应商名称**:直接从源系统中获取并赋值。 ```json { ... {"field":"供应商名称","type":"string","value":"{FCONTACTUNIT}","parent":"form_component_values"} ... } ``` 4. **付款时间**:需要进行日期格式化处理。 ```json { ... {"field":"付款时间","type":"string","value":"{{FCREATEDATE|date}}","parent":"form_component_values"} ... } ``` 5. **货款属性**:根据条件进行转换。 ```json { ... {"field":"货款属性","type":"string","value":"_function case '{F_VAOJ_HKSX}' when 'CP' then '成品' else '辅料' end","parent":"form_component_values"} ... } ``` 6. **备注**:添加前缀说明。 ```json { ... {"field":"备注","type":"string","value":"备注为:{F_VAOJ_Remarks}","parent":"form_component_values"} ... } ``` 7. **付款金额(元)**:直接赋值。 ```json { ... {"field":"付款金额(元)","type":"string","value":"{FAPPLYAMOUNTFOR_H}","parent":"form_component_values"} ... } ``` 8. **收款人信息**:包括收款人公司名称和帐号。 ```json { ... {"field":"收款人(公司名称)","type":"string","value":"{FEACHCCOUNTNAME}","parent":"form_component_values"}, {"field":"收款人帐号","type":"string","value":"{FEACHBANKACCOUNT}","parent":"form_component_values"} ... } ``` #### 数据写入 完成上述数据转换后,即可将处理后的数据通过POST请求写入到钉钉目标平台。确保所有字段都已正确映射,并且符合API接口要求。 ```python import requests url = 'https://oapi.dingtalk.com/topapi/processinstance/create' headers = {'Content-Type': 'application/json'} data = { 'process_code': 'PROC-BB90A28C-0800-4F37-A972-E23EA258CA09', 'originator_user_id': originator_user_id, 'dept_id': dept_id, 'form_component_values': form_component_values } response = requests.post(url, headers=headers, json=data) if response.status_code == 200: print("Data successfully written to DingTalk") else: print("Failed to write data to DingTalk", response.text) ``` 通过以上步骤,我们成功地将金蝶付款申请单的数据经过ETL转换后写入到了钉钉供应商月结付款系统。这一过程展示了如何利用轻易云数据集成平台高效地完成复杂的数据集成任务。 ![打通钉钉数据接口](https://pic.qeasy.cloud/T26.png~tplv-syqr462i7n-qeasy.image)