吉客云·奇门数据集成到金蝶云星空的案例分享:销售订单转销售出库单
在系统集成项目中,高效地实现吉客云·奇门与金蝶云星空之间的数据对接是一个关键的挑战。本文将以实际运行方案(吉客云奇门->金蝶)(线上)销售订单->销售出库单9090
为例,深入探讨如何顺利完成这一任务。
为了确保吉客云·奇门的数据准确无误地被写入到金蝶云星空,我们首先利用其API接口jackyun.tradenotsensitiveinfos.list.get
来定时抓取数据。这一过程不仅需要解决分页和限流问题,还要处理两者间的数据格式差异。与此同时,为提高大批量数据传输的效率,我们采用了轻易平台提供的批量集成功能,通过调用金蝶云星空的batchSave
接口,实现快速写入。
具体实施过程中,透明化和实时监控机制尤为重要。在操作每一步时,可以借助日志记录功能追踪数据流动状态,并在出现异常情况时及时进行错误重试。此外,对接双方的一些特性也需特别注意,例如金蝶云星空所需的数据映射规则、字段匹配以及必要的转换逻辑。这些都将在后续步骤详细解析,以保障整个流程高效稳定。
通过以上技术手段,不仅可以确保业务环节中的每一个订单精准传递,同时也极大程度上提升了企业运营效率及可靠性。在下一部分中,我们将详述从获取吉客云·奇门接口数据,到最终写入金蝶云星空各个技术细节与最佳实践。
调用吉客云·奇门接口获取并加工数据
在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用吉客云·奇门接口jackyun.tradenotsensitiveinfos.list.get
,并对返回的数据进行初步加工处理。
接口配置与请求参数
首先,我们需要配置接口的元数据,以便正确调用吉客云·奇门的API。以下是该接口的元数据配置:
{
"api": "jackyun.tradenotsensitiveinfos.list.get",
"effect": "QUERY",
"method": "POST",
"number": "tradeNo",
"id": "tradeNo",
"idCheck": true,
"request": [
{"field":"startModified","label":"startModified","type":"string","value":"{{LAST_SYNC_TIME|datetime}}"},
{"field":"endModified","label":"endModified","type":"string","value":"{{CURRENT_TIME|datetime}}"},
{"field":"pageSize","label":"pageSize","type":"string","describe":"111","value":"{PAGINATION_PAGE_SIZE}"},
{"field":"pageIndex","label":"pageIndex","type":"string","describe":"111","value":"{PAGINATION_START_PAGE}"},
{"field":"fields","label":"fields","type":"string","describe":"111","value":
"tradeNo,orderNo,shopName,companyName,warehouseName,logisticName,mainPostid,goodsDetail.goodsNo,flagNames,columnExt,sourceAfterNo,goodsDetail.outerId,pickUpCode,expense.expenseFee,expense.expenseItemName,billDate,goodsPlatDiscountFee,goodsDetail.shareOrderDiscountFee,goodsDetail.shareOrderPlatDiscountFee,customizeGoodsColumn9,goodsDetail.goodsId,goodsDetail.goodsNo,goodsDetail.goodsName,goodsDetail.specName,goodsDetail.barcode,goodsDetail.sellCount,goodsDetail.unit,goodsDetail.sellPrice,goodsDetail.sellTotal,goodsDetail.cost,goodsDetail.discountTotal,goodsDetail.discountPoint,taxFee,taxRate"
},
{"field": "isDelete", "label": "isDelete", "type": "string"},
{"field": "tradeStatus", "label": "tradeStatus", "type": "string", "value": "9090"},
{"field": "tradeTypeList", "label": "tradeTypeList", "type": "string",
"value":
"1,2,3,4,5,6,7,9,10,11,13,91,92"
,"parser":{"name":"StringToArray","params": ","}}
],
"condition":[
[{"field":"shopCode","logic":"neqv2","value":"0007"},{"field":"goodsDetail.goodsNo","logic":"neqv2","value":"88888"},{"field":"goodsDelivery.tradeId"}]
],
"beatFlat":["goodsDelivery"]
}
请求参数解析
- 时间参数:
startModified
和endModified
分别表示查询的起始和结束时间,使用动态变量{{LAST_SYNC_TIME|datetime}}
和{{CURRENT_TIME|datetime}}
来获取。 - 分页参数:
pageSize
和pageIndex
用于分页查询,确保每次请求的数据量适中。 - 字段选择:通过
fields
字段指定需要返回的数据字段,包括订单号、商品详情等。 - 过滤条件:使用条件过滤器,如排除特定店铺代码(如不等于“0007”)和特定商品编号(如不等于“88888”)。
数据请求与清洗
在完成接口配置后,通过POST方法发送请求以获取数据。返回的数据可能包含多个嵌套结构,如商品详情(goodsDetail
)和商品交付信息(goodsDelivery
)。我们需要对这些嵌套结构进行扁平化处理,以便后续的数据转换与写入。
以下是一个简单的Python示例,用于发送请求并处理返回的数据:
import requests
import json
url = 'https://api.jackyun.com/tradenotsensitiveinfos/list/get'
headers = {'Content-Type': 'application/json'}
payload = {
'startModified': '2023-01-01T00:00:00Z',
'endModified': '2023-01-31T23:59:59Z',
'pageSize': 100,
'pageIndex': 1,
'fields': 'tradeNo,...', # 完整字段列表见上文
'isDelete': False,
'tradeStatus': '9090',
'tradeTypeList': [1,...] # 完整类型列表见上文
}
response = requests.post(url, headers=headers, data=json.dumps(payload))
data = response.json()
# 扁平化处理示例
def flatten_data(data):
flat_data = []
for item in data['result']:
base_info = {k: item[k] for k in item if k != 'goodsDetail'}
for detail in item['goodsDetail']:
flat_item = {**base_info}
flat_item.update(detail)
flat_data.append(flat_item)
return flat_data
flat_data = flatten_data(data)
数据转换与写入准备
在完成数据清洗后,可以将扁平化后的数据传递给下一个阶段进行转换与写入。此过程包括将数据映射到目标系统所需的格式,并执行必要的转换逻辑,如单位换算、字段重命名等。
通过上述步骤,我们实现了从吉客云·奇门接口获取并初步加工数据,为后续的数据集成奠定了基础。这一过程展示了如何利用轻易云数据集成平台的强大功能,实现高效、透明的数据处理。
轻易云数据集成平台ETL转换与写入金蝶云星空API接口技术案例
在数据集成过程中,将源平台的数据转换为目标平台所能接收的格式并写入,是一个至关重要的步骤。本文将详细探讨如何利用轻易云数据集成平台,将吉客云奇门的销售订单数据转换为金蝶云星空API接口所能接收的格式,并最终写入金蝶云星空系统。
数据请求与清洗
首先,我们从吉客云奇门获取销售订单数据。这一步骤包括数据请求和初步清洗,确保数据完整性和一致性。假设我们已经完成了这部分工作,接下来进入关键的ETL(Extract, Transform, Load)过程。
数据转换与写入
我们需要将已清洗的数据转换为金蝶云星空API接口所能接受的格式。以下是具体的元数据配置及其应用:
API接口配置
{
"api": "batchSave",
"method": "POST",
"idCheck": true,
"operation": {
"method": "merge",
"field": "tradeNo",
"bodyName": "details",
"bodySum": ["goodsDetail_goodsDelivery_sendCount"],
"header": ["tradeNo", "shopCode", "warehouseCode", "sourceTradeNos", "consignTime", "onlineTradeNo"],
"body": ["goodsDetail_goodsNo", "goodsDetail_goodsDelivery_sendCount", "goodsDetail_goodsDelivery_batchamount",
"goodsDetail_goodsDelivery_batchNo", "goodsDetail_shareFavourableAfterFee",
"goodsDetail_sellTotal", "goodsDetail_sellCount"]
},
...
}
该配置定义了如何将源数据映射到目标API接口字段中。主要包括以下几个部分:
- API基本信息:
api
字段指定了调用的API名称batchSave
,method
字段指定了HTTP方法为POST。 - 操作配置:通过
operation
字段定义了合并策略、主键字段、明细体名称以及汇总字段等。 - 请求参数映射:通过
request
数组定义了各个字段的映射关系。
请求参数映射
[
{"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"XSCKD01_SYS"},
{"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{tradeNo}"},
{"field":"FDate","label":"日期","type":"string","describe":"日期","value":"{{consignTime|date}}"},
{"field":"FSaleOrgId","label":"销售组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100"},
{"field":"FCustomerID","label":"客户","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{shopCode}"},
...
]
每个请求参数都包含以下信息:
field
: 对应金蝶云星空中的字段名。label
: 字段标签,用于描述该字段。type
: 字段类型,如字符串、日期等。describe
: 字段描述。parser
: 用于解析和转换值的解析器,例如ConvertObjectParser
。value
: 映射值,可以是静态值或动态值(如模板变量)。
明细信息映射
{
"field": "FEntity",
...
"children": [
{"field": "FCustMatID", ...},
{"field": "FMaterialID", ...},
{"field": "FBarcode", ...},
{"field": "FRealQty", ...},
...
]
}
明细信息通过嵌套结构进行映射,每个子字段都包含类似的配置,确保每个明细项都能正确映射到目标系统中。
特殊处理逻辑
在某些情况下,需要对特定字段进行特殊处理。例如,计算含税单价和判断是否赠品:
{"field": "FTaxPrice", ... ,
"value": "_function {{details.goodsDetail_shareFavourableAfterFee}}/{{details.goodsDetail_sellCount}}"},
{"field": "FIsFree", ... ,
"value": "_function CASE WHEN {{details.goodsDetail_sellTotal}}>0 THEN 'false' ELSE 'true' END"}
这些特殊处理逻辑通过自定义函数实现,以满足业务需求。
数据写入
最后,通过调用配置好的API接口,将转换后的数据写入金蝶云星空系统。整个过程由轻易云数据集成平台自动化执行,确保高效、准确地完成数据集成任务。
以上即是利用轻易云数据集成平台,将吉客云奇门销售订单数据转换并写入金蝶云星空API接口的技术案例。通过合理配置元数据和请求参数,实现了不同系统间的数据无缝对接。