轻易云平台ETL:旺店通采购退货单到用友BIP采购入库单的转换

  • 轻易云集成顾问-吕修远
### 旺店通·企业奇门数据集成到用友BIP案例分享:采购退货单=>采购入库单(下推)-p 在本文中,我们将深入探讨如何通过轻易云数据集成平台,将旺店通·企业奇门的数据高效地对接到用友BIP系统,实现采购退货单至采购入库单的自动化下推。我们主要专注于处理大量数据的快速写入、接口分页及限流问题,以及异常处理和错误重试机制等技术细节。 为了实现这个数据集成方案,我们首先需要调用旺店通·企业奇门提供的API `wdt.stockout.order.query.return` 获取商品退货信息,然后通过用友BIP API `/yonbip/scm/purinrecord/mergeSourceData/save` 将这些数据批量写入到用友BIP中。在这一过程中,确保不漏单是至关重要的一环。我们采用定时抓取机制,可靠地从旺店通·企业奇门接口获取最新的数据,并实时监控和日志记录整个处理过程,以及时发现并解决潜在的问题。 由于旺店通·企业奇门与用友BIP之间存在一定的数据格式差异,因此我们还需进行必要的数据映射和转换。此外,为了提高系统性能和响应速度,在处理大规模数据时,我们会考虑分页抓取以及限流控制,避免因一次性请求过多导致接口超时或失败。 下面将详细介绍该案例实际运行中的具体配置方案与技术实现方法,包括接口调用、数据转换、异常处理等关键环节,以供参考。 ![金蝶与MES系统接口开发配置](https://pic.qeasy.cloud/D26.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台调用旺店通·企业奇门接口获取并加工数据 在数据集成过程中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口`wdt.stockout.order.query.return`来获取并加工采购退货单数据。 #### 接口调用配置 首先,我们需要配置接口的元数据。以下是接口`wdt.stockout.order.query.return`的元数据配置: ```json { "api": "wdt.stockout.order.query.return", "method": "POST", "number": "order_no", "id": "stockout_id", "pagination": { "pageSize": 50 }, "idCheck": true, "request": [ { "field": "start_time", "label": "开始时间", "type": "string", "value": "{{LAST_SYNC_TIME|datetime}}" }, { "field": "end_time", "label": "结束时间", "type": "string", "describe": "按最后修改时间增量获取数据,end_time作为结束时间,格式:yyyy-MM-dd HH:mm:ss", "value": "{{CURRENT_TIME|datetime}}" }, { "field": "warehouse_no", "label": "仓库编号", "type": "string" }, { "field": "status", "label": "出库单状态", "type": "string", "describe":"出库单状态5:已取消,50:待审核,55:已审核,95:已发货,110:已完成(默认查已发货已完成单据)" }, { "field":"page_no", "label":"页号", "type":"string", "value":"{PAGINATION_START_PAGE}" }, { "field":"page_size", "label":"分页大小", "type":"string", “describe”:”每页返回的数据条数,输入值范围1~30,不传本参数,输入值默认为30,”, “value”:”{PAGINATION_PAGE_SIZE}” }, { “field”:”src_order_no”, “label”:”上层单据编号”, “type”:”string” } ] } ``` #### 参数详解 - `start_time` 和 `end_time`: 用于定义查询的时间范围。`start_time`通常设置为上次同步的时间点,而`end_time`则为当前时间,以确保获取到最新的数据。 - `warehouse_no`: 指定仓库编号,用于过滤特定仓库的数据。 - `status`: 出库单状态,可以根据需求过滤不同状态的出库单,例如已发货、已完成等。 - `page_no` 和 `page_size`: 分页参数,用于控制每次请求返回的数据量和分页位置。 #### 数据请求与清洗 在配置好元数据后,通过轻易云平台发起POST请求,从旺店通·企业奇门接口获取原始数据。以下是一个示例请求体: ```json { “start_time”: “2023-09-01 00:00:00”, “end_time”: “2023-09-30 23:59:59”, “warehouse_no”: “WH001”, “status”: “95,110”, “page_no”: “1”, “page_size”: “50” } ``` 该请求将返回指定时间范围内、特定仓库中、状态为“已发货”和“已完成”的采购退货单。 #### 数据转换与写入 获取到原始数据后,需要对其进行清洗和转换,以便后续处理。例如,将日期格式统一、字段名称标准化等。这一步骤可以通过轻易云平台提供的可视化工具实现,无需编写复杂代码。 清洗后的数据可以直接写入目标系统,如ERP或数据库中。以下是一个示例转换规则: ```json { “order_id”: ”stockout_id”, ”order_number”: ”order_no”, ”warehouse_code”: ”warehouse_no”, ”status_code”: ”status” } ``` 通过上述规则,可以将原始字段映射到目标系统所需的字段格式。 #### 实时监控与调试 轻易云平台提供实时监控功能,可以随时查看数据流动和处理状态。一旦出现异常,可以快速定位问题并进行调试。例如,如果某个字段的数据类型不匹配,可以在监控界面中查看详细错误信息,并及时修正。 综上所述,通过轻易云数据集成平台,我们能够高效地调用旺店通·企业奇门接口,获取并加工采购退货单数据,为后续的数据处理和业务决策提供可靠支持。 ![打通钉钉数据接口](https://pic.qeasy.cloud/S19.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台ETL转换:采购退货单到采购入库单 在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL转换,转为目标平台用友BIP API接口所能够接收的格式,最终写入目标平台。本文将详细探讨如何通过轻易云数据集成平台配置元数据,实现采购退货单到采购入库单的转换和写入。 #### 接口配置与请求参数 为了将采购退货单的数据转换并写入到用友BIP系统,我们需要调用`/yonbip/scm/purinrecord/mergeSourceData/save` API接口。该接口支持POST方法,并且需要确保请求的幂等性。以下是具体的请求参数配置: 1. **resubmitCheckKey** - **字段类型**: string - **描述**: 保证请求的幂等性,该值由客户端生成,并且必须是全局唯一的长度不能超过32位。 - **示例值**: `{order_no}_1` 2. **mergeSourceData** - **字段类型**: string - **描述**: 固定值传入true。 - **示例值**: `true` 3. **needCalcLines** - **字段类型**: string - **描述**: 表体行计算标识,固定值传入true。 - **示例值**: `true` 4. **calcLinesKey** - **字段类型**: string - **描述**: 表体行计算依据,固定值传入`oriTaxUnitPrice`。 - **示例值**: `oriTaxUnitPrice` 5. **code** - **字段类型**: string - **描述**: 单据编号,以系统编码规则配置为准。 - **示例值**: `{order_no}` 6. **vouchdate** - **字段类型**: string - **描述**: 单据日期,格式为YYYYMMDD。 - **示例值**: `{{consign_time|date}}` 7. **bustype** - **字段类型**: string - **描述**: 交易类型id或交易类型code。 - **示例值**: `A20003` 8. **warehouse** - **字段类型**: string - **描述**: 仓库id或仓库code。 - **示例值**: `{warehouse_no}` 9. **memo** - **字段类型**: string - **描述**: 备注信息。 - **示例值**: `{remark}` 10. **_status** - **字段类型**: string - **描述**: 操作标识,新增时传入Insert。 - **示例值**: `Insert` #### 子表配置 对于采购入库单子表(`purInRecords`),我们需要配置以下字段: 1. **makeRuleCode** - 字段类型:string - 描述:生单规则编码,固定值为`st_purchaseorder_return`。 - 示例值:`st_purchaseorder_return` 2. 其他子表字段包括: ```json [ { "field": "sourceid", "label": "上游单据主表id", "type": "string", "value": "_mongoQuery 39bc45c8-c417-37df-8f20-d136f76b1a7a findField=content.new_id where={\"content.code\":{\"$eq\":\"{pr_api_outer_no}\"},\"content.product_cCode\":{\"$eq\":\"{{details_list.goods_no}}\"}}" }, { "field": "sourceautoid", "label": "上游单据子表id", "type": "string", "value": "_mongoQuery 39bc45c8-c417-37df-8f20-d136f76b1a7a findField=content.new_purchaseOrders_id where={\"content.code\":{\"$eq\":\"{pr_api_outer_no}\"},\"content.product_cCode\":{\"$eq\":\"{{details_list.goods_no}}\"}}" }, { "field": "qty", "label": "数量", "type": "string", "describe": "默认上游带入,若传入数量请确保表体行计算标识needCalcLines=true,并确认calcLinesKey是否符合实际业务场景。", "value": "_function {{details_list.goods_count}}*(-1)" }, { "field": "oriUnitPrice", "label": "无税单价", "type": "string", "describe": "仅在表头参数表体行计算标识needCalcLines=true,且calcLinesKey指定当前字段为计算依据时生效。", "value": "{{details_list.sell_price}}" }, { "field": "oriTaxUnitPrice", "label": "含税单价", "type": "string", "describe": "", // 使用MongoDB查询获取含税单价信息 // 示例代码中省略了具体实现细节,请根据实际情况补充完整 }, { // 其他必要的子表字段配置... } ] ``` #### 实现步骤 1. 配置API接口及其请求参数,将上述元数据配置填充至轻易云数据集成平台中。 2. 确保所有必需的参数均已正确映射并验证其有效性。 3. 执行ETL过程,通过API接口将转换后的数据写入用友BIP系统。 通过以上步骤,我们能够实现从采购退货单到采购入库单的数据转换和写入。这不仅提高了数据处理效率,还保证了数据的一致性和准确性。 ![钉钉与MES系统接口开发配置](https://pic.qeasy.cloud/T15.png~tplv-syqr462i7n-qeasy.image)