企业数据集成最佳实践:轻易云平台下的金蝶与每刻系统对接

  • 轻易云集成顾问-黄宏棵
### 系统对接案例分享:金蝶银行账号 -> 每刻支付账户(银行账户) 在企业信息化操作中,系统间的数据集成一直是个关键议题。本篇文章将分享一个具体的技术案例:如何通过轻易云数据集成平台,将金蝶云星空中的银行账号数据无缝对接到每刻支付账户,在此过程中,我们使用了executeBillQuery接口来获取金蝶云星空中的数据,并通过每刻的/api/openapi/enterprise/account/import接口进行数据写入。下面我们详细介绍这个过程中的一些关键技术点。 #### 数据获取与API调用 首先,我们需要从金蝶云星空中抓取相关的银行账号数据信息。这一步骤涉及到调用其提供的executeBillQuery API接口。为了确保数据不漏单且高效实时地被处理,我们配置了定时抓取任务。这不仅优化了资源利用,还最大限度地减少手工介入带来的误差和延迟。 ```json { "apiName": "executeBillQuery", "queryParameters": { // 查询参数,根据业务需求自定义 } } ``` #### 数据转换与映射 不同系统间往往存在着数据结构上的差异,这就要求我们在完成基础的数据提取之后,对其进行必要的清洗和转换。在这个案例中,通过轻易云的数据转换逻辑功能,自定义设计了一套规则,将金蝶云星空返回的信息转化为符合每刻格式的数据结构。例如,对字段名称、类型以及值域范围做出相应调整,以适应目标系统的要求。 ```json { "sourceField1": "targetField1", "sourceField2": { "transformRule": "$.field * 1000" // 自定义转换逻辑示例 } } ``` #### 批量写入及监控告警 当转化后的数据准备就绪后,需要批量导入至每刻支付账户。我们利用每刻提供的批量导入API /api/openapi/enterprise/account/import,实现统一高效的数据录入。同时,为保证整个流程顺利运行,平台配置了集中监控和告警机制,从而能够实时跟踪任务状态并及时发现并处理异常情况,这一切都大大提升了业务透明度和可靠性。 ```json { "url": "/api/openapi/enterprise/account/import", "dataPayload": [ // 转换后的一组记录示例 { /* ... */ } ] } ``` 这只是实现这一神奇过程的一部分内容,更详细方案将在下文继续探讨。在实际操作中,还有许多细节需要注意,比如分页管理、限流控制等,对于这些问题会逐步深入阐述 ![打通企业微信数据接口](https://pic.qeasy.cloud/D21.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口,以获取银行账户相关数据,并进行初步加工。 #### 接口配置与请求参数 首先,我们需要了解`executeBillQuery`接口的基本配置和请求参数。根据元数据配置,接口采用POST方法,主要字段包括银行账号、账户名称、创建日期等。以下是具体的请求参数配置: ```json { "api": "executeBillQuery", "method": "POST", "number": "FName", "id": "FNumber", "pagination": { "pageSize": 100 }, "request": [ {"field": "FBANKACNTID", "label": "实体主键", "type": "string", "value": "FBANKACNTID"}, {"field": "FDocumentStatus", "label": "数据状态", "type": "string", "value": "FDocumentStatus"}, {"field": "FForbidStatus", "label": "禁用状态", "type": "string", "value": "FForbidStatus"}, {"field": "FName", "label": "账户名称", "type": "string", "value": "FName"}, {"field": "FNumber", "label": "银行账号", "type":="string","value":"FNumber"}, {"field":"FDescription","label":"备注","type":"string","value":"FDescription"}, {"field":"FCreateOrgId_Fnumber","label":"创建组织","type":"string","value":"FCreateOrgId.Fnumber"}, {"field":"FUseOrgId_Fnumber","label":"使用组织","type":"string","value":"FUseOrgId.Fnumber"}, {"field":"FCreateDate","label":"创建日期","type":"string","value":"FCreateDate"}, {"field":"FModifyDate","label":"修改日期","type":"string","value":"FModifyDate"}, {"field":"FACNTBRANCHNUMBER","label":"开户银行联行号","type":"string","value":"FACNTBRANCHNUMBER"}, {"field":"FACNTAREACODE","label":"账户地区码","type":"string","value":"FACNTAREACODE"}, {"field":"FACNTAREANAME","label":"账户地区名","type":"string","value":"FACNTAREANAME"}, {"field":"FBANKID_Fnumber","label":"开户银行","type=":"string"=","value"="FBANKID.Fname"}, {"field"=":""=:"=:"=:"=:"=:"=:"=:"=:"=:"=:"=:"=:"=:"=:"=:"=:"=:"=: ``` #### 分页与过滤条件 为了提高查询效率,我们通常会对大数据量进行分页处理。元数据中定义了分页参数`pageSize`为100,这意味着每次请求最多返回100条记录。此外,还可以通过过滤条件来精确控制查询结果。例如,可以根据审核日期和开户银行进行过滤: ```json { ... ,"otherRequest":[ { ... ,"FilterString": { ... ,"describe": ... ,"示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=" ,"value": ... ,"示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=" ,"示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=" ,"示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=" ,"示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=" ,"示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=" ,"示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=" ,"示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=" ,"示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=" ,"示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=" ``` #### 数据清洗与转换 在获取到原始数据后,需要对其进行清洗和转换,以满足目标系统的要求。例如,可以将日期格式统一转换为ISO标准格式,或者对某些字段进行合并或拆分。以下是一个简单的数据清洗和转换示例: ```python import pandas as pd # 假设从接口获取的数据存储在dataframe中 df = pd.DataFrame(data) # 转换日期格式 df['创建日期'] = pd.to_datetime(df['创建日期']).dt.strftime('%Y-%m-%dT%H:%M:%SZ') df['修改日期'] = pd.to_datetime(df['修改日期']).dt.strftime('%Y-%m-%dT%H:%M:%SZ') # 合并字段 df['完整地址'] = df['省'] + df['城市'] + df['地区'] # 清洗无效数据 df_cleaned = df.dropna(subset=['银行账号', '账户名称']) ``` #### 数据写入目标系统 经过清洗和转换后的数据可以通过轻易云平台的其他功能模块,进一步处理并最终写入目标系统。这一步骤通常涉及到API调用、数据库操作等。 通过上述步骤,我们实现了从金蝶云星空获取银行账户信息,并进行了初步的数据清洗和转换,为后续的数据集成打下了坚实基础。在实际项目中,根据具体需求,还可以进一步优化和扩展这些操作。 ![金蝶与WMS系统接口开发配置](https://pic.qeasy.cloud/S30.png~tplv-syqr462i7n-qeasy.image) ### 数据转换与写入:金蝶银行账号到每刻支付账户的ETL过程 在数据集成的生命周期中,数据转换与写入是至关重要的一步。本文将深入探讨如何利用轻易云数据集成平台,将金蝶系统中的银行账号数据转换为每刻API接口所能接收的格式,并最终写入目标平台。 #### 接口配置与元数据解析 首先,我们需要理解目标平台每刻API接口的元数据配置。以下是我们要使用的元数据配置: ```json { "api": "/api/openapi/enterprise/account/import", "method": "POST", "idCheck": true, "request": [ {"field":"payerPaymentType","label":"账户类型","type":"string","value":"银行账户"}, {"field":"bankAcctName","label":"户名","type":"string","value":"{FName}"}, {"field":"bankAcctNumber","label":"账号","type":"string","describe":"部分必填","value":"{FNumber}"}, {"field":"bankName","label":"开户银行","type":"string","describe":"部分必填","value":"{FBANKID_Fnumber}"}, {"field":"bankCountry","label":"国家和地区","type":"string","describe":"部分必填","value":"中国"} ] } ``` #### 数据请求与清洗 在进行ETL转换之前,我们需要从源系统金蝶中获取原始数据,并进行必要的数据清洗。假设我们已经完成了这一阶段,获得了如下清洗后的数据: ```json { "FName": "张三", "FNumber": "6222020200001234567", "FBANKID_Fnumber": "中国工商银行" } ``` #### 数据转换 接下来,我们根据每刻API接口的要求,对上述清洗后的数据进行字段映射和转换。以下是具体步骤: 1. **账户类型**:固定值为“银行账户”。 2. **户名**:对应金蝶中的`FName`字段。 3. **账号**:对应金蝶中的`FNumber`字段。 4. **开户银行**:对应金蝶中的`FBANKID_Fnumber`字段。 5. **国家和地区**:固定值为“中国”。 通过这些映射,我们可以得到如下符合每刻API接口要求的数据结构: ```json { "payerPaymentType": "银行账户", "bankAcctName": "张三", "bankAcctNumber": "6222020200001234567", "bankName": "中国工商银行", "bankCountry": "中国" } ``` #### 数据写入 完成数据转换后,我们将其通过POST请求写入到每刻平台。具体实现如下: 1. **构建HTTP请求**: - URL: `/api/openapi/enterprise/account/import` - Method: `POST` - Headers: 包含必要的认证信息,如`Authorization`等。 2. **发送请求**: 使用轻易云提供的HTTP客户端或其他支持HTTP请求的工具,发送上述构建好的JSON对象。 示例代码(伪代码): ```python import requests url = 'https://api.meike.com/api/openapi/enterprise/account/import' headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer your_token_here' } data = { "payerPaymentType": "银行账户", "bankAcctName": "张三", "bankAcctNumber": "6222020200001234567", "bankName": "中国工商银行", "bankCountry": "中国" } response = requests.post(url, headers=headers, json=data) if response.status_code == 200: print("Data successfully written to Meike platform") else: print(f"Failed to write data: {response.status_code}, {response.text}") ``` #### 实时监控与错误处理 在实际操作中,实时监控和错误处理同样重要。轻易云平台提供了强大的监控功能,可以实时查看数据流动和处理状态。如果遇到错误,可以通过日志和异常处理机制及时发现并解决问题。 例如,若返回状态码非200,则需要记录详细的错误信息并进行相应处理,以确保数据能够正确写入目标平台。 综上所述,通过以上步骤,我们成功地将金蝶系统中的银行账号数据转换为每刻支付账户所需的格式,并通过API接口写入到目标平台。这一过程充分利用了轻易云平台的数据集成能力,实现了不同系统间的数据无缝对接。 ![如何对接企业微信API接口](https://pic.qeasy.cloud/T8.png~tplv-syqr462i7n-qeasy.image)