从退货到入库:用友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)