将金蝶数据转成管易云格式并进行写入的技巧

  • 轻易云集成顾问-谢楷斌
### 案例分享:金蝶云星空数据集成到管易云 在进行系统对接与数据集成时,可以面临诸多技术挑战。本文将详细解析一个具体的集成场景如何通过轻易云数据集成平台实现顺畅运行——将金蝶云星空的数据高效、安全地写入到管易云。这不仅涉及处理各类API接口,还有确保整个流程中的可靠性和实时监控。 为了完成这一任务,我们需要调用金蝶云星空的`executeBillQuery`接口以获取所需数据,并利用管易云提供的`gy.erp.stock.other.in.add`接口实现快速且大量的数据写入。在此过程中,需要重点解决以下几个关键问题: 1. **确保不漏单**:通过设置定时任务,使用可靠的抓取机制从金蝶云星空中获取最新数据。 2. **批量集成都管易**:针对大规模数据,我们采用批量操作方式,以减少网络请求次数,提高效率。 3. **分页及限流处理**:由于被调系统可能有一定的限流策略,做好分页请求以及错误重试机制尤为重要。 4. **实时监控与日志记录**:对每一步操作,包括成功及失败案例都进行日志记录,保证透明度并方便后续排查异常。 首先,通过定时任务和分页拉取机制,从金蝶云星空中抓取其他入库相关的数据。随后,将这些数据转化为符合管易标准格式,并分批次提交至其API进行存储。在遇到任意步骤上的故障或异常情况,将启用自动重试和报警通知功能,以确保最终一致性的达成和业务连续性。 以上是我们项目实施的开篇,引导具体实施细节将在后文逐步展开。 ![打通钉钉数据接口](https://pic.qeasy.cloud/D24.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口,获取并加工其他入库单的数据。 #### 接口调用配置 首先,我们需要配置调用金蝶云星空接口的元数据。以下是关键的元数据配置项: - **API**: `executeBillQuery` - **请求方法**: `POST` - **表单ID**: `STK_MISCELLANEOUS` - **主要字段**: - `FEntity_FEntryID`: 分录ID - `FID`: 实体主键 - `FBillNo`: 单据编号 - `FDocumentStatus`: 单据状态 - `FStockOrgId_FNumber`: 库存组织编码 - `FDate`: 日期 - `FBillTypeID`: 单据类型 - `FSUPPLIERID_FNumber`: 供应商编码 - `FNOTE`: 备注 - `FMATERIALID_FNumber`: 物料编码 - `FSTOCKID`: 收货仓库编码 - `FQty`: 实收数量 - `FPrice`: 成本价 - `FAmount`: 总成本 #### 请求参数构建 在构建请求参数时,需要特别注意分页参数和过滤条件。以下是一个示例请求参数构建: ```json { "FormId": "STK_MISCELLANEOUS", "FieldKeys": "FID,FBillNo,FDocumentStatus,FStockOrgId.FNumber,FDate,FBillTypeID,FSUPPLIERID.FNumber,FNOTE,FMATERIALID.FNumber,FSTOCKID.FNumber,FQty,FPrice,FAmount", "FilterString": "FSupplierId.FNumber = 'VEN00010' and FApproveDate>='2023-01-01'", "Limit": "100", "StartRow": "0" } ``` #### 数据清洗与转换 获取到原始数据后,需要进行清洗和转换,以便后续处理。以下是一些常见的数据清洗与转换操作: 1. **字段映射**:将金蝶云星空返回的数据字段映射到目标系统所需的字段。例如,将`FBillNo`映射为目标系统中的单据编号。 2. **数据格式转换**:将日期格式从金蝶云星空的格式转换为目标系统所需的格式。 3. **数值计算**:根据业务需求,对某些数值字段进行计算。例如,将`FQty`和`FPrice`相乘得到总成本。 #### 示例代码 以下是一个示例代码片段,展示如何使用轻易云平台调用金蝶云星空接口并处理返回的数据: ```python import requests # 配置请求参数 payload = { "FormId": "STK_MISCELLANEOUS", "FieldKeys": "FID,FBillNo,FDocumentStatus,FStockOrgId.FNumber,FDate,FBillTypeID,FSUPPLIERID.FNumber,FNOTE,FMATERIALID.FNumber,FSTOCKID.FNumber,FQty,FPrice,FAmount", "FilterString": "FSupplierId.FNumber = 'VEN00010' and FApproveDate>='2023-01-01'", "Limit": "100", "StartRow": "0" } # 发起POST请求 response = requests.post("https://api.kingdee.com/executeBillQuery", json=payload) # 检查响应状态码 if response.status_code == 200: data = response.json() # 数据清洗与转换 cleaned_data = [] for entry in data: cleaned_entry = { "单据编号": entry["FBillNo"], "单据状态": entry["FDocumentStatus"], "库存组织编码": entry["FStockOrgId_FNumber"], "日期": entry["FDate"], # ...其他字段映射... } cleaned_data.append(cleaned_entry) # 后续处理逻辑... else: print(f"Error: {response.status_code}") ``` #### 注意事项 1. **分页处理**:在大数据量场景下,需要处理分页逻辑,确保所有数据都能被完整获取。 2. **错误处理**:对接口调用失败或返回异常情况进行处理,确保系统稳定性。 3. **性能优化**:根据实际业务需求,对请求频率和批量大小进行优化,以提升整体性能。 通过上述步骤,我们可以高效地从金蝶云星空获取其他入库单的数据,并进行必要的清洗和转换,为后续的数据写入和业务处理打下坚实基础。 ![企业微信与ERP系统接口开发配置](https://pic.qeasy.cloud/S28.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将金蝶数据转换并写入管易云API接口 在轻易云数据集成平台中,数据的ETL(提取、转换、加载)过程是实现不同系统间无缝对接的关键步骤。本文将重点探讨如何将已经集成的源平台金蝶数据进行ETL转换,转为目标平台管易云API接口所能够接收的格式,并最终写入目标平台。 #### 1. 数据请求与清洗 在进行数据转换之前,我们首先需要从金蝶系统中提取相关数据,并对其进行必要的清洗和预处理。这一步骤确保了数据的一致性和准确性,为后续的转换和写入打下坚实基础。 #### 2. 数据转换与写入 在完成数据请求与清洗之后,接下来我们需要将这些数据转换为管易云API接口所能接受的格式。以下是具体的元数据配置及其应用: ```json { "api": "gy.erp.stock.other.in.add", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ { "field": "warehouse_code", "label": "仓库代码", "type": "string", "describe": "仓库代码", "value": "{FSTOCKID}" }, { "field": "note", "label": "备注", "type": "string", "describe": "备注", "value": "{FNOTE}" }, { "field": "type", "label": "入库类型代码", "type": "string", "describe": "入库类型代码" }, { "field": "wms_bizcode", "label": "第三方系统单号", "type": "string", "describe": "判断排重的依据", "value": "{FBillNo}" }, { "field": "details", ... ``` 上述元数据配置定义了如何将金蝶系统中的字段映射到管易云API接口所需的字段。以下是具体字段的解析及其对应关系: - `warehouse_code`:对应金蝶系统中的`FSTOCKID`字段,用于标识仓库代码。 - `note`:对应金蝶系统中的`FNOTE`字段,用于填写备注信息。 - `type`:用于指定入库类型代码,这个字段需要根据具体业务需求进行设置。 - `wms_bizcode`:对应金蝶系统中的`FBillNo`字段,用于唯一标识第三方系统单号,以便进行排重判断。 - `details`:这是一个数组字段,用于存放商品列表信息。每个商品的信息包括以下子字段: - `item_code`:对应金蝶系统中的`FMATERIALID_FNumber`字段,用于标识商品代码。 - `sku_code`:用于标识规格代码,如果商品有规格,此字段必填。 - `barcode`:用于标识商品条码,与商品代码二者必选其一,当两者都提供时,以商品条码为准。 - `qty`:对应金蝶系统中的`FQty`字段,用于记录商品数量。如果当前商品为唯一码商品,则忽略这个参数,程序固定取1。在开启小数库存参数的情况下,支持以小数形式录入数量。 - `stockDate`:对应金蝶系统中的`FDate`字段,用于记录入库日期。如果不填写此参数,程序默认当天日期。 #### 实现步骤 1. **提取源数据**: 使用轻易云平台的数据请求功能,从金蝶系统中提取所需的数据,包括仓库代码、备注、单号、商品列表等。 2. **清洗与预处理**: 对提取的数据进行清洗和预处理,确保数据格式的一致性。例如,将日期格式统一为目标平台所需的格式。 3. **构建请求体**: 根据元数据配置,将清洗后的源数据映射到管易云API接口所需的字段,并构建请求体。例如: ```json { ... // 映射后的请求体结构 ... } ``` 4. **发送请求**: 使用轻易云平台的数据发送功能,通过POST方法将构建好的请求体发送到管易云API接口,实现数据写入。 5. **监控与验证**: 实时监控数据流动和处理状态,确保每个环节都执行成功,并对结果进行验证。例如,通过查询管易云后台确认数据是否正确写入。 通过上述步骤,我们可以高效地将金蝶系统中的数据转换并写入到管易云,实现不同系统间的数据无缝对接。这不仅提升了业务流程的自动化程度,还极大地提高了工作效率和准确性。 ![打通用友BIP数据接口](https://pic.qeasy.cloud/T3.png~tplv-syqr462i7n-qeasy.image)