### 旺店通·企业奇门销售出库单对接金蝶云星空销售订单的实践案例
在实际业务场景中,系统之间的数据集成是一个关键环节。本案例分享了如何将旺店通·企业奇门(简称“旺店通”)的销售出库单数据无缝集成到金蝶云星空中的销售订单。通过轻易云数据集成平台,我们实现了从接口抓取、数据转换到批量写入的一系列技术流程。
#### 确保不漏单:调用wdt.stockout.order.query.trade接口
对于系统间的数据同步,确保数据完整性和实时性至关重要。我们首先调用了旺店通提供的`wdt.stockout.order.query.trade` API,该接口可以精确获取每个时间段内生成的所有销售出库单记录。为了避免因网络波动等原因造成的数据遗漏,我们引入了重试机制并记录日志,以确保每一条出库单都能被成功捕获。
#### 高效写入:使用batchSave API进行批量处理
针对大量的数据需要快速、高效地写入到金蝶云星空,我们采用其提供的`batchSave` API。这种方式极大地提升了数据写入效率,通过一次性提交多个请求,减少API调用次数。此外,为保证批量操作过程中的可靠性,我们设计了一套错误处理与重试机制,对于失败的批次会自动重新尝试,从而达到高可用性的目标。
#### 数据格式差异及定制化映射
在具体实施过程中,不同系统之间的数据格式差异常常成为障碍。因此,在对接方案中设计了一套灵活的数据映射策略。通过定制化转换规则,将旺店通原始返回的数据结构标准化为符合金蝶云星空要求的格式。同时,这些映射规则支持动态配置和实时更新,确保适应不断变化的业务需求。
以上几个步骤仅是整个对接过程的一部分。在后续内容中,将详细说明分页和限流问题、异常处理与监控机制等技术细节,以全面展示这次跨系统集成项目中的实践经验和解决方案。
![用友BIP接口开发配置](https://pic.qeasy.cloud/D39.png~tplv-syqr462i7n-qeasy.image)
### 调用旺店通·企业奇门接口wdt.stockout.order.query.trade获取并加工数据
在数据集成的生命周期中,调用源系统接口是关键的第一步。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口`wdt.stockout.order.query.trade`来获取销售出库单数据,并进行初步的数据加工。
#### 接口调用配置
首先,我们需要配置接口调用的元数据。以下是针对`wdt.stockout.order.query.trade`接口的详细配置:
```json
{
"api": "wdt.stockout.order.query.trade",
"effect": "QUERY",
"method": "POST",
"number": "order_no",
"id": "stockout_id",
"name": "order_no",
"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":"5已取消,55已审核,95已发货,105 部分打款,110已完成,113:异常发货",
"value":"95,110"
},
{
...
}
],
...
}
```
#### 参数说明
- **start_time** 和 **end_time**:用于定义增量获取数据的时间范围。`start_time`和`end_time`分别表示开始和结束时间。
- **status**:过滤订单状态,这里我们选择了“95已发货”和“110已完成”。
- **其他字段**:如系统订单编号、原始单号、出库单号、店铺编号、仓库编号等,用于进一步细化查询条件。
#### 请求示例
在实际操作中,我们可以通过以下示例请求来获取所需的数据:
```json
{
"start_time": "{{LAST_SYNC_TIME|datetime}}",
"end_time": "{{CURRENT_TIME|datetime}}",
...
}
```
#### 数据过滤与清洗
在获取到原始数据后,我们需要对其进行初步的过滤和清洗。根据元数据配置中的条件,可以看到以下两个主要过滤条件:
1. **details_list.brand_name != '赠品'**
2. **shop_no in ('CUST2501', 'CUST2534', 'CUST2426')**
这些条件确保我们只处理特定品牌和特定店铺的数据,从而提高了数据处理的效率和准确性。
#### 分页处理
为了处理大批量的数据,我们需要使用分页机制。通过设置分页大小(page_size)和页号(page_no),可以逐页获取数据:
```json
{
...
"page_size":"40",
...
}
```
#### 自动填充响应
轻易云平台支持自动填充响应功能,这意味着我们不需要手动解析每个字段,而是可以直接使用平台提供的自动映射功能来简化开发过程。
#### 数据加工与转换
在完成初步的数据清洗后,可以根据业务需求进行进一步的数据转换。例如,将销售出库单转换为金蝶销售订单格式。这一步通常涉及字段映射、值转换等操作。
通过以上步骤,我们可以高效地从旺店通系统中提取并加工销售出库单数据,为后续的数据写入和业务处理打下坚实基础。
![如何对接金蝶云星空API接口](https://pic.qeasy.cloud/S3.png~tplv-syqr462i7n-qeasy.image)
### 使用轻易云数据集成平台将旺店通销售出库单转换为金蝶销售订单
在数据集成过程中,ETL(Extract, Transform, Load)是关键步骤之一。在本文中,我们将详细探讨如何使用轻易云数据集成平台,将旺店通的销售出库单数据转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。
#### 数据请求与清洗
首先,我们从源平台(旺店通)获取销售出库单的数据。假设这些数据已经通过轻易云的数据请求和清洗阶段,准备好进行下一步的转换和写入。
#### 数据转换与写入
在这一阶段,我们需要将清洗后的数据按照金蝶云星空API接口的要求进行转换,并通过API接口将数据写入目标平台。以下是具体的元数据配置及其解析:
```json
{
"api": "batchSave",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"request": [
{
"field": "FBillTypeID",
"label": "单据类型",
"type": "string",
"describe": "单据类型",
"parser": {
"name": "ConvertObjectParser",
"params": "FNumber"
},
"value": "XSDD11_DEF"
},
{
"field": "FBillNo",
"label": "单据编号",
"type": "string",
"describe": "单据编号",
"value": "{src_order_no}"
},
{
...
}
],
...
}
```
##### 核心字段解析
1. **FBillTypeID(单据类型)**
- 类型:`string`
- 描述:用于指定金蝶系统中的单据类型。
- 转换器:`ConvertObjectParser`,参数为`FNumber`,即将源数据的某个字段值映射为金蝶系统中的编码。
- 固定值:`XSDD11_DEF`
2. **FBillNo(单据编号)**
- 类型:`string`
- 描述:唯一标识销售订单的编号。
- 值:从源数据中提取,如 `{src_order_no}`。
3. **FSaleOrgId(销售组织)**
- 类型:`string`
- 描述:表示销售组织。
- 转换器:`ConvertObjectParser`,参数为 `FNumber`。
- 值:从源数据中提取并映射,如 `{shop_no}`。
4. **FCustId(客户)**
- 类型:`string`
- 描述:表示客户信息。
- 转换器:`ConvertObjectParser`,参数为 `FNumber`。
- 值:从源数据中提取并映射,如 `{shop_no}`。
5. **FSaleOrderEntry(订单明细)**
- 类型:`array`
- 描述:包含订单的详细条目。
- 子字段包括:
- **FMaterialId(物料编码)**:
- 类型:`string`
- 转换器:`ConvertObjectParser`
- 值:从 `details_list.goods_no` 提取并映射。
- **FQty(销售数量)**:
- 类型:`string`
- 值:从 `details_list.goods_count` 提取。
...
##### 特殊逻辑处理
1. **库存组织字段 FStockOrgId**
```json
{
...
"value":"_findCollection find F_PAEZ_Base2 from adac3655-a3cb-3551-9024-8e7b360f930a where FNumber={{details_list.goods_no}}"
...
}
```
使用 `_findCollection find ... where ...` 的语法,从指定集合中查找并匹配相应的库存组织。
2. **是否赠品字段 FIsFree**
```json
{
...
"value":"_function CASE WHEN {{details_list.sell_price}}>0 THEN 'false' ELSE 'true' END"
...
}
```
使用 `_function CASE WHEN ... THEN ... ELSE ... END` 的语法,根据商品价格判断是否为赠品。
##### 其他配置项
- **FormId**: 表示业务对象表单ID,如 `SAL_SaleOrder`.
- **Operation**: 执行操作类型,如 `BatchSave`.
- **IsAutoSubmitAndAudit**: 是否自动提交并审核,布尔值 `true`.
- **IsVerifyBaseDataField**: 是否验证基础资料有效性,布尔值 `true`.
#### 实际应用案例
假设我们有一批销售出库单需要转换并写入金蝶云星空。我们可以按照上述配置,通过轻易云的数据集成平台实现以下步骤:
1. 从旺店通获取原始销售出库单数据。
2. 根据元数据配置,将原始数据字段逐一映射和转换为金蝶系统所需格式。
3. 调用金蝶云星空API接口,通过POST方法批量保存转换后的销售订单数据。
通过上述步骤,我们能够高效地完成从源平台到目标平台的数据集成任务,实现不同系统间的数据无缝对接。
![如何对接钉钉API接口](https://pic.qeasy.cloud/T6.png~tplv-syqr462i7n-qeasy.image)