实现金蝶其他出库单到聚水潭其他进仓的ETL过程

  • 轻易云集成顾问-李国敏
### 金蝶云星空数据集成到聚水潭:技术案例分享 在一次项目中,我们需要将金蝶云星空系统的其他出库单(退货)数据,集成到聚水潭的其他进仓模块。为此,我们利用轻易云数据集成平台,通过高效的数据写入能力和可靠的监控告警系统,实现了这一复杂对接任务。这篇文章将盘点一些关键技术点及它们如何助力该集成过程。 #### 1. API接口调用与分页处理 首先,为确保从金蝶云星空获取不漏单的数据,使用其API `executeBillQuery` 接口来抓取所需的其他出库单信息。在实际操作中,需要特别注意接口分页和限流问题。通过设置合理的批量请求参数以及实现重试机制,有效避免了因限流而导致的数据丢失或延迟。 ```json POST /open/jushuitan/otherinout/upload HTTP/1.1 Host: api.example.com Content-Type: application/json { "billType": "OT", "dataList": [ { ... } ] } ``` #### 2. 数据转换与格式差异处理 由于金蝶云星空和聚水潭之间存在数据结构上的差异,我们借助轻易云提供的自定义数据转换逻辑,将原始数据进行清洗、映射并调整至符合目标系统要求。同时,利用可视化的数据流设计工具,使得整个过程一目了然且便于管理。 #### 3. 实时监控与异常处理 在整个集成过程中,通过集中监控和告警系统实时跟踪每个任务的状态。当出现异常情况时,即刻触发报警,并根据设定好的错误重试机制快速恢复,从而保证业务连续性。此外,还配置了详细日志记录功能,以随时查看历史操作及排查潜在问题。 这些关键点保障了我们能够顺利、高质量地完成此次对接项目。接下来,将进一步介绍具体实施方案,包括如何通过API接口实现大规模、高性能的数据传输,以及细节层面的优化策略。 ![打通用友BIP数据接口](https://pic.qeasy.cloud/D5.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在轻易云数据集成平台中,调用源系统的API接口是数据集成生命周期的第一步。本文将详细探讨如何通过调用金蝶云星空的`executeBillQuery`接口获取并加工数据,以实现从金蝶到聚水潭的数据传输。 #### 接口配置与请求参数 首先,我们需要配置调用金蝶云星空接口的元数据。以下是关键的元数据配置项: - **api**: `executeBillQuery` - **method**: `POST` - **effect**: `QUERY` - **number**: `FBillNo` - **id**: `FEntity_FEntryID` - **idCheck**: `true` 这些配置项定义了我们将要调用的API名称、请求方法以及一些关键字段,如单据编号和实体主键等。 #### 请求参数详解 为了成功调用`executeBillQuery`接口,我们需要构建一个包含所有必要字段的请求体。以下是主要的请求参数及其描述: 1. **FEntity_FEntryID**: 分录ID,用于唯一标识每一条分录。 2. **FID**: 实体主键,用于唯一标识每一张单据。 3. **FBillNo**: 单据编号,用于标识具体单据。 4. **FDocumentStatus**: 单据状态,过滤条件之一,通常选择已审核状态(如`C`)。 5. **FStockOrgId_FNumber**: 库存组织编码。 6. **FDate**: 单据日期。 7. **FBillTypeID**: 单据类型。 8. **FNOTE**: 备注信息。 9. **FMATERIALID_FNumber**: 物料编码。 10. **FSTOCKID_FNumber**: 发货仓库编码。 11. **FQty**: 实收数量。 12. **FSTOCKSTATUSID**: 库存状态。 13. **FOWNERID**: 货主信息。 14. **FSRCBILLTYPEID**: 源单类型。 15. **FSRCBILLNO**: 源单编号。 此外,还有一些分页和过滤参数: - **Limit** 和 **StartRow** 用于分页查询,确保一次性获取的数据量不会过大。 - **FilterString** 用于设置过滤条件,例如只查询特定时间段内且状态为已审核的退货单据:`FApproveDate>='{{LAST_SYNC_TIME|dateTime}}' and FDocumentStatus='C' and FStockDirect = 'RETURN'`。 #### 请求示例 下面是一个示例请求体,展示了如何构建一个完整的API请求: ```json { "FormId": "STK_MisDelivery", "FieldKeys": "FID,FBillNo,FDocumentStatus,FStockOrgId.FNumber,FDate,FBillTypeID,FNOTE,FMATERIALID.FNumber,FSTOCKID.FNumber,FQty,FSTOCKSTATUSID,FOWNERID,FSRCBILLTYPEID,FSRCBILLNO", "FilterString": "FApproveDate>='2023-01-01' and FDocumentStatus='C' and FStockDirect = 'RETURN'", "Limit": 100, "StartRow": 0 } ``` #### 数据清洗与转换 在获取到原始数据后,我们需要对其进行清洗和转换,以便后续写入目标系统。在这个过程中,可以使用轻易云平台提供的数据处理工具,如字段映射、格式转换等。 例如,将金蝶中的物料编码字段`FMATERIALID.FNumber`映射到聚水潭中的相应字段,并确保数据格式符合目标系统要求。 #### 写入目标系统 完成数据清洗与转换后,下一步是将处理后的数据写入聚水潭系统。这通常涉及调用聚水潭提供的API接口,并传递经过处理的数据。 通过上述步骤,我们可以实现从金蝶到聚水潭的数据无缝对接,确保业务流程顺畅运行。 ![如何开发企业微信API接口](https://pic.qeasy.cloud/S28.png~tplv-syqr462i7n-qeasy.image) ### 数据集成案例:金蝶其他出库单(退货)到聚水潭其他进仓 在数据集成过程中,将金蝶的其他出库单(退货)数据转换并写入到聚水潭的其他进仓API接口是一个典型的ETL(Extract, Transform, Load)过程。本文将详细探讨如何通过轻易云数据集成平台实现这一过程。 #### API接口配置与元数据解析 目标平台为聚水潭,其API接口为`/open/jushuitan/otherinout/upload`,采用POST方法进行数据传输。以下是元数据配置的详细解析: - **is_confirm**: 是否确认单据,类型为布尔值,默认值为false。使用函数判断条件`IF({F_POKM_JSTSTOCKNUMBER} = 10816570 , 1 , 0 )`来决定是否确认。 - **excute_confirming**: 是否审核单据,类型为字符串,默认值为false。 - **wms_co_id**: 分仓编号,类型为整数,对应金蝶系统中的字段`{F_POKM_JSTSTOCKNUMBER}`。 - **type**: 出入库类型,固定值为`in`表示入库(其它退货)。 - **remark**: 备注信息,不允许为空。格式为`金蝶其他出库单据推送(退货),单号:{FBillNo}`。 - **drp_co_name**: 出库类型,固定值为“其他退货”。 - **external_id**: 外部单号,用于唯一标识该单据。格式为`{FBillNo}{F_POKM_JSTSTOCKNUMBER}{F_POKM_JSTSTOCKNUMBER2}`。 - **warehouse**: 仓库类型,对应ERP仓库资料设定页面中的编号,由字段`{F_POKM_JSTSTOCKNUMBER2}`提供。 - **items**: 商品列表,为数组类型,每个商品包含两个字段: - **sku_id**: 商品编码,对应金蝶系统中的字段`{FMATERIALID_FNumber}`。 - **qty**: 数量,对应金蝶系统中的字段`{FQty}`。 #### 数据转换与写入过程 1. **提取数据(Extract)** 从金蝶系统中提取所需的原始数据,包括订单号、分仓编号、商品编码和数量等。 2. **数据转换(Transform)** 使用轻易云平台的ETL工具对提取的数据进行转换,以满足聚水潭API接口的要求。例如: - 使用条件判断函数设置是否确认单据的值。 - 拼接外部单号以确保唯一性。 - 格式化备注信息以符合API要求。 3. **加载数据(Load)** 将转换后的数据通过POST请求写入到聚水潭的API接口。以下是一个示例请求体: ```json { "is_confirm": true, "excute_confirming": "false", "wms_co_id": 10816570, "type": "in", "remark": "金蝶其他出库单据推送(退货),单号:123456", "drp_co_name": "其他退货", "external_id": "1234561081657010816570", "warehouse": 2, "items": [ { "sku_id": "SKU123", "qty": 10 }, { "sku_id": "SKU456", "qty": 5 } ] } ``` #### 操作细节与注意事项 1. **字段映射与验证** 确保所有字段正确映射,并根据业务逻辑进行必要的验证。例如,确保分仓编号和商品编码在目标平台中有效。 2. **错误处理与重试机制** 在实际操作中,需要处理可能出现的错误,如网络问题或API响应异常。可以设置重试机制以提高可靠性。 3. **实时监控与日志记录** 利用轻易云平台提供的实时监控功能,跟踪每个ETL任务的执行状态,并记录日志以便后续分析和排查问题。 通过上述步骤,可以高效地将金蝶系统中的其他出库单(退货)数据转换并写入到聚水潭的其他进仓接口,实现不同系统间的数据无缝对接。这不仅提升了业务流程的自动化程度,还确保了数据的一致性和准确性。 ![钉钉与WMS系统接口开发配置](https://pic.qeasy.cloud/T17.png~tplv-syqr462i7n-qeasy.image)