如何使用轻易云平台快速集成金蝶销售订单到小满OKKICRM

  • 轻易云集成顾问-胡秀丛
### 案例分享:金蝶销售订单数据集成到小满OKKICRM 在企业信息化系统中,跨平台的数据集成往往面临各种技术挑战。本文将详细介绍如何使用轻易云数据集成平台实现金蝶云星空的销售订单数据与小满OKKICRM系统对接,并处理诸如分页、限流、格式差异等问题。 #### 数据获取与接口调用 首先,我们需要从金蝶云星空获取最新的销售订单数据。通过`executeBillQuery`接口,可以定时准确地抓取相关数据。这一步的重要性在于确保每个有效订单都能被及时捕捉,不漏单是关键目标之一。在实际操作中,我们设定了合理的时间间隔频率来调用该API,以满足业务需求并减少服务器压力。 ``` // 示例代码段 GET /api/executeBillQuery ``` #### 处理分页和限流问题 由于返回的数据量可能较大,需要实现高效的分页处理机制。此外,还需关注API调用过程中可能出现的限流限制。这一部分我们采用了轻易云提供的自动重试机制,当遇到响应超时或请求被限速时,系统会进行智能排队并重新发起请求,从而保障整体流程顺畅无阻。 #### 数据格式转换与映射 不同系统之间通常存在数据结构上的差异,因此,在将金蝶云星空的数据写入到小满OKKICRM之前,必须进行有效的数据格式转换。在这一环节,通过自定义映射规则,将源端字段精确匹配至目标系统对应字段上。例如,将金蝶中的客户ID转为小满中的相应标识符,从而保证写入过程准确无误。 ```json { "sourceField": "customer_id", "targetField": "client_identifier" } ``` #### 批量写入与异常处理 为了进一步提升效率,我们采取批量方式将整理好的数据推送至小满OKKICRM (`/v1/invoices/order/push`) 接口,这不仅加快了传输速度,还降低了网络开销。同时,为确保任务执行可靠,每次提交都会伴随详细日志记录,并设置完善的错误重试机制。一旦某条记录因网络原因或服务器异常失败,系统自动检测并依据策略进行重新尝试直至成功完成任务。 这样一套完整且高效的数据对接方案,实现了两个商业软件间无缝衔接,为企业日常运营提供强有力支持工具。在下一部分内容中,将针对这些具体流程做更深入剖析及细化实施步骤。 ![金蝶与SCM系统接口开发配置](https://pic.qeasy.cloud/D27.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成过程中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口,以获取销售订单数据,并对其进行初步加工。 #### 配置元数据 首先,我们需要配置元数据以便正确调用金蝶云星空的API接口。以下是元数据配置的关键字段及其含义: - **api**: `executeBillQuery`,表示我们要调用的API名称。 - **method**: `POST`,表示使用HTTP POST方法进行请求。 - **number**: `FBillNo`,表示单据编号。 - **id**: `FSaleOrderEntry_FEntryID`,表示销售订单分录ID。 - **request**: 包含了所有需要查询的字段及其对应的标签、类型和描述。 #### 请求参数设置 在实际操作中,我们需要根据业务需求设置请求参数。以下是一些关键参数及其设置示例: ```json { "FormId": "SAL_SaleOrder", "FieldKeys": [ "FSaleOrderEntry_FEntryID", "FID", "FBillNo", "FDocumentStatus", "FSaleOrgId.FNumber", "FDate", "FCustId.FNumber", "FSaleDeptId.Fnumber", "FSaleGroupId", "FSalerId.FNumber", "FApproveDate", "FNote", "FMaterialId.Fnumber", "FMaterialName", "FUnitID.Fnumber", "FPrice", "FTaxPrice", "FEntryTaxRate", "FEntryTaxAmount", "FAllAmount" ], "FilterString": "FModifyDate>='{{LAST_SYNC_TIME|dateTime}}' and FDocumentStatus='C'", "Limit": "{PAGINATION_PAGE_SIZE}", "StartRow": "{PAGINATION_START_ROW}" } ``` 这些参数确保我们可以精确地获取所需的数据,并且支持分页查询以提高效率。 #### 数据请求与清洗 通过上述配置,我们可以发送HTTP POST请求到金蝶云星空的`executeBillQuery`接口。返回的数据通常是一个JSON对象,其中包含多个销售订单记录。接下来,我们需要对这些数据进行清洗和初步加工。 1. **字段映射与转换**:根据业务需求,将金蝶返回的数据字段映射到目标系统所需的字段。例如,将`FBillNo`映射为目标系统中的订单编号。 2. **数据过滤**:进一步过滤不符合条件的数据。例如,只保留状态为“已审核”的订单。 3. **格式化处理**:对日期、金额等字段进行格式化处理,以符合目标系统的要求。 #### 示例代码 以下是一个简单的Python示例代码,用于发送请求并处理返回的数据: ```python import requests import json url = 'https://api.kingdee.com/executeBillQuery' headers = {'Content-Type': 'application/json'} payload = { 'FormId': 'SAL_SaleOrder', 'FieldKeys': 'FSaleOrderEntry_FEntryID,FID,FBillNo,FDocumentStatus,FSaleOrgId.FNumber,FDate,FCustId.FNumber,FSaleDeptId.Fnumber,FSaleGroupId,FSalerId.FNumber,FApproveDate,FNote,FMaterialId.Fnumber,FMaterialName,FUnitID.Fnumber,FPrice,FTaxPrice,FEntryTaxRate,FEntryTaxAmount,FAllAmount', 'FilterString': 'FModifyDate>=\'2023-01-01\' and FDocumentStatus=\'C\'', 'Limit': 100, 'StartRow': 0 } response = requests.post(url, headers=headers, data=json.dumps(payload)) data = response.json() # 数据清洗与转换 cleaned_data = [] for record in data: cleaned_record = { 'order_id': record['FBillNo'], 'customer_id': record['FCustId.FNumber'], 'order_date': record['FDate'], # 更多字段映射... } cleaned_data.append(cleaned_record) # 输出清洗后的数据 print(json.dumps(cleaned_data, indent=2)) ``` #### 总结 通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口,我们能够高效地获取并加工销售订单数据。这一步骤不仅确保了数据的一致性和准确性,还为后续的数据转换与写入奠定了坚实基础。在实际应用中,根据具体业务需求调整请求参数和清洗逻辑,可以进一步提升集成效率和效果。 ![金蝶云星空API接口配置](https://pic.qeasy.cloud/S14.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将金蝶销售订单转换并写入小满OKKICRMAPI接口 在数据集成生命周期的第二步,我们需要将已经从源平台(如金蝶)获取的数据进行ETL转换,并将其转为目标平台(小满OKKICRMAPI接口)所能够接收的格式,最终写入目标平台。以下是具体的技术实现过程。 #### 1. 数据请求与清洗 首先,我们需要从金蝶系统中获取销售订单数据。这一步骤通常已经在生命周期的第一步完成,因此我们直接进入数据转换和写入阶段。 #### 2. 数据转换与写入 在轻易云数据集成平台中,我们使用元数据配置来定义如何将源数据映射到目标API接口所需的格式。以下是关键步骤和技术细节: ##### 2.1 定义API接口信息 根据提供的元数据配置,我们需要向小满OKKICRMAPI接口发送一个POST请求,URL为`/v1/invoices/order/push`。请求体中包含了订单的详细信息,包括订单头信息和订单行信息。 ##### 2.2 映射字段 我们需要将金蝶系统中的字段映射到小满OKKICRMAPI接口所需的字段。以下是一些关键字段的映射关系: - `FBillNo` 映射为 `order_no` 和 `name` - `FCustId_FNumber` 映射为 `company_id` - `FSettleCurrId_FCODE` 映射为 `currency` - `FDate` 映射为 `account_date` - `FDeliveryDate` 映射为 `shipment_deadline_remark` ##### 2.3 查询与计算 某些字段需要通过查询或计算来获得。例如: - `company_id` 需要通过 `_mongoQuery` 查询客户ID: ```json { "field": "company_id", "label": "客户ID", "type": "string", "value": "_mongoQuery 7f5b9476-85ee-37c0-901c-2d032f3a3daf findField=content.company_id where={\"content.serial_id\" : {\"$eq\":\"{FCustId_FNumber}\"}}" } ``` - 产品列表中的每个产品ID需要通过 `_findCollection` 查询: ```json { "field": "product_id", "label": "产品ID", "type": "string", "value": "_findCollection find product_id from 5cb8ce55-b78c-3ddf-bd45-4ccc18f2a9a0 where product_no={FMaterialId_Fnumber}", "parent": "product_list" } ``` ##### 2.4 构建请求体 根据元数据配置,我们构建POST请求体。以下是一个示例请求体结构: ```json { "order_no": "{FBillNo}", "name": "{FBillNo}", "company_id": "{FCustId_FNumber}", "currency": "{FSettleCurrId_FCODE}", "account_date": "{{FDate|date}}", "shipment_deadline_remark": "{FDeliveryDate}", ... } ``` 其中,产品子列表和其他复杂字段按照元数据配置中的定义进行填充。 ##### 2.5 提交请求 最后,通过轻易云平台提交POST请求,将构建好的请求体发送到小满OKKICRMAPI接口,实现数据写入。 ```python import requests url = 'https://api.okkicrm.com/v1/invoices/order/push' headers = {'Content-Type': 'application/json'} data = { # 构建好的请求体内容 } response = requests.post(url, headers=headers, json=data) if response.status_code == 200: print('Data successfully written to OKKI CRM') else: print('Failed to write data to OKKI CRM:', response.content) ``` #### 总结 通过上述步骤,我们成功地将金蝶系统中的销售订单数据转换为小满OKKICRMAPI接口所需的格式,并完成了数据写入。这一过程充分利用了轻易云数据集成平台的强大功能,实现了不同系统间的数据无缝对接,提高了业务流程的效率和透明度。 ![金蝶与CRM系统接口开发配置](https://pic.qeasy.cloud/T18.png~tplv-syqr462i7n-qeasy.image)