### 案例分享:金蝶云星空调拨单同步到旺店通其他出库单(中专仓默认货位)
在本案例中,我们将探讨如何利用轻易云数据集成平台,将金蝶云星空系统的调拨单数据高效、可靠地同步至旺店通·企业奇门的其他出库单模块,并将默认为中专仓的货位进行管理。该方案涉及多项技术要点,包括API接口调用、数据质量监控和异常处理,旨在确保数据无缝对接、高效运行。
首先,通过金蝶云星空提供的API接口executeBillQuery,定时且可靠地抓取所需的数据。此过程不仅要求高吞吐量的数据写入能力以支持大量数据快速传输,还需要应对分页和限流带来的挑战。因此,我们制定了详细的数据获取策略,以确保不会出现漏单现象。
为了处理两大系统之间的数据格式差异,我们使用了自定义的数据转换逻辑,环节包括字段映射和数据类型转换等,使得最终输出符合旺店通·企业奇门API规范。对于这一部分,对接所使用的API接口是wdt.stockout.order.push,可以实现批量写入操作,以提高整体效率,同时借助实时监控与告警机制来跟踪任务状态及性能表现。
另外,在实际应用过程中,不可忽视的是异常处理与错误重试机制。例如,当网络不稳定或外部依赖服务不可用时,保证集成任务能够自动检测并进行有效重试,从而避免资源浪费和重复操作。
通过这些措施,不仅成功实现了从金蝶云星空到旺店通·企业奇门之间的顺利对接,同时也提升了整个业务流程透明度和灵活性,为进一步优化资源配置打下坚实基础。在随后的内容中,将具体展示每一个实施步骤以及代码示例。
![泛微OA与ERP系统接口开发配置](https://pic.qeasy.cloud/D5.png~tplv-syqr462i7n-qeasy.image)
### 调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成的生命周期中,第一步是从源系统获取数据,并对其进行初步加工。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口来实现这一过程。
#### 接口配置与调用
金蝶云星空的`executeBillQuery`接口主要用于查询业务单据。我们需要通过POST请求方式调用该接口,并传递必要的参数以获取所需的数据。以下是元数据配置中的关键字段及其作用:
- **api**: `"executeBillQuery"` - 指定要调用的API。
- **method**: `"POST"` - 指定请求方法为POST。
- **number**: `"FBillNo"` - 单据编号字段。
- **id**: `"FBillEntry_FEntryID"` - 分录主键ID字段。
- **idCheck**: `true` - 启用ID检查。
#### 请求参数详解
请求参数分为两部分:`request`和`otherRequest`。其中,`request`部分包含了具体的业务字段,而`otherRequest`则包含了一些控制查询行为的参数。
##### request 部分
以下是一些关键字段及其描述:
- **FBillEntry_FEntryID**: 分录主键ID。
- **FID**: 单据内码。
- **FBillNo**: 单据编号。
- **FDocumentStatus**: 单据状态。
- **FStockOrgId_FNumber**: 库存组织编码。
- **FDate**: 日期。
- **FBillTypeID_FNumber**: 单据类型编码。
这些字段在实际调用时会被映射到相应的业务数据中,以确保查询结果的准确性和完整性。
##### otherRequest 部分
控制查询行为的参数包括:
- **Limit**: 分页参数,指定每页返回的数据量。
- **FieldKeys**: 查询返回的字段列表,例如:`"FPOOrderEntry_FEntryId, FPurchaseOrgId.FNumber"`。
- **TopRowCount**: 查询前N条记录,用于限制返回结果数量。
- **FilterString**: 过滤条件字符串,例如:`"FApproveDate>='{{LAST_SYNC_TIME|datetime}}' and FStockOrgId.FNumber='100'"`,用于精确筛选数据。
- **FormId**: 表单ID,例如:`"STK_TransferDirect"`,必须填写以指定查询的业务表单类型。
- **StartRow**: 分页起始行,用于控制分页查询。
#### 实际应用案例
假设我们需要同步调拨单到旺店通其他出库单(中专仓默认货位),可以通过以下步骤实现:
1. 配置请求参数:
```json
{
"api": "executeBillQuery",
"method": "POST",
"number": "FBillNo",
"id": "FBillEntry_FEntryID",
"idCheck": true,
"request": [
{"field": "FBillEntry_FEntryID", "value": "FBillEntry_FEntryID"},
{"field": "FID", "value": "FID"},
{"field": "FBillNo", "value": "FBillNo"},
{"field": "FDocumentStatus", "value": "FDocumentStatus"},
{"field": "FStockOrgId_FNumber", "value": "FStockOrgId.FNumber"},
{"field": "FDate", "value": "FDate"},
{"field": "FBillTypeID_FNumber", "value": "FBillTypeID.FNumber"}
],
...
}
```
2. 配置过滤条件:
```json
{
...
"otherRequest": [
{"field": "Limit", "value": "{PAGINATION_PAGE_SIZE}"},
{"field": "FieldKeys",
"value":"FBillEntry_FEntryID, FBillNo, FDocumentStatus, FStockOrgId.FNumber, FDate, FBillTypeID.FNumber"},
{"field":"FilterString","value":"FApproveDate>='{{LAST_SYNC_TIME|datetime}}' and FStockOrgId.FNumber='100' and FSrcStockId.FNumber ='01.08' and (FDestStockId.FNumber ='01.06' or FDestStockId.FNumber ='CK001')"},
{"field":"FormId","value":"STK_TransferDirect"}
]
}
```
3. 发起API请求并处理响应:
```python
import requests
import json
url = 'https://api.kingdee.com/executeBillQuery'
headers = {'Content-Type': 'application/json'}
payload = {
# 填入上述配置
}
response = requests.post(url, headers=headers, data=json.dumps(payload))
if response.status_code == 200:
data = response.json()
# 对返回的数据进行处理
process_data(data)
else:
print(f"Error {response.status_code}: {response.text}")
```
通过上述步骤,我们可以成功调用金蝶云星空接口获取调拨单数据,并对其进行初步加工,为后续的数据转换与写入做好准备。这一过程不仅提高了数据集成的效率,也确保了数据的一致性和准确性。
![泛微OA与ERP系统接口开发配置](https://pic.qeasy.cloud/S14.png~tplv-syqr462i7n-qeasy.image)
### 将调拨单同步到旺店通其他出库单的ETL转换
在数据集成生命周期的第二步中,我们需要将已经从源平台集成的数据进行ETL(提取、转换、加载)处理,以适配目标平台——旺店通·企业奇门API接口的格式。本文将详细探讨如何通过轻易云数据集成平台完成这一过程。
#### API接口配置与数据映射
首先,我们需要明确目标API接口的配置和数据映射关系。本文使用的API接口为`wdt.stockout.order.push`,其请求方法为POST,并且需要进行ID校验。以下是具体的元数据配置:
```json
{
"api": "wdt.stockout.order.push",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"request": [
{
"field": "outer_no",
"label": "外部单号",
"type": "string",
"value": "{FBillNo}"
},
{
"field": "warehouse_no",
"label": "仓库编号",
"type": "string",
"value": "005"
},
{
"field": "remark",
"label": "备注",
"type": "string",
"value": "金蝶调拨单"
},
{
"field": "is_check",
"label": "是否审核",
"type": "string",
"value": "1"
},
{
"field": "detail_list",
...
```
#### 数据提取与转换
在数据提取阶段,我们从源平台获取调拨单的数据,这些数据通常包括单据编号、仓库编号、备注信息、审核状态以及货品明细等。在轻易云平台上,这些字段通过元数据配置中的`request`部分进行定义和映射。
例如,外部单号(`outer_no`)对应的是源平台的`FBillNo`字段,仓库编号(`warehouse_no`)固定为"005",备注(`remark`)固定为"金蝶调拨单",审核状态(`is_check`)固定为"1"。
货品明细部分则是一个数组结构,包含多个字段,如商家编码(`spec_no`)、出库数量(`num`)、批次(`batch_no`)等。这些字段通过子节点进行定义和映射,例如:
```json
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
field: 'spec_no',
label: '商家编码',
type: 'string',
value: '{{detail_listss.FMaterialId_FNumber}}'
},
field: 'num',
label: '出库数量',
type: 'string',
value: '{{detail_listss.FQty}}'
}
}
}
}
}
}
}
}
}
}
}
}
```
#### 数据加载
在数据转换完成后,我们需要将这些数据写入目标平台——旺店通·企业奇门API接口。这个过程同样通过轻易云平台实现,具体操作包括:
1. **合并操作**:根据元数据配置中的操作部分,我们需要对某些字段进行合并处理。例如,通过合并操作将多个货品明细节点合并到一个数组中。
2. **延迟处理**:有时为了确保数据的一致性和完整性,我们可能需要设置一定的延迟时间。在本例中,延迟时间设置为140秒。
以下是元数据配置中的操作部分示例:
```json
{
...
operation: {
method: 'merge',
field: 'FBillNo',
bodyName: 'detail_listss',
bodySum: ['FQty'],
header: ['FBillNo', 'FSrcStockId_FNumber'],
body: ['FMaterialId_FNumber', 'FQty', 'FDestStockLocId_FNumber1', 'FDestStockLocId_FNumber2', 'FDestStockLocId_FNumber3', 'FDestStockLocId_FNumber4', 'FLot_FNumber']
},
delay: 140
}
```
#### 实际案例应用
在实际应用中,通过轻易云平台,我们可以轻松地将来自不同源系统的数据提取、转换并加载到目标系统中。以调拨单同步为例,通过上述配置和操作步骤,可以确保调拨单的数据准确无误地传输到旺店通其他出库单中,实现不同系统间的数据无缝对接。
以上就是通过轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,并最终写入目标平台旺店通·企业奇门API接口的全过程。希望这些技术细节能够帮助您更好地理解和应用这一过程。
![用友与CRM系统接口开发配置](https://pic.qeasy.cloud/T12.png~tplv-syqr462i7n-qeasy.image)