使用轻易云实现旺店通到金蝶云的数据集成及其技术细节
### 旺店通·企业奇门数据集成到金蝶云星空案例分享:查询-旺店通销售出库单
在现代化企业的数据处理和管理中,实现跨平台、跨系统的数据对接成为了业务运营效率提升的关键。本文将结合实际项目“查询-旺店通销售出库单”,分享如何高效地将旺店通·企业奇门(以下简称“奇门”)的数据无缝集成至金蝶云星空。
#### 集成背景与目标
为了确保业务流程的连贯性与数据的完整性,项目团队需要实现以下几个核心目标:
1. **确保数据不漏单** - 定时可靠地抓取奇门接口wdt.stockout.order.query.trade提供的销售出库单数据,保证每一条订单都被准确获取。
2. **大量数据快速写入** - 实现从奇门获取的大量订单信息能够迅速、安全地批量写入到金蝶云星空,通过API batchSave保持库存信息实时更新。
3. **应对分页和限流问题** - 处理接口调用中的分页和频率限制,以防止遗漏或延迟出现的问题,从而保障系统稳定运行。
#### 技术实现概要
##### 数据抓取机制
首先,我们通过定时任务来调用wdt.stockout.order.query.trade接口。这不仅可以避免漏单情况,还能提高系统效率。具体来说,利用轻易云内部调度器,每隔固定时间段自动启动一次请求操作,并根据响应中的分页参数拉取全部相关记录。
##### 分页与限流处理
由于诸多API具有限流措施,我们特别设计了分布式队列和重试机制。合理控制并发请求数,并在遇到限流错误时进行指数回退策略重试,这样即使面对大规模数据也依然游刃有余。
##### 数据映射与格式转换
不同系统之间往往存在数据格式差异,因此我们开发了一套灵活的映射规则引擎。在把从奇门获得的数据推送到金蝶云星空之前,对其字段及结构进行了细致的一一映射转换。例如,把原始JSON对象转变为金蝶所需的XML或者其他统一标准格式,再通过batchSave API进行高速写入。
上述内容仅为本方案实施过程中涉及部分技术要点详细展开奠定基础。在后续章节里,我们还将深入讨论关于异常处理、实时监控以及日志记录等细节,进一步展示完整解决方案如何一步步落地生根。
![钉钉与CRM系统接口开发配置](https://pic.qeasy.cloud/D8.png~tplv-syqr462i7n-qeasy.image)
### 调用旺店通·企业奇门接口获取并加工数据
在数据集成的生命周期中,第一步是从源系统获取数据。本文将详细介绍如何通过轻易云数据集成平台调用旺店通·企业奇门接口`wdt.stockout.order.query.trade`,实现销售出库单的查询和数据加工。
#### 接口调用配置
首先,我们需要配置元数据以便正确调用接口。以下是元数据配置的关键部分:
```json
{
"api": "wdt.stockout.order.query.trade",
"effect": "QUERY",
"method": "POST",
"number": "order_no",
"id": "{stockout_id}{order_no}",
"name": "order_no",
"idCheck": true,
"formatResponse": [
{
"old": "consign_time",
"new": "consign_date",
"format": "date"
}
],
...
}
```
该配置中,`api`字段指定了要调用的接口名称,`method`字段定义了请求方法为POST。`number`和`id`字段用于唯一标识每条记录,其中`idCheck: true`确保了ID的唯一性。为了便于后续处理,我们将响应中的`consign_time`字段格式化为日期类型,并重命名为`consign_date`。
#### 请求参数设置
为了实现增量数据获取,我们需要设置请求参数,包括开始时间和结束时间:
```json
{
"request": [
{
"field": "start_time",
"label": "开始时间",
"type": "datetime",
"describe": "增量获取数据,start_time作为开始时间,格式:yyyy-MM-dd HH:mm:ss",
"value": "{{LAST_SYNC_TIME|datetime}}"
},
{
"field": "end_time",
...
},
...
]
}
```
这里使用了模板变量 `{{LAST_SYNC_TIME|datetime}}` 和 `{{CURRENT_TIME|datetime}}` 分别表示上次同步时间和当前时间,从而实现增量更新。
#### 条件过滤与分页
为了提高查询效率,我们可以设置条件过滤和分页参数:
```json
{
...
"condition": [
[
{
"field": "shop_no",
...
},
{
...
}
]
],
...
}
```
例如,通过设置 `shop_no`, `details_list.brand_name`, 和 `status` 字段的条件过滤,可以精确地筛选出符合条件的数据。同时,通过分页参数 `page_size:10`, `page_no:0`, 可以控制每次请求返回的数据量,从而避免一次性获取过多数据导致性能问题。
#### 数据加工与转换
在获取到原始数据后,需要对其进行一定的加工和转换。例如,将响应中的 `consign_time` 字段转换为日期格式,并重命名为 `consign_date`:
```json
{
...
"formatResponse":[
{
...
}
],
...
}
```
这种转换不仅使得数据更加直观,还能方便后续的数据处理和分析。
#### 自动填充与延迟处理
为了确保数据的一致性和完整性,可以启用自动填充功能,并设置适当的延迟处理:
```json
{
...
"autoFillResponse": true,
...
}
```
自动填充功能可以根据预定义规则自动补全缺失的数据,而延迟处理则可以避免因网络或系统延迟导致的数据不一致问题。
#### 实际应用案例
假设我们需要查询某一时间段内状态为已发货且品牌为“金添食品”的销售出库单,可以按照以下步骤进行配置:
1. 设置请求参数中的开始时间和结束时间。
2. 配置条件过滤,确保只查询状态为95及以上且品牌为“金添食品”的记录。
3. 启用分页功能,每次请求10条记录。
4. 对响应结果进行必要的字段格式化和重命名。
通过上述配置,我们可以高效地从旺店通系统中获取所需的销售出库单数据,并进行进一步的处理和分析。这不仅提升了业务透明度,还大大提高了工作效率。
![打通钉钉数据接口](https://pic.qeasy.cloud/S20.png~tplv-syqr462i7n-qeasy.image)
### 使用轻易云数据集成平台将源数据转换为金蝶云星空API接口格式
在数据集成的生命周期中,ETL(Extract, Transform, Load)转换是至关重要的一步。本文将详细探讨如何使用轻易云数据集成平台,将已经集成的源平台数据转换为金蝶云星空API接口所能够接收的格式,并最终写入目标平台。
#### 数据请求与清洗
首先,我们需要从源系统(如旺店通)提取销售出库单数据。假设我们已经完成了这一阶段,接下来重点在于如何将这些数据转换并写入金蝶云星空。
#### 数据转换与写入
为了实现这一目标,我们需要配置元数据并利用轻易云的数据处理能力。以下是具体的元数据配置和操作步骤:
##### 元数据配置
```json
{
"api": "batchSave",
"method": "POST",
"idCheck": true,
"operation": {
"method": "merge",
"field": "shop_no,consign_date,order_no",
"bodyName": "list",
"bodySum": ["details_list__batch_list_num", "details_list_total_amount", "details_list_num"],
"header": ["order_no", "shop_no", "consign_date", "logistics_no", "src_tids"],
"body": ["details_list__batch_list_num", "details_list_goods_no", "details_list_total_amount", "details_list_num",
"details_list__batch_list_batch", "paid"]
},
"otherRequest": [
{"field": "FormId", "label": "业务对象表单Id", "type": "string",
"describe": "必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"SAL_OUTSTOCK"},
{"field": "Operation", "label": "执行的操作",
"type": "string","value":"Save"},
{"field": "IsAutoSubmitAndAudit",
"label":"提交并审核","type":"bool","value":"true"},
{"field":"IsVerifyBaseDataField","label":"验证基础资料","type":"bool",
"describe":"是否验证所有的基础资料有效性,布尔类,默认false(非必录)","value":"true"},
{"field":"SubSystemId","label":"系统模块","type":"string",
"describe":"默认仓库模块","value":"21"}
]
}
```
##### 数据处理流程
1. **字段映射与合并**:
- 使用`operation`中的`method: merge`方法,根据`shop_no`, `consign_date`, `order_no`等字段进行合并。
- 将相关字段映射到目标API所需的格式中,如将旺店通的`details_list__batch_list_num`映射到金蝶云星空API中的相应字段。
2. **生成请求体**:
- 请求体中包含两个部分:header和body。
- `header`部分包括订单号、店铺编号、发货日期、物流单号和来源订单号等信息。
- `body`部分包括商品批次号、商品编号、总金额、数量、批次信息和支付状态等详细信息。
3. **其他参数设置**:
- 设置业务对象表单ID为`SAL_OUTSTOCK`。
- 执行操作类型为`Save`。
- 自动提交并审核设置为`true`。
- 验证基础资料有效性设置为`true`。
- 系统模块设置为默认仓库模块,即值为21。
##### API调用示例
通过上述配置,我们可以构建一个POST请求来调用金蝶云星空的API接口:
```http
POST /k3cloud/api/batchSave HTTP/1.1
Host: k3cloud.kingdee.com
Content-Type: application/json
Authorization: Bearer <your_access_token>
{
...
// 根据元数据配置生成的请求体内容
}
```
#### 实时监控与日志记录
在整个ETL过程中,轻易云提供了实时监控和日志记录功能,可以帮助我们随时跟踪数据流动和处理状态。一旦出现错误或异常,可以快速定位问题并进行修正。
通过以上步骤,我们成功地将源平台的数据转换为符合金蝶云星空API接口要求的格式,并顺利写入目标平台。这一过程不仅提升了数据处理效率,还确保了业务流程的透明度和可追溯性。
![打通用友BIP数据接口](https://pic.qeasy.cloud/T17.png~tplv-syqr462i7n-qeasy.image)