案例分享:JY-BDS销售出库单数据集成实现
在本技术案例中,我们着重探讨如何高效地将吉客云·奇门的数据集成到金蝶云星空,具体关注的是JY-BDS销售出库单(91-补发订单)的处理过程。该方案涉及的关键技术包括API接口调用、分页和限流处理、数据格式转换,以及异常处理与错误重试机制的实现。
我们首先需要通过调用吉客云·奇门提供的数据获取API jackyun.tradenotsensitiveinfos.list.get
来抓取相关交易信息。这一步骤不仅要求我们应对大规模数据的高吞吐量,还需确保数据抓取的准确性与及时性。在此过程中,轻易云平台所提供的集中监控和告警系统显得尤为重要。这一功能允许实时跟踪集成任务状态,并在发生任何潜在问题时即刻通知运维团队,从而保证整个流程顺畅进行。
接下来,在获得初始数据后,我们还必须解决其分页和限流问题,以防止超负荷访问导致服务器性能下降。而对于不同系统之间的数据格式差异,我们可以利用平台自定义的数据转换逻辑,将吉客云·奇门传来的原始交易信息转化为符合金蝶云星空接口要求的特定结构。
完成上述准备工作之后,就可以通过金蝶云星空提供的数据写入API batchSave
将处理后的交易信息批量导入到目标系统中。在这种情况下,为保障每笔业务请求都能成功执行并确认写入结果,需要设计一个异常处理与错误重试机制。一旦某个环节出现失败,会自动触发该机制,重新尝试直至成功或完全排除故障源。
综上所述,本次演示展示了轻易云平台在复杂、多变环境中的灵活应用,以及它如何通过可视化工具、强大的监控能力及高效可靠的数据操作保障系统对接过程中的全透明管理。以下详细介绍整个方案实施步骤及各环节关键点解析。
使用轻易云数据集成平台调用吉客云·奇门接口获取并加工数据
在数据集成的生命周期中,第一步是从源系统获取数据。本文将详细探讨如何使用轻易云数据集成平台调用吉客云·奇门接口jackyun.tradenotsensitiveinfos.list.get
来获取并加工销售出库单(91-补发订单)相关的数据。
接口配置与请求参数
首先,我们需要配置API接口和请求参数。根据元数据配置,接口为jackyun.tradenotsensitiveinfos.list.get
,请求方法为POST。以下是具体的请求参数及其描述:
modified_begin
和modified_end
: 修改起始时间和结束时间,必须同时存在,时间间隔不能超过七天。startModified
和endModified
: 最后修改时间的起始和截止。tradeNo
: 销售单号,多个用半角逗号分隔。pageSize
: 每页记录数,默认20,最大1000。pageIndex
: 页码,从0开始。hasTotal
: 是否返回总记录数,首次调用时可以传1获取总记录数。startCreated
和endCreated
: 创建时间的起始和截止。startAuditTime
和endAuditTime
: 审核时间的起始和截止。startConsignTime
和endConsignTime
: 发货时间的起始和截止。tradeStatus
: 订单状态。tradeType
: 订单类型,这里固定为91(补发订单)。sourceTradeNos
: 网店订单号。fields
: 需要返回字段列表,用逗号分隔。
数据请求与清洗
在进行数据请求时,需要特别注意分页处理和数据清洗。以下是一个示例请求体:
{
"modified_begin": "2023-09-01T00:00:00",
"modified_end": "2023-09-07T23:59:59",
"pageSize": 20,
"pageIndex": 0,
"hasTotal": 1,
"startConsignTime": "{{LAST_SYNC_TIME|datetime}}",
"endConsignTime": "{{CURRENT_TIME|datetime}}",
"tradeType": "91",
"fields": "checkTotal,tradeNo,postFee,otherFee,chargeCurrency,accountName,payType,payNo,sellerMemo,buyerMemo,goodsDetail.goodsNo,goodsDetail.goodsName"
}
在这个示例中,我们设置了分页大小为20,每次请求第一页的数据,并指定了需要返回的字段列表。
异常处理与补偿机制
为了确保数据完整性,我们需要设置异常处理与补偿机制。元数据配置中提供了一个定时任务(crontab)用于自动补偿遗漏的数据:
"omissionRemedy": {
"crontab": "30 6,18 * * *",
"takeOverRequest": [
{
"field": "startConsignTime",
"label": "发货时间(起始)",
"type": "string",
"value": "{{DAYS_AGO_2|datetime}}"
},
{
"field": "endConsignTime",
"label": "发货时间(截止)",
"type": "string",
"value": "{{CURRENT_TIME|datetime}}"
}
]
}
这个定时任务每天两次(早上6点半和下午6点半)执行,用于检查并补偿过去两天内可能遗漏的数据。
数据转换与写入
在获取到原始数据后,需要进行必要的数据转换。例如,将日期格式统一、字段名称映射等。以下是一个简单的数据转换示例:
def transform_data(raw_data):
transformed_data = []
for record in raw_data:
transformed_record = {
'销售单号': record['tradeNo'],
'商品编号': record['goodsDetail']['goodsNo'],
'商品名称': record['goodsDetail']['goodsName'],
'发货时间': record['consignTime'],
'订单状态': record['tradeStatus']
}
transformed_data.append(transformed_record)
return transformed_data
最后,将转换后的数据写入目标系统或数据库,以完成整个数据集成过程。
通过上述步骤,我们可以高效地使用轻易云数据集成平台调用吉客云·奇门接口获取并加工销售出库单相关的数据。这不仅提高了业务透明度,还确保了数据的一致性和完整性。
轻易云数据集成平台:将源数据ETL转换并写入金蝶云星空API接口
在数据集成的生命周期中,ETL(提取、转换、加载)是关键步骤之一。在本技术案例中,我们将重点探讨如何利用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,并转为金蝶云星空API接口所能够接收的格式,最终写入目标平台。
元数据配置解析
为了实现上述目标,我们需要对元数据配置进行详细解析。以下是主要字段及其配置:
-
API接口与请求方法
{"api":"batchSave","method":"POST","idCheck":true,"operation":{"rowsKey":"array","rows":1,"method":"batchArraySave"}}
api
:指定调用的API接口为batchSave
。method
:使用HTTP POST方法提交请求。idCheck
:启用ID检查,确保唯一性。operation
:定义操作类型及其参数。
-
请求字段 请求字段定义了需要传递给金蝶云星空API的数据结构和内容。以下是部分关键字段的配置:
-
单据类型
{"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"XSCKD07_SYS"}
使用
ConvertObjectParser
解析器,将单据类型转换为金蝶系统识别的格式。 -
单据编号
{"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{tradeNo}"}
直接从源数据中获取交易编号作为单据编号。
-
日期
{"field":"FDate","label":"日期","type":"string","describe":"日期","value":"{consignTime}"}
将发货时间映射为单据日期。
-
销售组织
{"field":"FSaleOrgID","label":"销售组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_findCollection find textField_l2iazxw0 from a7cb0b9d-2aef-342a-bcb9-7d02e747f1d8 where textField_l2iazxvw={shopCode}"}
通过查询语句从源系统中获取对应的销售组织编码,并使用解析器转换格式。
-
-
明细信息 明细信息包含了订单中的具体商品信息,每个商品的信息都需要详细映射到目标系统的相应字段中:
-
物料编码
{"field":"FMaterialID","label":"物料编码","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{{goodsDetail.goodsNo}}"}
将商品编码映射到金蝶系统中的物料编码。
-
实发数量
{"field":"FRealQty","label":"实发数量","type":"string","describe":"数量","value":"{{goodsDetail.sellCount}}"}
映射实际发货数量。
-
-
其他重要字段
-
网店订单号
{"label":"网店订单号","field":"FJKShopNumber","type": "string", "value": "{onlineTradeNo}"}
-
物流公司
{"label": "物流公司", "field": "FLogisticName", "type": "string", "value": "{logisticName}"}
-
数据转换与写入
在完成元数据配置解析后,下一步是将这些配置应用于实际的数据转换和写入过程。以下是具体步骤:
- 提取源数据:从源系统中提取原始数据,包括订单信息、商品详情等。
- 应用元数据配置:根据元数据配置,对提取的数据进行转换。例如,将原始订单编号映射为金蝶系统中的单据编号,将商品编码转换为物料编码等。
- 构建请求体:根据转换后的数据,构建符合金蝶云星空API要求的请求体。
- 发送请求:使用HTTP POST方法,将构建好的请求体发送到金蝶云星空API接口。
- 处理响应:接收并处理API响应,确保数据成功写入目标系统。
实际案例
假设我们有一条源平台的数据如下:
{
"tradeNo": "T123456789",
"consignTime": "2023-10-01",
"shopCode": "SC001",
"sellerMemo": "Urgent order",
"warehouseCode": "WH001",
"goodsDetail": [
{
"goodsNo": "G12345",
"sellCount": 10,
"shareFavourableAfterFee": 100,
"goodsMemo": ""
}
],
...
}
通过应用上述元数据配置,我们可以将其转换为如下符合金蝶云星空API要求的格式:
{
"FormId": "SAL_OUTSTOCK",
...
"Model":{
...
"FBillTypeID":{"FNumber": "XSCKD07_SYS"},
...
"FBillNo": "T123456789",
...
"FDate": "2023-10-01",
...
// 更多字段映射...
...
"FEntity":[
{
...
// 商品明细映射...
...
"FMaterialID":{"FNumber": "G12345"},
...
// 更多商品明细字段...
...
}
]
}
}
通过上述步骤和配置,我们成功地将源平台的数据进行了ETL转换,并通过轻易云数据集成平台无缝地写入到了金蝶云星空系统中。