轻易云数据集成:将管易销售发货单转换至金蝶云星空

  • 轻易云集成顾问-潘裕
### 管易云·奇门数据集成到金蝶云星空:销售出库同步(线上买赠) 在实际企业业务操作中,不同系统之间的数据对接和集成往往面临很多挑战,尤其是对于高并发、高吞吐量的场景。本文将具体分享如何通过轻易云数据集成平台,实现管易云·奇门与金蝶云星空的无缝数据对接,以"管易销售发货单-->金蝶销售出库单(线上买赠)"为例。 #### 技术背景 为了确保在订单处理过程中,各个环节的数据都能够及时、准确地传递,我们调用了管易云·奇门接口`gy.erp.trade.deliverys.get`来获取最新的发货单信息,并使用金蝶云星空API `batchSave`将这些信息导入到金蝶系统中。这一过程面临以下几个技术挑战: 1. **高效的数据抓取与写入**:面对大量订单数据,需要确保快速从管易获取并实时写入到金蝶。 2. **分页和限流管理**:管控API请求频率,避免超载及提供稳定性。 3. **异常检测和处理机制**:保证在出现问题时能及时发现并解决,提供一个可靠的数据传输渠道。 #### 集成实施方案概述 我们采用了定时任务机制,通过定期调用`gy.erp.trade.deliverys.get`接口拉取新生成或更新的发货单数据。在这一过程中,我们配置了一套流式处理Pipeline,支持批量化存储至缓冲区,再通过批量操作接口,将其一次性提交至金蝶系统,有效提升整体性能。 ##### 数据抓取与初步转换 首先,通过轻易云内置的可视化工具设计了一个基础数据流,用于周期性调度触发,从管易端获取必要字段。借助轻易云的平台优势,可以清晰看到每一步骤执行情况,有利于监控整个生命周期中的各类可能异常,并以最快速度做出响应调整。 ##### 页面限流策略应用 由于API存在请求速率限制,我们应该合理安排页面大小以及重试机制。在这里,可以利用模块自带的一些高级功能,例如动态参数设置和自动分页功能,对不同页面进行动态请求,将结果拼接后统一处理,大大提高工作效率,同时也避免了因频繁访问而导致的封禁风险。 以上步骤确保我们可以从根本上保证完整准确抓取源头数据,为之后复杂的逻辑转换打下坚实基础。接下来会详细讲解如何进一步完成转化、映射及错误容错等关键细节。 ![企业微信与ERP系统接口开发配置](https://pic.qeasy.cloud/D14.png~tplv-syqr462i7n-qeasy.image) ### 管易云·奇门接口gy.erp.trade.deliverys.get的调用与数据加工 在数据集成生命周期的第一步中,调用源系统接口获取并加工数据是至关重要的一环。本文将深入探讨如何通过轻易云数据集成平台调用管易云·奇门接口`gy.erp.trade.deliverys.get`,并对获取的数据进行有效的加工处理。 #### 接口调用配置 首先,我们需要配置接口调用的元数据。以下是关键的元数据配置项: - **API**: `gy.erp.trade.deliverys.get` - **请求方法**: `POST` - **分页设置**: 每页50条记录 - **ID字段**: `code` - **格式化响应**: 将`delivery_statusInfo.delivery_date`字段格式化为`delivery_date_new` #### 请求参数配置 为了确保我们能够准确地获取所需的数据,需要设置一系列请求参数。这些参数包括创建时间、发货时间、修改时间等。以下是详细的请求参数配置: ```json { "request": [ {"field": "start_create", "label": "创建时间开始段", "type": "string"}, {"field": "end_create", "label": "创建时间结束段", "type": "string"}, {"field": "start_delivery_date", "label": "发货时间开始段", "type": "string", "value": "{{LAST_SYNC_TIME|datetime}}"}, {"field": "end_delivery_date", "label": "发货时间结束段", "type": "string", "value": "{{CURRENT_TIME|datetime}}"}, {"field": "start_modify_date", "label": "修改时间开始段", "type": "string"}, {"field": "end_modify_date", "label": "修改时间结束段", "type": "string"}, {"field": "del", "label": "返回是否作废的单据", "type": "string"}, {"field": "delivery", "label": "发货状态", "type":"string","value":"1"}, {"field":"code","label":"单据编号","type":"string"} ], ... } ``` 这些参数确保了我们可以灵活地控制数据提取的范围和条件。例如,通过设置`start_delivery_date`和`end_delivery_date`,我们可以限定只获取特定时间段内的发货单据。 #### 数据分页处理 为了处理大量数据,分页机制是必不可少的。我们在元数据中定义了分页大小为30条记录,并通过以下配置实现分页: ```json { ... “otherRequest”: [ {"field":"page_size","label":"分页大小","type":"string","value":"30"}, {"field":"page_no","label":"页号","type":"string"} ] } ``` 在实际调用过程中,需要动态调整`page_no`以遍历所有页面的数据。 #### 数据格式化与转换 在获取到原始数据后,需要对部分字段进行格式化处理。例如,将原始响应中的`delivery_statusInfo.delivery_date`字段格式化为新的字段名`delivery_date_new`,并转换其日期格式: ```json { ... “formatResponse”: [ {"old":"delivery_statusInfo.delivery_date","new":"delivery_date_new","format":"date"} ] } ``` 这种格式化操作不仅提升了数据的一致性,还简化了后续的数据处理步骤。 #### 异常处理与补偿机制 在实际操作中,可能会遇到网络波动或系统故障导致的数据丢失问题。为此,我们配置了补偿机制,通过定时任务(crontab)定期重新拉取前一天的数据,以确保数据完整性: ```json { ... “omissionRemedy”: { “crontab”: “20 0 * * *”, “takeOverRequest”: [ { “field”: “start_delivery_date”, “label”: “发货时间结束段”, “type”: “string”, “value”: “{{DAYS_AGO_1|datetime}}” }, { “field”: “end_delivery_date”, “value”: “{{LAST_SYNC_TIME|datetime}}”, “type”: “string” } ] } } ``` 通过这种方式,可以有效地弥补由于各种原因导致的数据缺失问题。 #### 条件过滤与业务逻辑 最后,为了满足特定业务需求,我们可以在元数据中定义条件过滤。例如,仅同步线上买赠订单类型的销售出库单: ```json { ... “condition_bk”: [ [{"field":"details.order_type","logic":"eqv2","value":"gift"}] ], ... } ``` 这种条件过滤确保了我们只提取符合业务逻辑的数据,从而提高了数据处理效率和准确性。 综上所述,通过合理配置元数据和请求参数,并结合分页、格式化、异常处理等机制,可以高效地调用管易云·奇门接口获取并加工所需的数据,为后续的数据转换与写入打下坚实基础。 ![如何对接用友BIP接口](https://pic.qeasy.cloud/S7.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台ETL转换至金蝶云星空API接口 在数据集成的生命周期中,将源平台的数据转换为目标平台可接收的格式是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台,将管易销售发货单的数据转换为金蝶云星空API接口所能接收的销售出库单格式,并最终写入目标平台。 #### API接口配置与元数据解析 在本案例中,我们使用的是金蝶云星空的`batchSave` API接口。以下是具体的元数据配置及其解析: ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ { "field": "FBillTypeID", "label": "单据类型", "type": "string", "describe": "单据类型", "parser": {"name":"ConvertObjectParser","params":"FNumber"}, "value": "XSCKD09_SYS" }, { "field": "FBillNo", "label": "单据编号", ... } ], ... } ``` #### 数据字段解析与转换 1. **单据类型(FBillTypeID)**: - 配置:`"value":"XSCKD09_SYS"` - 转换:使用`ConvertObjectParser`将值转换为目标系统所需的格式。 2. **日期(FDate)**: - 配置:`"value":"{{delivery_statusInfo.delivery_date}}"` - 转换:直接从源数据中的`delivery_date`字段获取并填充。 3. **发货组织(FStockOrgId)**和**销售组织(FSaleOrgId)**: - 配置:根据不同的`shop_code`进行条件判断。 - 转换:使用SQL CASE语句实现多种条件下的值映射。 4. **客户(FCustomerID)**: - 配置:通过查找集合 `_findCollection find FNumber from dc704b79-f3da-309a-9d2d-88456a5cbcd9 where F_352_waibuma={shop_code}` - 转换:根据`shop_code`查找对应的客户编号。 5. **货主类型(FOwnerTypeIdHead)**和**货主(FOwnerIdHead)**: - 配置:固定值 `BD_OwnerOrg` - 转换:同样使用SQL CASE语句进行多条件值映射。 6. **平台单号、销售订单单号、销售发货单号、OMS单号**等字段: - 配置:直接映射源数据中的相应字段,如 `{platform_code}`, `{{details.trade_code}}`, `{code}` 等。 7. **财务信息(SubHeadEntity)**: - 包含结算组织和结算币别。 - 配置和转换类似于前述组织字段,使用SQL CASE语句和固定值映射。 8. **明细信息(FEntity)**: - 包含物料编码、库存单位、仓库、实发数量等子字段。 - 转换:通过 `_findCollection` 查找对应物料编码和库存单位,并计算含税单价 `{{details.amount_after}}/{{details.qty}}`. 9. **物流明细信息(FOutStockTrace)**: - 包含物流公司、物流单号、寄件人手机号等子字段。 - 转换:使用 `ConvertObjectParser` 和字符串函数如 `RIGHT()` 实现所需格式。 #### 操作配置 在操作部分,我们定义了业务对象表单ID、执行操作、是否提交并审核等参数: ```json { ... "otherRequest":[ {"field":"FormId","label":"业务对象表单Id","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"SAL_OUTSTOCK"}, {"field":"Operation","label":"执行的操作","type":"string","describe":"执行的操作","value":"Save"}, {"field":"IsAutoSubmitAndAudit","label":"提交并审核","type":"bool","describe":"提交并审核","value":"true"}, {"field":"IsVerifyBaseDataField","label":"验证基础资料","type":"bool","describe":"是否验证所有的基础资料有效性,布尔类,默认false(非必录)","value":"true"}, {"field":"SubSystemId","label":"系统模块","type":"string","describe":"默认仓库模块","value":"21"}, {"field":"InterationFlags","label":"允许负库存","type":"string","describe":"允许负库存","value":"STK_InvCheckResult"} ], ... } ``` 这些配置确保了在将数据写入目标平台时,能够自动提交并审核,同时验证基础资料的有效性,避免因数据不一致导致的问题。 #### 实际应用与监控 在实际应用中,通过轻易云数据集成平台,我们可以实时监控整个ETL过程,确保每个环节的数据处理状态清晰可见。这不仅提升了业务透明度,还大大提高了效率,使得跨系统的数据集成变得更加顺畅无缝。 通过上述步骤,我们成功地将管易销售发货单的数据转换为金蝶云星空API接口所能接收的格式,并顺利写入目标平台,实现了跨系统的数据无缝对接。 ![如何对接企业微信API接口](https://pic.qeasy.cloud/T3.png~tplv-syqr462i7n-qeasy.image)