金蝶云星空与金蝶云星空数据集成案例分享:销售出库审核
在本技术案例中,我们将探讨如何高效地实现两个金蝶云星空系统之间的数据对接,特别是针对"销售出库审核"这一具体业务场景的解决方案。该项目的目标是在确保不漏单和快速数据写入的前提下,实现定时可靠的数据抓取与批量集成,同时处理接口分页、限流以及数据格式差异等多重挑战。
首先,让我们关注从源系统获取销售出库审核数据的过程。通过调用金蝶云星空提供的executeBillQuery
API,我们能够实时准确地抓取需要进行二次处理和导入到目标系统的数据。在此过程中,对API请求的分页和限流机制进行了优化,以避免大量并发请求对系统性能造成冲击。一旦抓取到初始数据,便立即进行预处理,如解析XML或JSON格式,并根据业务需求进行必要的数据转换。这一步骤至关重要,因为它可以提前过滤掉无效信息,从而简化后续步骤中的复杂性。
对于目标系统,即接收已审核出库记录的一端,我们使用了金蝶云星空提供的Audit
接口来实现批量写入操作。本质上,这是一个对接数据库的重要环节,需要保证大规模数据传输不仅快速,而且精准。在这个流程中,主要采用了事务控制和错误重试机制,以确保即使在网络异常或者服务宕机情况下,也能保持数据一致性。此外,还设计了全面详尽的日志记录功能,通过实时监控每个请求状态,将成功与失败的信息详细记录下来,它不仅有助于问题追踪,更为未来优化提供了宝贵参考。
为了进一步细致讨论这些实施方法及其背后的技术原理,以下章节将逐一剖析关键组件、接口调优策略以及错误修复措施。然而,无论是哪种具体手段,其核心都围绕着提升效率、保障安全稳定运转展开,希望能为面临类似需求的平台使用者们带来一些启示。
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成生命周期的第一步,我们需要从源系统获取数据。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空接口executeBillQuery
来获取销售出库审核的数据,并进行初步加工。
接口配置与调用
首先,我们需要配置元数据以便正确调用金蝶云星空的API接口。以下是我们使用的元数据配置:
{
"api": "executeBillQuery",
"method": "POST",
"number": "FBillNo",
"id": "FBillNo",
"pagination": {
"pageSize": 200
},
"request": [
{"field":"FBillTypeID_FNumber","label":"单据类型","type":"string","describe":"单据类型","value":"FBillTypeID.FNumber"},
{"field":"FID","label":"FID","type":"string","describe":"单据类型","value":"FID"},
{"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"FBillNo"},
{"field":"FDate","label":"日期","type":"string","describe":"日期","value":"FDate"},
{"field":"FSaleOrgId_FNumber","label":"销售组织","type":"string","describe":"组织","value":"FSaleOrgId.FNumber"},
{"field":"FCustomerID_FNumber","label":"客户","type":"string","describe":"基础资料","value":"FCustomerID.FNumber"},
{"field":"FStockOrgId_FNumber","label":"发货组织","type":"string","describe":"组织","value":"FStockOrgId.FNumber"},
{"field":"FApproveDate","label":"审核时间","type":"string","describe":"长日期","value":"FApproveDate"}
],
"otherRequest": [
{"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"},
{"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"},
{"field": "TopRowCount", "label": "返回总行数", "type": "int", "describe": "金蝶的查询分页参数"},
{"field": "FilterString",
"label": "过滤条件",
"type": "string",
"describe":
`示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=`,
`value`:
`FDOCUMENTSTATUS<>'C' and FBillTypeID.fnumber='XSCKD07_SYS' and FBillNO like 'SDO%'`
},
{"field":
`FieldKeys`,
`label`:
`需查询的字段key集合`,
`type`:
`array`,
`describe`:
`金蝶分录主键ID格式:FPOOrderEntry_FEntryId,其它格式 FPurchaseOrgId.FNumber`,
`parser`: {
`name`: `ArrayToString`,
`params`: ","
}
},
{"field":
`FormId`,
`label`:
`业务对象表单Id`,
`type`:
`string`,
`describe`:
必须填写金蝶的表单ID如:PUR_PurchaseOrder,
value: SAL_OUTSTOCK
}
]
}
请求参数解析
-
基本请求字段:
- FBillTypeID_FNumber: 单据类型编号
- FID: 唯一标识符
- FBillNo: 单据编号
- FDate: 日期
- FSaleOrgId_FNumber: 销售组织编号
- FCustomerID_FNumber: 客户编号
- FStockOrgId_FNumber: 发货组织编号
- FApproveDate: 审核时间
-
其他请求字段:
- Limit: 最大行数,控制每次请求返回的数据量。
- StartRow: 开始行索引,用于分页。
- TopRowCount: 返回总行数。
- FilterString: 过滤条件,这里我们设置为只查询未关闭状态(FDOCUMENTSTATUS<>'C')且单据类型为销售出库单(XSCKD07_SYS),并且单据编号以SDO开头的数据。
- FieldKeys: 查询字段集合,指定需要返回的字段。
- FormId: 表单ID,这里指定为销售出库(SAL_OUTSTOCK)。
数据请求与清洗
在配置好元数据后,我们通过轻易云平台发送POST请求到金蝶云星空接口。以下是一个示例请求体:
{
FormId: 'SAL_OUTSTOCK',
FieldKeys: 'FBillTypeID.FNumber,FID,FBillNo,FDate,FSaleOrgId.FNumber,FCustomerID.F.Number,FStockOrgId.F.Number,FApproveDate',
FilterString: 'FDOCUMENTSTATUS<>\'C\' and FBillTypeID.fnumber=\'XSCKD07_SYS\' and FBillNO like \'SDO%\'',
Limit: 200,
StartRow: 0,
}
这个请求将返回符合条件的数据集。接下来,我们对返回的数据进行清洗和初步加工,例如去除无效记录、标准化日期格式等。
数据转换与写入
在完成数据清洗后,我们可以将这些数据转换为目标系统所需的格式,并写入到目标数据库或应用系统中。这一步通常涉及字段映射、数据类型转换等操作。
实时监控与调试
轻易云平台提供了实时监控和调试功能,可以帮助我们及时发现和解决问题,确保数据集成过程顺利进行。
通过上述步骤,我们成功地从金蝶云星空获取了销售出库审核的数据,并进行了初步加工,为后续的数据处理打下了坚实基础。这种方法不仅提高了数据处理效率,还保证了数据的一致性和准确性。
使用轻易云数据集成平台将销售出库审核数据转换并写入金蝶云星空API接口
在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL转换,并转为目标平台能够接收的格式。在本案例中,我们将重点探讨如何使用轻易云数据集成平台,将销售出库审核的数据转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。
元数据配置解析
首先,我们需要理解元数据配置中的各个字段及其含义。以下是元数据配置的详细解析:
{
"api": "Audit",
"method": "POST",
"idCheck": true,
"operation": {
"method": "batchArraySave",
"rows": 1,
"rowsKey": "array"
},
"request": [
{"field":"FormId","label":"业务对象表单Id","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"SAL_OUTSTOCK"},
{"field":"Numbers","label":"编码集合","type":"string","value":"{FBillNo}"},
{"field":"Ids","label":"id集合","type":"string"},
{"field":"IgnoreInterationFlag","label":"是否允许忽略交互","type":"string","describe":"布尔类型,默认true(非必录)","value":"true"},
{"field":"NetworkCtrl","label":"是否启用网控","type":"string","describe":"布尔类型,默认false(非必录)","value":"false"},
{"field":"IsVerifyProcInst","label":"检验单据关联运行","type":"string","describe":"是否检验单据关联运行中的工作流实例,布尔类型,默认false(非必录)","value":"false"}
]
}
数据请求与清洗
在进行ETL转换之前,我们首先需要确保源平台的数据已经被正确请求和清洗。这一步骤通常包括从源系统提取原始数据、进行必要的数据清洗和预处理,以确保数据质量。
数据转换与写入
接下来,我们进入核心部分:将清洗后的数据转换为金蝶云星空API接口能够接收的格式,并通过API接口写入目标系统。以下是具体步骤:
-
配置API请求参数:
api
: 设置为"Audit",表示调用金蝶云星空的审核接口。method
: 设置为"POST",表示使用HTTP POST方法提交请求。idCheck
: 设置为true
,表示需要对ID进行检查。operation
: 配置批量保存操作,method
设置为"batchArraySave",rows
设置为1,表示每次提交一行数据,rowsKey
设置为"array"。
-
构建请求体: 请求体包含多个字段,每个字段对应一个具体的数据项。以下是各字段的详细说明:
FormId
: 必须填写金蝶的表单ID,例如"SAL_OUTSTOCK"。Numbers
: 编码集合,这里使用占位符{FBillNo}
来动态替换实际值。Ids
: ID集合,可根据实际需求填写。IgnoreInterationFlag
: 是否允许忽略交互,默认为true
。NetworkCtrl
: 是否启用网控,默认为false
。IsVerifyProcInst
: 是否检验单据关联运行中的工作流实例,默认为false
。
-
示例代码: 以下是一个示例代码片段,用于构建和发送API请求:
import requests
import json
# 构建请求头
headers = {
'Content-Type': 'application/json',
}
# 构建请求体
payload = {
"FormId": "SAL_OUTSTOCK",
"Numbers": ["FBillNo12345"],
# 根据实际情况填充其他字段
"IgnoreInterationFlag": True,
"NetworkCtrl": False,
"IsVerifyProcInst": False
}
# 将请求体转换为JSON格式
data = json.dumps(payload)
# 发送POST请求到金蝶云星空API接口
response = requests.post('https://api.kingdee.com/k3cloud/Audit', headers=headers, data=data)
# 检查响应状态码
if response.status_code == 200:
print("Data successfully written to Kingdee Cloud.")
else:
print(f"Failed to write data. Status code: {response.status_code}, Response: {response.text}")
实时监控与错误处理
在整个过程中,通过轻易云数据集成平台提供的实时监控功能,可以随时查看数据流动和处理状态。如果出现错误或异常情况,可以根据日志信息进行排查和修正。
通过以上步骤,我们成功地将销售出库审核的数据进行了ETL转换,并通过金蝶云星空API接口写入了目标系统。这不仅实现了不同系统间的数据无缝对接,还提升了业务流程的自动化程度和效率。