### 旺店通·企业奇门数据集成到金蝶云星空:销售出库单对接案例分享
有效的系统集成对于业务流程自动化至关重要。在本次技术案例中,我们将详细探讨如何通过轻易云平台实现旺店通·企业奇门中的销售出库单(API接口:wdt.stockout.order.query.trade)与金蝶云星空的数据对接(API接口:batchSave)。我们不仅会展示整个数据处理过程,包括实时监控和日志记录,还会深入解析分页限流、数据格式差异处理及异常重试机制,以确保高效可靠的数据传输。
#### 数据获取与分页管理
在实际操作过程中,首先要解决的是从旺店通·企业奇门接口定时抓取销售出库单数据的问题。这涉及调用`wdt.stockout.order.query.trade` API,并结合分页策略来有效地管理和限制每次请求的数据量。为了避免超时或性能瓶颈,我们采用了一种智能调度机制,可以动态调整页面大小并控制请求频率,即使在高负载情况下,也能保证系统稳定运行。
#### 数据转换与格式适配
不同系统之间通常存在数据格式不一致的情况,这一点在旺店通·企业奇门和金蝶云星空之间尤为明显。在这个项目中,我们设计了一套灵活的映射规则,通过脚本进行定制化转换,以适应两个平台间的数据标准。例如,将数字类型转变为字符串类型,或者日期格式从YYYY-MM-DD HH:mm:ss调整为YYYY/MM/DD等。这些细致入微的转换配置大大提升了数据写入成功率,同时确保了信息准确无误。
#### 高效批量写入及错误重试机制
针对大量数据需要快速写入到金蝶云星空这一挑战,我们采用了其提供的`batchSave` API进行批量操作,避免逐条插入带来的性能问题。此外,为提高整体流程的鲁棒性,每个写入步骤都包含详细的事务控制逻辑。一旦出现异常,无论是网络故障还是目标服务器响应慢,都能触发自动重试机制,从而极大提高了任务完成率。
#### 实时监控与透明可视
借助轻易云平台强大的实时监控功能,我们可以全程跟踪每一笔销售出库单从获取、转换到最终写入的状态,不仅提升了运维效率,也有助于及时发现和解决潜在问题。同时,通过详尽日志记录,实现了对所有操作步骤的透明审计,有效地支持后续分析与优化工作。
![如何对接钉钉API接口](https://pic.qeasy.cloud/D22.png~tplv-syqr462i7n-qeasy.image)
### 调用源系统旺店通·企业奇门接口wdt.stockout.order.query.trade获取并加工数据
在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口`wdt.stockout.order.query.trade`来获取并加工销售出库单数据。
#### 接口概述
`wdt.stockout.order.query.trade`接口用于查询销售出库单信息。该接口采用POST请求方式,支持增量获取数据,并且可以根据多种条件进行筛选。以下是元数据配置的关键字段及其作用:
- **start_time** 和 **end_time**:用于增量获取数据,分别表示开始时间和结束时间。
- **status**:用于筛选订单状态,如已取消、已审核、已发货等。
- **src_order_no** 和 **src_tid**:分别表示系统订单编号和原始单号,用于精确查询特定订单。
- **stockout_no**:出库单号。
- **shop_no** 和 **warehouse_no**:分别表示店铺编号和仓库编号,用于区分不同店铺和仓库的数据。
#### 请求参数配置
在实际操作中,我们需要配置请求参数以确保能够正确调用接口并获取所需数据。以下是具体的请求参数配置示例:
```json
{
"start_time": "{{LAST_SYNC_TIME|datetime}}",
"end_time": "{{CURRENT_TIME|datetime}}",
"status": "95,105,110",
"page_size": "{PAGINATION_PAGE_SIZE}",
"page_no": "{PAGINATION_START_PAGE}"
}
```
- `start_time` 和 `end_time` 使用模板变量分别表示上次同步时间和当前时间,确保每次调用都是增量获取。
- `status` 设置为"95,105,110",表示只获取已发货、部分打款和已完成的订单。
- `page_size` 和 `page_no` 用于分页处理,确保每次请求的数据量可控。
#### 数据清洗与转换
在获取到原始数据后,需要对其进行清洗与转换,以便后续处理和写入目标系统。以下是常见的数据清洗与转换步骤:
1. **字段映射与重命名**:
- 将原始字段映射到目标系统所需的字段。例如,将`order_no`映射为目标系统中的订单编号字段。
2. **数据格式转换**:
- 将日期时间格式统一转换为目标系统要求的格式。例如,将"yyyy-MM-dd HH:mm:ss"格式转换为"yyyy/MM/dd HH:mm:ss"。
3. **异常数据处理**:
- 对缺失值或异常值进行处理,例如填充默认值或丢弃异常记录。
#### 自动填充响应
轻易云平台提供了自动填充响应功能,可以根据预定义的规则自动解析并填充响应数据。这一功能极大简化了开发工作,提高了效率。在元数据配置中,我们可以看到`autoFillResponse: true`,这意味着平台会自动处理响应数据,无需手动解析。
#### 实际案例
假设我们需要从旺店通系统中获取2023年10月1日至2023年10月31日期间所有已发货、部分打款和已完成的销售出库单,并将其导入金蝶系统。具体步骤如下:
1. 配置请求参数:
```json
{
"start_time": "2023-10-01 00:00:00",
"end_time": "2023-10-31 23:59:59",
"status": "95,105,110",
"page_size": "50",
"page_no": "0"
}
```
2. 调用接口并获取原始数据:
```json
POST /api/wdt.stockout.order.query.trade
{
...
}
```
3. 对原始数据进行清洗与转换:
- 映射字段:将`order_no`映射为金蝶系统中的订单编号。
- 转换日期格式:将日期时间格式从"yyyy-MM-dd HH:mm:ss"转换为"yyyy/MM/dd HH:mm:ss"。
4. 将清洗后的数据写入金蝶系统。
通过以上步骤,我们实现了从旺店通到金蝶系统的数据无缝对接,并确保了每个环节的数据准确性和一致性。这一过程展示了轻易云平台在异构系统集成中的强大能力,为企业提供了高效可靠的数据解决方案。
![钉钉与MES系统接口开发配置](https://pic.qeasy.cloud/S22.png~tplv-syqr462i7n-qeasy.image)
### 使用轻易云数据集成平台实现金蝶云星空API接口的ETL转换与写入
在数据集成的生命周期中,将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,并转为目标平台金蝶云星空API接口所能够接收的格式,是一个至关重要的步骤。本文将详细探讨如何利用轻易云数据集成平台完成这一过程。
#### 元数据配置解析
在进行ETL转换时,首先需要理解和配置元数据。以下是针对金蝶云星空API接口的元数据配置解析:
```json
{
"api": "batchSave",
"effect": "EXECUTE",
"method": "POST",
"operation": {
"rowsKey": "array",
"rows": 1,
"method": "batchArraySave"
},
"idCheck": true,
"request": [
{"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"XSCKD01_SYS"},
{"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{order_no}"},
{"field":"FDate","label":"日期","type":"string","describe":"日期","value":"{consign_time}"},
{"field":"FSaleOrgId","label":"销售组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100"},
{"field":"FCustomerID","label":"客户","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"3.001"},
{"field":"FSaleDeptID","label":"销售部门","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"}},
{"field":"FCorrespondOrgId","label":"对应组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100"},
{"field":"FSalesManID","label":"销售员","type":"","describe":"","parser":{"name":"","params":""},"value":""},
{"field":"","label":"","type":"","describe":"","parser":{"name":"","params":""},"value":""},
...
],
...
}
```
#### 配置解析与字段映射
1. **基本字段配置**:
- `FBillTypeID`:单据类型,固定值为`XSCKD01_SYS`。
- `FBillNo`:单据编号,对应源平台的订单号 `{order_no}`。
- `FDate`:日期,对应源平台的发货时间 `{consign_time}`。
2. **组织与客户信息**:
- `FSaleOrgId`、`FCorrespondOrgId`、`FStockOrgId` 等字段均需使用 `ConvertObjectParser` 将值转换为金蝶系统识别的编码格式。
- `FCustomerID`:客户信息,固定值为 `3.001`。
3. **明细信息**:
明细信息通过数组形式传递,每个字段需要详细映射。例如:
- `FMaterialID`:物料编码,对应源平台的规格编号 `{detail_list.spec_no}`。
- `FRealQty`:实发数量,对应源平台的商品数量 `{details_list.goods_count}`。
- `FTaxPrice`:含税单价,通过函数计算得出 `{details_list.paid}/{details_list.goods_count}`。
4. **特殊字段处理**:
某些字段如 `FLot`(批号)需要根据条件进行处理。例如:
```json
{
"field": "FLot",
"label": "批号",
"type": "string",
"value": "_function case '_findCollection find FIsBatchManage from ... where FNumber={{details_list.goods_no}} _endFind' WHEN 'true' THEN '0' ELSE '' END",
"parser": {
"name": "ConvertObjectParser",
"params": "FNumber"
}
}
```
#### 数据转换与写入
在完成元数据配置后,需要将源平台的数据按照上述配置进行转换,并通过API接口写入到金蝶云星空系统中。具体步骤如下:
1. **提取数据**:从源平台提取原始数据,确保所有必要字段均已获取。
2. **数据清洗**:对提取的数据进行清洗和预处理,确保符合目标系统要求。
3. **数据转换**:根据元数据配置,将清洗后的数据进行格式转换,特别是涉及到复杂逻辑和条件判断时,需要确保转换准确无误。
4. **API请求构建**:根据配置构建HTTP POST请求,包含所有必要的字段和参数。
5. **发送请求并处理响应**:将构建好的请求发送至金蝶云星空API接口,并处理返回结果,确保操作成功。
#### 示例代码
以下是一个简化示例,用于展示如何通过Python脚本实现上述过程:
```python
import requests
import json
# 构建请求头
headers = {
'Content-Type': 'application/json'
}
# 构建请求体
payload = {
# 基本信息
'FBillTypeID': {'FNumber': 'XSCKD01_SYS'},
'FBillNo': order_no,
'FDate': consign_time,
# 组织与客户信息
'FSaleOrgId': {'FNumber': '100'},
'FCustomerID': {'FNumber': '3.001'},
# 明细信息
'FEntity': [
{
'FMaterialID': {'FNumber': detail['spec_no']},
'FRealQty': detail['goods_count'],
'FTaxPrice': detail['paid'] / detail['goods_count'],
# 更多明细字段...
} for detail in details_list
],
# 其他配置信息...
}
# 将请求体转为JSON格式
data = json.dumps(payload)
# 发送POST请求
response = requests.post('https://api.kingdee.com/batchSave', headers=headers, data=data)
# 打印响应结果
print(response.json())
```
通过上述步骤和示例代码,可以高效地将源平台的数据转换并写入到金蝶云星空系统中,实现跨系统的数据集成。
![用友与SCM系统接口开发配置](https://pic.qeasy.cloud/T29.png~tplv-syqr462i7n-qeasy.image)