金蝶云星空系统对接之销售退货单数据集成实战
在数据驱动业务的环境中,确保数据从一个系统无缝、精准地传输到另一个系统是关键。本次我们将分享如何通过轻易云数据集成平台,将“其他入库单--销售退货单(虚拟客户1元)-手表ok”这一方案,成功实现金蝶云星空与金蝶云星空之间的数据集成。
技术要点解析
为了达成高效、可靠的数据对接,本案例重点运用了以下几项技术:
-
API 调用与分页处理
- 数据获取:采用了
executeBillQuery
API接口,从源金蝶云星空系统中抓取需要传输的销售退货单。考虑到大规模数据调用时可能会遇到分页和限流问题,我们设计了一套稳定、准确的数据拉取机制。
- 数据获取:采用了
-
批量写入
- 数据写入:利用目标金蝶云星空提供的
batchSave
API接口,实现大量数据的高效批量写入。这不仅提升了整个过程的时效性,还保证了每一条记录都能被准确地记录下来。
- 数据写入:利用目标金蝶云星空提供的
-
实时监控与告警
- 通过本平台集中监控和告警功能,我们实时跟踪整个数据集成任务。无论是执行状态还是性能表现,都能够做到心中有数。一旦出现异常情况,可以迅速反应并解决,以降低对业务运行的影响。
-
自定义转换逻辑
- 针对特定业务需求和两端系统间的数据格式差异,我们编写了专门的数据转换逻辑,并在可视化工具内直观展示,使得复杂流程变得简明易懂。
-
质量保障措施
- 引入全程的数据质量监控及异常检测体系,对关键信息进行校验。一旦发现问题,即可自动触发重试机制或人工干预,避免因漏单导致的重要损失。
接下来,我们将在具体实施过程中详细讲解每一步骤中的技术细节,以及遇到的问题和解决方案。此方法不仅适用于当前案例,也为日后类似项目提供了一份值得参考的范例。
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery
接口,获取并加工销售退货单(虚拟客户1元)相关的数据。
接口配置与请求参数
首先,我们需要配置executeBillQuery
接口的元数据。以下是关键的配置项:
- API:
executeBillQuery
- Method:
POST
- Pagination: 支持分页,每页大小为500条记录
- ID Check: 启用ID检查
请求参数主要包括以下字段:
[
{"field":"FEntity_FEntryID","label":"FEntryID","type":"string","value":"FEntity_FEntryID"},
{"field":"FID","label":"实体主键","type":"string","value":"FID"},
{"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"},
{"field":"FDocumentStatus","label":"单据状态","type":"string","value":"FDocumentStatus"},
{"field":"FStockOrgId_FNumber","label":"库存组织","type":"string","value":"FStockOrgId.FNumber"},
{"field":"FDate","label":"日期","type":"string","value":"FDate"},
{"field":"FBillTypeID","label":"单据类型","type":"string","value":"FBillTypeID"},
{"field":"FSUPPLIERID_FNumber","label":"供应商","type":"string","value":"FSUPPLIERID.FNumber"},
{"field":"FNOTE","label":"备注","type":"string","value":"FNOTE"},
{"field":"FMATERIALID_FNumber","label":"物料编码","type":"string","value":"FMATERIALID.FNumber"},
{"field":"FSTOCKID","label":"收货仓库","type": "string", "value": "FSTOCKID"},
{"field": "FQty", "label": "实收数量", "type": "string", "value": "FQty"},
{"field": "FPrice", "label": "成本价", "type": "string", "value": "FPrice"},
{"field": "FAmount", "label": "总成本", "type": "string", "value": "FAmount"}
]
此外,还有一些其他请求参数:
[
{"field": "Limit", "label": "最大行数", "type": "string", "value": "{PAGINATION_PAGE_SIZE}"},
{"field": "StartRow", "label": "开始行索引", "type": "string", "value": "{PAGINATION_START_ROW}"},
{"field": "TopRowCount", "label": "返回总行数", "type": "int"}
]
构建请求与发送
在构建请求时,我们需要注意以下几点:
-
分页处理:由于每次请求只能返回500条记录,因此需要通过分页参数
Limit
和StartRow
来控制数据量。 -
过滤条件:使用
FilterString
字段来指定查询条件,例如:{ "FilterString": { "$and":[ { "$gte":["$dateFieldName",'{{LAST_SYNC_TIME|date}}'] }, { "$eq":["$billTypeFieldName",'QTRKD07_SYS'] }, { "$eq":["$stockOrgFieldName",'100'] } ] } }
-
字段选择:通过
FieldKeys
字段指定需要查询的字段集合。
示例请求体如下:
{
"FormId" : "STK_MISCELLANEOUS",
"FieldKeys" : [
'FID', 'FBillNo', 'FDocumentStatus', 'FStockOrgId.FNumber', 'FDate',
'FBillTypeID', 'FSUPPLIERID.FNumber', 'FMATERIALID.FNumber',
'FSTOCKID', 'FQty', 'FPrice', 'FAmount'
],
...
}
数据清洗与转换
获取到原始数据后,需要进行清洗和转换,以满足业务需求。以下是常见的数据处理步骤:
- 数据格式转换:将日期、金额等字段转换为标准格式。
- 缺失值处理:填充或删除缺失值。
- 字段映射:将源系统字段映射到目标系统字段。
例如,将日期格式从字符串转换为日期对象:
import datetime
def convert_date(date_str):
return datetime.datetime.strptime(date_str, '%Y-%m-%d')
数据写入目标系统
完成数据清洗和转换后,将其写入目标系统。这一步通常涉及调用目标系统的API,并确保数据的一致性和完整性。
总结来说,通过轻易云数据集成平台调用金蝶云星空的executeBillQuery
接口,可以高效地获取并处理销售退货单的数据。关键在于正确配置接口元数据、构建合理的请求、以及进行必要的数据清洗和转换,从而实现不同系统间的数据无缝对接。
使用轻易云数据集成平台实现销售退货单数据转换与写入金蝶云星空API接口
在数据集成过程中,ETL(提取、转换、加载)是关键步骤之一。本文将深入探讨如何使用轻易云数据集成平台,将源平台的销售退货单数据转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。
数据请求与清洗
在数据集成生命周期的第一步,我们已经完成了源平台数据的提取和初步清洗。接下来,我们将重点放在第二步,即数据转换与写入目标平台。
数据转换与写入配置
为了将销售退货单的数据成功写入金蝶云星空系统,我们需要遵循其API接口的规范。以下是元数据配置的详细解析:
{
"api": "batchSave",
"method": "POST",
"idCheck": true,
"operation": {
"method": "merge",
"field": "FBillNo,FDate,FBillTypeID,FSUPPLIERID_FNumber,FDEPTID,FDJZDYyongtu_FNumber,F_POIH_Text_FNumber",
"bodyName": "details",
"bodySum": ["FQty"],
"header": ["FBillNo", "FDate", "FBillTypeID", "FSUPPLIERID_FNumber", "FDEPTID", "FDJZDYyongtu_FNumber",
"FStockOrgId_FNumber", "F_POIH_Text_FNumber", "FNOTE"],
"body": ["FMATERIALID_FNumber", "FQty", "FStockOrgId_FNumber", "FEntryNote"]
},
...
}
配置解析
-
API接口信息
api
: 指定调用的API接口为batchSave
。method
: 使用HTTP POST方法进行数据提交。idCheck
: 启用ID检查,以确保数据唯一性。
-
操作配置
operation.method
: 设置操作方法为merge
,用于合并相同单据编号的数据。operation.field
: 指定合并字段为FBillNo
,FDate
,FBillTypeID
, 等。operation.bodyName
: 明细部分字段名称为details
。operation.bodySum
: 明细部分需要汇总的字段为FQty
。operation.header
: 指定头部字段,如单据编号、日期、单据类型等。operation.body
: 指定明细字段,如物料编码、数量、库存组织等。
-
请求字段映射
- 每个字段都有详细的配置,包括字段名称、标签、类型、描述和解析器。例如:
{ "field": "FBillTypeID", "label": "单据类型", ... "value": "{FBillTypeID}" }
此配置表示将源数据中的
FBillTypeID
映射到目标平台的对应字段。
- 每个字段都有详细的配置,包括字段名称、标签、类型、描述和解析器。例如:
-
嵌套结构
- 明细信息和财务信息采用嵌套结构进行配置。例如,明细信息中的每个子字段都包含父字段引用:
{ ... "children": [ { ... "parent": "FEntity" } ] }
- 明细信息和财务信息采用嵌套结构进行配置。例如,明细信息中的每个子字段都包含父字段引用:
-
其他请求参数
- 除了主体数据外,还需要指定业务对象表单Id(如:
SAL_RETURNSTOCK
)、执行操作(如:Save
)等其他参数。
- 除了主体数据外,还需要指定业务对象表单Id(如:
实际应用案例
假设我们有一条销售退货单,其源平台的数据如下:
{
...
// 源平台具体数据信息
}
通过上述元数据配置,我们可以使用轻易云的数据集成工具,将这些源数据自动转换为符合金蝶云星空API要求的格式,并通过POST请求提交到目标系统。具体步骤如下:
- 提取源数据:从源系统中提取销售退货单相关的数据。
- 清洗与转换:根据元数据配置,对提取的数据进行清洗和格式转换。
- 构建请求体:按照金蝶云星空API要求,构建HTTP POST请求体。
- 提交请求:通过轻易云的数据集成工具,发送POST请求至金蝶云星空API接口,实现数据写入。
通过以上步骤,我们可以确保销售退货单的数据准确无误地传输到金蝶云星空系统,从而实现不同系统间的数据无缝对接,提高业务处理效率。