使用轻易云平台实施金蝶与聚水潭系统数据集成

  • 轻易云集成顾问-谢楷斌
### 金蝶-直接调拨单——>聚水潭-其他出库单数据集成案例分享 在企业的日常运营中,实现不同系统之间的数据无缝对接和高效处理是提升业务效率的重要环节。今天,我们通过一个实际运行的方案,讨论如何将金蝶云星空中的"直接调拨单"数据高效地集成到聚水潭的"其他出库单",以满足复杂业务环境下的数据同步需求。 本次案例使用了金蝶云星空开放API接口`executeBillQuery`获取最新的调拨单据,并通过自定义的数据转换逻辑,将这些数据批量写入至聚水潭系统的API `/open/jushuitan/otherinout/upload`。为了确保整个过程的数据完整性和时效性,我们重点解决了以下几个技术难点: 1. **高吞吐量数据写入**:我们利用平台提供的大规模并行处理能力,以应对大量数据快速写入聚水潭所需,保障每一条记录都能迅速准确地传输。 2. **实时监控与异常处理**:针对数据集成过程中的可能异常情况,如接口调用失败等,设计了完善的错误重试机制,并通过集中化监控与告警功能实时跟踪任务执行状态。 3. **分页和限流问题**:考虑到金蝶云星空API的分页响应以及访问频率限制,通过优化请求策略及增强缓存机制,高效抓取所有需要的数据而不触发限流。 下面,我们将具体解析这些技术要点及其实现方式,为大家展示这次集成项目成功实施背后的详细流程。 ![金蝶云星空API接口配置](https://pic.qeasy.cloud/D31.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据的技术案例 在数据集成过程中,调用源系统接口是关键的第一步。本文将深入探讨如何通过轻易云数据集成平台调用金蝶云星空接口`executeBillQuery`,获取并加工数据,以实现从金蝶-直接调拨单到聚水潭-其他出库单的数据集成。 #### 接口配置与调用 首先,我们需要配置和调用金蝶云星空的`executeBillQuery`接口。该接口主要用于查询业务单据,返回符合条件的数据记录。以下是元数据配置的详细说明: ```json { "api": "executeBillQuery", "effect": "QUERY", "method": "POST", "number": "FBillNo", "id": "FBillEntry_FEntryID", "name": "FBillNo", "idCheck": true, ... } ``` #### 请求参数解析 请求参数中包含多个字段,每个字段都有其特定的含义和用途。以下是一些关键字段的解析: - `FormId`: 表示业务对象表单Id,例如在本案例中为`STK_TransferDirect`。 - `FieldKeys`: 查询的字段key集合,格式为数组,通过解析器转换为字符串。 - `FilterString`: 用于过滤查询结果的条件,例如`FApproveDate>='{{LAST_SYNC_TIME|dateTime}}' and FSrcStockId in ('285633','327726')`。 - `Limit`, `TopRowCount`, `StartRow`: 分页参数,用于控制查询结果的行数和起始位置。 #### 请求示例 根据上述配置,我们构建一个请求示例: ```json { "FormId": "STK_TransferDirect", "FieldKeys": [ "FBillEntry_FEntryID", "FID", "FBillNo", ... ], "FilterString": "FApproveDate>='2023-01-01T00:00:00' and FSrcStockId in ('285633','327726')", "Limit": 500, "StartRow": 0 } ``` #### 数据清洗与转换 获取到原始数据后,需要对其进行清洗和转换,以满足目标系统的要求。这一步骤包括但不限于以下操作: 1. **字段映射**:将源系统中的字段映射到目标系统。例如,将`FBillNo`映射为目标系统中的订单编号。 2. **数据格式转换**:根据目标系统要求,对日期、数字等字段进行格式转换。 3. **数据过滤**:根据业务逻辑,对不符合条件的数据进行过滤。 以下是一个简单的数据清洗与转换示例: ```python def clean_and_transform(data): transformed_data = [] for record in data: transformed_record = { 'order_no': record['FBillNo'], 'entry_id': record['FBillEntry_FEntryID'], 'date': format_date(record['FDate']), 'quantity': int(record['FQty']), ... } if validate_record(transformed_record): transformed_data.append(transformed_record) return transformed_data def format_date(date_str): # 将日期字符串转换为目标系统所需格式 return datetime.strptime(date_str, '%Y-%m-%d').strftime('%d/%m/%Y') def validate_record(record): # 根据业务逻辑验证记录是否有效 return record['quantity'] > 0 ``` #### 数据写入目标系统 完成数据清洗与转换后,将处理后的数据写入目标系统。在本案例中,目标系统为聚水潭,需要将清洗后的数据写入其“其他出库单”模块。 ```python def write_to_target_system(transformed_data): for record in transformed_data: response = requests.post('https://target-system-api.com/other-outbound', json=record) if response.status_code != 200: log_error(response.text) transformed_data = clean_and_transform(raw_data) write_to_target_system(transformed_data) ``` 通过上述步骤,我们实现了从金蝶云星空获取直接调拨单数据,并将其加工后写入聚水潭其他出库单模块的完整流程。这不仅提高了数据处理效率,也确保了各环节的数据准确性和一致性。 ![如何开发金蝶云星空API接口](https://pic.qeasy.cloud/S21.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将金蝶直接调拨单转换为聚水潭其他出库单 在数据集成过程中,ETL(提取、转换、加载)是一个关键环节。本文将详细介绍如何使用轻易云数据集成平台,将金蝶的直接调拨单数据转换为聚水潭API接口所能接收的格式,并最终写入聚水潭系统。 #### 1. 数据请求与清洗 在进行ETL转换之前,首先需要从金蝶系统中提取直接调拨单的数据,并进行必要的清洗和预处理。这一步骤确保了数据的一致性和完整性,为后续的转换和写入打下基础。 #### 2. 数据转换与写入 在轻易云数据集成平台上,配置元数据是实现ETL转换的重要步骤。以下是具体的元数据配置及其应用: ```json { "api": "/open/jushuitan/otherinout/upload", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ { "field": "is_confirm", "label": "是否确认单据", "type": "bool", "describe": "是否确认单据;默认false", "value": "1" }, { "field": "excute_confirming", "label": "是否审核单据", "type": "string", "describe": "是否审核单据;默认false", "value": "true" }, { "field": "wms_co_id", "label": "分仓编号", "type": "int", "describe": "分仓编号", "value": "{FSrcStockId_FNumber}", "mapping": { "target": "66b46c57aa8cd574f847540a", "direction": "reverse" } }, { ... } ], ... } ``` ##### API接口配置 - **API路径**:`/open/jushuitan/otherinout/upload` - **请求方法**:`POST` - **ID检查**:`true` ##### 请求参数配置 1. **is_confirm**: - 类型:`bool` - 描述:是否确认单据,默认值为 `false` - 值:`1` 2. **excute_confirming**: - 类型:`string` - 描述:是否审核单据,默认值为 `false` - 值:`true` 3. **wms_co_id**: - 类型:`int` - 描述:分仓编号 - 值:`{FSrcStockId_FNumber}` - 映射关系:目标字段 `66b46c57aa8cd574f847540a` 4. **warehouse**: - 类型:`int` - 描述:仓库类型,默认值为 `1` 5. **type**: - 类型:`string` - 描述:出入库类型,值为 `out` 6. **external_id**: - 类型:`string` - 描述:外部单号 - 值:`{FBillNo}` 7. **remark**: - 类型:`string` - 描述:备注 - 值:`{FNote}` 8. **items**(商品列表): - 类型:`array` - 子字段: 1. **sku_id**: - 类型:`string` - 描述:商品编码 - 值:`{FMaterialId_FNumber}` 2. **sale_price**: - 类型:`int` - 描述:商品单价 3. **remark**: - 类型:`string` - 描述:备注 4. **qty**: - 类型:`int` - 描述:数量 - 值:`{FQty}` 5. **produced_date**: - 类型:`string` - 描述:生产日期 6. **expiration_date**: - 类型:`string` - 描述:有效期至 ##### 数据聚合与计算 在元数据配置中,还定义了数据的聚合与计算规则: - 表头聚合字段(headerGroup):包括 `FNote`, `FSrcStockId_FNumber`, `FBillNo` - 表体聚合字段(bodyGroup):包括 `FMaterialId_FNumber` - 表体名称(bodyName):定义为 `list` - 聚合计算规则(calculate):例如,对数量字段 `FQty` 执行求和操作 `$sum` 这些配置确保了在将数据写入目标平台之前,对源数据进行了必要的处理和转换。 #### 实际应用案例 通过上述元数据配置,我们可以实现将金蝶系统中的直接调拨单成功转换并上传至聚水潭系统。以下是一个实际应用案例: ```json { ... } ``` 在这个案例中,通过正确配置API接口及其请求参数,我们能够确保源系统的数据被准确地映射到目标系统所需的格式,并成功执行上传操作。 以上就是使用轻易云数据集成平台,将金蝶直接调拨单转换为聚水潭其他出库单的详细技术过程。通过合理配置元数据,可以高效地完成不同系统间的数据集成任务。 ![打通金蝶云星空数据接口](https://pic.qeasy.cloud/T10.png~tplv-syqr462i7n-qeasy.image)