企业系统数据集成案例:金蝶云拆卸单到聚水潭入库单的ETL流程

  • 轻易云集成顾问-曾平安
### 系统对接集成案例分享:金蝶云星空数据集成到聚水潭——金蝶--拆卸单(子项)=>聚水潭--其他入库单 在企业应用系统的复杂环境中,实现不同系统间的数据无缝连接是关键的一步。在此技术案例中,我们将深入探讨如何通过轻易云数据集成平台,将金蝶云星空中的拆卸单(子项)数据高效地同步到聚水潭系统,并生成对应的其他入库单。据实际运行方案,涉及两个主要API:从金蝶云星空获取数据的`executeBillQuery`接口,以及向聚水潭写入数据的`/open/jushuitan/otherinout/upload`接口。 为了确保整个流程顺畅进行,轻易云平台提供了一系列强大的功能支持。首先,通过其可视化的数据流设计工具,我们能够直观地创建和管理整个数据流动过程。从调用金蝶云星空接口开始,通过合理处理分页和限流问题,实时抓取所需业务信息,并根据业务需求自定义转换逻辑,以适应目标系统的数据结构。接着,利用高吞吐量的数据写入能力,将大量处理后的有效数据快速而准确地传输至聚水潭。 此外,为保障每个环节都可靠运行,平台还提供了集中监控与告警机制。这不仅能实时跟踪各任务状态,还能在出现异常时即时发出警报,使我们能够迅速定位并解决问题。同时,自定义映射及异常重试机制也为成功完成这次跨系统对接保驾护航。 我们的实施过程中特别注重以下几点: 1. **确保不漏单**:精准定时抓取并全面覆盖所有需要同步的拆卸单(子项)。 2. **批量集成性能优化**:通过高效的数据转换和批量处理方式,加快大规模数据写入速度。 3. **格式差异处理**:针对两个系统之间可能存在的数据格式差异进行调整,以保证一致性。 4. **异常检测与恢复**:有效识别和相应处置潜在错误,提高整体稳定性与可靠性。 本文章开篇即介绍了此次项目的一些背景信息及关键技术点,在后续部分会详细阐述具体配置步骤及实现方法,包括每个API调用、分页限流策略、自定义映射以及错误处理等核心内容。 ![如何开发企业微信API接口](https://pic.qeasy.cloud/D11.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成过程中,调用源系统接口是关键的一步。本文将详细探讨如何使用轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口来获取和加工拆卸单(子项)数据,并将其集成到聚水潭的其他入库单中。 #### 接口配置与请求参数 首先,我们需要配置`executeBillQuery`接口的元数据。以下是该接口的具体配置: ```json { "api": "executeBillQuery", "method": "POST", "number": "FBillNo", "id": "FSubEntity_FDetailID", "pagination": { "pageSize": 500 }, "idCheck": true, "request": [ {"field":"FID","label":"实体主键","type":"string","value":"FID"}, {"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"}, {"field":"FDocumentStatus","label":"单据状态","type":"string","value":"FDocumentStatus"}, {"field":"FStockOrgId_FNumber","label":"库存组织","type":"string","value":"FStockOrgId.FNumber"}, {"field":"FDate","label":"日期","type":"string","value":"FDate"}, {"field":"FBillTypeID","label":"单据类型","type":"string","value":"FBillTypeID"}, {"field":"FOwnerTypeIdHead","label":"成品货主类型","type":"string","value":"FOwnerTypeIdHead"}, {"field":"FOwnerIdHead_FNumber","label":"成品货主","type":"string","value":"FOwnerIdHead.FNumber"}, {"field":"FAffairType","label":"事务类型","type":"string","value":"FAffairType"}, {"field":"FEE","label":"费用","type":"string","value":"FEE"}, {"field":"FDeptID_FNumber","label":"部门","type":"string","value":"FDeptID.FNumber"}, {"field":"FNote","label":"","type":"","value":""}, // ...省略部分字段 ], "otherRequest": [ {"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"}, {"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"}, {"field": "TopRowCount", "label": "", "", "", ""}, // ...省略部分字段 ] } ``` #### 数据请求与清洗 在调用接口之前,需要设置请求参数。根据元数据配置,我们可以构建如下请求体: ```json { "FormId": "STK_AssembledApp", "FieldKeys": [ // 字段key集合,示例:["FID", ...] // 注意:实际使用时应根据需求调整字段列表 // 示例: ["FID", ...] ], // 分页参数 { // 分页大小和起始行索引 // 示例:{PAGINATION_PAGE_SIZE}, {PAGINATION_START_ROW} // 示例:500,0 }, // 查询过滤条件 { // 示例:FSupplierId.FNumber = 'VEN00010' and FApproveDate>='{{LAST_SYNC_TIME|datetime}}' and FAFFAIRTYPE = 'Dassembly' and FDocumentStatus='C' // 示例:"FSupplierId.FNumber = 'VEN00010' and FApproveDate>='{{LAST_SYNC_TIME|datetime}}' and FAFFAIRTYPE = 'Dassembly' and FDocumentStatus='C'" } } ``` 通过上述配置和请求体,我们可以向金蝶云星空发起POST请求,获取所需的数据。 #### 数据转换与写入 获取到原始数据后,需要对其进行清洗和转换,以符合目标系统(聚水潭)的要求。以下是一个简单的数据转换示例: ```python def transform_data(raw_data): transformed_data = [] for item in raw_data: transformed_item = { # 映射字段,例如: # 聚水潭字段: 金蝶字段值 # 示例:"warehouse_code" : item["FStockOrgId_FNumber"] # 示例:"product_code" : item["FMaterialIDSETY_FNumber"] } transformed_data.append(transformed_item) return transformed_data ``` 在完成数据转换后,可以将处理后的数据写入聚水潭系统。具体实现方式取决于目标系统的API规范。 #### 实际案例应用 假设我们需要从金蝶云星空获取所有状态为“已审核”的拆卸单,并将其子项数据同步到聚水潭的其他入库单中。我们可以按照以下步骤进行操作: 1. **配置元数据**:确保元数据配置正确,包括接口名称、方法、分页参数等。 2. **构建请求体**:根据业务需求设置查询条件和分页参数。 3. **发送请求**:调用`executeBillQuery`接口获取原始数据。 4. **清洗与转换**:对原始数据进行清洗和格式转换,使其符合目标系统要求。 5. **写入目标系统**:将处理后的数据通过API写入聚水潭系统。 通过以上步骤,我们能够高效地实现不同系统间的数据集成,确保业务流程的顺畅运行。 ![如何开发钉钉API接口](https://pic.qeasy.cloud/S6.png~tplv-syqr462i7n-qeasy.image) ### 数据集成:从金蝶拆卸单到聚水潭其他入库单的ETL转换 在数据集成过程中,将源平台的数据转换为目标平台能够接收的格式是至关重要的一步。本文将详细探讨如何使用轻易云数据集成平台,将金蝶拆卸单(子项)数据通过ETL转换,最终写入聚水潭的其他入库单API接口。 #### API接口配置 首先,我们需要了解目标平台聚水潭的API接口配置。根据提供的元数据配置,聚水潭的API接口路径为`/open/jushuitan/otherinout/upload`,采用POST方法进行数据传输。以下是具体的请求字段及其配置: - `is_confirm`: 是否确认单据,通过函数判断`F_POKM_JSTSTOCKNUMBER`是否等于10816570,若是则值为1,否则为0。 - `excute_confirming`: 是否审核单据,固定值为`false`。 - `wms_co_id`: 仓库编号,对应金蝶字段`F_POKM_JSTSTOCKNUMBER`。 - `type`: 出入库类型,固定值为`in`。 - `external_id`: 外部单号,由多个字段拼接而成,包括`FBillNo`, `F_POKM_JSTSTOCKNUMBER`, `F_POKM_JSTSTOCKNUMBER2`。 - `remark`: 备注信息,包含金蝶拆卸单的单据推送信息和单号。 - `items`: 商品明细列表,包括商品编码和入库数量。 - 其他字段如物流公司编码、物流单号、物流公司名称、出库类型、分仓等。 #### 数据转换与写入 在实际操作中,需要将金蝶拆卸单的数据进行清洗和转换,以符合聚水潭API接口要求。以下是具体步骤: 1. **数据清洗**: - 从金蝶系统中提取原始数据,包括拆卸单号(FBillNo)、仓库编号(F_POKM_JSTSTOCKNUMBER)、分仓编号(F_POKM_JSTSTOCKNUMBER2)以及商品明细(FMaterialIDSETY_FNumber, FQtySETY)。 - 确保提取的数据完整且无误。 2. **数据转换**: - 根据元数据配置,将提取的数据映射到聚水潭API所需的字段。例如,将金蝶的仓库编号映射到聚水潭的`wms_co_id`字段。 - 使用函数进行逻辑判断,如通过IF函数设置`is_confirm`字段的值。 3. **构建请求体**: - 构建POST请求体,包括所有必需字段及其对应值。特别注意数组类型字段如`items`,需要遍历商品明细列表并逐项添加到请求体中。 4. **发送请求**: - 使用轻易云平台提供的全异步处理机制,将构建好的请求体发送到聚水潭API接口,并实时监控请求状态和响应结果。 以下是一个示例代码片段,用于展示如何构建POST请求体: ```json { "is_confirm": "1", "excute_confirming": "false", "wms_co_id": 10816570, "type": "in", "external_id": "Z1234567891081657010816570", "remark": "金蝶拆卸单单据推送,单号:123456789", "items": [ { "sku_id": "ABC123", "qty": "10" }, { "sku_id": "DEF456", "qty": "5" } ], "drp_co_name": "配件拆卸入库", "warehouse": "10816570" } ``` #### 注意事项 1. **数据验证**:在发送请求之前,确保所有必需字段均已正确填充,并进行必要的数据验证,以避免因数据格式错误导致请求失败。 2. **错误处理**:在接收到API响应后,根据返回结果进行相应处理,如记录日志、重试失败请求等,以确保数据成功写入目标平台。 通过上述步骤,我们可以高效地将金蝶拆卸单的数据转换并写入聚水潭其他入库单,实现不同系统间的数据无缝对接。这不仅提高了业务透明度和效率,也确保了数据处理过程的准确性和可靠性。 ![企业微信与OA系统接口开发配置](https://pic.qeasy.cloud/T15.png~tplv-syqr462i7n-qeasy.image)