轻易云平台实现金蝶到旺店通的ETL数据转换技术

  • 轻易云集成顾问-钟家寿
### 金蝶采购退料单对接旺店通采购退货单_CGTL 在企业日常运营中,数据的及时同步与准确性直接影响到业务处理的效率与质量。本文将分享一个典型案例:如何通过轻易云数据集成平台实现金蝶云星空和旺店通·企业奇门之间的数据无缝对接,具体解决方案是将金蝶采购退料单对接到旺店通采购退货单。 此集成方案以“金蝶采购退料单对接旺店通采购退货单_CGTL”为例,通过调用两个关键API接口来实现: 1. **获取金蝶云星空数据**:使用`executeBillQuery` API接口,能够定时可靠地抓取所需的接口数据。 2. **推送至旺店通·企业奇门**:利用`wdt.purchase.return.push` API接口,将大量数据快速写入目标系统,并确保批量集成的一致性和高效性。 这个过程中的几个技术难点及其对应解决策略: - **如何确保集成过程中不漏单**:针对分页和限流问题,通过合理设置分页参数以及添加自动重试机制,保证每次请求都能成功获取完整的数据。 - **处理格式差异**:由于金蝶云星空与旺店通在字段定义、格式规范等方面存在差异,我们自定义了映射规则,对原始数据进行预处理,以便满足目标系统的要求。 - **实时监控和日志记录**:为了提高透明度和可追溯性,全程启用了实时监控及日志记录功能,对于异常情况,可依靠详细日志迅速定位并修正问题。 通过该技术方案,有效提升了两个平台间的数据同步速度,同时减少了人工干预,提高了整体工作效率。下一步我们将详细解析各个环节具体实施方法,包括API调用配置、异常处理措施以及性能优化技巧。 ![如何开发用友BIP接口](https://pic.qeasy.cloud/D15.png~tplv-syqr462i7n-qeasy.image) ### 调用源系统金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,第一步是调用源系统接口以获取原始数据,并对其进行初步加工。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口,获取采购退料单的数据,并进行必要的加工处理。 #### 接口调用配置 首先,我们需要配置调用金蝶云星空接口的元数据。以下是一个典型的元数据配置示例: ```json { "api": "executeBillQuery", "method": "POST", "number": "FBillNo", "id": "FPURMRBENTRY_FEntryID", "pagination": { "pageSize": 500 }, "idCheck": true, "request": [ {"field":"FPURMRBENTRY_FEntryID","label":"明细信息ID","type":"string","value":"FPURMRBENTRY_FEntryID"}, {"field":"FID","label":"实体主键","type":"string","value":"FID"}, {"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"}, {"field":"FDocumentStatus","label":"单据状态","type":"string","value":"FDocumentStatus"}, {"field":"FStockOrgId_FNumber","label":"退料组织","type":"string","value":"FStockOrgId.FNumber"}, {"field":"FDate","label":"退料日期","type":"string","value":"FDate"}, {"field":"FBillTypeID_FNumber","label":"单据类型","type":"string","value":"FBillTypeID.FNumber"}, {"field":"FTAKEDELIVERYNO","label":"提货单号","type":"string","value":"FTAKEDELIVERYNO"}, {"field":"FSupplierID_FNumber","label":"供应商","type":"string","value":"FSupplierID.FNumber"}, {"field":"FDESCRIPTION","label":"备注","type":"string","value":"FDESCRIPTION"} ], "otherRequest": [ {"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"}, {"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"}, {"field": "TopRowCount", "label": "返回总行数", "type": "int", "describe": "金蝶的查询分页参数"}, {"field": "FilterString", "label": "过滤条件", "type": "string", "describe": "示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=", "value": "FApproveDate>='{{LAST_SYNC_TIME|dateTime}}' and (FPURCHASEORGID.Fnumber='200' or FPURCHASEORGID.Fnumber='100' or FPURCHASEORGID.Fnumber='400') and (FBillTypeID.FNumber='TLD04_SYS' or FBillTypeID.FNumber='CXTLD')" }, { "field": "FieldKeys", "label": "需查询的字段key集合", "type": "array", "describe": "金蝶分录主键ID格式:FPOOrderEntry_FEntryId,其它格式 FPurchaseOrgId.FNumber", "parser": {"name": "ArrayToString", "params": "," } }, { "field": "FormId", "label": "业务对象表单Id", "type": "string", "describe": "必须填写金蝶的表单ID如:PUR_PurchaseOrder", "value": "PUR_MRB" } ] } ``` #### 数据请求与清洗 在上述配置中,我们定义了需要从金蝶云星空接口获取的数据字段,包括明细信息ID、实体主键、单据编号、单据状态等。这些字段将用于后续的数据处理和转换。 1. **请求字段**:这些字段定义了我们希望从源系统获取的数据。例如,`FPURMRBENTRY_FEntryID`表示明细信息ID,`FID`表示实体主键。 2. **其他请求参数**:包括分页参数(如`Limit`和`StartRow`),以及过滤条件(如`FilterString`)。这些参数确保我们能够高效地获取所需的数据,并进行适当的过滤。 #### 数据转换与写入 在获取到原始数据后,我们需要对其进行转换,以符合目标系统(如旺店通)的要求。以下是一些常见的数据转换操作: 1. **字段映射**:将源系统中的字段映射到目标系统中的相应字段。例如,将金蝶云星空中的`FBillNo`映射到旺店通中的采购退货单编号。 2. **数据格式转换**:根据目标系统的要求,对日期、金额等字段进行格式转换。例如,将日期格式从YYYY-MM-DD转换为DD/MM/YYYY。 3. **数据校验**:在写入目标系统之前,对数据进行校验,确保其符合业务规则。例如,检查退料数量是否为正数。 #### 实践案例 假设我们需要将金蝶云星空中的采购退料单对接到旺店通的采购退货单。具体步骤如下: 1. **调用接口获取数据**: ```python response = requests.post( url="https://api.kingdee.com/executeBillQuery", headers={"Content-Type": "application/json"}, data=json.dumps({ # 请求参数 ... }) ) data = response.json() ``` 2. **数据清洗和转换**: ```python for record in data["Result"]: transformed_record = { # 字段映射和格式转换 ... } # 数据校验 if validate(transformed_record): write_to_target_system(transformed_record) ``` 3. **写入目标系统**: ```python def write_to_target_system(record): response = requests.post( url="https://api.wdt.com/purchaseReturnOrder/create", headers={"Content-Type": "application/json"}, data=json.dumps(record) ) return response.status_code == 200 ``` 通过上述步骤,我们实现了从金蝶云星空到旺店通的数据集成。在实际应用中,还可以根据具体需求进一步优化和扩展这些操作。 ![金蝶与CRM系统接口开发配置](https://pic.qeasy.cloud/S1.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行金蝶采购退料单对接旺店通采购退货单的ETL转换 在数据集成过程中,ETL(Extract, Transform, Load)是关键步骤之一。本文将详细探讨如何使用轻易云数据集成平台,将金蝶采购退料单的数据转换为旺店通·企业奇门API接口所能接收的格式,并最终写入目标平台。 #### 接口配置与元数据解析 首先,我们需要理解目标平台旺店通·企业奇门API接口的元数据配置。以下是配置细节: ```json { "api": "wdt.purchase.return.push", "method": "POST", "idCheck": true, "operation": { "method": "merge", "field": "FBillNo", "bodyName": "details_list", "bodySum": ["FRMREALQTY"], "header": ["FBillNo", "FSupplierID_FNumber"], "body": ["F_TUXM_BaseProperty3", "FRMREALQTY", "FTAXPRICE"] }, ... } ``` 该配置表明我们将使用`wdt.purchase.return.push` API接口,通过POST方法提交数据。`idCheck`参数设置为true,表示需要检查ID的唯一性。 #### 数据请求与清洗 在数据请求阶段,我们需要从金蝶系统中提取采购退料单的数据。假设我们已经完成了这一阶段,接下来进入数据转换与写入阶段。 #### 数据转换 根据元数据配置,我们需要将金蝶系统中的字段映射到旺店通API所需的字段格式。例如: - `FSupplierID_FNumber` 映射到 `provider_no` - `FBillNo` 映射到 `outer_no` - `F_TUXM_BaseProperty3` 映射到 `spec_no` - `FRMREALQTY` 映射到 `num` - `FTAXPRICE` 映射到 `price` 我们可以通过轻易云平台提供的可视化界面或脚本配置来完成这些映射。以下是一个示例脚本: ```json { "provider_no": "{FSupplierID_FNumber}", "outer_no": "{FBillNo}", "is_check": "1", ... "detail_list": [ { "spec_no": "{{details_list.F_TUXM_BaseProperty3}}", "num": "{FRMREALQTY}", "price": "{FTAXPRICE}" } ] } ``` #### 数据写入 完成数据转换后,我们使用POST方法将处理后的数据发送到旺店通·企业奇门API接口。以下是一个示例请求: ```json { "api_name": "wdt.purchase.return.push", "timestamp": "{{current_timestamp}}", ... "return_info": { ... // 转换后的字段 ... "detail_list": [ { // 明细列表节点 ... } ] } } ``` 在实际操作中,我们可以利用轻易云平台的自动化功能,将上述步骤串联起来,实现全流程自动化处理。 #### 操作细节 在操作过程中,需要注意以下几点: 1. **字段校验**:确保所有必填字段均已正确映射和填充。 2. **数据类型**:确保每个字段的数据类型符合目标API接口要求。 3. **错误处理**:设置错误处理机制,以便在出现异常时能够及时捕获并处理。 通过以上步骤,我们成功地将金蝶采购退料单的数据转换并写入到了旺店通·企业奇门系统,实现了不同系统间的数据无缝对接。这不仅提高了工作效率,还减少了人工操作带来的错误风险。 ![系统集成平台API接口配置](https://pic.qeasy.cloud/T6.png~tplv-syqr462i7n-qeasy.image)