采购入库单对接:金蝶云星空—旺店通·企业奇门数据集成案例
本篇技术案例聚焦于如何实现将金蝶云星空的采购入库单数据高效、安全地集成到旺店通·企业奇门这一实际应用场景。
为了确保金蝶云星空的数据不会在传输过程中漏失,我们采用了定时可靠的抓取机制,调用金蝶云星空接口executeBillQuery,精确而批量地获取所需的数据。同时,通过处理分页和限流问题,实现了大规模数据的稳健采集。针对不同系统间的数据格式差异,本方案设计了一套定制化的数据映射配置,以满足旺店通·企业奇门平台特定需求,并利用其API:wdt.stockin.purchase.push进行快速写入。
面对实际运行中的潜在异常与错误重试机制,方案内置了完善的日志记录和实时监控功能,以保障整个数据处理过程清晰可追溯。因此,无论是初始配置还是后续维护,都达到了最高效透明、稳定可靠的效果。这不仅提升了业务流程自动化程度,也极大优化了操作效率。
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成过程中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery
接口,以获取采购入库单的数据,并进行必要的加工处理。
接口配置与调用
首先,我们需要了解executeBillQuery
接口的基本配置和调用方法。根据提供的元数据配置,以下是该接口的主要参数:
- API名称:
executeBillQuery
- 请求方法:
POST
- 主要字段:
FInStockEntry_FEntryId
: 入库单分录IDFID
: 实体主键FBillNo
: 单据编号FDocumentStatus
: 单据状态FStockOrgId_FNumber
: 收料组织编码FDate
: 入库日期FBillTypeID_FNumber
: 单据类型编码- 更多字段详见元数据配置...
请求参数构建
在实际调用中,我们需要根据业务需求构建请求参数。以下是一个示例请求参数构建过程:
{
"FormId": "STK_InStock",
"FieldKeys": [
"FInStockEntry_FEntryId",
"FID",
"FBillNo",
"FDocumentStatus",
"FStockOrgId.FNumber",
"FDate",
"FBillTypeID.FNumber"
],
"FilterString": "FDocumentStatus='C' and FStockId.FNumber='1.10' and FApproveDate>='{{LAST_SYNC_TIME|dateTime}}'",
"Limit": "{PAGINATION_PAGE_SIZE}",
"StartRow": "{PAGINATION_START_ROW}"
}
上述请求参数中,FormId
指定了业务对象表单ID为STK_InStock
,即采购入库单。FieldKeys
定义了需要查询的字段集合,这些字段将作为返回结果的一部分。FilterString
用于过滤条件,例如只查询状态为已审核且仓库编码为1.10的记录。
数据清洗与转换
获取到原始数据后,需要对其进行清洗和转换,以满足目标系统的数据格式要求。例如,我们可能需要将日期格式统一、字段名称映射等操作。
以下是一个简单的数据清洗示例:
def clean_data(raw_data):
cleaned_data = []
for record in raw_data:
cleaned_record = {
"entry_id": record["FInStockEntry_FEntryId"],
"bill_no": record["FBillNo"],
"status": record["FDocumentStatus"],
"stock_org_code": record["FStockOrgId.FNumber"],
"date": format_date(record["FDate"]),
# 更多字段转换...
}
cleaned_data.append(cleaned_record)
return cleaned_data
def format_date(date_str):
# 假设日期格式为 YYYY-MM-DD,将其转换为目标系统所需格式
return date_str.replace("-", "/")
数据写入目标系统
在完成数据清洗和转换后,下一步是将处理后的数据写入目标系统(如旺店通)。这一步通常涉及调用目标系统的API,将清洗后的数据逐条写入。
def write_to_target_system(cleaned_data):
for record in cleaned_data:
response = target_system_api.write(record)
if response.status_code != 200:
log_error(f"Failed to write record {record['bill_no']}: {response.text}")
# 示例API调用函数
def target_system_api.write(data):
url = 'https://target-system-api.com/write'
headers = {'Content-Type': 'application/json'}
response = requests.post(url, json=data, headers=headers)
return response
通过以上步骤,我们实现了从金蝶云星空获取采购入库单数据,并经过清洗和转换后写入目标系统的完整流程。这一过程不仅提高了数据处理效率,还确保了数据的一致性和准确性。
使用轻易云数据集成平台进行ETL转换并写入旺店通·企业奇门API接口
在数据集成生命周期的第二阶段,我们需要将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,并最终写入目标平台——旺店通·企业奇门API接口。本文将详细探讨这一过程中的技术细节和元数据配置。
数据请求与清洗
首先,我们需要从源平台提取数据,并进行必要的清洗和预处理。这一步骤确保了我们获取的数据是准确且一致的,为后续的转换和写入打下基础。
数据转换与写入
接下来,我们重点关注如何将清洗后的数据转换为旺店通·企业奇门API接口所能接收的格式,并通过API接口将数据写入目标平台。
元数据配置解析
以下是我们需要配置的元数据,用于定义如何将采购入库单的数据推送到旺店通·企业奇门API接口:
{
"api": "wdt.stockin.purchase.push",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"request": [
{"field": "warehouse_no", "label": "仓库编号", "type": "string", "describe": "...", "value": "1.10"},
{"field": "purchase_no", "label": "采购单号", "type": "string", "describe": "...", "value": "{FBillNo}"},
{"field": "outer_no", "label": "外部单号", "type": "string", "describe": "...", "value": "{FBillNo}"},
{"field": "is_check", "label": "自动审核", "type": "string", "describe": "...", "value": "1"},
{"field": ...},
...
],
...
}
请求参数详解
warehouse_no
: 仓库编号,ERP内自定义的代表仓库的编号信息。purchase_no
: 采购单号,由ERP生成的唯一标识。outer_no
: 外部系统采购入库单的唯一单据编号。is_check
: 自动审核标志,1表示审核,0表示不审核。logistics_code
: 物流编号,ERP内自定义的物流公司编号。remark
: 备注信息,如“采购入库”。details_list
: 入库货品列表节点,包含所有货品明细信息。
子节点详解(details_list)
{
...
{
"field":"details_list",
...
,"children":[
{"field":"spec_no","label":"商家编码","type":"string","describe":"...","value":"{FMaterialId_FNumber}"},
{"field":"stockin_num","label":"入库数量","type":"string","describe":"...","value":"{FRealQty}"},
{"field":"tax","label":"税率","type":"string","describe":"..."},
{"field":"stockin_price","label":"入库价","type":"string","describe":"...","value":"{FTaxPrice}"},
{"field":"tax_price","label":"税后单价","type":"string","describe":"...","value":"{FPrice}"},
...
]
}
}
spec_no
: 商家编码,ERP内单品唯一编码(SKU)。stockin_num
: 入库数量。tax_price
: 税后单价,如果传值则覆盖入库价。
数据转换示例
假设我们从源平台获取到如下数据:
{
...
{
FBillNo: 'PO12345',
FMaterialId_FNumber: 'SKU123',
FRealQty: '100',
FTaxPrice: '10',
FPrice: '11'
}
}
我们需要将其转换为符合旺店通·企业奇门API接口格式的数据:
{
...
{
warehouse_no: '1.10',
purchase_no: 'PO12345',
outer_no: 'PO12345',
is_check: '1',
details_list: [
{
spec_no: 'SKU123',
stockin_num: '100',
stockin_price: '10',
tax_price: '11'
}
]
}
}
API请求示例
通过HTTP POST方法,将上述JSON对象发送到旺店通·企业奇门API接口:
POST /wdt.stockin.purchase.push HTTP/1.1
Host: api.wangdiantong.com
Content-Type: application/json
{
...
}
实施与监控
最后,通过轻易云数据集成平台,我们可以实时监控每个环节的数据流动和处理状态,确保整个ETL过程透明且高效。
通过以上步骤,我们成功实现了从源平台到目标平台的数据ETL转换和写入。