使用轻易云平台实现数据ETL并写入金蝶云星空的实例

  • 轻易云集成顾问-谢楷斌
### 吉客云数据集成到金蝶云星空:VMI调拨入库对接采购订单技术案例分享 在本技术案例中,我们将深度解析如何高效地实现吉客云数据与金蝶云星空的数据互通。具体来说,本方案关注的是通过`erp.storage.goodsdocin.v2`接口从吉客云获取VMI(供应商管理库存)调拨入库信息,并使用`batchSave`接口将其写入金蝶云星空系统,对应已测试的采购订单流程。 #### 技术背景和关键环节: 1. **高吞吐量的数据写入能力**: 由于每次从吉客云获取的大量VMI调拨入库数据,需要确保这些数据能够快速、安全地传输并成功存储到金蝶云星空中。在实现过程中,通过优化API调用,提升了批量数据处理的效率,大幅减少了延迟时间。 2. **集中监控和告警系统**: 数据集成的全过程覆盖实时监控,包括任务状态、性能指标等。任何潜在异常,如网络波动或接口响应缓慢,都会触发实时告警,并记录详细日志以备查阅。这不仅提高了稳定性,还便于后续问题追踪和解决。 3. **分页与限流处理机制**: 考虑到吉客云 `erp.storage.goodsdocin.v2` 接口可能存在的分页返回结果及访问频率限制,本方案使用了一种智能分页策略,即自动识别并调整页大小,以避免因超出限制而导致的数据丢失或请求失败。此外,加入限流算法确保不超过API调用频率上限,从而保护平台稳定性。 4. **自定义数据转换逻辑**: 吉客云与金蝶云星空之间的数据格式差异是必须面对的问题。我们通过自定义映射规则,实现输入输出字段的一一对应,同时适配两者间业务模型的不一致之处。例如,从吉客运来的SKU编码需要根据特定规则翻译为金蝶内部识别码,这样才能保证正确匹配各个仓储操作单元。 5. **异常处理与错误重试机制**: 在实际运行中,不可避免会遇到各种异常情况如网络断开、数据库锁争夺失败等。本案设计了一套完整的错误重试机制,通过分析不同类型错误原因采取合适措施进行再尝试。如果某项操作连续多次重试依然失败,将引发二级报警,由人工介入检查并修复潜在故障点。 以上几个方面构成了此次技术实施中的核心亮点,在随后的细节部分,我们将进一步探讨如何完成各步骤配置,以及相关代码片段示例,共同挖 ![钉钉与MES系统接口开发配置](https://pic.qeasy.cloud/D5.png~tplv-syqr462i7n-qeasy.image) ### 调用吉客云接口erp.storage.goodsdocin.v2获取并加工数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用吉客云接口`erp.storage.goodsdocin.v2`,获取并加工数据,以实现VMI调拨入库对接采购订单的功能。 #### 接口配置与调用 首先,我们需要配置元数据以便正确调用吉客云的API接口。以下是元数据配置的关键参数: - **api**: `erp.storage.goodsdocin.v2` - **method**: `POST` - **effect**: `QUERY` - **number**: `goodsdocNo` - **id**: `recId` - **idCheck**: `true` 请求参数包括分页信息、时间范围、入库类型等。具体字段如下: ```json [ {"field":"pageIndex","label":"分页页码","type":"string"}, {"field":"pageSize","label":"分页页数","type":"string","value":"50"}, {"field":"goodsDocNo","label":"入库单号","type":"string"}, {"field":"startDate","label":"创建时间的起始时间","type":"string","value":"{{LAST_SYNC_TIME|datetime}}"}, {"field":"endDate","label":"创建时间的结束时间","type":"string","value":"{{CURRENT_TIME|datetime}}"}, {"field":"inouttype","label":"入库类型","type":"string","describe":"入库类型(100-期初库存 101-采购入库 102-调拨入库...)","value":"102"}, {"field":"warehouseId","label":"仓库ID","type":"string"}, {"field":"warehouseCode","label":"仓库编号","type":"string"}, {"field":"vendId","label":"供应商ID(往来单位)","type":"string"}, {"field":"vendCode","label":"供应商编号(往来单位)","type":"string"}, {"field":"billNo","label":"上游单据号(关联单号)","type":"string"}, {"field":"userName","label":"创建人名称","type":"string"}, {"field":"gmtModifiedStart","label":"主表更新时间起始","type": "string"}, {"field": "gmtModifiedEnd", "label": "主表更新时间截至", "type": "string" }, { "field": "selelctFields", "label": "返回参数", "type": "string", "value": "goodsdocNo,inOutDate,gmtCreate,inouttype,vendCustomerCode,warehouseCode,warehouseName,sourceBillNo,billNo,redStatus,financeBillStatus,goodsDocDetailList.goodsNo,goodsDocDetailList.quantity,goodsDocDetailList"} ] ``` 这些字段确保了我们能够获取到所需的数据,并进行后续处理。 #### 数据清洗与转换 在成功调用API并获取数据后,下一步是对数据进行清洗和转换。根据元数据配置中的`condition`字段,我们需要过滤掉数量为0的记录,并且只处理来自VMI仓库的数据: ```json [ {"field": "goodsDocDetailList.quantity", "logic": "gt", "value": "0"}, {"field": "fromWarehouse", "logic": "like", "value": "VMI"} ] ``` 此外,我们还需要将嵌套的`goodsDocDetailList`平铺展开,以便后续处理更加方便。这可以通过`beatFlat`字段实现: ```json ["goodsDocDetailList"] ``` #### 自动填充与补偿机制 为了确保数据的一致性和完整性,我们启用了自动填充响应功能(`autoFillResponse: true`),以及遗漏补偿机制(`omissionRemedy`)。遗漏补偿机制通过定时任务(crontab)定期检查并补充遗漏的数据: ```json { "crontab": "39 2 * * *", "takeOverRequest":[ { "field": "startDate", "value": "_function FROM_UNIXTIME( unix_timestamp() -259200 , '%Y-%m-%d %H:%i:%s' )", "type": "string", "label": "接管字段", ... } ] } ``` 此配置确保即使在网络波动或系统故障情况下,也能及时补充缺失的数据。 #### 实际应用案例 在实际应用中,我们通过上述配置成功实现了VMI调拨入库对接采购订单的功能。具体步骤如下: 1. 配置API请求参数,包括分页信息、时间范围、入库类型等。 2. 调用吉客云接口获取原始数据。 3. 对获取的数据进行清洗和转换,过滤掉无效记录,并展开嵌套结构。 4. 启用自动填充响应功能,确保数据完整性。 5. 定期执行遗漏补偿任务,保证数据一致性。 通过以上步骤,我们不仅实现了不同系统间的数据无缝对接,还提高了业务流程的透明度和效率。这一技术方案为企业提供了可靠的数据集成解决方案,有效支持了业务运营。 ![金蝶与MES系统接口开发配置](https://pic.qeasy.cloud/S29.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口的技术案例 在数据集成的生命周期中,将源平台的数据转换为目标平台所能接受的格式,并最终写入目标平台是至关重要的一步。本文将深入探讨如何利用轻易云数据集成平台将VMI调拨入库数据转换为金蝶云星空API接口所需的格式,并成功写入目标系统。 #### API接口配置与元数据解析 在本案例中,我们需要将VMI调拨入库的数据通过ETL流程转换为金蝶云星空API `batchSave` 接口所能接收的格式。以下是具体的元数据配置: ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ { "field": "FBillTypeID", "label": "单据类型", "type": "string", "describe": "单据类型", "parser": { "name": "ConvertObjectParser", "params": "FNumber" }, "value": "CGDD01_SYS" }, { "field": "FDate", "label": "采购日期", ... } ], ... } ``` #### 数据字段映射与转换 1. **单据类型(FBillTypeID)**: - 类型:字符串 - 描述:单据类型 - 转换器:`ConvertObjectParser`,参数为`FNumber` - 固定值:`CGDD01_SYS` 2. **采购日期(FDate)**: - 类型:字符串 - 描述:日期 - 动态值:`{inOutDate}` 3. **采购组织(FPurchaseOrgId)**: - 类型:字符串 - 描述:组织 - 转换器:`ConvertObjectParser`,参数为`FNumber` - 动态值:`{goodsDocDetailList_ownerName}` - 映射关系:目标ID `6441f0214af70a2f240adb22` 4. **供应商(FSupplierId)**: - 类型:字符串 - 描述:基础资料 - 转换器:`ConvertObjectParser`,参数为`FNumber` - 动态值:`{fromWarehouseCode}` - 映射关系:目标ID `651143e1ec266b0099244c67` 5. **自动下推(Fisautopush)**: - 类型:字符串 - 固定值:`true` 6. **明细信息(FPOOrderEntry)**: 包含多个子字段,如物料编码、采购数量、结算组织、交货日期和预计入库仓库等。 7. **吉客云单号(FJKYNo)**: - 类型:字符串 - 动态值:`{goodsdocNo}` #### 操作配置与其他请求参数 - **业务对象表单Id(FormId)**: 必须填写金蝶的表单ID,例如 `PUR_PurchaseOrder` - **提交并审核(IsAutoSubmitAndAudit)**: 布尔类型,固定值 `true` - **执行的操作(Operation)**: 字符串类型,固定值 `Save` - **验证基础资料(IsVerifyBaseDataField)**: 布尔类型,固定值 `true` #### 实际应用案例 假设我们从源系统获取到如下数据: ```json { "goodsdocNo": "PO12345678", ... } ``` 通过上述配置,我们可以将这些数据转换为符合金蝶云星空API要求的格式,并通过POST请求发送到目标系统,实现数据的无缝对接。 #### 总结 通过详细解析元数据配置和字段映射,我们展示了如何利用轻易云数据集成平台实现复杂的数据ETL转换过程,并成功将VMI调拨入库的数据写入到金蝶云星空系统。这不仅提升了业务流程的自动化程度,还确保了数据的一致性和准确性。 ![用友与外部系统接口集成开发](https://pic.qeasy.cloud/T15.png~tplv-syqr462i7n-qeasy.image)