云星空销售退货单(渠道)对接旺店通其他入库单的技术案例
在系统集成领域,数据从一个平台流动到另一个平台时,往往会面临多种挑战。本文聚焦于如何将金蝶云星空的销售退货单(渠道)数据高效、可靠地集成到旺店通·企业奇门中的其他入库单环节。在这个过程中,我们遇到了API调用、分页限流、数据格式转换等一系列复杂问题。通过合理配置和使用轻易云数据集成平台,这些问题得到了有效解决。
首先,在获取金蝶云星空的数据时,我们充分利用其提供的executeBillQuery
接口,以确保所有销售退货单信息不会遗漏。同时,为了应对大量数据传输的问题,我们采用了定时抓取机制,通过批量处理方式,将这些数据快速写入到旺店通·企业奇门。从而保证每一笔交易都能及时反映在库存系统中。
其次,在处理API调用方面,金蝶云星空的数据查询与旺店通·企业奇门的数据写入存在显著差异。例如,执行 executeBillQuery
时需要注意分页及限流策略,而在向 wdt.stockin.order.push
写入数据时,则需特别关注其字段映射和格式要求。另外,为防止因网络波动或服务器故障导致的数据丢失,我们还实现了一套异常处理与重试机制。这套机制能够自动记录失败操作,并在适当的时候重新尝试提交,从而增强整个流程的健壮性和容错能力。
最后,本次方案中我们不仅实现了实时监控与日志记录,还针对特定需求进行了接口优化,包括自定义的一些映射规则,使之更好地符合实际业务逻辑。本案例展示的不只是技术上的难题,更体现出精准设计、高效实施以及实时调优的重要性,希望能为类似项目提供有益参考。
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery
接口来获取销售退货单数据,并进行初步加工。
接口配置与请求参数
首先,我们需要配置executeBillQuery
接口的请求参数。以下是元数据配置中的关键字段:
{
"api": "executeBillQuery",
"method": "POST",
"number": "FBillNo",
"id": "FEntity_FENTRYID",
"pagination": {
"pageSize": 100
},
"idCheck": true,
"request": [
{"field":"FID","label":"实体主键","type":"string","value":"FID"},
{"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"},
{"field":"FSaleOrgId","label":"销售组织","type":"string","value":"FSaleOrgId"},
{"field":"FStockOrgId","label":"库存组织","type":"string","value":"FStockOrgId"},
{"field":"FSettleOrgId","label":"结算组织","type":"string","value":"FSettleOrgId"},
{"field":"FApproveDate","label":"日期","type":"string","value":"FApproveDate"},
{"field":"FRetcustId","label":"客户","type":"string","value":"FRetcustId"},
{"field":"FMaterialId_FNumber","label":"物料","type":"string","value":"FMaterialId.FNumber"},
{"field":"FOwnerIdHead","label":"货主","type":"string","value":"FOwnerIdHead"},
{"field":"FRealQty","label":"实发数量","type":"string","value":"FRealQty"},
{"field":"FStockId_FNumber","label":"仓库id","type":"string","value":"FStockId.FNumber"},
{"field": "FTaxPrice", "label": "含税单价", "type": "string", "value": "FTaxPrice"},
{"field": "FRetcustId_FNumber", "label": "投诉对应客户", "type": "string", "value": "FRetcustId.FNumber"},
{"field": "FSrcBillNo", "label": "源单编号", "type": "string", "value": "FSrcBillNo"},
{"field": "FSalesManId_FName", "label": "销售员", "type": "string", "value": "FSalesManId.FName"},
{"field": "FEntity_FENTRYID", "label": "", type: string, value: FEntity_FENTRYID},
{"field" : FPrice, label: 单价, type: string, value: FPrice},
{ field: FBillTypeID, label: 单据类型, type: string, value: FBillTypeID}
],
...
}
请求示例
根据上述配置,我们构建一个请求示例:
{
FormId: 'SAL_RETURNSTOCK',
FieldKeys: 'FID,FBillNo,FSaleOrgId,FStockOrgId,FSettleOrgId,FApproveDate,FRetcustId,FMaterialId.FNumber,FOwnerIdHead,FRealQty,FStockId.FNumber,FTaxPrice,FRetcustId.FNumber,FSrcBillNo,FSalesManId.FName,FEntity_FENTRYID,FPrice,FBillTypeID',
FilterString: 'FApproveDate>='2023-01-01' AND FDocumentStatus='C' AND FBillTypeID= '64674633836ae2' AND FStockId.FNumber != '037',
Limit: 100,
StartRow: 0,
}
数据处理与清洗
在获取到原始数据后,我们需要对其进行清洗和初步加工,以便后续的数据转换和写入。以下是一些常见的数据处理步骤:
- 字段映射:将金蝶云星空返回的数据字段映射到目标系统所需的字段。例如,将
FBillNo
映射为目标系统中的订单编号。 - 数据格式转换:将日期格式从金蝶云星空的格式转换为目标系统所需的格式。
- 数据过滤:根据业务需求过滤掉不必要的数据。例如,只保留状态为已审核(
C
)的记录。
示例代码
以下是一个使用Python进行数据请求和处理的示例代码:
import requests
import json
# 定义请求参数
url = 'https://api.kingdee.com/executeBillQuery'
headers = {'Content-Type': 'application/json'}
payload = {
'FormId': 'SAL_RETURNSTOCK',
'FieldKeys': 'FID,FBillNo,...', # 完整字段列表
'FilterString': 'FApproveDate>=2023-01-01 AND FDocumentStatus=C AND ...',
'Limit': 100,
'StartRow': 0,
}
# 发起请求
response = requests.post(url, headers=headers, data=json.dumps(payload))
data = response.json()
# 数据处理
processed_data = []
for record in data:
processed_record = {
'order_number': record['FBillNo'],
# 映射其他字段...
# 转换日期格式...
# 数据过滤...
}
processed_data.append(processed_record)
# 输出处理后的数据
print(json.dumps(processed_data, indent=4))
通过以上步骤,我们成功地调用了金蝶云星空的executeBillQuery
接口,获取并初步加工了销售退货单的数据。这为后续的数据转换和写入打下了坚实的基础。
数据集成生命周期中的ETL转换:云星空销售退货单到旺店通其他入库单
在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,转为目标平台旺店通·企业奇门API接口所能够接收的格式,并最终写入目标平台。本文将详细探讨这一过程,特别是如何利用元数据配置来实现这一目标。
API接口配置
我们使用的API接口为wdt.stockin.order.push
,通过POST方法提交请求。以下是具体的元数据配置:
{
"api": "wdt.stockin.order.push",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"operation": {
"method": "merge",
"field": "FBillNo",
"bodyName": "goods_list",
"bodySum": ["FRealQty"],
"header": ["FBillNo", "FStockId_FNumber"],
"body": ["FMaterialId_FNumber", "FRealQty", "FTaxPrice"]
},
"request": [
{"field": "is_check", "label": "是否审核", "type": "string", "value": "1"},
{"field": "outer_no", "label": "外部单号", "type": "string", "value": "{FBillNo}"},
{"field": "warehouse_no", "label": "仓库编码", "type": "string", "value": "{FStockId_FNumber}"},
{"field": "remark", "label": "备注", "type": "string", "value":"销售退货单(渠道)"},
{
"field":"goods_list",
"label":"货品明细节点",
"type":"array",
...
数据转换过程
-
提取(Extract):
- 从源平台云星空中提取销售退货单的数据,包括单据编号(FBillNo)、仓库编码(FStockId_FNumber)、物料编码(FMaterialId_FNumber)、实际数量(FRealQty)和税价(FTaxPrice)。
-
转换(Transform):
- 将提取的数据映射到目标平台所需的字段。例如,将
FBillNo
映射为outer_no
,FStockId_FNumber
映射为warehouse_no
。 - 对于货品明细节点,需要将每一项物料信息转换为目标平台所需的格式。在这个过程中,我们使用了模板字符串,例如:
{{goods_list.FMaterialId_FNumber}}
表示从源数据中获取物料编码。
- 将提取的数据映射到目标平台所需的字段。例如,将
-
加载(Load):
- 将转换后的数据通过POST方法提交到旺店通·企业奇门API接口。这里需要注意的是,我们设置了一个标志位
is_check=1
,表示该单据需要审核。
- 将转换后的数据通过POST方法提交到旺店通·企业奇门API接口。这里需要注意的是,我们设置了一个标志位
请求示例
以下是一个完整的请求示例:
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
![数据集成平台API接口配置](https://pic.qeasy.cloud/T14.png~tplv-syqr462i7n-qeasy.image)