金蝶分布式调出单 => 旺店通委外出库单(3000组织内)(云仓)
在现代企业的信息化建设中,跨平台的数据集成是一项至关重要的工作。本文将分享一个实际案例,通过轻易云数据集成平台实现金蝶云星空与旺店通·企业奇门系统间的数据对接。本方案的关键目标是将金蝶分布式调出单高效、可靠地集成到旺店通委外出库单,实现不同业务系统之间无缝衔接和信息共享。
如何确保集成金蝶云星空数据不漏单
为了保证从金蝶云星空导出的数据完整性,我们采用了executeBillQuery API接口。这一接口允许我们精确而全面地抓取所需数据信息,同时运用轻易云提供的定时任务功能,可依据设定频率自动调用这一API,确保每次执行之后都不会遗漏任何新产生或修改过的数据。此外,为应对可能存在的数据丢失情况,还增设了错漏重试机制,一旦发现某个时间段内有未成功传输的记录,将触发二次尝试,从而杜绝“漏网之鱼”。
处理分页和限流问题
由于大规模数据请求容易导致服务器性能瓶颈甚至引发超载,因此需要合理处理分页及限流问题。在调用executeBillQuery API时,凭借轻易云平台支持的分批操作,我们能够针对大量订单进行分页,并在每页请求后设置适当延迟,以平衡查询频率与服务器负荷,防止网络拥堵及响应超时。
快速写入到旺店通·企业奇门
待数据安全无误地提取完毕,下一个挑战便是如何高效、高速地推送至目的端——旺店通·企业奇门。该过程中主要依赖wdt.vip.wms.stockinout.order.push API接口,由于其本身也具有一定并行能力,再结合轻易云多线程并发执行特性,仅需耗费极少时间即可完成上千条记录的数据写入工作。同时,也进行了针对性优化,包括批量提交减少HTTP连接次数等,大幅提升了整体效率。
通过以上方法,本方案不仅保障了各环节稳定运行,还确保两大系统间实现准确、及时、同步的信息交互,为业务协同带来前所未有的便利和效率提升。在后续章节中,将进一步详述具体技术细节及代码示例,帮助读者深入理解并实践此解决方案。
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成的生命周期中,第一步是从源系统获取数据并进行初步加工。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空接口executeBillQuery
来实现这一过程。
接口配置与请求参数
首先,我们需要配置接口的元数据。根据提供的元数据配置,我们可以看到executeBillQuery
接口采用POST方法进行调用,且支持分页查询。以下是关键的请求参数及其作用:
- FormId: 业务对象表单Id,必须填写金蝶的表单ID,例如:
STK_TRANSFEROUT
。 - FieldKeys: 需查询的字段key集合,通过解析器将数组转换为字符串格式。
- FilterString: 过滤条件,用于筛选符合条件的数据。
- Limit: 最大行数,控制每次查询返回的数据量。
- StartRow: 开始行索引,用于分页查询。
配置示例
以下是一个完整的请求配置示例:
{
"api": "executeBillQuery",
"method": "POST",
"number": "FBillNo",
"id": "FSTKTRSOUTENTRY_FEntryID",
"pagination": {
"pageSize": 500
},
"idCheck": true,
"request": [
{"field":"FSTKTRSOUTENTRY_FEntryID","label":"FEntryID","type":"string","value":"FSTKTRSOUTENTRY_FEntryID"},
{"field":"FID","label":"实体主键","type":"string","value":"FID"},
{"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"},
{"field":"FDocumentStatus","label":"单据状态","type":"string","value":"FDocumentStatus"},
{"field":"FStockOrgID_FNumber","label":"调入库存组织","type":"string","value":"FStockOrgID.FNumber"},
{"field":"FDate","label":"日期","type":"string","value":"FDate"},
{"field":"FBillTypeID","label":"单据类型","type":"string","value":"FBillTypeID"},
{"field":"FTransferDirect","label":"调拨方向","type":"string","value":"FTransferDirect"},
{"field":"FNOTE","label":"备注","type":"string","value":"FNOTE"},
{"field":"FCreateDate","label":"创建日期","type":"string","value":"FCreateDate"},
{"field":"FApproveDate","label":"审核日期","type":"string","value":"FApproveDate"},
{"field":"FTransferBizType","label":"调拨类型","type":"string","value":"FTransferBizType"},
{"field":...}
],
"otherRequest": [
{"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"},
{"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"},
{"field":...},
{
"field": "FilterString",
"label": "过滤条件",
"type": "string",
"describe": "...",
"value": "... and FSrcStockID.FNumber='1104'"
},
{
...
}
]
}
数据请求与清洗
在实际操作中,我们需要根据业务需求设置过滤条件(FilterString),例如:
"FilterString" :
"FSupplierId.FNumber = 'VEN00010' and FApproveDate>='{{LAST_SYNC_TIME|dateTime}}' and FTransferBizType = 'InnerOrgTransfer' and FOwnerID.FNumber = '3000' and FSrcStockID.FNumber='1104'"
该过滤条件确保我们只获取特定供应商、特定时间段内、特定业务类型和特定仓库的数据。
数据转换与写入
获取到数据后,需要对其进行初步清洗和转换,以便后续写入目标系统。在这个过程中,可以利用轻易云平台提供的数据处理工具,对字段进行映射、格式转换等操作。例如,将日期格式统一转换为目标系统所需的格式,或者对某些字段进行合并计算。
实时监控与日志记录
为了确保数据处理过程的透明性和可追溯性,轻易云平台提供了实时监控和日志记录功能。通过这些功能,可以随时查看数据流动情况、处理状态以及可能出现的问题,从而及时进行调整和优化。
综上所述,通过合理配置和调用金蝶云星空接口executeBillQuery
,我们可以高效地获取并加工所需数据,为后续的数据集成奠定坚实基础。
使用轻易云数据集成平台进行ETL转换并写入旺店通·企业奇门API接口
在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL转换,并转为目标平台所能够接收的格式。本文将详细探讨如何使用轻易云数据集成平台,将金蝶分布式调出单的数据转换为旺店通委外出库单(3000组织内)的格式,并通过企业奇门API接口写入目标平台。
元数据配置解析
在进行ETL转换之前,我们需要理解元数据配置的各个部分。以下是关键配置项:
- api:
"wdt.vip.wms.stockinout.order.push"
表示调用的API接口。 - method:
"POST"
表示HTTP请求方法。 - idCheck:
true
用于检查唯一单据编号,避免重复推送。 - operation: 定义了字段映射和合并策略,包括头部和明细字段。
- request: 包含具体请求参数和映射关系。
请求参数配置
-
接口外部单号 (api_outer_no):
- 字段:
FBillNo
- 类型:
string
- 描述:调用本接口时推送的唯一单据编号,避免重复推送数据。
- 字段:
-
仓库编号 (warehouse_no):
- 字段:
FSrcStockID_FNumber
- 类型:
string
- 描述:代表仓库所有属性的唯一编码,用于区分仓库。
- 字段:
-
出入类型 (order_type):
- 固定值:
1
- 类型:
string
- 描述:可选值为1(出库)。
- 固定值:
-
自动审核 (auto_check):
- 固定值:
1
- 类型:
string
- 描述:1表示自动审核,0表示不自动审核,默认值为1。
- 固定值:
-
货品列表 (goods_list):
- 类型:
array
- 描述:入库单货品列表节点,包含多个子字段,如商家编码、入库数量、价格、批次和备注等。
- 类型:
数据转换与写入
在实际操作中,我们需要将金蝶分布式调出单的数据按照上述配置进行转换,并通过API接口写入旺店通。以下是具体步骤:
-
提取并清洗源数据: 从金蝶系统中提取调出单数据,并进行必要的数据清洗和预处理。这一步确保了数据的一致性和准确性,为后续转换打下基础。
-
字段映射与转换: 根据元数据配置,将源数据字段映射到目标平台所需的字段。例如:
{ "api_outer_no": "{FBillNo}", "warehouse_no": "{FSrcStockID_FNumber}", "order_type": "1", "auto_check": "1", "goods_list": [ { "spec_no": "{{detail_list.FMaterialID_FNumber}}", "num": "{{detail_list.F_UHZG_JJQty}}", "price": "{{detail_list.FPrice}}", "batch_no": "{{detail_list.FLOT}}", "remark": "{{detail_list.FEntryNote}}" } ] }
-
构建请求体: 将映射后的数据构建成符合API要求的请求体。例如:
{ "api_outer_no": "123456", "warehouse_no": "WH001", "order_type": "1", "auto_check": "1", "goods_list": [ { "spec_no": "SKU12345", "num": "100", "price": "10.00", "batch_no": "BATCH001", "remark": "" } ] }
-
发送HTTP请求: 使用POST方法将构建好的请求体发送到目标API接口。确保处理响应结果,捕获可能出现的错误并进行相应处理。
示例代码
以下是一个简化的Python示例代码,用于演示上述步骤:
import requests
import json
# 构建请求体
data = {
"api_outer_no": "123456",
"warehouse_no": "WH001",
"order_type": 1,
"auto_check": 1,
"goods_list": [
{
"spec_no": 'SKU12345',
'num': '100',
'price': '10.00',
'batch_no': 'BATCH001',
'remark': ''
}
]
}
# 发送POST请求
response = requests.post(
url='https://api.wangdian.cn/openapi2/wdt.vip.wms.stockinout.order.push',
headers={'Content-Type': 'application/json'},
data=json.dumps(data)
)
# 处理响应结果
if response.status_code == 200:
print("Data successfully pushed to Wangdian API")
else:
print(f"Failed to push data: {response.text}")
通过以上步骤,我们成功地完成了从金蝶分布式调出单到旺店通委外出库单的数据ETL转换,并通过企业奇门API接口将数据写入目标平台。这一过程不仅提高了业务流程的自动化程度,还确保了不同系统间的数据一致性和准确性。