金蝶采购退料单集成到旺店通采购退料出库单技术案例分享
在复杂的企业信息系统中,不同平台之间的数据集成往往是一个棘手的问题。本文将深入探讨如何利用轻易云数据集成平台,实现金蝶云星空的采购退料单高效、准确地同步到旺店通·企业奇门中的采购退料出库单。
1. 确保数据不漏单:调用executeBillQuery接口实现定时抓取
首先,我们需要确保从金蝶云星空获取的数据完整无误。这一步通过调用金蝶云星空提供的API接口executeBillQuery
来实现。配置定时任务,每隔一定时间自动抓取新的采购退料单数据,并存储在中间表中进行后续处理。同时,通过日志记录与实时监控,保证任何一次请求都能成功执行并及时处理异常情况。
2. 批量快速写入:使用wdt.purchase.return.order.push接口
为了满足高效的信息传递要求,将预处理后的数据批量推送至旺店通·企业奇门的平台上,使用其提供的API wdt.purchase.return.order.push
。这个过程不仅要保证每批次的数据写入速度,还要兼顾网络延迟和系统限流等问题,可以设置合理的重试机制以应对可能出现的失败操作,确保所有数据信息最终能够正确导入目标系统中。
3. 数据格式差异处理及映射配置
由于两个平台的数据结构和字段定义可能不同,在推送数据之前,需要对来自金蝶云星空的数据进行适配和转换。这一步尤为重要,为了保持一致性,我们可提前建立一套自定义映射关系,通过脚本或工具完成对应字段值转换,使得每条记录都能被精确识别和接收,同时考虑包含多种特殊字符、日期格式以及金额类型等关键细节,避免因格式差异导致的信息丢失或错误解析。
4. 异常处理与错误重试机制
面对复杂且变化多端的数据环境,很难保证所有请求都百分之百顺畅。因此,当一次请求失败时,我们必须有完善的方法去检测并及时重试操作。例如,对于由于临时网络故障造成的短时间无法连接,可以通过重新发送相同请求加以弥补;对于逻辑错误或者缺少必要参数,则需更深层次地调研具体原因并优化代码逻辑,以杜绝类似问题再度发生,这样才能稳定运转整个流程体系,让业务运营更加顺利。有一个精确而敏捷监控策略非常关键,各种消息告警功能会即时触达相关负责人迅速定位及修复
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成过程中,调用源系统的API接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery
接口,以获取采购退料单的数据,并进行必要的数据加工。
接口配置与请求参数
首先,我们需要配置调用金蝶云星空接口的元数据。以下是具体的元数据配置:
{
"api": "executeBillQuery",
"method": "POST",
"number": "FBillNo",
"id": "FPURMRBENTRY_FEntryID",
"pagination": {
"pageSize": 500
},
"idCheck": true,
"request": [
{"field":"FPURMRBENTRY_FEntryID","label":"明细信息ID","type":"string","value":"FPURMRBENTRY_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_FNumber","label":"单据类型","type":"string","value":"FBillTypeID.FNumber"},
{"field":"FTAKEDELIVERYNO","label":"提货单号","type":"string","value":"FTAKEDELIVERYNO"},
{"field":"FSupplierID_FNumber","label":"供应商","type":"string","value":"FSupplierID.FNumber"},
{"field":"FDESCRIPTION","label":"备注","type":"string","value":"FDESCRIPTION"},
// ...省略部分字段...
{"field": "FormId", "label": "业务对象表单Id", "type": "string", "describe": "必须填写金蝶的表单ID如:PUR_PurchaseOrder", "value": "PUR_MRB"}
],
"otherRequest":[
{"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"},
{"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"},
{"field": "FilterString",
"label":
"过滤条件",
"type":
"string",
"describe":
"示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=",
"value":
"FStockOrgId.FNumber = '7000' and FApproveDate>='{{LAST_SYNC_TIME|datetime}}'"
}
]
}
请求构建与发送
在构建请求时,需要特别注意以下几点:
- API地址和方法:根据元数据配置,API地址为
executeBillQuery
,请求方法为POST
。 - 分页参数:设置分页参数以控制每次请求的数据量。这里我们设置每页500条记录。
- 过滤条件:通过
FilterString
字段设置过滤条件,例如按组织编号和审核日期进行过滤。 - 字段选择:通过
FieldKeys
字段指定需要查询的字段集合。
以下是一个构建请求的示例代码:
import requests
import json
url = 'https://api.kingdee.com/executeBillQuery'
headers = {'Content-Type': 'application/json'}
payload = {
'FormId': 'PUR_MRB',
'FieldKeys': 'FPURMRBENTRY_FEntryID,FID,FBillNo,FDocumentStatus,FStockOrgId.FNumber,FDate,FBillTypeID.FNumber,FTAKEDELIVERYNO,FSupplierID.FNumber,FDESCRIPTION',
'FilterString': 'FStockOrgId.FNumber = \'7000\' and FApproveDate>=\'2023-01-01\'',
'Limit': 500,
'StartRow': 0
}
response = requests.post(url, headers=headers, data=json.dumps(payload))
data = response.json()
数据处理与转换
获取到数据后,需要对其进行处理和转换,以满足目标系统(如旺店通)的要求。常见的数据处理操作包括:
- 字段映射:将源系统中的字段映射到目标系统中的对应字段。例如,将金蝶中的
FBillNo
映射到旺店通中的采购退料出库单编号。 - 数据清洗:去除无效或重复的数据,确保数据质量。
- 格式转换:根据目标系统的要求,对日期、金额等字段进行格式转换。
以下是一个简单的数据处理示例:
def process_data(data):
processed_data = []
for record in data:
processed_record = {
'退料单编号': record['FBillNo'],
'退料日期': record['FDate'],
'供应商编号': record['FSupplierID_FNumber'],
// ...其他字段映射...
}
processed_data.append(processed_record)
return processed_data
cleaned_data = process_data(data)
数据写入目标系统
最后,将处理后的数据写入目标系统。在本案例中,将采购退料单的数据写入旺店通系统。可以使用相应的API接口完成这一操作。
target_url = 'https://api.wangdiantong.com/purchase_return'
target_headers = {'Content-Type': 'application/json'}
for record in cleaned_data:
target_response = requests.post(target_url, headers=target_headers, data=json.dumps(record))
通过上述步骤,我们实现了从金蝶云星空获取采购退料单数据,并将其加工后写入旺店通系统。这一过程展示了轻易云数据集成平台在异构系统间无缝对接和高效数据处理方面的强大能力。
使用轻易云数据集成平台将金蝶采购退料单转换为旺店通采购退料出库单的技术案例
在数据集成过程中,ETL(Extract, Transform, Load)是关键步骤之一。本文将详细介绍如何使用轻易云数据集成平台,将金蝶采购退料单的数据转换为旺店通·企业奇门API接口所能接收的格式,并最终写入目标平台。
1. 数据提取与初步清洗
首先,我们从源系统(金蝶)提取采购退料单数据,并进行初步清洗。此过程包括对原始数据进行筛选、去重和格式化,以确保后续处理的准确性和一致性。
2. 数据转换配置
在轻易云数据集成平台上,我们需要配置元数据以实现数据的有效转换。以下是具体的元数据配置:
{
"api": "wdt.purchase.return.order.push",
"method": "POST",
"idCheck": true,
"operation": {
"method": "merge",
"field": "FBillNo",
"bodyName": "details_list",
"bodySum": ["FPRICEUNITQTY"],
"header": ["FBillNo", "FSupplierID_FNumber", "FSTOCKID_FNumber", "FSRCBillNo", "FDESCRIPTION"],
"body": ["FNOTE", "FMATERIALID_FNumber", "FRMREALQTY", "FTAXPRICE", "FPRICEUNITQTY", "FLot"]
},
"request": [
{
"field": "return_no",
"label": "退货单号",
"type": "string",
"describe": "关联采购员编号",
"value": "_mongoQuery 2072ab83-e021-337d-b243-7c9140027cfe findField=content.return_no where={\"content.api_outer_no\" : {\"$eq\":\"{FSRCBillNo}\"}}"
},
{
"field": "outer_no",
"label": "外部单号",
"type": "string",
"describe": "",
"value": "{FBillNo}"
},
{
...
3. 数据映射与字段匹配
在这个阶段,我们需要将金蝶系统中的字段与旺店通API接口所需的字段进行映射。例如:
- 金蝶中的
FBillNo
映射到旺店通的outer_no
- 金蝶中的
FSupplierID_FNumber
映射到旺店通的provider_no
- 金蝶中的
FSTOCKID_FNumber
映射到旺店通的warehouse_no
- 金蝶中的
FDESCRIPTION
映射到旺店通的remark
此外,还需要处理明细列表节点(detail_list),其中包含了采购退货单所有货品明细属性信息的数据节点。例如:
FMATERIALID_FNumber
映射到spec_no
FPRICEUNITQTY
映射到num
FTAXPRICE
映射到price
FLot
映射到批次号(batch_no)
4. 数据加载与写入
完成数据转换后,我们通过POST请求将处理好的数据发送至旺店通·企业奇门API接口。以下是一个示例请求体:
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
},
...
}
通过上述步骤,成功实现了从金蝶系统到旺店通系统的数据无缝对接。这不仅提高了数据处理效率,还确保了各系统间的数据一致性和准确性。
5. 实时监控与日志记录
最后,为确保整个ETL过程顺利进行,我们利用轻易云平台提供的实时监控功能,监控每个环节的数据流动和处理状态。同时,记录详细日志以便于后续排查和优化。
以上就是使用轻易云数据集成平台,将金蝶采购退料单转换为旺店通采购退料出库单的完整技术案例。通过合理配置元数据和精确的数据映射,实现了不同系统间的数据无缝对接。