基于轻易云的数据集成:金蝶云星空系统对接案例分享
在企业的日常运营中,收款单数据的准确、及时记录和处理至关重要。为此,我们利用轻易云数据集成平台,实现了从一个金蝶云星空系统到另一个金蝶云星空系统的数据同步,并成功配置了一套名为“收款单-新20231120鼎悦_copy-2”的解决方案。本案例将介绍该方案的实施细节及技术要点。
技术背景与挑战
在本次项目中,我们主要面临以下几个技术挑战:
- 确保数据不漏单:需要保证所有生成的收款单都能准确无误地被集成到目标系统中。
- 支持高吞吐量的数据写入能力:大量数据需要快速写入到目标金蝶云星空系统,从而提升整体处理效率。
- 接口分页和限流问题:如何有效管理API调用,避免因过多请求导致接口限流或超时。
数据采集与转化逻辑
为了实现上述要求,我们首先利用executeBillQuery API定期抓取源金蝶云星空中的收款单数据信息。通过轻易云提供的可视化设计工具,我们制定了自定义的数据转换逻辑,使得采集到的数据能够符合目标系统的结构要求。
HTTP Method: POST
Endpoint: /api/fin/receipt/execution
Parameters:
{
"filter": {
"datePeriod": "20231101-20231231",
"status": ["approved"]
}
}
以上是我们用来获取特定日期范围内已批准收款单信息的一段API示例。这步骤确保了我们抓取回来的都是有效且需要进一步处理的数据。
数据质量监控与异常检测
在整个流程执行过程中,通过集中式监控和告警机制实时跟踪任务状态。在每个关键环节设置检查点,一旦发现异常,即刻触发警报,以防止错误扩散。同时,通过日志记录功能,可以详细追溯每一条数据从抓取到写入过程中的变化情况,有助于快速定位并解决问题。
下一步,将会详细讲解如何通过batchSave API批量将转换后的数据高效、安全地写入目标金蝶云星空系统,同时探讨分页处理与重试机制以应对潜在网络波动可能带来的影响。
调用金蝶云星空接口executeBillQuery获取并加工数据
在轻易云数据集成平台中,调用源系统接口是数据处理生命周期的第一步。本文将详细介绍如何通过调用金蝶云星空的executeBillQuery
接口获取并加工数据。
接口配置与请求参数
首先,我们需要配置接口的基本信息和请求参数。根据提供的元数据配置,以下是具体的配置细节:
- API:
executeBillQuery
- Method:
POST
- FormId:
AR_RECEIVEBILL
- FieldKeys: 需查询的字段集合,格式为字符串数组
- FilterString: 过滤条件,例如:
FDATE='2024-08-30 00:00:00' and FCONTACTUNIT.FNumber='PDD09'
- Pagination: 分页参数,包括最大行数(Limit)和开始行索引(StartRow)
请求参数构建
根据元数据配置,我们需要构建请求参数。以下是一个示例请求体:
{
"FormId": "AR_RECEIVEBILL",
"FieldKeys": "FID,FBillNo,FDOCUMENTSTATUS,FCreatorId,FAPPROVERID,FCreateDate,FSETTLEORGID.FNumber,FApproveDate,FSALEORGID.FNumber,FEXCHANGETYPE,FRECEIVEAMOUNTFOR_H,FMAINBOOKCURID,FRECEIVEAMOUNT_H,FCURRENCYID.FNumber,FDATE,FModifyDate,FModifierId,FEXCHANGERATE,FWRITTENOFFSTATUS,FSALEERID.FNumber,FSALEGROUPID.FNumber,FSALEDEPTID.FNumber,FBillTypeID.FNumber,FREALRECAMOUNTFOR,FREALRECAMOUNT_H,FACCOUNTSYSTEM,FCancelDate,FCancelStatus,FCancellerId,FCONTACTUNITTYPE,FCONTACTUNIT.FNumber,FPAYUNITTYPE,FPAYUNIT.FNumber,FBUSINESSTYPE,FCreditCheckResult,FISINIT,FDepartment,FPAYORGID.FNumber",
"FilterString": "FDATE='2024-08-30 00:00:00' and FCONTACTUNIT.FNumber='PDD09'",
"Limit": 2000,
"StartRow": 0,
"TopRowCount": true
}
数据请求与清洗
在发送请求后,我们将接收到金蝶云星空返回的数据。此时,需要对数据进行清洗和初步处理,以确保其符合业务需求。以下是一些常见的数据清洗操作:
- 字段映射与转换:根据业务需求,将返回的数据字段映射到目标系统所需的字段。例如,将
FSETTLEORGID.FNumber
映射为settleOrgId
。 - 数据类型转换:确保所有字段的数据类型正确。例如,将日期字符串转换为标准日期格式。
- 过滤无效数据:移除不符合业务规则的数据记录。例如,过滤掉状态为“作废”的单据。
示例代码
以下是一个使用Python实现上述步骤的示例代码:
import requests
import json
# 配置接口URL和请求头
url = "https://api.kingdee.com/executeBillQuery"
headers = {
"Content-Type": "application/json"
}
# 构建请求体
payload = {
"FormId": "AR_RECEIVEBILL",
"FieldKeys": ",".join([
"FID", "FBillNo", "FDOCUMENTSTATUS",
# ...其他字段...
"FPAYORGID.FNumber"
]),
"FilterString": "FDATE='2024-08-30 00:00:00' and FCONTACTUNIT.FNumber='PDD09'",
"Limit": 2000,
"StartRow": 0,
"TopRowCount": True
}
# 发送POST请求
response = requests.post(url, headers=headers, data=json.dumps(payload))
# 检查响应状态码
if response.status_code == 200:
data = response.json()
# 数据清洗与转换
cleaned_data = []
for record in data:
cleaned_record = {
"settleOrgId": record["FSETTLEORGID.FNumber"],
# ...其他字段映射...
}
cleaned_data.append(cleaned_record)
# 后续处理逻辑,例如写入目标系统
else:
print(f"Error: {response.status_code}, {response.text}")
数据转换与写入
完成数据清洗后,下一步是将数据转换为目标系统所需的格式,并写入目标系统。这一步通常包括以下操作:
- 格式化输出:将清洗后的数据格式化为目标系统支持的格式,例如JSON、XML等。
- 批量写入:根据目标系统的API或数据库接口,将数据批量写入。例如,通过REST API或数据库连接执行批量插入操作。
通过以上步骤,我们实现了从金蝶云星空获取并加工数据,为后续的数据处理和分析奠定了基础。在实际应用中,可以根据具体业务需求进行更多定制化处理,以确保数据集成过程高效、可靠。
数据集成与ETL转换:轻易云到金蝶云星空API接口
在数据集成过程中,ETL(Extract, Transform, Load)是关键的一环。本文将详细探讨如何将已集成的源平台数据通过轻易云数据集成平台进行ETL转换,并最终写入目标平台——金蝶云星空API接口。
API接口配置
在实现数据写入金蝶云星空之前,首先需要配置API接口。根据提供的元数据配置,我们使用batchSave
API接口,采用POST方法进行数据传输。以下是具体的配置细节:
- API:
batchSave
- Method:
POST
- ID Check:
true
- Operation Method:
merge
- Field:
FBillTypeID, FBillNo, FDATE, FPAYORGI
- Body Name:
details
请求参数解析
请求参数分为头部和表体两部分,其中头部包含单据编号、结算组织、业务日期等字段,表体则包含结算方式、应收金额等详细信息。
头部字段配置
-
单据编号 (FBillNo)
- 类型: string
- 描述: 单据编号
- 值:
{FBillNo}
-
结算组织 (FSETTLEORGID)
- 类型: string
- 描述: 结算组织
- 解析器: ConvertObjectParser (参数: FNumber)
- 值:
{FCONTACTUNIT}
- 映射:
6355fe20c4a6d536d27cd8dc
-
汇率类型 (FEXCHANGETYPE)
- 类型: string
- 解析器: ConvertObjectParser (参数: FNumber)
- 值:
HLTX01_SYS
-
币别 (FCURRENCYID)
- 类型: string
- 描述: 币别
- 解析器: ConvertObjectParser (参数: FNumber)
- 值:
PRE001
-
业务日期 (FDATE)
- 类型: string
- 描述: 业务日期
- 值:
{FDATE}
-
单据类型 (FBillTypeID)
- 类型: string
- 描述: 单据类型
- 解析器: ConvertObjectParser (参数: FNumber)
- 值:
SKDLX01_SYS
-
往来单位类型 (FCONTACTUNITTYPE)
- 类型: string
- 描述: 往来单位类型
- 值:
{FCONTACTUNITTYPE}
-
往来单位 (FCONTACTUNIT)
- 类型: string
- 描述: 往来单位
- 解析器: ConvertObjectParser (参数: FNumber)
- 值:
{FCONTACTUNIT}
- 映射方向:正向映射
-
付款单位类型 (FPAYUNITTYPE) - 类型:string - 描述:付款单位类型 - 值:
{FPAYUNITTYPE}
-
付款单位 (FPAYUNIT) - 类型:string - 描述:付款单位 - 解析器:ConvertObjectParser(参数:FNumber) - 值:
{FPAYUNIT}
- 映射方向:正向映射 -
业务类型 (FBUSINESSTYPE) - 类型:string - 描述:业务类型 - 值:
{FBUSINESSTYPE}
-
收款组织 (FPAYORGID) - 类型:string - 描述:收款组织 - 解析器:ConvertObjectParser(参数:FNumber) - 值:
{FCONTACTUNIT}
- 映射方向:正向映射 -
结算币别 (FSETTLECUR) - 类型:string - 解析器:ConvertObjectParser(参数:FNUMBER) - 值:
PRE001
表体字段配置
-
结算方式 (FSETTLETYPEID) - 类型:string - 描述:默认现金 - 解析器 : ConvertObjectParser(参数 : FNumber) - 值 :
{FSETTLETYPEID}
- 父级字段 : FRECEIVEBILLENTRY -
表体应收金额(FRECTOTALAMOUNTFOR) 类型 : string 描述 : 表体应收金额 价值 :
{FRECTOTALAMOUNTFOR}
父级字段 : FRECEIVEBILLENTRY
3 .我方银行账号(FACCOUNTID)
类型 : string
描述 : 我方银行账号
解析器 : ConvertObjectParser( 参数 : FNumber )
值 : {FACCOUNTID}
父级字段 : FRECEIVEBILLENTRY
4 .收款用途(FPURPOSEID)
类型 : string
描述 : SFKYT01_SYS 销售收款 , SFKYT02_SYS预收款
解析器 : ConvertObjectParser( 参数 : FNumber )
值 : {FPURPOSEID}
父级字段 : FRECEIVEBILLENTRY
5 .预收项目类型(FRECEIVEITEMTYPE)
类型 : string
描述 : 客户 , 销售订单
值 : {FRECEIVEITEMTYPE}
父级字段 : FRECEIVEBILLENTRY
6 .销售订单号(FSALEORDERNO)
类型 : string
值 : {FSALEORDERNO}
父级字段:FRECEIVEBILLENTRY
请求示例与验证
在完成上述配置后,可以生成一个请求示例:
{
"FormId": "AR_RECEIVEBILL",
"Operation": "BatchSave",
"IsAutoSubmitAndAudit": false,
"IsVerifyBaseDataField": false,
"Model": {
"FBillNo": "20231120001",
"FSETTLEORGID": {"FNumber": "6355fe20c4a6d536d27cd8dc"},
"FCURRENCYID": {"FNumber": "PRE001"},
"FBillTypeID": {"FNumber": "SKDLX01_SYS"},
"FPAYORGID": {"FNumber": "6355fe20c4a6d536d27cd8dc"},
...
"details":[...]
}
}
通过上述配置,我们可以将源平台的数据转换为金蝶云星空API能够接收的格式,并通过POST请求写入目标平台。在实际操作中,需要确保所有基础资料的有效性,并根据具体业务需求调整相应的字段和值。