金蝶采购入库单=>旺店通采购入库单(ok)技术案例分享
在企业信息化进程中,系统对接和数据集成的需求日益迫切。本文将聚焦于一个具体的系统对接集成案例,即如何通过金蝶云星空的数据API接口executeBillQuery,将采购入库单无缝导入到旺店通·企业奇门中,并通过其API接口wdt.stockin.purchase.push实现批量写入。
背景与挑战
首先,我们需要解决大量数据从金蝶云星空快速写入至旺店通·企业奇门的问题。这不仅要求高吞吐量的数据处理能力,还要确保在高负载情况下,数据准确传输不漏单。此外,两大系统之间存在着不同的数据格式和结构,这就要求我们有灵活且自定义的数据转换逻辑,以保持业务流程的一致性。同时,对于跨平台集成过程中不可避免的异常状况,需要设计可靠的错误重试机制和全面的监控告警体系。
技术方案概述
- 数据抓取:利用executeBillQuery API根据指定条件定期抓取金蝶云星空中的采购入库单数据。
- 转换逻辑:基于双方系统提供的字段规范,对抓取到的数据进行必要的转换,包括但不限于字段映射、值替换及格式调整。
- 分页与限流处理:巧妙地处理API限制,通过对请求进行分页控制,合理配置并行任务,从而优化整体运行效率。
- 实时监控与日志记录:部署集中监控和日志分析模块,实现全过程透明化管理,并及时捕捉可能出现的问题。
- 异常处理与重试机制:针对潜在网络波动、服务宕机等情况,引入自动重试策略,确保每笔交易安全落地。
通过这些技术手段,我们成功构建了一套稳健、高效且可扩展的数据集成解决方案,为企业多系统联动奠定了坚实基础。接下来将详细介绍各个环节中的具体实施步骤及关键细节。
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成的生命周期中,第一步是调用源系统接口获取数据,并对其进行初步加工。本文将详细探讨如何使用轻易云数据集成平台调用金蝶云星空的executeBillQuery
接口来获取采购入库单数据,并进行必要的数据处理。
接口配置与调用
首先,我们需要配置调用金蝶云星空接口的元数据。以下是元数据配置的关键字段及其含义:
- api:
executeBillQuery
- method:
POST
- number:
FBillNo
- id:
FInStockEntry_FEntryId
- pagination: 每页500条记录
- idCheck:
true
请求参数包括:
- FieldKeys: 需查询的字段key集合
- FormId: 业务对象表单Id,如
STK_InStock
- FilterString: 过滤条件,用于筛选特定的数据
- Limit: 最大行数
- StartRow: 开始行索引
以下是一个具体的请求示例:
{
"api": "executeBillQuery",
"method": "POST",
"number": "FBillNo",
"id": "FInStockEntry_FEntryId",
"pagination": {"pageSize": 500},
"idCheck": true,
"request": [
{"field": "FInStockEntry_FEntryId", "label": "id", "type": "string", "value": "FInStockEntry_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"}
// 其他字段省略...
],
// 其他请求参数省略...
}
数据过滤与分页
为了确保我们只获取到需要的数据,可以使用FilterString
参数进行过滤。例如,我们可以根据供应商编号和审核日期来筛选数据:
{
// 其他参数省略...
{
field: 'FilterString',
label: '过滤条件',
type: 'string',
describe: '示例写法 FSupplierId.FNumber = \'VEN00010\' and FApproveDate>=',
value: 'FApproveDate>=\'{{LAST_SYNC_TIME|dateTime}}\' and FPurchaseOrgId.FNumber in ( \'7000\',\'3000\') and FISGENFORIOS=0'
}
}
分页参数则通过Limit
和StartRow
来控制,每次请求最多返回500条记录,从指定行索引开始。
数据处理与转换
在获取到原始数据后,需要对其进行初步加工,以便后续的数据转换和写入。以下是一些常见的数据处理操作:
- 字段映射:将源系统的字段映射到目标系统的字段。例如,将金蝶云星空中的
FBillNo
映射到旺店通中的采购入库单编号。 - 数据清洗:去除无效或重复的数据,确保数据质量。
- 格式转换:将日期、金额等字段转换为目标系统所需的格式。
例如,我们可以使用以下代码对获取到的数据进行初步处理:
def process_data(raw_data):
processed_data = []
for record in raw_data:
processed_record = {
'purchase_order_no': record['FBillNo'],
'entry_id': record['FInStockEntry_FEntryId'],
'status': record['FDocumentStatus'],
'organization': record['FStockOrgId_FNumber'],
'date': convert_date_format(record['FDate']),
# 其他字段处理...
}
processed_data.append(processed_record)
return processed_data
def convert_date_format(date_str):
# 将日期字符串转换为目标格式
return datetime.strptime(date_str, '%Y-%m-%d').strftime('%d/%m/%Y')
实时监控与日志记录
为了确保数据集成过程的透明度和可追溯性,实时监控和日志记录是必不可少的。通过轻易云平台提供的可视化界面,可以实时监控数据流动和处理状态,并记录每一步操作的详细日志。
例如,可以在每次API调用前后记录日志:
import logging
logging.basicConfig(level=logging.INFO)
def fetch_and_process_data():
logging.info('开始调用金蝶云星空接口...')
raw_data = call_kingdee_api()
logging.info(f'获取到{len(raw_data)}条记录')
processed_data = process_data(raw_data)
logging.info('数据处理完成')
return processed_data
通过上述步骤,我们可以高效地调用金蝶云星空接口获取采购入库单数据,并对其进行必要的加工,为后续的数据转换和写入做好准备。
使用轻易云数据集成平台进行ETL转换并写入旺店通·企业奇门API接口
在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL(提取、转换、加载)转换,转为目标平台能够接收的格式,并最终写入目标平台。本文将详细探讨如何使用轻易云数据集成平台,将金蝶采购入库单的数据转换为旺店通·企业奇门API接口所能接收的格式,并写入目标平台。
1. API接口配置
在进行ETL转换时,首先需要了解目标API接口的配置。根据提供的元数据配置,旺店通·企业奇门API接口wdt.stockin.purchase.push
采用POST方法,要求传递多个字段,其中一些字段是必填项。
{
"api": "wdt.stockin.purchase.push",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"request": [
{"field":"purchase_no","label":"采购单号","type":"string","value":"{{details.FSRCBillNo}}"},
{"field":"outer_no","label":"外部单号","type":"string","value":"{FBillNo}"},
{"field":"is_create_batch","label":"是否创建批次","type":"string","value":"1"},
{"field":"is_check","label":"是否审核","type":"string","value":"1"},
{"field":"warehouse_no","label":"仓库编号","type":"string","value":"{{details.FStockId_FNumber}}"},
{"field":"logistics_code","label":"物流编号","type":"string"},
{"field":"logistics_no","label":"物流单号","type":"string"},
{"field":"post_fee","label":"邮资","type":"string"},
{"field":"other_fee","label":"其他费用","type":"string"},
{"field":"remark","label":"备注","type":"string","value":"{FNote}"},
{
"field": "details_list",
"label": "入库货品列表节点",
"type": "array",
"value": "details",
"children": [
{"field": "spec_no", "label": "商家编码", "type": "string", "value": "{{details.FMaterialId_FNumber}}"},
{"field": "stockin_num", "label": "入库数量", "type": "string", "value": "{{details.FPriceUnitQty}}"},
{"field": "stockin_price", "label": "入库价", "type": "string", "value": "{{details.FAmount}}"},
{"field": "tax_price",
![金蝶云星空API接口配置](https://pic.qeasy.cloud/T9.png~tplv-syqr462i7n-qeasy.image)