从退货到入库:用友BIP与旺店通的高效对接解决方案

  • 轻易云集成顾问-林峰
### 旺店通·企业奇门数据集成到用友BIP的技术实践:退货入库对接YS销售出库(红字)-v 在零售和电商领域,订单管理与库存处理一度是企业信息化过程中最为关键的环节之一。在本次技术案例中,我们将详细介绍如何通过高效的数据集成,实现旺店通·企业奇门的数据与用友BIP系统之间的无缝对接。其中,退货入库对接YS销售出库(红字)-v方案将作为核心解决方案被剖析。本次集成的重点在于确保数据准确传输、快速写入以及实时监控。 具体来说,本案例主要涉及以下几项核心技术实现: 1. **调用旺店通·企业奇门接口wdt.stockin.order.query.refund** 我们需要从今日下单并且发生退货业务的数据中提取相关的信息。通过调用`wdt.stockin.order.query.refund`接口,可以获取所需的订单详情及对应状态。这一步骤要求我们设置合理的分页机制,并妥善处理限流问题,以保障数据抓取过程中的稳定性。 2. **批量集成数据到用友BIP** 在成功获取并整理好旺店通·企业奇门的数据之后,需要利用API `/yonbip/scm/salesout/mergeSourceData/save` 将这些数据批量写入到用友BIP系统中。此处必须特别注意两个系统之间的数据格式差异,并进行必要的数据映射工作。此外,对于异常情况,必须有完善的错误重试机制来保证操作的一致性和可靠性。 3. **定时可靠地抓取和快速写入** 为了确保整体流程高效运作,我们使用了定时任务调度器来抓取旺店通·企业奇门接口中的最新订单。同时,通过优化数据库连接池及提高网络请求效率,大幅缩短了每一次大规模写入所需时间,从而提升整体性能。 4. **实时监控与日志记录** 实现全程透明监管对于业务至关重要。我们通过对每个步骤进行细粒度日志记录,以及搭建先进监控面板,对整个数据处理过程进行了全面、细致、实时地追踪,从而能够迅速识别出任何潜在问题,并即时进行调整和修复。 5. **特殊需求下定制化适配** 针对某些客户特定需求,用友BIP支持高度灵活的定制化映射规则,使得来自不同渠道多样化格式的数据都能顺利整合进统一的平台,加快决策响应速度并减少人为介入力度。 本文开篇仅以简要概述 ![打通企业微信数据接口](https://pic.qeasy.cloud/D38.png~tplv-syqr462i7n-qeasy.image) ### 调用源系统旺店通·企业奇门接口wdt.stockin.order.query.refund获取并加工数据 在数据集成的生命周期中,调用源系统接口获取原始数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口`wdt.stockin.order.query.refund`,并对获取的数据进行初步加工。 #### 接口调用配置 首先,我们需要配置接口调用的元数据。以下是针对`wdt.stockin.order.query.refund`接口的具体配置: ```json { "api": "wdt.stockin.order.query.refund", "method": "POST", "number": "order_no", "id": "order_no", "pagination": { "pageSize": 50 }, "formatResponse": [ { "old": "stockin_time", "new": "stockin_time_new", "format": "date" } ], "idCheck": true, "request": [ { "field": "start_time", "label": "开始时间", "type": "datetime", "describe": "增量获取数据,start_time作为开始时间,格式:yyyy-MM-dd HH:mm:ss", "value": "{{LAST_SYNC_TIME|datetime}}" }, { "field": "end_time", "label": "结束时间", "type": "datetime", "describe": "增量获取数据,end_time作为结束时间,格式:yyyy-MM-dd HH:mm:ss", "value": "{{CURRENT_TIME|datetime}}" }, { "field": "status", "label": "状态", "type": "string", "describe":"入库单状态 10已取消20编辑中30待审核60待结算80已完成(默认查询80已完成单据)" }, { "field":"shop_no", "label":"店铺编号", “type":"string", “describe":"代表店铺所有属性的唯一编码,用于店铺区分,ERP内支持自定义(ERP店铺界面设置),用于获取指定店铺单据数据信息" } ], “otherRequest”: [ { “field”: “page_size”, “label”: “分页大小”, “type”: “string”, “describe”:“每页返回的数据条数,输入值范围1~50,不传本参数,输入值默认为40,使用举例单击这里”, “value”:“{PAGINATION_PAGE_SIZE}” }, { “field”:“page_no”, “label”:“页号”, “type”:“string”, “describe”:“不传值默认从0页开始”, “value”:“{PAGINATION_START_PAGE}” } ] } ``` #### 请求参数说明 - `start_time` 和 `end_time`: 用于增量获取数据。`start_time`表示开始时间,而`end_time`表示结束时间。这两个字段采用动态变量分别表示上次同步时间和当前时间。 - `status`: 用于过滤入库单状态。默认查询状态为80,即已完成的单据。 - `shop_no`: 店铺编号,用于区分不同店铺的数据。 - `page_size` 和 `page_no`: 分页参数,用于控制每次请求返回的数据条数和页码。 #### 数据格式化与转换 在接收到原始数据后,需要对部分字段进行格式化处理。例如,将字段`stockin_time`重命名为`stockin_time_new`并转换为日期格式: ```json "formatResponse":[ { “old”:“stockin_time”, “new”:“stockin_time_new”, “format”:“date” } ] ``` 这种格式化处理可以确保后续的数据处理和分析更加规范和一致。 #### 数据请求与清洗 通过上述配置,我们可以发起HTTP POST请求来获取退货入库订单的数据。以下是一个示例请求: ```json { “start_time”:“2023-01-01 00:00:00”, “end_time”:“2023-01-31 23:59:59”, “status”:“80”, “shop_no”:“SHOP1234”, “page_size”:50, “page_no”:0 } ``` 请求成功后,将返回包含退货入库订单信息的JSON响应。我们需要对响应中的数据进行清洗和转换,以便后续写入目标系统。 #### 数据清洗示例 假设我们收到如下响应: ```json { ”orders":[ { ”order_no":"ORD12345", ”stockin_time":"2023-01-15T08:30:00Z" }, ... ] } ``` 我们需要将其中的`stockin_time`字段转换为日期格式,并重命名为`stockin_time_new`: ```json { ”orders":[ { ”order_no":"ORD12345", ”stockin_time_new":"2023-01-15" }, ... ] } ``` 通过上述步骤,我们成功地调用了旺店通·企业奇门接口并对返回的数据进行了初步加工。这些处理后的数据将为后续的数据转换与写入阶段提供坚实基础。 ![用友与外部系统接口集成开发](https://pic.qeasy.cloud/S7.png~tplv-syqr462i7n-qeasy.image) ### 用友BIPAPI接口数据集成技术案例:退货入库对接YS销售出库(红字) 在轻易云数据集成平台中,完成数据请求与清洗后,我们需要将源平台的数据进行ETL转换,使其符合目标平台用友BIPAPI接口的要求,并最终写入目标平台。本文将详细探讨如何通过配置元数据,实现退货入库对接YS销售出库(红字)的数据集成。 #### API接口配置 我们使用的API接口为`/yonbip/scm/salesout/mergeSourceData/save`,请求方法为POST。以下是具体的元数据配置: ```json { "api": "/yonbip/scm/salesout/mergeSourceData/save", "method": "POST", "idCheck": true, "request": [ { "field": "mergeSourceData", "label": "是否合并上游数据", "type": "string", "describe": "是否合并上游数据。值为true的话则sourceid:来源单据主表id,sourceautoid:来源单据行id,makeRuleCode:单据转换规则,_status:操作标识,不可为空。示例:true", "value": "true" }, { "field": "vouchdate", "label": "单据日期", "type": "string", "describe": "单据日期 示例:2020-11-30 00:00:00", "value": "{{check_time|dateTime}}" }, { "field": "warehouse", "label": "仓库id或编码", "type": "string", "describe": "仓库id或编码 示例:Z001", "value": "_findCollection find ysOutWarehouse from fa193860-6aa8-37a8-b996-a856e9a8a96f where omsOutWarehouse={warehouse_no} shopNo={shop_no} mappingType=2" }, { ... } ], ... } ``` #### 数据字段解析 1. **mergeSourceData**: 设置为`true`,表示需要合并上游数据,这意味着必须提供`sourceid`、`sourceautoid`、`makeRuleCode`和`_status`等字段。 2. **vouchdate**: 单据日期,通过模板变量`{{check_time|dateTime}}`自动填充。 3. **warehouse**: 仓库ID或编码,通过查找集合映射实现动态获取。 4. **bizFlow**和**bizFlow_version**: 固定值,用于标识业务流程及其版本。 5. **code**: 单据编号,可以通过模板变量如 `{order_no}` 动态生成。 6. **bustype**: 交易类型ID或编码,示例中固定为 `A30001`。 #### 子表字段配置 子表字段主要包括数量、来源单据主表ID、来源单据行ID等: 1. **qty**: 数量,通过函数 `_function {{details_list.goods_count}}*(-1)` 实现负数转换,以适应红字退货场景。 2. **sourceid**: 来源单据主表ID,通过 `_findCollection find new_id from ... where code={src_order_no}` 动态获取。 3. **sourceautoid**: 来源单据行ID,通过 `_mongoQuery ... findField=content.new_saleReturnDetailId where=...` 动态查询。 4. **batchno** 和 **goodsposition**: 如果仓库开启批次管理和货位管理,则必填。 5. **makeRuleCode**: 单据转换规则,固定为 `salereturnTosalesout` 表示退货单生成销售出库。 6. **_status**: 操作标识,固定为 `Insert` 表示新增操作。 #### 数据转换与写入 在轻易云平台中,我们可以通过以下步骤实现数据转换与写入: 1. 定义ETL规则,将源平台的数据字段映射到目标平台的字段中。 2. 使用模板变量和函数实现动态值填充和计算,例如数量的负数转换和日期格式化。 3. 配置API请求参数,包括主表和子表字段,以及必要的关联查询和映射规则。 通过上述配置,我们可以确保源平台的退货入库数据经过ETL处理后,能够准确无误地写入用友BIP系统,实现不同系统间的数据无缝对接。这不仅提升了数据处理效率,也保证了业务流程的连续性和一致性。 ![电商OMS与WMS系统接口开发配置](https://pic.qeasy.cloud/T11.png~tplv-syqr462i7n-qeasy.image)