从管易云到金蝶云的高效数据流设计:案例与技术分析

  • 轻易云集成顾问-谢楷斌
### 管易云·奇门与金蝶云星空的高效数据集成案例:销售发货单到其他出库单 在企业管理系统的对接过程中,如何保证不同系统之间的数据无缝衔接一直是一个复杂且技术要求高的问题。本文将重点解析一种实际应用场景:通过API接口将管易云·奇门中的“销售发货单”数据集成到金蝶云星空中的“其他出库单”。具体来说,我们利用轻易云数据集成平台设计并实现了一条自动化的数据流,这一过程涵盖了从获取管易云·奇门接口数据到转换并写入金蝶云星空的细节。 首先,通过调用`gy.erp.trade.deliverys.get`接口从管易云·奇门中抓取实时发货信息。在这一阶段,由于需要处理大量数据和可能存在分页及限流问题,我们采用了定时可靠的抓取机制,确保所有订单都能被及时准确地提取出来。同时,为避免漏单情况出现,我们实现了全量检测和增量更新相结合的方法。这种方法不仅提高了捕获效率,还保证了数据完整性。 随后的步骤则是对提取的数据进行必要的转换,以适应目标系统——即金蝶云星空API `batchSave` 的格式需求。在这一环节,自定义的数据转换逻辑发挥了重要作用,使得销售发货单的信息能够正确映射为其他出库单所需字段,并解决两者之间可能存在的数据结构差异。 为了确保整个流程顺利进行并具备可监控性,我们使用集中的监控和告警系统来实时跟踪每一个任务状态。如果某个任务发生错误,不仅可以迅速定位问题,还能依靠内置的错误重试机制最大限度地减少手动干预。此外,通过轻松配置日志记录功能,实现对每一步处理过程留下详细的审计轨迹,这为后续排查和优化提供了有力支持。 总结来看,通过这些关键技术点的综合应用,实现了一条从管易获取发货信息,到在金蝶中生成对应出库记录,完全自动化、透明且高效可靠的数据集成通道。 ![金蝶与CRM系统接口开发配置](https://pic.qeasy.cloud/D26.png~tplv-syqr462i7n-qeasy.image) ### 调用管易云·奇门接口gy.erp.trade.deliverys.get获取并加工数据 在数据集成生命周期的第一步中,我们需要从源系统获取数据,并对其进行初步加工。本文将详细探讨如何通过轻易云数据集成平台调用管易云·奇门接口`gy.erp.trade.deliverys.get`来实现这一目标。 #### 接口调用配置 首先,我们需要配置接口调用的元数据。以下是该接口的元数据配置: ```json { "api": "gy.erp.trade.deliverys.get", "effect": "QUERY", "method": "POST", "number": "code", "id": "code", "name": "code", "idCheck": true, "request": [ {"field":"start_create","label":"创建时间开始段","type":"datetime","describe":"创建时间开始段"}, {"field":"end_create","label":"创建时间结束段","type":"datetime","describe":"111"}, {"field":"start_modify_date","label":"修改时间开始段","type":"datetime","describe":"修改时间开始段","value":"{{LAST_SYNC_TIME|datetime}}"}, {"field":"end_modify_date","label":"修改时间结束段","type":"datetime","describe":"修改时间结束段","value":"{{CURRENT_TIME|datetime}}"}, {"field":"del","label":"是否返回已作废的","type":"int","describe":"默认:0\n0:不返回已作废的单据\n1:返回已作废的单据"}, {"field":"delivery","label":"发货状态","type":"int","describe":"0:未发货、发货中、发货失败\n1:发货成功","value":"1"}, {"field":"code","label":"单据编码","type":"string","describe":"单据编码"}, {"field":"warehouse_code","label":"仓库编码","type":"string","describe":"仓库编码"}, {"field":"shop_code","label":"店铺编码","type":"string","describe":"店铺编码"}, {"field":"outer_code","label":"平台单号","type":"string","describe":"平台单号"}, {"field":"mail_no","label":"物流单号","type":"string","describe":"物流单号"}, {"field": "start_delivery_date", "label": "发货时间开始段", "type": "datetime", "describe": "发货时间开始段"}, {"field": "end_delivery_date", "label": "发货时间结束段", "type": "datetime", "describe": "发货时间结束段"} ], "otherRequest":[ {"field": "page_no", "label": "页码", "type": "int", "describe": "默认1", "value": 1}, {"field": "page_size", "label": "每页大小", "type": int, describe: 每页大小, value: 20} ], autoFillResponse: true, condition_bk: [[{"field": details.order_type, logic: eqv2, value: Maintain}]], condition: [[{"field": details.order_type, logic: eqv2, value: Maintain}]] } ``` #### 请求参数解析 在请求参数中,主要包括以下几个关键字段: - `start_create` 和 `end_create`:用于指定查询创建时间的范围。 - `start_modify_date` 和 `end_modify_date`:用于指定查询修改时间的范围,分别使用了上次同步时间和当前时间作为动态值。 - `del`:是否返回已作废的单据,默认值为0,即不返回已作废的单据。 - `delivery`:发货状态,设置为1表示只查询发货成功的单据。 - `page_no` 和 `page_size`:分页参数,分别表示当前页码和每页记录数。 这些参数确保了我们能够精准地获取所需的数据,并且通过分页机制可以处理大量数据。 #### 数据获取与初步加工 在完成接口调用配置后,我们可以通过轻易云平台发送请求并获取响应数据。以下是一个示例请求: ```json { api: gy.erp.trade.deliverys.get, method: POST, requestBody: { start_create: '2023-01-01T00:00:00', end_create: '2023-12-31T23:59:59', start_modify_date: '{{LAST_SYNC_TIME|datetime}}', end_modify_date: '{{CURRENT_TIME|datetime}}', del: 0, delivery: 1, page_no: 1, page_size: 20 } } ``` 响应数据将自动填充到预定义的数据结构中,这一步骤极大简化了后续的数据处理工作。 #### 数据清洗与转换 在获取到原始数据后,需要对其进行清洗和转换,以便进一步处理和写入目标系统。清洗过程包括去除无效字段、标准化日期格式等操作。转换过程则涉及将原始数据映射到目标系统的数据结构中。 例如,对于一个销售发货单,我们可能需要提取以下关键字段: - 单据编码(code) - 仓库编码(warehouse_code) - 店铺编码(shop_code) - 平台单号(outer_code) - 发货状态(delivery) 这些字段将被映射到金蝶其他出库单的数据结构中,以实现系统间的数据同步。 #### 实践案例 假设我们需要同步某一时段内所有已成功发货的销售订单到金蝶系统,可以按照如下步骤进行: 1. 配置并发送API请求,获取符合条件的销售订单数据。 2. 对响应数据进行清洗和转换,将其映射到金蝶其他出库单的数据结构中。 3. 将处理后的数据写入金蝶系统,实现两者间的数据同步。 通过上述步骤,我们能够高效地完成从管易云·奇门接口获取并加工数据的任务,为后续的数据处理和业务应用打下坚实基础。 ![轻易云数据集成平台金蝶集成接口配置](https://pic.qeasy.cloud/S1.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台实现管易销售发货单到金蝶其他出库单的ETL转换 在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL转换,使其符合目标平台金蝶云星空API接口所能够接收的格式,最终写入目标平台。本文将详细介绍如何利用轻易云数据集成平台配置元数据,实现这一过程。 #### 元数据配置解析 为了将管易销售发货单的数据转换为金蝶其他出库单所需的格式,我们需要配置一系列元数据字段。以下是关键字段及其配置说明: 1. **FBillTypeID(单据类型)**: - 类型:string - 描述:单据类型 - 解析器:ConvertObjectParser,参数为FNumber - 值:QTCKD09_SYS 2. **FBillNo(单据编号)**: - 类型:string - 描述:单据编号 3. **FStockOrgId(库存组织)**: - 类型:string - 描述:组织 - 解析器:ConvertObjectParser,参数为FNumber - 值:根据shop_code字段值进行条件匹配,返回对应的组织编码。 4. **FDate(日期)**: - 类型:string - 描述:日期 - 值:从delivery_statusInfo.delivery_date字段获取 5. **FOwnerTypeIdHead(货主类型)**: - 类型:string - 描述:多类别基础资料列表 - 值:BD_OwnerOrg 6. **FOwnerIdHead(货主)**: - 类型:string - 描述:多类别基础资料 - 解析器:ConvertObjectParser,参数为FNumber - 值:与库存组织类似,根据shop_code字段值进行条件匹配。 7. **FStockDirect(库存方向)**: - 类型:string - 描述:库存方向 - 值:GENERAL 8. **FCustId(客户)**: - 类型:string - 解析器:ConvertObjectParser,参数为FNumber - 值:通过查找集合获取客户编号。 9. **FNote(备注)**: - 类型:string - 值:从details.memo字段获取 10. **F_UQRW_Text(销售发货单号)**: - 类型:string - 值:从code字段获取 11. **F_352_pingtaidanhao(平台单号)**: - 类型:string - 值:从platform_code字段获取 12. **F_UQRW_Base(仓库)**: - 类型:string - 解析器:ConvertObjectParser,参数为FNumber - 值:通过查找集合获取仓库编号。 13. **FPickOrgId(领用组织)**: - 类型:string - 解析器:ConvertObjectParser,参数为FNumber - 值: 与库存组织类似,根据shop_code字段值进行条件匹配。 14. **FDeptId(领料部门)**: - 类型: string – 解析器: ConvertObjectParser, 参数为 FNumber 15. **F_UQRW_WLDH (物流单号)**: – 类型: string – 值: 从 express_no 字段获取 16. **F_UQRW_SONO (管易销售订单号)**: – 类型: string – 值: 从 details.trade_code 字段获取 17. **FEntity (明细信息)**: – 类型: array – 描述: 明细信息 – 子元素: * FMaterialId (物料编码): + 类型: string + 解析器: ConvertObjectParser, 参数为 FNumber + 值: 通过查找集合获取物料编码。 * FQty (实发数量): + 类型: string + 描述: 数量 + 值: 从 qty 字段获取 * FUnitID (单位): + 类型: string + 解析器: ConvertObjectParser, 参数为 FNumber + 值: 通过查找集合获取单位编号。 * FSTOCKSTATUSID (库存状态): + 类型: string + 描述: 库存状态 + 解析器: ConvertObjectParser, 参数为 FNumber + 值: KCZT01_SYS #### API调用配置 在完成元数据配置后,我们需要配置API调用相关的信息: - API名称:"batchSave" - 请求方法:"POST" - 是否验证基础资料:"true" - 提交并审核:"true" - 表单ID:"STK_MisDelivery" - 执行操作:"Save" 这些配置确保了我们可以正确地将转换后的数据提交到金蝶云星空系统,并自动完成审核流程。 #### 数据处理流程 1. 数据请求与清洗阶段已经完成,将源平台的数据提取出来。 2. 在ETL转换阶段,根据上述元数据配置,将源数据映射到目标平台所需的格式。 3. 利用API调用,将转换后的数据提交到金蝶云星空系统中。 在整个过程中,通过轻易云提供的全透明可视化操作界面,可以实时监控每个环节的数据流动和处理状态,从而确保整个ETL过程高效且无误。 ![如何开发用友BIP接口](https://pic.qeasy.cloud/T11.png~tplv-syqr462i7n-qeasy.image)