从数据获取到数据写入:轻易云平台的金蝶云星空接口实践

  • 轻易云集成顾问-潘兴扬
### 管易云数据集成到金蝶云星空:cp_GK-采购入库单案例分享 在企业信息系统的对接过程中,确保不同平台之间的数据无缝流动和一致性是至关重要的任务。本篇文章将聚焦于如何通过轻易云数据集成平台,实现管易云平台与金蝶云星空系统的高效对接,具体分析`cp_GK-采购入库单`这一实际运行方案。 首先,我们需要从管易云获取准确和及时的数据。这一过程主要依赖于API接口`gy.erp.purchase.arrive.get`进行定时可靠的数据抓取。在实现过程中,我们利用了轻易云提供的批量处理功能,以保障高吞吐量的数据能够快速、高效地被写入到金蝶云星空。 为了应对API调用中的分页和限流问题,我们进行了以下优化: 1. **批次处理**:分段获取大规模数据,同时避免接口请求过多导致限流。 2. **重试机制**:针对接口偶尔返回错误或超时情况,引入了自动重试机制,提高数据抓取成功率。 获取到原始数据后,下一个关键步骤是进行必要的数据转换,以匹配金蝶云星空所需的格式。这一部分可以借助自定义转换逻辑模块,该模块灵活支持特定业务需求,确保每条记录都符合目标系统要求。最后,通过调用金蝶云星空提供的`batchSave` API,将处理后的采购入库单数据批量写入系统中。 此外,为确保整个过程透明可控,实时监控和告警功能发挥了重要作用。从初始抓取、格式转换,到最终写入,每一步都能够通过集中化控制台实时跟踪。一旦出现异常情况,如网络波动或服务器响应时间延长,对应监控会立刻发出告警,并触发预设恢复操作,以最大限度降低业务影响。 总之,通过以上技术手段,有效解决了跨平台间的大规模异构集成问题,使管易云与金蝶云星空两者之间实现稳定、高效、实时的数据联通。 ![用友与MES系统接口开发配置](https://pic.qeasy.cloud/D30.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台调用管易云接口gy.erp.purchase.arrive.get获取并加工数据 在数据集成生命周期的第一步中,调用源系统接口是至关重要的一环。本文将详细探讨如何通过轻易云数据集成平台调用管易云的`gy.erp.purchase.arrive.get`接口,获取采购入库单数据并进行初步加工。 #### 接口调用与请求参数配置 轻易云数据集成平台提供了全透明可视化的操作界面,使得配置和调用API接口变得直观且高效。以下是针对`gy.erp.purchase.arrive.get`接口的元数据配置: ```json { "api": "gy.erp.purchase.arrive.get", "method": "POST", "number": "code", "id": "code", "pagination": { "pageSize": 100 }, "idCheck": true, "request": [ {"field": "start_create", "label": "创建时间开始段", "type": "string"}, {"field": "end_create", "label": "创建时间结束段", "type": "string"}, {"field": "start_approve", "label": "审核时间开始段", "type":"string"}, {"field": "end_approve", "label":"审核时间结束段","type":"string"}, {"field":"warehouse_code","label":"仓库代码","type":"string"}, {"field":"supplier_code","label":"供应商代码","type":"string"}, {"field":"code","label":"单据编号","type":"string"}, {"field":"status","label":"审核状态","type":"string"}, {"field":"start_modify","label":"修改时间开始段","type":"string"}, {"field":"end_modify","label":"修改时间结束段","type":"string"}, {"field":"has_cancel_data","label":"是否返回已作废的入库单数据","type":"string"}, {"field":"has_account","label":"记账状态","type":"string"} ], "otherRequest":[ {"field": "page_size", "label": "分页大小", "type": "string", "value": "{PAGINATION_PAGE_SIZE}"}, {"field": "page_no", "label": "页号", "type": "string", "value": "{PAGINATION_START_PAGE}"} ] } ``` #### 请求参数详解 1. **基本请求参数**: - `start_create` 和 `end_create`: 用于指定查询的创建时间范围。 - `start_approve` 和 `end_approve`: 用于指定查询的审核时间范围。 - `warehouse_code`: 指定仓库代码,过滤特定仓库的数据。 - `supplier_code`: 指定供应商代码,过滤特定供应商的数据。 - `code`: 单据编号,用于精确查询某一特定单据。 - `status`: 审核状态,过滤不同审核状态的数据。 - `start_modify` 和 `end_modify`: 用于指定查询的修改时间范围。 - `has_cancel_data`: 是否返回已作废的入库单数据。 - `has_account`: 记账状态。 2. **分页参数**: - `page_size`: 每页返回的数据条数,这里设置为100条。 - `page_no`: 当前页号,用于分页查询。 #### 数据请求与清洗 在配置好请求参数后,通过轻易云平台发起POST请求,从管易云系统获取采购入库单数据。以下是一个示例请求: ```json { "start_create": "<开始日期>", "end_create": "<结束日期>", ... //其他必要参数 } ``` 成功获取到数据后,需要对原始数据进行清洗和初步加工。这一步骤包括但不限于: - **字段映射**:将管易云返回的数据字段映射到目标系统所需的字段格式。例如,将`purchase_order_id`映射为目标系统中的`order_id`。 - **数据类型转换**:确保所有字段的数据类型符合目标系统要求。例如,将日期字符串转换为标准日期格式。 - **异常处理**:处理可能出现的数据异常,如空值、格式错误等。 #### 实践案例 假设我们需要获取2023年1月1日至2023年1月31日之间所有已审核且未作废的采购入库单,并将其导入到目标系统。具体步骤如下: 1. **配置请求参数**: ```json { ... //其他必要参数 { field: 'start_create', value: '2023-01-01' }, { field: 'end_create', value: '2023-01-31' }, { field: 'status', value: 'approved' }, { field: 'has_cancel_data', value: 'false' } } ``` 2. **发起API请求**: 使用轻易云平台发起POST请求,获取符合条件的数据。 3. **清洗与加工**: 对返回的数据进行字段映射、类型转换和异常处理,以确保数据质量和一致性。 通过上述步骤,我们可以高效地从管易云系统中提取所需的采购入库单数据,并为后续的数据转换与写入阶段做好准备。这种方法不仅提高了工作效率,还确保了数据处理过程中的透明度和准确性。 ![金蝶与外部系统打通接口](https://pic.qeasy.cloud/S21.png~tplv-syqr462i7n-qeasy.image) ### 利用轻易云数据集成平台实现金蝶云星空API接口的数据转换与写入 在数据集成过程中,将源平台的数据转换为目标平台所能接受的格式是关键步骤。本文将详细探讨如何利用轻易云数据集成平台,将采购入库单数据转换并写入金蝶云星空API接口。 #### 元数据配置解析 首先,我们需要理解元数据配置中的各个字段及其作用。以下是元数据配置的详细解析: - `api`: 指定调用的API接口名称,这里是`batchSave`。 - `method`: HTTP请求方法,这里是`POST`。 - `idCheck`: 是否进行ID检查,这里设置为`true`。 - `request`: 请求体参数列表,包含多个字段,每个字段有其特定的属性和解析器。 #### 主要字段及解析器 1. **单据类型 (FBillTypeID)** - 类型: string - 解析器: ConvertObjectParser,参数为FNumber - 固定值: "RKD01_SYS" 2. **业务类型 (FBusinessType)** - 类型: string - 固定值: "CG" 3. **单据编号 (FBillNo)** - 类型: string 4. **供应商 (FSupplierId)** - 类型: string - 解析器: ConvertObjectParser,参数为FNumber 5. **入库日期 (FDate)** - 类型: string 6. **收料组织 (FStockOrgId)** - 类型: string - 解析器: ConvertObjectParser,参数为FNumber 7. **收料部门 (FStockDeptId)** - 类型: string - 解析器: ConvertObjectParser,参数为FNumber 8. **采购组织 (FPurchaseOrgId)** - 类型: string - 解析器: ConvertObjectParser,参数为FNumber 9. **送货单号 (FDeliveryBill)** - 类型: string 10. **提货单号 (FTakeDeliveryBill)** - 类型: string 11. **供货方 (FSupplyId)** - 类型: string - 解析器: ConvertObjectParser,参数为FNumber 12. **财务信息 (FInStockFin)**: 包含两个子字段: - 结算组织 (FSettleOrgId) - 类型: string - 解析器: ConvertObjectParser,参数为FNumber - 付款组织 (FPayOrgId) - 类型: string - 解析器: ConvertObjectParser,参数为FNumber 13. **明细信息 (FInStockEntry)**: 包含多个子字段: - 关联关系 (FInStockEntry_Link) 包含子字段: * 源单ID (FSBillId) * 类型:string * 下推关系 (FRuleId) * 固定值:"PUR_PurchaseOrder-STK_InStock" * 表体ID (FSId) * 类型:string * 源单表名 (FSTableName) * 固定值:"t_PUR_POOrderEntry" * 物料编码 (FMaterialId) * 类型:string * 解析器:ConvertObjectParser,参数为 FNumber * 零售条形码 (FCMKBarCode) * 类型:string * 实收数量 (FRealQty) * 类型:string * 单价 (FPrice) * 类型:string * 批号(FLot) * 类型:string * 仓库(FStockId) * 类型:string * 解析器:ConvertObjectParser,参数为 FNumber ...(略去部分字段) #### 数据转换与写入流程 1. **数据请求与清洗**: 首先,通过轻易云平台从源系统请求采购入库单数据,并进行必要的数据清洗。这一步确保了数据的准确性和完整性,为后续的ETL转换打下基础。 2. **ETL转换**: 在ETL阶段,我们利用元数据配置对数据进行转换。具体步骤如下: a. 根据元数据配置中的`request`字段,将源系统的数据映射到目标系统所需的格式。例如,将源系统中的供应商ID通过`ConvertObjectParser`转换成金蝶云星空所需的格式。 b. 对于复杂对象,如财务信息和明细信息,需要递归处理其子字段。例如,在处理财务信息时,需要分别处理结算组织和付款组织,并确保它们符合目标系统的要求。 3. **数据写入**: 转换完成后,通过调用金蝶云星空API接口(如`batchSave`),将处理后的数据写入目标系统。在这个过程中,需要注意以下几点: a. 确保所有必填字段都有正确的值,并且符合目标系统的格式要求。 b. 如果某些字段需要固定值(如业务类型、下推关系等),确保在请求体中正确设置这些值。 #### 实际案例应用 假设我们有一条采购入库单记录,其源系统的数据如下: ```json { "FBillNo": "PO20231001", "FSupplierId": "SUP123", "FDate": "2023-10-01", "FPurchaseOrgId": "ORG001", "FInStockEntry": [ { "FSBillId": "SO20231001", "FSId": "1", "FMaterialId": "MAT001", "FCMKBarCode": "1234567890123", "FRealQty": "100", ... } ] } ``` 通过轻易云平台,我们将上述记录转换并写入金蝶云星空API接口。最终生成的请求体如下: ```json { "FormId": "STK_InStock", "IsAutoSubmitAndAudit": true, "Operation": "Save", ... } ``` 通过这种方式,我们实现了从源系统到目标系统的数据无缝对接,大大提高了业务效率和透明度。 ![数据集成平台API接口配置](https://pic.qeasy.cloud/T28.png~tplv-syqr462i7n-qeasy.image)