系统集成最佳实践:金蝶云与旺店通的自动化数据同步

  • 轻易云集成顾问-黄宏棵
### 金蝶云星空与旺店通·旗舰版的数据集成案例分析 在数据驱动的业务背景下,将金蝶云星空(Kingdee Cloud Galaxy)与旺店通·旗舰版进行系统对接是许多企业实现高效供应链管理的重要一步。本文将深入探讨一个成功的系统对接实例:通过轻易云数据集成平台,完成从金蝶-成品拆卸到旺店通-委外仓退(出库业务)的全流程自动化数据同步。 为了确保在整个集成过程中不漏单,我们首先利用了金蝶云星空提供的`executeBillQuery`接口来定时且可靠地抓取相关业务数据。这一过程使用了轻易云平台提供的调度功能,能够按预设频率自动查询并下载最新数据,从而保证每个订单都被准确获取。此外,我们采取了一系列优化措施,以处理分页和限流问题。例如,通过增量提取技术,仅仅拉取自上次同步以来新增或变更的数据,有效降低了接口调用次数和响应时间。 面对大量订单信息需要快速写入到旺店通·旗舰版这一挑战,我们选择批量处理策略,并借助其API `wms.stockother.Out.push`进行集中推送。该方案不仅提升了传输效率,还增强了系统稳定性。在这个过程中,特别注意到了两套系统之间的数据格式差异,通过定制化的数据映射逻辑,实现无缝转换,使得不同字段能够正确对应。 即便如此,在实际运行中仍不可避免会遇到一些异常情况。因此,为确保数据一致性和完整性,我们设计了一整套异常处理与错误重试机制。当发生网络波动或接口暂时不可用时,该机制可以自动捕获错误并实施重试操作。同时,还设置了详细的日志记录和实时监控功能,以便运维人员能迅速发现并纠正潜在问题。 总结看来,通过创新性的方案设计、成熟的平台支持以及严格的问题应对策略,这一融合项目全面满足了高效、安全、稳定等多方面需求,为企业后续拓展其他智能化应用打下坚实基础。 ![打通用友BIP数据接口](https://pic.qeasy.cloud/D2.png~tplv-syqr462i7n-qeasy.image) ### 调用源系统金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细介绍如何使用轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口,并对获取的数据进行加工处理。 #### 接口配置与调用 首先,我们需要配置并调用金蝶云星空的`executeBillQuery`接口。以下是元数据配置的关键部分: ```json { "api": "executeBillQuery", "effect": "QUERY", "method": "POST", "number": "FBillNo", "id": "FEntity_FEntryID", "idCheck": true, "request": [ {"field":"FID","label":"FID","type":"string","describe":"111","value":"FID"}, {"field":"FEntity_FEntryID","label":"FEntity_FEntryID","type":"string","describe":"111","value":"FEntity_FEntryID"}, {"field":"FBillNo","label":"FBillNo","type":"string","describe":"111","value":"FBillNo"}, {"field":"FDocumentStatus","label":"FDocumentStatus","type":"string","describe":"111","value":"FDocumentStatus"}, {"field":"FStockOrgId_FNumber","label":"FStockOrgId_FNumber","type":"string","describe":"111","value":"FStockOrgId.FNumber"}, {"field":"FDate","label":"FDate","type":"string","describe":"111","value":"FDate"}, {"field":"FBillTypeID_FNumber","label":"FBillTypeID_FNumber","type":"string","describe":"111","value":"FBillTypeID.FNumber"}, {"field":"FOwnerIdHead_FNumber","label":"FOwnerIdHead_FNumber","type":"string","describe":"111","value":"FOwnerIdHead.FNumber"}, {"field": "FAffairType", "label": "FAffairType", "type": "string", "describe": "111", "value": "FAffairType"} ], ... } ``` 该配置定义了请求参数和字段映射关系。我们通过POST方法向金蝶云星空发送请求,查询特定条件下的数据。 #### 请求参数设置 在实际应用中,我们需要根据业务需求设置具体的请求参数。例如,分页参数、过滤条件等: ```json { "Limit": "{PAGINATION_PAGE_SIZE}", "StartRow": "{PAGINATION_START_ROW}", "FilterString": "FApproveDate>='{{LAST_SYNC_TIME|datetime}}' and FStockOrgId.FNumber='101' and FStockID.F_TBIK_Assistant_qtr = '委外仓' and FAffairType='Dassembly' and FDate>='2024-08-05 17:30:00'", ... } ``` 其中,`FilterString`用于定义复杂的过滤条件,确保只获取符合条件的数据。 #### 数据清洗与转换 获取到原始数据后,需要对其进行清洗和转换,以便后续处理。以下是一个简单的数据清洗示例: ```python def clean_data(raw_data): cleaned_data = [] for record in raw_data: if record['FDocumentStatus'] == 'C': cleaned_record = { 'BillNo': record['FBillNo'], 'Date': record['FDate'], 'Material': record['FMaterialID_FNumber'], 'Quantity': float(record['FQty']), ... } cleaned_data.append(cleaned_record) return cleaned_data ``` 在这个示例中,我们过滤掉未完成状态的记录,并提取和转换所需字段。 #### 数据写入目标系统 清洗后的数据需要写入目标系统。在轻易云平台上,可以通过配置相应的写入接口实现这一过程。例如,将清洗后的数据写入旺店通的委外仓退库业务: ```json { ... "targetApi": { ... "method": "POST", ... }, ... } ``` 通过上述配置,可以实现从金蝶云星空到旺店通系统的数据无缝对接。 #### 实时监控与错误处理 在整个数据集成过程中,实时监控和错误处理同样重要。轻易云平台提供了详细的日志和监控功能,可以帮助我们及时发现并解决问题。例如: ```json { ... "monitoring": { ... "errorHandling": { ... "retryPolicy": { ... }, ... }, ... }, ... } ``` 通过合理配置监控和错误处理策略,可以确保数据集成过程的稳定性和可靠性。 综上所述,通过合理配置和调用金蝶云星空的`executeBillQuery`接口,并对获取的数据进行清洗、转换和写入,可以实现高效的数据集成。这不仅提高了业务透明度,也极大提升了工作效率。 ![系统集成平台API接口配置](https://pic.qeasy.cloud/S5.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台实现ETL转换并写入旺店通·旗舰版API接口 在数据集成生命周期的第二步中,我们将已经从源平台(如金蝶)集成的数据进行ETL(提取、转换、加载)转换,并将其转化为目标平台——旺店通·旗舰版API接口所能够接收的格式,最终写入目标平台。以下是具体的技术实现细节。 #### 1. 数据提取与清洗 首先,我们需要从源平台提取相关数据,并进行必要的清洗和预处理。假设我们从金蝶系统中提取了以下字段: - FBillNo:单据编号 - FStockID_FNumber:仓库编号 - FNote:备注 - FMaterialID_FNumber:物料编码 - FQty:数量 - FDescription:明细备注 这些字段将作为后续数据转换和写入的基础。 #### 2. 数据转换 为了将上述数据转化为旺店通·旗舰版API接口所需的格式,我们需要根据元数据配置进行相应的字段映射和结构调整。以下是具体的元数据配置: ```json { "api": "wms.stockother.Out.push", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ { "field": "order", "label": "单据头", "type": "object", "children": [ {"field": "outer_no", "label": "外部单号", "type": "string", "value": "{FBillNo}"}, {"field": "warehouse_no", "label": "仓库编号", "type": "string", "value": "{FStockID_FNumber}"}, {"field": "reason", "label": "出库原因", "type": "string", "value": "成品拆卸出库"}, {"field": "is_check", "label": "是否审核", "type": "string", "value":"true"}, {"field":"remark","label":"备注","type":"string","value":"{FNote}"}, {"field":"receiver_name","label":"收件人名称","type":"string","value":"接口传单"}, {"field":"receiver_mobile","label":"收件人电话","type":"string","value":"18888888888"}, {"field":"receiver_province","label":"省","type":"string","value":"广东省"}, {"field":"receiver_city","label":"市","type":"string","value":"广州市"}, {"field":"receiver_district","label":"区","type":"string","value":"白云区"}, {"field":"receiver_address","label":"地址","type":"string","value":"接口传单"} ] }, { "field": "order_details", "label": "单据明细", "type": ["array"], ["children"]: [ {"field": ["spec_no"],"label":["商家编码"],"type":["string"],"value":["{FMaterialID_FNumber}"]}, {"field":["num"],"label":["数量"],"type":["string"],"value":["{FQty}"]}, {"field":["remark"],"label":["明细备注"],"type":["string"],"value":["{FDescription}"]} ] } ], ["groupCalculate"]: { ["headerGroup"]:["FBillNo",["FStockID_FNumber"],["FID"],["FNote"]], ["bodyGroup"]:["FMaterialID_FNumber",["FMaterialID_FRefCost"],["FDescription"]], ["bodyName"]:["list"], ["calculate"]: { ["FQty"]: "$sum" } }, ["buildModel"]:true } ``` 在这个配置中,`order`对象包含了单据头信息,而`order_details`数组则包含了每个物料的详细信息。每个字段都通过`value`属性映射到源平台的数据字段。 #### 3. 数据加载 一旦完成数据转换,我们需要通过POST请求将数据发送到旺店通·旗舰版API接口。以下是一个示例请求体: ```json { “order”: { “outer_no”: “123456”, “warehouse_no”: “WH001”, “reason”: “成品拆卸出库”, “is_check”: “true”, “remark”: “这是一个测试订单”, “receiver_name”:“接口传单”, “receiver_mobile”:“18888888888”, “receiver_province”:“广东省”, “receiver_city”:“广州市”, “receiver_district”:“白云区”, “receiver_address”:“接口传单” }, “order_details”: [ { “spec_no”:“MAT001”, “num”:“10”, “remark”:“测试物料” } ] } ``` 通过上述步骤,我们可以确保从金蝶系统提取的数据经过ETL转换后,成功写入到旺店通·旗舰版中,实现不同系统间的数据无缝对接。 #### 技术要点总结 1. **字段映射**:确保每个字段都正确映射到目标API所需的格式。 2. **结构调整**:根据目标API要求调整数据结构,如将平面数据转化为嵌套对象或数组。 3. **自动计算**:利用元数据配置中的计算规则(如数量求和)对特定字段进行自动计算。 4. **请求发送**:通过HTTP POST方法将转换后的数据发送到目标API。 通过以上技术实现,可以有效提升业务流程的自动化程度和效率,确保不同系统间的数据一致性和准确性。 ![钉钉与ERP系统接口开发配置](https://pic.qeasy.cloud/T24.png~tplv-syqr462i7n-qeasy.image)