金蝶云星空数据集成到简道云案例分析
在具体的企业业务流程中,如何将金蝶云星空中的“其他出库单(未审核)”数据同步至简道云是一个复杂且具有挑战性的任务。本次分享的技术案例旨在详细解析这一集成过程,通过高效可靠的API调用和处理机制,实现全自动化的数据对接。
为了实现上述目标,我们首先需要调用金蝶云星空提供的数据获取API executeBillQuery
。该接口能够请求到所需出库单的信息,但必须应对其分页和限流问题。通过合适的策略和参数配置,可以确保不漏掉任何一条记录,并且避免触发系统限制。
{
"formId": "other_outbound_order",
"fieldKeys": ["field1", "field2", ...],
"filterString": "<query conditions>",
...
}
获取到数据后,下一个关键步骤是将这些信息批量写入简道云。这一步我们使用的是简道云的数据创建API /api/v2/app/{app_id}/entry/{entry_id}/data_create
。面对大量数据导入时,合理设计批量提交策略异常重要,这不仅能提升处理速度,还能有效减少接口调用次数,以便提高系统效率。
{
"dataList": [
{"fieldA": valueA, "fieldB": valueB, ...},
{"fieldA": valueC, "fieldB": valueD, ...},
...
]
}
然而,在这两个平台之间进行数据对接时,不可避免地会遇到格式差异的问题。例如某些字段名称或类型可能存在不一致,因此定制化的数据映射成为必须的一部分。此外,为了保证整个流程的健壮性与可靠性,对接过程中还需要考虑异常处理及错误重试机制,例如当某次接口请求失败时,可进行数次尝试直至成功或者记录日志并进行报警通知。
最后,对于实时监控与日志记录也是绝不可忽视的重要环节。通过轻易云平台提供的工具,可以实时查看每个环节的数据流动情况、抓取状态以及潜在的问题,从而为快速修复与优化提供有力支持。
综上所述,本篇技术文章将围绕这些核心点展开,具体描述如何有效利用各项API资源实现高效、安全、稳定地完成从金蝶云星空向简道云的数据集成。
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery
接口,获取并加工其他出库单(未审核)数据,并同步到简道云。
接口配置与请求参数
在轻易云平台上,我们使用POST
方法调用金蝶云星空的executeBillQuery
接口。以下是元数据配置中的关键字段及其含义:
- api:
executeBillQuery
- method:
POST
- number:
FBillNo
- id:
FEntity_FEntryID
- idCheck:
true
这些配置确保我们能够正确地调用API并处理返回的数据。
请求参数详解
请求参数分为两部分:主请求参数和其他请求参数。主请求参数定义了需要查询的字段,而其他请求参数则包括分页、过滤等控制信息。
主请求参数
以下是一些关键字段及其描述:
- FEntity_FEntryID: 分录ID
- FID: 单据ID
- FBillNo: 单据编号
- FDocumentStatus: 单据状态
- FStockOrgId_FNumber: 库存组织编码
- FDate: 日期
- FBillTypeID: 单据类型
- FMATERIALID_FNumber: 物料编码
- FQty: 数量
- FPrice: 单价
- FAmount: 金额
这些字段确保我们能够获取到完整且详细的出库单信息。
其他请求参数
其他请求参数用于控制查询行为:
- Limit: 每页记录数(分页)
- StartRow: 起始行(分页)
- FilterString: 过滤条件,例如:
FCreateDate>='{{LAST_SYNC_TIME|datetime}}' and FStockOrgId.FNumber = '103' and FDocumentStatus='B'
这些参数帮助我们精确地控制查询范围和结果集大小。
调用API并处理响应
在配置好请求参数后,我们通过轻易云平台发起API调用。以下是一个示例代码片段,展示如何构建请求并处理响应:
{
"FormId": "STK_MisDelivery",
"FieldKeys": [
"FID", "FBillNo", "FDocumentStatus", "FStockOrgId.FNumber",
"FDate", "FBillTypeID.Fname", "FMATERIALID.FNumber",
"FQty", "FPrice", "FAmount"
],
"FilterString": "FCreateDate>='2023-01-01' and FStockOrgId.FNumber = '103' and FDocumentStatus='B'",
"Limit": 100,
"StartRow": 0,
"TopRowCount": null
}
响应数据会自动填充到预定义的结构中,便于后续的数据清洗和转换操作。
数据清洗与转换
在获取到原始数据后,我们需要对其进行清洗和转换,以满足目标系统(简道云)的要求。例如,我们可能需要将日期格式进行标准化,将金额字段进行汇总等操作。这些操作可以通过轻易云平台提供的可视化工具完成,无需编写复杂的代码。
写入目标系统
最后一步是将清洗和转换后的数据写入到简道云。轻易云平台支持多种目标系统的集成,可以通过简单配置实现数据的无缝对接。在这个过程中,我们需要确保数据的一致性和完整性,避免因数据格式或内容问题导致写入失败。
通过以上步骤,我们成功实现了从金蝶云星空获取其他出库单(未审核)数据,并将其同步到简道云的全过程。这不仅提高了业务流程的透明度和效率,也为企业的数据管理提供了强有力的支持。
使用轻易云数据集成平台进行ETL转换并写入简道云API接口
在数据集成的生命周期中,ETL(提取、转换、加载)是关键步骤之一。本文将详细探讨如何利用轻易云数据集成平台,将源平台的数据进行ETL转换,并最终通过简道云API接口写入目标平台。
API接口与元数据配置解析
在本案例中,我们需要将其他出库单(未审核)的数据同步到简道云。为此,我们使用了简道云的/api/v2/app/{app_id}/entry/{entry_id}/data_create
接口,该接口支持POST方法,用于创建新的数据条目。
元数据配置如下:
{
"api": "/api/v2/app/{app_id}/entry/{entry_id}/data_create",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"request": [
{"field":"_widget_1686988665221","label":"单据编号","type":"string","value":"{FBillNo}","parser":{"name":"ConvertObjectParser","params":"value"}},
{"field":"_widget_1688084455746","label":"单据类型","type":"string","value":"{FBillTypeID}","parser":{"name":"ConvertObjectParser","params":"value"}},
{"field":"_widget_1688084455747","label":"客户","type":"string","value":"{FCustId}","parser":{"name":"ConvertObjectParser","params":"value"}},
{"field":"_widget_1688084455748","label":"业务类型","type":"string","value":"{FBizType}","parser":{"name":"ConvertObjectParser","params":"value"}},
{"field":"_widget_1688084455749","label":"货主类型","type":"string","value":"{FOwnerTypeId}","parser":{"name":"ConvertObjectParser","params":"value"}},
{"field":"_widget_1688084455750","label":"货主","type":"string","value":"{FOWNERID}","parser":{"name":"ConvertObjectParser","params":"value"}},
{"field":"_widget_1688084455751","label":"领料部门","type":"string","value":"{FDeptId}","parser":{"name":"ConvertObjectParser","params":"value"}},
{"field": "_widget_1688084455752", "label": "领料人", "type": "string", "value": "{FPickerId}", "parser": {"name": "ConvertObjectParser", "params": "value"}},
{"field": "_widget_1688084455753", "label": "单据状态", "type": "string", "value": "{FDocumentStatus}", "parser": {"name": "ConvertObjectParser", "params": "value"}},
{"field": "_widget_1688084455754", "label": "出库类型", "type": "string", "value": "{F_QTSS_Assistant1}", "parser": {"name": "ConvertObjectParser", "params": "value"}}
],
...
}
数据转换与写入
在ETL过程中,首先需要从源系统提取原始数据,然后根据目标系统的要求进行转换。以下是具体步骤:
- 提取数据:从源系统获取未审核的其他出库单数据。
- 数据清洗:确保所有字段符合目标系统要求,例如去除空值、格式化日期等。
- 字段映射:根据元数据配置,将源系统字段映射到简道云API所需字段。例如:
FBillNo
映射到_widget_1686988665221
FBillTypeID
映射到_widget_1688084455746
FCustId
映射到_widget_1688084455747
- 数据转换:使用指定的解析器(如
ConvertObjectParser
)对字段值进行必要的转换。 - 构建请求体:根据元数据配置,构建JSON格式的请求体。例如:
{ "_widget_1686988665221": "<单据编号>", "_widget_1688084455746": "<单据类型>", "_widget_1688084455747": "<客户>", ... }
- 发送请求:通过HTTP POST方法,将构建好的请求体发送到简道云API接口。
示例代码
以下是一个Python示例代码,用于实现上述步骤:
import requests
import json
def convert_data(source_data):
# 数据清洗和转换
converted_data = {
"_widget_1686988665221": source_data.get("FBillNo"),
"_widget_1688084455746": source_data.get("FBillTypeID"),
"_widget_1688084455747": source_data.get("FCustId"),
"_widget_1688084455748": source_data.get("FBizType"),
"_widget_1688084455749": source_data.get("FOwnerTypeId"),
"_widget_1688084455750": source_data.get("FOWNERID"),
"_widget_1688084455751": source_data.get("FDeptId"),
"_widget_1688084455752": source_data.get("FPickerId"),
"_widget_1688084455753": source_data.get("FDocumentStatus"),
"_widget_1688084455754": source_data.get("F_QTSS_Assistant1")
}
return converted_data
def send_to_jdy(api_url, app_id, entry_id, data):
headers = {
'Content-Type': 'application/json'
}
url = api_url.replace("{app_id}", app_id).replace("{entry_id}", entry_id)
response = requests.post(url, headers=headers, data=json.dumps(data))
if response.status_code == 200:
print("Data successfully sent to 简道云")
else:
print(f"Failed to send data: {response.status_code}, {response.text}")
# 示例源数据
source_data = {
'FBillNo': '12345',
'FBillTypeID': '销售出库',
'FCustId': 'C001',
'FBizType': '普通销售',
'FOwnerTypeId': '自有',
'FOWNERID': 'O001',
'FDeptId': 'D001',
'FPickerId': 'P001',
'FDocumentStatus': '未审核',
'F_QTSS_Assistant1': '正常出库'
}
converted_data = convert_data(source_data)
send_to_jdy("/api/v2/app/{app_id}/entry/{entry_id}/data_create",
app_id="63899c8e6705fb000870437d",
entry_id="648d677974e57b000859846a",
data=converted_data)
以上代码展示了如何将其他出库单的数据通过ETL过程转化为简道云API所需格式,并成功写入目标平台。通过这种方式,可以实现不同系统间的数据无缝对接,提高业务效率和透明度。