新宝-产业链协同平台与金蝶云星空的数据集成案例分析
在新宝-产业链协同平台和金蝶云星空两大系统的对接实践中,采购订单到销售订单的数据转换无疑是最关键的一环。本文将详细解析这一数据集成过程中的技术细节,并分享实际操作中的经验教训。
首先,我们利用新宝-产业链协同平台提供的API接口 /order/orderList
获取所需的采购订单数据。为了确保所获取数据的完整性,我们设置了定时任务来可靠地抓取新增及变更的数据记录。这一过程中,需要特别注意接口分页和限流问题,以防止数据遗漏或超载现象。
获取到原始数据后,下一步则是将这些信息快速、高效地写入到金蝶云星空系统。我们使用其提供的 batchSave
API 进行批量写入。在这一阶段,对两者之间的数据格式差异进行了相应的处理,通过自定义映射规则有效消除了不兼容的问题。例如,将新宝-产业链协同平台字段重新映射为符合金蝶云要求的格式,从而实现无缝对接。
整个流程还涉及实时监控与日志记录机制,一旦发现异常情况,如接口调用失败或者网络不稳定等问题,系统会自动触发错误重试机制,确保每一笔资料都能准确落地。此外,对于批量处理过程中可能出现的一些特例,还设计了相应的错误捕捉和手动干预功能,以减少人工参与度,提高自动化程度。
通过以上步骤,新宝-产业链协同平台到金蝶云星空的数据转换得到了高效、稳定保障,为企业各业务部门提供了精准及时的信息支持。
调用新宝-产业链协同平台接口/order/orderList获取并加工数据
在数据集成过程中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用新宝-产业链协同平台的/order/orderList
接口获取采购订单数据,并进行初步加工。
接口调用配置
首先,我们需要配置元数据,以便正确调用新宝-产业链协同平台的接口。以下是元数据配置的详细说明:
{
"api": "/order/orderList",
"method": "POST",
"number": "poNo",
"id": "poNo",
"idCheck": true,
"sdk": "\\Adapter\\Donlim\\SDK\\DonlimSDK",
"errorMsgKey": "msg",
"dataListKey": "data",
"autoPaging22": "page_no",
"beatFlat": ["orderDetail"],
"request": [
{
"field": "queryTime",
"label": "queryTime",
"type": "string",
"describe": "查询大于时间范围内数据,只支持查询跨度1个月内的数据",
"value": "{{LAST_SYNC_TIME|dateTime}}"
}
]
}
请求参数设置
在请求参数中,queryTime
字段用于指定查询的时间范围。该字段的值采用模板变量{{LAST_SYNC_TIME|dateTime}}
,表示上次同步时间点后的数据。这一设计确保了每次调用都能获取到最新的数据。
数据请求与清洗
通过上述配置,我们可以使用轻易云平台提供的SDK进行接口调用。以下是一个示例代码片段:
$sdk = new \Adapter\Donlim\SDK\DonlimSDK();
$response = $sdk->post('/order/orderList', [
'queryTime' => date('Y-m-d H:i:s', strtotime('-1 month'))
]);
if ($response['msg'] !== 'success') {
throw new Exception('API调用失败: ' . $response['msg']);
}
$dataList = $response['data'];
在这个示例中,我们首先实例化了DonlimSDK
类,然后使用post
方法发送请求,并传入查询时间参数。如果返回结果中的msg
字段不为“success”,则抛出异常以提示API调用失败。
数据转换与写入
获取到原始数据后,需要对其进行初步清洗和转换。由于返回的数据结构中包含了嵌套的订单详情(即orderDetail
),我们需要将其展开处理:
$processedData = [];
foreach ($dataList as $order) {
foreach ($order['orderDetail'] as $detail) {
$processedData[] = [
'poNo' => $order['poNo'],
'itemCode' => $detail['itemCode'],
'quantity' => $detail['quantity'],
// 添加更多需要的字段
];
}
}
在这个步骤中,我们遍历每个订单及其对应的订单详情,将必要的信息提取并重新组织成新的数组结构,以便后续写入目标系统。
自动分页处理
为了处理大量数据,轻易云平台支持自动分页功能。在元数据配置中,通过设置autoPaging22: page_no
实现自动分页。这样,当请求的数据量超过单页限制时,系统会自动进行分页请求,直到所有数据都被获取完毕。
$pageNo = 1;
do {
$response = $sdk->post('/order/orderList', [
'queryTime' => date('Y-m-d H:i:s', strtotime('-1 month')),
'page_no' => $pageNo
]);
if ($response['msg'] !== 'success') {
throw new Exception('API调用失败: ' . $response['msg']);
}
$dataList = $response['data'];
// 数据处理逻辑...
$pageNo++;
} while (!empty($dataList));
通过这种方式,我们可以确保即使面对大规模的数据,也能高效地完成数据请求和处理工作。
综上所述,通过合理配置元数据和利用轻易云平台提供的强大功能,我们能够高效地从新宝-产业链协同平台获取采购订单数据,并进行必要的清洗和转换,为后续的数据写入和业务分析打下坚实基础。
使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口的技术案例
在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL转换,并转为目标平台所能够接收的格式。本文将详细探讨如何使用轻易云数据集成平台,将采购订单数据转换为金蝶云星空API接口所能接收的销售订单格式,并最终写入目标平台。
API接口配置与元数据解析
根据提供的元数据配置,目标平台为金蝶云星空,其API接口为batchSave
,请求方法为POST
。以下是具体的配置细节:
{
"api": "batchSave",
"method": "POST",
"idCheck": true,
"operation": {
"method": "batchArraySave",
"rows": 20,
"rowsKey": "array"
},
"request": [
{"field": "FBillNo", "label": "单据编号", "type": "string"},
{"field": "FSaleOrgId", "label": "销售组织", "type": "string",
"parser": {"name": "ConvertObjectParser", "params": "FNumber"},
"value": "100"},
{"field": "FDate", "label": "日期", "type": "string",
"value": "{prepareDate}"},
{"field": "FCustId", ...
数据转换与映射
在进行ETL转换时,我们需要将源平台的数据字段映射到目标平台所需的字段。以下是一些关键字段及其映射规则:
-
单据编号 (FBillNo):
- 类型:字符串
- 源数据字段直接映射,无需转换。
-
销售组织 (FSaleOrgId):
- 类型:字符串
- 使用
ConvertObjectParser
解析器,将源数据中的组织编号转换为金蝶系统中的编号。
-
日期 (FDate):
- 类型:字符串
- 使用占位符
{prepareDate}
从源数据中提取日期信息。
-
客户 (FCustId):
- 类型:字符串
- 使用
ConvertObjectParser
解析器,将源数据中的客户ID转换为金蝶系统中的客户编号。
-
订单明细 (FSaleOrderEntry):
- 类型:数组
- 包含多个子字段,如物料编码、销售数量、含税单价等,每个子字段都需要从源数据中提取并进行相应的转换。
子字段详细配置
以订单明细中的物料编码(FMaterialId)为例,配置如下:
{
...
{
"field":"FMaterialId",
...
{
...
{"field":"FMaterialId","label":"物料编码","type":"string","value":"{orderDetail_materialNo}","parent":"FSaleOrderEntry","parser":{"name":"ConvertObjectParser","params":"FNumber"}},
...
}
}
}
- 物料编码 (FMaterialId):
- 类型:字符串
- 使用
ConvertObjectParser
解析器,将源数据中的物料编码转换为金蝶系统中的物料编号。
请求参数组装
根据以上配置,我们需要组装请求参数,以符合金蝶云星空API接口的要求。以下是一个示例请求体:
{
...
{
...
{
...
{
...
{
...
{
...,
{
...,
{
...,
{
...,
[
{
...,
{
...,
[
{
...,
{"FBillNo":"PO12345","FSaleOrgId":"100","FDate":"2023-10-01","FCustId":"CUST001","FBillTypeID":"XSDD01_SYS","FNote":"","FLinkMan":"","FLinkPhone":"","FSaleOrderEntry":[{"FMaterialId":"MAT001","FQty":"10","FTaxPrice":"100.00","FEntryTaxRate":"","FDeliveryDate":"","FEntryNote":"","F_GZHQ_Text_KHDDH":"","F_GZHQ_Text":"","F_GZHQ_Text1":"","parent":"FSaleOrderEntry"}],"FSalerId":"YG202009300027"}
]
}
}
]
}
}
}
}
}
}
}
}
}
提交与审核
最后,我们需要设置一些其他请求参数,以确保提交并审核该销售订单。这些参数包括:
FormId
: 金蝶业务对象表单ID,例如SAL_SaleOrder
Operation
: 执行操作,例如BatchSave
IsAutoSubmitAndAudit
: 是否自动提交并审核,布尔值true
IsVerifyBaseDataField
: 是否验证基础资料有效性,布尔值false
这些参数确保了我们在提交销售订单时,能够自动完成审核流程,提高了效率。
通过以上步骤,我们成功地将采购订单的数据经过ETL转换后,写入到了金蝶云星空API接口,实现了不同系统间的数据无缝对接。这不仅提升了业务透明度和效率,也确保了每个环节的数据准确性和一致性。