吉客云·奇门数据集成到金蝶云星空的实践案例
在实施吉客云·奇门数据集成为金蝶云星空销售出库单项目中,如何高效、准确地完成系统对接与数据同步是关键挑战之一。本文分享一个典型案例,即将(吉客云奇门->金蝶)(线下)销售订单转换成无批号的销售出库单。
首先,我们采用jackyun.tradenotsensitiveinfos.list.get接口从吉客云·奇门获取待处理的数据。为了确保数据不遗漏,我们设计了定时任务,每隔5分钟调用API进行增量抓取。这一过程不仅要求高频次可靠性,还需要实时监控与日志记录,以便及时发现和处理异常。
接着,对于从吉客云·奇门获取的大量销售订单数据,需要快速写入到金蝶云星空系统中。我们使用batchSave API接口,通过批量操作来提高效率。在这个过程中,进行了严格的字段映射和格式转换,例如,将吉客云中的JSON结构转化为符合金蝶要求的XML格式。此外,为了解决分页问题,每次API调用都会检查返回结果中的分页信息,并继续处理未完结部分直至全部完成。
针对两者之间可能出现的数据差异,如编码方式不同、时间格式不一致等问题,我们开发了专用的数据清洗模块进行预处理。同时,为应对网络波动或系统故障引发的数据传输错误,实现了全面的重试机制和错误通知策略,从而保证持久的一致性。
最后,在整个集成过程中,借助可视化操作界面和全生命周期管理功能,对每个流程环节进行透明化监控,使得即使面对复杂场景也能保持高度稳定与可追溯性。这种端到端严密设计极大提升了业务效率,同时减少人力介入带来的潜在错漏风险。
使用轻易云数据集成平台调用吉客云·奇门接口获取并加工数据
在数据集成的生命周期中,第一步是从源系统获取数据。本文将详细探讨如何使用轻易云数据集成平台调用吉客云·奇门接口 jackyun.tradenotsensitiveinfos.list.get
来获取并加工销售订单数据。
接口配置与请求参数
吉客云·奇门接口 jackyun.tradenotsensitiveinfos.list.get
主要用于查询销售订单信息。我们需要配置以下请求参数:
startModified
和endModified
:用于指定查询时间范围,分别表示上次同步时间和当前时间。pageSize
和pageIndex
:用于分页查询,确保一次请求不会返回过多数据。fields
:指定需要返回的字段列表,包括订单号、商品详情、费用信息等。isDelete
、tradeStatus
和tradeTypeList
:用于过滤特定状态和类型的订单。
以下是元数据配置示例:
{
"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,goodsDetail.taxFee,goodsDetail.shareFavourableFee,goodsDetail.estimateWeight,goodsDetail.goodsMemo,cateName,cateBrandName,cateTags,isFit,isGift,taxRate,isPresell"}
],
...
}
数据清洗与转换
在获取到原始数据后,需要进行清洗和转换,以满足目标系统的要求。以下是一些常见的数据处理步骤:
- 字段映射:将源系统中的字段映射到目标系统所需的字段。例如,将
tradeNo
映射为目标系统中的订单编号。 - 格式转换:根据目标系统的要求,对日期、金额等字段进行格式转换。例如,将日期格式从
YYYY-MM-DD HH:MM:SS
转换为YYYYMMDDHHMMSS
。 - 数据过滤:根据业务规则过滤不需要的数据。例如,只保留特定状态或类型的订单。
实际案例
假设我们需要将销售订单中的商品详情信息传输到金蝶系统,并且金蝶系统要求商品编号不能为特定值(如 88888
),且商品配送信息不能为空。我们可以通过以下方式实现:
-
配置请求参数:
{ ... {"field":"shopCode","logic":"eqv2","value":"0007"}, {"field":"goodsDetail.goodsNo","logic":"neqv2","value":"88888"}, {"field":"goodsDelivery.sendCount","logic":"isnotnull","value":"null"} ... }
-
调用接口并处理响应:
import requests import json url = 'https://api.jackyun.com/tradenotsensitiveinfos/list/get' headers = {'Content-Type': 'application/json'} payload = { 'startModified': '2023-01-01T00:00:00', 'endModified': '2023-01-31T23:59:59', 'pageSize': 100, 'pageIndex': 1, 'fields': 'tradeNo,...', 'isDelete': False, 'tradeStatus': '6000', 'tradeTypeList': ['1', '2', ...] } response = requests.post(url, headers=headers, data=json.dumps(payload)) data = response.json() # 数据清洗与转换 cleaned_data = [] for item in data['result']: if item['goodsNo'] != '88888' and item['sendCount'] is not None: cleaned_data.append({ 'order_no': item['tradeNo'], ... }) # 将清洗后的数据写入目标系统
通过上述步骤,我们成功地从吉客云·奇门接口获取了销售订单数据,并对其进行了必要的清洗和转换,为后续的数据写入做好了准备。这一过程不仅提高了数据处理的效率,还确保了数据的一致性和准确性。
轻易云数据集成平台ETL转换与金蝶云星空API接口对接技术案例
在数据集成的生命周期中,ETL(提取、转换、加载)是关键步骤之一。本文将详细探讨如何使用轻易云数据集成平台,将源平台的数据通过ETL转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。
数据请求与清洗
在开始ETL转换之前,我们需要从源平台(吉客云奇门)获取销售订单数据,并进行初步清洗。这部分内容不在本文讨论范围内,但需要注意的是,清洗后的数据应符合目标平台的要求。
数据转换与写入
轻易云数据集成平台提供了丰富的元数据配置选项,使得数据转换过程更加灵活和高效。以下是一个典型的元数据配置示例,用于将销售订单转化为销售出库单并写入金蝶云星空。
{
"api": "batchSave",
"method": "POST",
"idCheck": true,
"operation": {
"rowsKey": "array",
"rows": 1,
"method": "batchArraySave"
},
"request": [
{
"field": "FBillTypeID",
"label": "单据类型",
"type": "string",
"describe": "单据类型",
"parser": {
"name": "ConvertObjectParser",
"params": "FNumber"
},
"value": "XSCKD01_SYS"
},
{
...
}
],
...
}
配置解析
-
基本信息字段:
FBillTypeID
:单据类型,使用ConvertObjectParser
进行解析,参数为FNumber
。FBillNo
:单据编号,通过模板字符串生成,如{tradeNo}-11
。FDate
:日期字段,使用模板字符串和日期格式化函数,如{{consignTime|date}}
。FSaleOrgId
:销售组织,同样使用ConvertObjectParser
解析。
-
客户信息字段:
FCustomerID
:客户编码,通过模板字符串引用源数据中的客户编码字段。FLinkPhone
,FLinkMan
,FReceiveAddress
: 联系信息直接映射。
-
货物明细信息:
FEntity
:包含多个子字段,如物料编码、实发数量、单价等。每个子字段都可以通过模板字符串或函数进行动态赋值。例如:FMaterialID
: 使用模板字符串引用源数据中的物料编码,如{{goodsDetail.goodsNo}}
FTaxPrice
: 使用自定义函数计算含税单价,如_function {{goodsDetail.shareFavourableAfterFee}}/{{goodsDetail.sellCount}}
-
其他配置:
FormId
: 金蝶业务对象表单ID,如SAL_OUTSTOCK
Operation
: 执行操作,如保存(Save)IsAutoSubmitAndAudit
: 是否自动提交并审核,布尔值设置为true
实际应用
通过上述配置,我们可以将清洗后的销售订单数据转化为符合金蝶云星空API接口要求的格式,并通过POST请求批量保存到目标系统中。以下是一个简化的HTTP请求示例:
POST /k3cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.BatchSave.common.kdsvc HTTP/1.1
Host: api.kingdee.com
Content-Type: application/json
Authorization: Bearer <token>
{
...
}
在实际应用中,需要确保所有字段和参数都正确映射和解析,以避免因格式不符导致的数据传输失败。
总结
通过详细配置元数据和灵活运用模板字符串及自定义函数,我们能够高效地将源平台的数据转化为目标平台所需的格式,并顺利完成ETL过程。轻易云数据集成平台提供了强大的工具和可视化界面,使这一过程更加透明和高效。