使用ETL将金蝶销售退货数据转换并写入马帮平台

  • 轻易云集成顾问-潘裕
### 金蝶云星空数据集成到马帮的技术案例分享:销售退货金蝶=》马帮(调整完成) 在企业的数据集成项目中,如何高效、精准地进行异构系统间的数据对接一直是一个重要的课题。本案例分享了通过轻易云数据集成平台实现金蝶云星空与马帮系统之间的顺利对接,尤其是在处理销售退货数据上所采用的一些关键技术和具体解决方案。 #### 确保集成过程中的不漏单 为了确保从金蝶云星空到马帮的数据在传输过程中不出现漏单,我们首先调用了金蝶云星空的`executeBillQuery`接口。这一接口可以精确获取每个特定订单的信息,我们采取定时抓取机制,每隔一定时间段自动采集新增或变更的销售退货信息。通过实时监控与日志记录功能,可以有效防止遗漏情况,并且可以迅速定位和解决潜在问题。 #### 批量快速写入及分页限流处理 面对大量销售退货数据,需要将其批量快速写入到马帮仓储管理系统中。我们使用了马帮提供的`warehouse-do-add-storage-in`API进行操作。在此过程中,实现了对大规模数据分页处理和限流控制,以避免对接口造成过大的负担。这个细节极大提升了批量数据写入操作的效率,同时保障了稳定性。 #### 数据格式差异及映射转换 由于金蝶云星空与马帮两个系统之间存在较大的数据格式差异,在实际实施过程中,我们设计并实现了一套高效的数据映射转换规则。借助轻易云平台强大的自定义脚本功能,对不同字段进行了二次加工,使得各类复杂的数据关系能够无缝转化。这不仅满足了业务需求,也确保最终录入到目标系统中的数据准确无误。 以上三个方面仅是此次“销售退货金蝶=》马帮”调整完成方案中的核心技术环节。后续文章将详细介绍每一步骤中具体实施方法和遇到的问题,以及相应的软件配置流程,为类似项目提供有价值的参考依据。 ![如何对接用友BIP接口](https://pic.qeasy.cloud/D38.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,调用源系统接口获取数据是至关重要的第一步。本文将深入探讨如何通过轻易云数据集成平台调用金蝶云星空接口`executeBillQuery`来获取销售退货数据,并进行初步加工。 #### 接口配置与请求参数 首先,我们需要配置调用金蝶云星空接口的元数据。以下是我们使用的元数据配置: ```json { "api": "executeBillQuery", "method": "POST", "number": "FBillNo", "id": "FEntity_FENTRYID", "pagination": { "pageSize": 100 }, "idCheck": true, "request": [ {"field":"FID","label":"实体主键","type":"string","value":"FID"}, {"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"}, {"field":"FSaleOrgId","label":"销售组织","type":"string","value":"FSaleOrgId"}, {"field":"FStockOrgId","label":"库存组织","type":"string","value":"FStockOrgId"}, {"field":"FSettleOrgId","label":"结算组织","type":"string","value":"FSettleOrgId"}, {"field":"FApproveDate","label":"日期","type":"string","value":"FApproveDate"}, {"field":"FRetcustId","label":"客户","type":"string","value":"FRetcustId"}, {"field":"FMaterialId_FNumber","label":"物料","type":"string","value":"FMaterialId.FNumber"}, {"field":"FOwnerIdHead","label":"货主","type":"string","value":"FOwnerIdHead"}, {"field":"FRealQty","label":"实发数量","type":"string","value":"FRealQty"}, {"field":"FStockId_FNumber","label":"仓库id","type":"string","value":"FStockId.FNumber"}, {"field":"FTaxPrice","label":"含税单价","type":""}, {"field":"","label":"","type":"","value":""}, {"field":"","label":"","type":"","value":""}, {"field":"","label":"","type":"","value":""}, ``` #### 请求参数详解 1. **实体主键(FID)**:用于唯一标识每条记录。 2. **单据编号(FBillNo)**:用于标识销售退货单据。 3. **销售组织(FSaleOrgId)**:标识销售业务所属的组织。 4. **库存组织(FStockOrgId)**:标识库存管理所属的组织。 5. **结算组织(FSettleOrgId)**:标识结算业务所属的组织。 6. **日期(FApproveDate)**:记录单据审批日期。 7. **客户(FRetcustId)**:标识退货客户。 8. **物料编号(FMaterialId_FNumber)**:标识退货物料。 9. **货主(FOwnerIdHead)**:标识货物所有者。 10. **实发数量(FRealQty)**:记录实际退货数量。 11. **仓库ID(FStockId_FNumber)**:标识存储退货物料的仓库。 #### 分页与过滤条件 为了提高查询效率和避免一次性获取大量数据导致性能问题,我们使用分页机制。分页参数包括: - `Limit`:每页返回的数据行数,设置为100。 - `StartRow`:起始行索引,用于控制从哪一行开始读取数据。 此外,为了确保只获取最新的数据,我们可以设置过滤条件,例如: ```json {"FilterString": "FApproveDate>='{{LAST_SYNC_TIME|dateTime}}'"} ``` 该条件确保只查询自上次同步以来的新数据。 #### 数据请求示例 以下是一个完整的数据请求示例: ```json { "FormId": "SAL_RETURNSTOCK", "FieldKeys": [ "FID", "FBillNo", "FSaleOrgId", "FStockOrgId", "FSettleOrgId", "FApproveDate", "FRetcustId", "FMaterialId.FNumber", "FOwnerIdHead", "FRealQty", "FStockId.FNumber" ], "FilterString": "FApproveDate>='2023-01-01'", "Limit": 100, "StartRow": 0 } ``` #### 数据加工与清洗 在获取到原始数据后,需要对其进行初步加工和清洗,以便后续的数据转换和写入。例如,可以对日期格式进行标准化处理,对缺失值进行填补或删除等操作。 ```python import pandas as pd # 假设data是从接口获取到的原始数据 data = [ # 示例数据 ] df = pd.DataFrame(data) # 日期格式标准化 df['FApproveDate'] = pd.to_datetime(df['FApproveDate']) # 缺失值处理 df.fillna({'FSaleOrgId': 'UNKNOWN', 'FRetcustId': 'UNKNOWN'}, inplace=True) ``` 通过上述步骤,我们可以确保从金蝶云星空接口获取的数据是干净且结构化的,为后续的数据转换和写入打下坚实基础。 以上就是通过轻易云数据集成平台调用金蝶云星空接口`executeBillQuery`获取并加工销售退货数据的详细过程。 ![企业微信与OA系统接口开发配置](https://pic.qeasy.cloud/S13.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将金蝶销售退货数据转换并写入马帮API 在轻易云数据集成平台中,ETL(Extract, Transform, Load)过程是数据生命周期管理的重要环节。本文将深入探讨如何通过ETL过程,将从金蝶系统中提取的销售退货数据转换为马帮API接口所需的格式,并最终写入目标平台。 #### 配置元数据 首先,我们需要理解和配置元数据,以确保能够正确地将金蝶系统中的数据映射到马帮API接口所需的字段格式。以下是我们使用的元数据配置: ```json { "api": "warehouse-do-add-storage-in", "effect": "EXECUTE", "method": "POST", "idCheck": true, "operation": { "method": "merge", "field": "FBillNo", "bodyName": "goods_list", "header": ["FBillNo", "FNote", "FStockId_FNumber", "FApproveDate", "FSalesManId_FName", "FRetcustId_FNumber", "FSrcBillNo"], "body": ["FMaterialId_FNumber", "FRealQty"] }, "request": [ { "field": "warehouseName", "label": "仓库名称", "type": "string", "value": "_findCollection find name from edd9129b-4566-36f5-b5f0-84e12a4414fd where finance_code={FStockId_FNumber}" }, { "field": "employeeName", "label": "员工名称", "type": "string", "value": "金蝶单据同步" }, { "field": "remark", "label": "备注", "type": "string", "value": "日期:{FApproveDate},单据编号:{FBillNo},销售员:{FSalesManId_FName},投诉对应客户:{FRetcustId_FNumber},源单单号:{FSrcBillNo}" }, { ... ``` #### 数据转换与映射 在这个配置中,我们需要特别注意以下几个关键字段的映射和转换: 1. **仓库名称(warehouseName)**: - 从`FStockId_FNumber`字段中获取仓库编号,并通过 `_findCollection` 方法查找对应的仓库名称。 - 示例值:`_findCollection find name from edd9129b-4566-36f5-b5f0-84e12a4414fd where finance_code={FStockId_FNumber}` 2. **员工名称(employeeName)**: - 固定值“金蝶单据同步”,表示由金蝶系统同步过来的单据。 - 示例值:`"金蝶单据同步"` 3. **备注(remark)**: - 综合多个字段的信息生成备注内容,包括审批日期、单据编号、销售员姓名、投诉客户编号及源单单号。 - 示例值:`"日期:{FApproveDate},单据编号:{FBillNo},销售员:{FSalesManId_FName},投诉对应客户:{FRetcustId_FNumber},源单单号:{FSrcBillNo}"` 4. **入库商品(data)**: - 商品列表信息,其中每个商品包含库存SKU和数量。 - 子字段 `stockSku` 对应 `goods_list.FMaterialId_FNumber` - 子字段 `quantity` 对应 `goods_list.FRealQty` - 示例值: ```json [ { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... #### 请求体生成 根据上述元数据配置,我们可以生成最终的请求体来调用马帮API接口。以下是一个示例请求体: ```json { ... } ``` #### 接口调用与写入 最后,通过轻易云平台,我们将生成的请求体发送到马帮API接口。由于该平台支持全异步操作,因此在发送请求后,可以实时监控请求状态和结果,确保数据成功写入目标平台。 通过这种方式,我们实现了从金蝶系统到马帮平台的数据无缝对接,大大提升了业务处理效率和透明度。在实际应用中,这种方法不仅适用于销售退货场景,还可以扩展到其他类似的数据集成需求。 ![钉钉与CRM系统接口开发配置](https://pic.qeasy.cloud/T25.png~tplv-syqr462i7n-qeasy.image)