金蝶云星空数据集成技术案例:销售退货单到销售退货单配置分享
在本次项目中,我们主要探讨如何将金蝶云星空系统中的销售退货单
数据通过轻易云数据集成平台无缝对接到另一个金蝶云星空系统中。该方案被命名为"销售退货单-销售退货单(虚拟客户金额为1)-0k",核心目标是确保高效、可靠地进行大量数据的快速写入,同时实时监控和管理整个集成流程。
关键技术挑战及解决方案
高吞吐量的数据写入能力
为了实现大量销售退货单
数据的高速写入,我们采用了金蝶云星空提供的API接口——batchSave。在使用此接口时,必须确保每批次的数据都符合接口限流政策,这样可以有效避免由于瞬间请求过多导致的性能瓶颈或服务拒绝问题。
POST /api/kingdee/batchSave
Content-Type: application/json
{
"data": [
// 数据数组,每个元素代表一笔订单信息
]
}
集中的监控和告警系统
在实际运行过程中,对任务状态与性能进行集中监控显得尤为重要。我们利用平台内置的实时监控工具来追踪每一次操作执行情况,包括成功率与失败细节,并在出现异常时及时触发告警机制。这种方法不仅提高了透明度,还大幅度减少了排查错误所需时间。
数据格式差异处理与定制化转换逻辑
由于业务需求不同,各个系统之间的数据格式存在一定差异。因此,在传输前,需要对原始数据进行梳理并按目标系统格式重新组织。此外,支持自定义脚本编写,使得我们能够灵活处理复杂场景下的数据转换需求,从而保证准确性。例如,在转换过程中,可以根据特定规则计算虚拟客户金额:
function transformData(originalData) {
let transformedData = {};
// 实现业务逻辑,比如:
transformedData.virtualCustomerAmount = originalData.amount * 1.2;
return transformedData;
}
这些措施共同构建了一条稳定、高效且智能化的信息流,实现了从初始抓取到最终存储的一站式自动化处理,为企业运营提供强有力支持。
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台,调用金蝶云星空的executeBillQuery
接口来获取销售退货单的数据,并进行必要的数据加工。
配置元数据
首先,我们需要配置元数据,以便正确地调用金蝶云星空的API接口。以下是元数据配置的关键部分:
{
"api": "executeBillQuery",
"method": "POST",
"number": "FBillNo",
"id": "FEntity_FENTRYID",
"pagination": {
"pageSize": 500
},
"idCheck": true,
"formatResponse": [
{
"old": "FApproveDate",
"new": "FApproveDate_new",
"format": "date"
}
],
...
}
请求参数配置
为了确保请求参数的正确性,我们需要根据业务需求设置请求字段。以下是一些关键字段及其配置:
{
"request": [
{"field":"FBillTypeID_FNumber","label":"单据类型","type":"string","describe":"单据类型","value":"FBillTypeID.FNumber"},
{"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"FBillNo"},
{"field":"FDate","label":"日期","type":"string","describe":"日期","value":"FDate"},
{"field":"FApproveDate","label":"审核时间","type":"string","describe":"日期","value":"FApproveDate"},
{"field":"FSaleOrgId_FNumber","label":"销售组织","type":"string","describe":"组织","value":"FSaleOrgId.FNumber"},
...
],
...
}
这些字段涵盖了销售退货单的基本信息,如单据类型、单据编号、日期、审核时间等。
分页处理
由于可能存在大量数据,我们需要进行分页处理。分页参数如下:
{
"otherRequest": [
{"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"},
{"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"},
...
]
}
通过设置Limit
和StartRow
,我们可以控制每次请求的数据量,从而实现高效的数据获取。
数据格式化
为了确保数据的一致性和可读性,我们需要对部分字段进行格式化处理。例如,将审核时间字段FApproveDate
格式化为新的字段FApproveDate_new
:
{
"formatResponse":[
{
"old":"FApproveDate",
"new":"FApproveDate_new",
"format":"date"
}
]
}
这种格式化处理可以帮助我们更好地理解和使用返回的数据。
调用API接口
配置完成后,我们可以通过轻易云平台发起对金蝶云星空接口的调用。以下是一个示例请求:
{
"_apiName_": "/k3cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery.common.kdsvc",
"_method_": "{{method}}",
"_params_":{
"_FormId_ ": "{{FormId}}",
"_FieldKeys_ ": "{{FieldKeys}}",
"_FilterString_ ": "{{FilterString}}",
"_OrderString_ ": "",
"_TopRowCount_ ": "{{TopRowCount}}",
"_StartRow_ ": "{{StartRow}}",
"_Limit_ ": "{{Limit}}"
}
}
在实际操作中,需要将占位符替换为实际值,例如表单ID、字段集合、过滤条件等。
数据加工与存储
获取到数据后,可以根据业务需求进行进一步的数据清洗和转换。例如,将特定字段进行重新命名或格式化,然后将处理后的数据写入目标系统或数据库中。
通过上述步骤,我们能够高效地从金蝶云星空获取销售退货单的数据,并进行必要的加工处理。这不仅提高了数据集成的效率,也确保了数据的一致性和准确性。
轻易云数据集成平台:ETL转换与金蝶云星空API接口写入
在轻易云数据集成平台中,数据集成的第二步是将已经集成的源平台数据进行ETL转换,并转为目标平台所能接收的格式。本文将深入探讨如何将销售退货单数据转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。
元数据配置解析
在进行ETL转换之前,首先需要理解元数据配置。以下是关键配置项及其解析:
-
API接口和请求方法:
{"api":"batchSave","method":"POST"}
这里指定了目标API接口为
batchSave
,请求方法为POST
。 -
操作类型和字段映射:
"operation":{"method":"merge","field":"FBillTypeID_FNumber,FBillNo,FDate,FSaleOrgId_FNumber,FCustomerID_FNumber,FStockOrgId_FNumber","bodyName":"details","header":["FBillTypeID_FNumber","FBillNo","FDate","FSaleOrgId_FNumber","FRetcustId_FNumber","FStockOrgId_FNumber","FRetcustId_FDJZDYSWDYZZ"],"body":["FMaterialId_FNumber","FRealQty","FTaxPrice","FStockID_FNumber","FRetcustId_FDJZDYSWDYZZ","FOrderNo","FEntryTaxRate","FAllAmount","FDiscount"]}
操作类型为
merge
,需要处理的字段包括单据类型、单据编号、日期、销售组织、客户、发货组织等。 -
请求字段配置:
"request":[{"field":"FBillTypeID", "label":"单据类型", "type":"string", "describe":"单据类型", "parser":{"name":"ConvertObjectParser", "params":"FNumber"}, "value":"XSTHD01_SYS"}, ...]
请求字段配置详细列出了每个字段的名称、标签、类型、描述以及解析方式。比如,
FBillTypeID
使用了ConvertObjectParser
进行解析,并设置默认值为XSTHD01_SYS
。
数据转换与写入
在了解元数据配置后,下一步是将源平台的数据进行ETL转换,以符合金蝶云星空API接口的要求。
-
单据头信息转换:
-
单据类型(FBillTypeID):
{"field":"FBillTypeID", "label":"单据类型", "type":"string", "value":"XSTHD01_SYS"}
将源数据中的单据类型映射到金蝶云星空中的对应值。
-
日期(FDate):
{"field":"FDate", "label":"日期", "type":"string", "value":"{FDate}"}
直接从源数据中获取日期并传递给目标平台。
-
销售组织(FSaleOrgId):
{"field":"FSaleOrgId", "label":"销售组织", "type":"string", "parser":{"name":"ConvertObjectParser", "params":"FName"}, "value":"{FRetcustId_FDJZDYSWDYZZ}"}
使用
ConvertObjectParser
解析销售组织信息,并根据源数据中的客户信息进行映射。
-
-
客户信息转换:
- 客户(FRetcustId):
{"field":"FRetcustId", "label":"客户", "type":"string", "parser":{"name":"ConvertObjectParser", "params":"FNumber"}, "value":"CUST9388"}
将客户信息通过解析器转换为目标平台所需格式。
- 客户(FRetcustId):
-
发货组织(FStockOrgId):
{"field":"FStockOrgId", "label":"发货组织", "type":"string", "parser":{"name":"ConvertObjectParser", "params": "_function case when '{FCustomerID_FNumber}' like 'FX148' then '121' when '{FCustomerID_FNumber}' like 'FX118' then '126' else '125' end"}}
根据不同的客户编码条件动态选择发货组织。
-
明细信息转换:
- 每个物料明细项都需要进行相应的字段映射和解析。例如,物料编码(FMaterialID)、实发数量(FRealQty)、含税单价(FTaxPrice)、仓库(FStockID)等。
{"field": ["details.FMaterialId_FNumber"],"label": ["物料编码"],"type": ["string"],"describe": ["基础资料"],"parser": [{"name": ["ConvertObjectParser"],"params": ["FNumber"]}],"value": ["{{details.FMaterialId_FNumber}}"]}
-
其他必要信息:
- 包括运输单号、联系电话、收货人姓名等文本字段,这些字段直接从源数据中提取并传递给目标平台。
最终请求组装与发送
经过上述步骤的数据转换后,将所有字段组装成符合金蝶云星空API接口要求的请求体。以下是一个简化示例:
{
"FormId": "SAL_RETURNSTOCK",
"Operation": {
...
},
...
}
通过HTTP POST方法,将组装好的请求体发送到金蝶云星空的batchSave
API接口,实现最终的数据写入。
总结
本文详细介绍了如何利用轻易云数据集成平台,将源平台的数据通过ETL过程转化为金蝶云星空API接口所能接收的格式,并最终实现数据写入。关键在于理解元数据配置,准确进行字段映射和解析,以及正确组装并发送请求。通过这些步骤,可以确保不同系统间的数据无缝对接,实现高效的数据集成。