案例分享:金蝶云星空数据集成到旺店通·旗舰版
在企业的日常运营中,系统间的数据集成是实现高效业务流程的关键步骤。本文将详细介绍一个实际运行中的技术方案:通过轻易云平台,将金蝶云星空的数据集成到旺店通·旗舰版进行出库业务处理。
以标准-金蝶-子品组装——>旺店通-委外仓退(出库业务)为例,我们重点探讨如何确保数据在整个流转过程中不漏单、高效写入及稳定性。这其中包括从金蝶云星空接口executeBillQuery抓取订单信息,再经由批量加工和格式转化,最终调用旺店通·旗舰版的wms.stockother.Out.push接口完成出库操作。
首先,为保障数据准确性,通过定时可靠地抓取金蝶云星空API executeBillQuery接口的数据,每次抓取后的分页和限流问题会采用自定义逻辑进行优化,以保证全面获取、无遗漏。在这一过程中,我们还要处理两套系统之间可能存在的数据格式差异,这需要对接前置处理逻辑做精细调整,确保每条记录都能顺利传输并被正确解析。
为了进一步提高效率,大量订单的信息需快速写入到目标平台内。我们采用了批量提交方式,通过分片处理来减少网络开销,提高总吞吐率。而对于高频交易下可能出现的异常情况和错误重试机制,则设计了一套完善的监控与日志记录体系,实时跟踪每条数据流转状态并及时发现解决问题。这不仅提升了整体稳定性,还提供了有力的运维支撑。
最后,对于用户特别关注的数据安全与隐私,通过实施严格权限控制和准入审查制度,在任何情况下,都能尽最大努力保护敏感信息不被泄露或误用,使得整个过程更加可靠、安全。
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成过程中,调用源系统的API接口是获取数据的关键步骤。本文将深入探讨如何使用轻易云数据集成平台调用金蝶云星空的executeBillQuery
接口,以获取并加工所需的数据。
接口概述
金蝶云星空的executeBillQuery
接口用于查询业务单据信息。该接口采用POST请求方式,支持多种查询条件和字段选择,能够灵活地满足各种业务需求。以下是该接口的主要元数据配置:
- API:
executeBillQuery
- Method:
POST
- Effect:
QUERY
- FormId:
STK_AssembledApp
(业务对象表单ID)
请求参数配置
在调用executeBillQuery
接口时,需要配置一系列请求参数。这些参数包括实体主键、单据编号、单据状态等,具体如下:
{
"FID": "实体主键",
"FBillNo": "单据编号",
"FDocumentStatus": "单据状态",
"FStockOrgId_FNumber": "库存组织",
"FDate": "日期",
"FBillTypeID": "单据类型",
...
}
其中,关键字段如FBillNo
(单据编号)、FDocumentStatus
(单据状态)等在实际业务中尤为重要。例如,可以通过设置FDocumentStatus
为特定值来筛选出不同状态的单据。
分页与过滤条件
为了提高查询效率和避免数据量过大导致的性能问题,分页和过滤条件是必不可少的配置项:
- Limit: 最大行数
- StartRow: 开始行索引
- FilterString: 过滤条件,例如:
FApproveDate >= '{{LAST_SYNC_TIME|datetime}}'
AND FStockOrgId.FNumber = '101'
AND FStockIDSETY.F_TBIK_Assistant_qtr = '委外仓'
AND FAffairType = 'Assembly'
AND FDate >= '2024-08-05 17:30:00'
通过上述过滤条件,可以精确地筛选出符合特定时间范围、库存组织、事务类型等要求的数据。
字段选择
为了避免不必要的数据传输,可以通过配置FieldKeys
来指定需要查询的字段集合。例如:
{
"FieldKeys": [
"FID",
"FBillNo",
"FDocumentStatus",
...
]
}
这些字段将决定返回结果中的数据结构,有助于后续的数据处理和分析。
调用示例
以下是一个完整的调用示例,通过轻易云平台发起POST请求:
{
"api": "executeBillQuery",
"method": "POST",
"request": {
"FormId": "STK_AssembledApp",
"FieldKeys": ["FID", "FBillNo", ...],
"FilterString": "FApproveDate >= '{{LAST_SYNC_TIME|datetime}}' AND FStockOrgId.FNumber = '101' AND FStockIDSETY.F_TBIK_Assistant_qtr = '委外仓' AND FAffairType = 'Assembly' AND FDate >= '2024-08-05 17:30:00'",
...
}
}
该请求将返回符合条件的业务单据信息,供后续的数据清洗和转换使用。
数据清洗与加工
获取到原始数据后,需要对其进行清洗和加工,以满足目标系统的数据格式要求。例如,可以对日期格式进行转换,对金额字段进行汇总计算等。这一步骤通常在轻易云平台内通过可视化操作界面完成,使得整个过程透明且高效。
总结
调用金蝶云星空的executeBillQuery
接口是数据集成生命周期中的关键环节。通过合理配置请求参数、分页与过滤条件,以及字段选择,可以高效地获取所需数据,并为后续的数据清洗与转换奠定基础。在实际应用中,应根据具体业务需求灵活调整这些配置,以实现最佳效果。
使用轻易云数据集成平台实现ETL转换并写入旺店通·旗舰版API接口
在数据集成生命周期的第二步,主要任务是将已经集成的源平台数据进行ETL转换,并转为目标平台所能够接收的格式。本文将详细探讨如何使用轻易云数据集成平台,将标准-金蝶-子品组装的数据转换为旺店通·旗舰版API接口所需的格式,并最终写入目标平台。
1. API接口元数据配置
首先,我们需要了解目标API接口的元数据配置。这是确保数据能够正确传输和写入的重要基础。以下是我们需要遵循的元数据配置:
{
"api": "wms.stockother.Out.push",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"request": [
{
"field": "order",
"label": "单据头",
"type": "object",
"children": [
{"field": "outer_no", "label": "外部单号", "type": "string", "value": "{FBillNo}"},
{"field": "warehouse_no", "label": "仓库编号", "type": "string", "value": "{FStockIDSETY_FNumber}"},
{"field": "reason", "label": "出库原因", "type": "string", "value": "子品组装出库"},
{"field": "is_check", "label": "是否审核", "type":"string","value":"true"},
{"field":"remark","label":"备注","type":"string","value":"{FNote}"},
{"field":"receiver_name","label":"收件人名称","type":"string","value":"接口传单"},
{"field":"receiver_mobile","label":"收件人电话","type":"string","value":"18888888888"},
{"field":"receiver_province","label":"省","type":"string","value":"广东省"},
{"field":"receiver_city","label":"市","type":"string","value":"广州市"},
{"field":"receiver_district","label":"区","type":"string","value":"白云区"},
{"field":"receiver_address","label":"地址","type":"string","value":"接口传单"}
]
},
{
"field": “order_details”,
“label”: “单据明细”,
“type”: “array”,
“value”: “list”,
“children”: [
{“field”: “spec_no”, “label”: “商家编码”, “type”: “string”, “value”: “{FMaterialIDSETY_FNumber}”},
{“field”: “num”, “label”: “数量”, “type”: “string”, “value”: “{FQtySETY}”},
{“field”:“remark”,“label”:”明细备注“,“type”:”string“,“value”:”{FDescriptionSETY}“}
]
}
],
”groupCalculate”:{
”headerGroup”:[“FBillNo”,“FStockIDSETY_FNumber”,“FID”,“FNote”],
”bodyGroup”:[“FMaterialIDSETY_FNumber”,“FDescriptionSETY”,“FMaterialIDSETY_FRefCost”],
”bodyName”:”list”,
”calculate”:{
”FQtySETY”:”$sum”
}
},
”buildModel”:true
}
2. 数据请求与清洗
在开始ETL转换之前,首先需要从源系统(金蝶)获取原始数据,并进行必要的清洗和预处理。这一步骤确保了数据的一致性和完整性,为后续的转换工作打下基础。
3. 数据转换与写入
接下来,我们进入关键步骤:将清洗后的数据按照目标API接口的要求进行转换,并通过POST方法写入旺店通·旗舰版。以下是详细步骤:
a. 构建请求头(Order)
根据元数据配置,我们需要构建一个包含多个字段的请求头对象order
。每个字段都需要从源系统的数据中提取并映射到相应的位置。例如:
outer_no
映射到{FBillNo}
warehouse_no
映射到{FStockIDSETY_FNumber}
reason
固定值为子品组装出库
is_check
固定值为true
remark
映射到{FNote}
- 收件人信息(如名称、电话、省、市、区、地址)可以设定为固定值或根据业务需求动态生成。
b. 构建请求体(Order Details)
请求体部分是一个数组,包含多个订单明细对象order_details
。每个对象也需要从源系统的数据中提取并映射。例如:
spec_no
映射到{FMaterialIDSETY_FNumber}
num
映射到{FQtySETY}
remark
映射到{FDescriptionSETY}
c. 聚合计算
在构建过程中,需要对某些字段进行聚合计算。例如,对于数量字段num
,我们可能需要对同一订单中的多个项目进行求和操作,这可以通过配置中的 $sum
实现。
d. 最终构建与发送请求
最后,将所有构建好的数据对象组合起来,通过HTTP POST方法发送至目标API接口。示例代码如下:
import requests
import json
url = 'https://api.wangdian.cn/openapi2/wms.stockother.Out.push'
headers = {'Content-Type': 'application/json'}
data = {
'order': {
'outer_no': FBillNo,
'warehouse_no': FStockIDSETY_FNumber,
'reason': '子品组装出库',
'is_check': 'true',
'remark': FNote,
'receiver_name': '接口传单',
'receiver_mobile': '18888888888',
'receiver_province': '广东省',
'receiver_city': '广州市',
'receiver_district': '白云区',
'receiver_address': '接口传单'
},
'order_details': [
{
'spec_no': FMaterialIDSETY_FNumber,
'num': FQtySETY,
'remark': FDescriptionSETY
}
# 可以有多个明细对象
]
}
response = requests.post(url, headers=headers, data=json.dumps(data))
print(response.json())
通过上述步骤,我们成功地将标准-金蝶-子品组装的数据转换并写入旺店通·旗舰版API接口,实现了跨系统的数据无缝对接。