金蝶退料申请单对接旺店通采购退料单:高效数据集成方案解析
在实际业务场景中,企业常常需要将多个系统的数据进行无缝对接,以确保各项运营管理能够高效、准确地进行。本文将详细探讨一个典型案例:如何通过轻易云数据集成平台,实现金蝶云星空的退料申请单数据与旺店通·企业奇门采购退料单的有效互联。
1. 数据抓取及API调用
首先,我们需要从金蝶云星空中获取最新的退料申请单数据。这一过程主要通过调用金蝶提供的executeBillQuery
API接口来实现,该接口支持复杂条件下的数据查询,并能处理分页和限流问题,从而保证每次请求都能稳定获取预期范围内的数据,避免漏单现象。在实施过程中,需要特别设置可靠性机制来定时抓取相关接口数据,确保实时性和完整性。
{
"apiName": "Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery",
"parameters": {
// API参数按照需求配置
}
}
2. 数据快速写入与异常处理
获取到所需的原始数据后,需要将其批量写入到目标系统——旺店通·企业奇门。对应操作采用了wdt.purchase.return.push
API,通过其高性能、多并发能力,可以实现大量数据的迅速导入。不仅如此,为了保障整个推送过程中的安全可靠,还设计了完善的异常处理机制和错误重试策略。当遇到网络故障或其他不可控因素导致的数据传输失败时,这一机制可以自动检测并重新尝试提交未成功的数据包。
{
"apiName": "wdtPurchaseReturnPush",
"data": {
// 构造适配后的推送格式
}
}
3. 数据格式转换与映射
由于两个系统间使用的不尽相同的数据结构,在真正完成对接之前,必须首先解决二者之间存在的数据差异问题。针对这一点,我们进行了详细且精确的数据映射,将金蝶云星空提供的信息转换为符合旺店通要求格式的一致输入。同时,根据特殊业务规则,自定义了一些字段映射逻辑,以确保所有关键信息均能够准确传达,而不至于丢失或误读。
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery
接口,以获取退料申请单的数据,并进行初步加工。
接口配置与调用
首先,我们需要配置接口的元数据,以便正确地调用金蝶云星空的API。以下是元数据配置的关键部分:
{
"api": "executeBillQuery",
"method": "POST",
"number": "FBillNo",
"id": "FEntity_FEntryID",
"pagination": {
"pageSize": 100
},
"idCheck": true,
"request": [
{"field":"FEntity_FEntryID","label":"FEntity_FEntryID","type":"string","value":"FEntity_FEntryID"},
{"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"},
{"field":"FID","label":"FID","type":"string","value":"FID"},
{"field":"FDocumentStatus","label":"单据状态","type":"string","value":"FDocumentStatus"},
{"field":"FBillTypeID_Fnumber","label":"单据类型","type":"string","value":"FBillTypeID.Fnumber"},
{"field":"FDate","label":"申请日期","type":"string","value":"FDate"},
{"field":"FPURCHASEORGID_Fnumber","label":"采购组织","type":"string","value":"FPURCHASEORGID.Fnumber"},
{"field":"FRMTYPE","label":"退料类型","type":"string","value":"FRMTYPE"},
{"field":"FAPPORGID_Fnumber","label":"申请组织","type":"string","value":"FAPPORGID.Fnumber"},
{"field":"FAPPDEPTID_Fnumber","label":"申请部门","type":"string","value":"FAPPDEPTID.Fnumber"},
{"field":"FRMLOC","label":"退料地点","type":"string","value":"FRMLOC"},
{"field":"FSUPPLIERID_Fnumber","label":"供应商","type":"string","value":""},
...
],
"otherRequest": [
{"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"},
{"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"},
{"field": "TopRowCount", "label": "返回总行数", "type": "int", "describe": ""},
{"field": "FilterString",
...
请求参数解析
在请求参数中,FieldKeys
字段定义了我们需要查询的字段集合,这些字段将决定我们从金蝶系统中提取哪些具体信息。以下是部分关键字段:
FBillNo
: 单据编号FID
: FIDFDocumentStatus
: 单据状态FPURCHASEORGID_Fnumber
: 采购组织FRMTYPE
: 退料类型FSUPPLIERID_Fnumber
: 供应商
这些字段将帮助我们准确地获取所需的数据。
数据过滤与分页
为了优化查询效率,我们可以使用过滤条件和分页参数。过滤条件可以根据业务需求进行定制,例如:
{
...
{
"field": "FilterString",
...
// 示例:仅查询特定供应商且审核日期在最近同步时间之后的数据
// FPURCHASEORGID.Fnumber in ( '7000','3000')
// FApproveDate>='{{LAST_SYNC_TIME|dateTime}}'
...
}
}
分页参数则确保我们能够分批次获取大量数据,避免一次性请求过多导致性能问题:
{
...
{
// 每页大小为100条记录
// 开始行索引为0(第一页)
...
}
}
数据处理与转换
一旦成功获取到数据,我们需要对其进行初步处理和转换,以便后续写入目标系统。在轻易云平台上,可以通过可视化操作界面设置各种转换规则。例如:
- 字段映射:将源系统字段映射到目标系统对应字段。
- 数据清洗:去除无效或重复的数据,确保数据质量。
- 格式转换:根据目标系统要求调整数据格式,如日期格式、数值精度等。
实际案例
假设我们需要将金蝶退料申请单的数据集成到旺店通采购退料单中,以下是一个简化的实际案例步骤:
-
调用接口:
POST /executeBillQuery HTTP/1.1 Host: api.kingdee.com Content-Type: application/json { ... // 请求体包含必要的过滤条件和分页参数 ... }
-
接收响应并处理:
{ ... // 响应体包含所请求的数据记录集合 ... }
-
数据转换与写入:
- 将
FBillNo
映射到旺店通中的订单编号。 - 将
FSUPPLIERID_Fnumber
映射到供应商编码。 - 根据业务逻辑处理其他字段,如数量、金额等。
- 将
通过以上步骤,我们能够高效地从金蝶云星空获取所需数据,并进行必要的加工处理,为后续的数据写入和业务应用打下坚实基础。
轻易云数据集成平台ETL转换:金蝶退料申请单到旺店通采购退料单
在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL(提取、转换、加载)转换,使其符合目标平台的格式要求。本案例将展示如何将金蝶退料申请单的数据转化为旺店通·企业奇门API接口所能接收的采购退料单格式,并最终写入目标平台。
元数据配置解析
我们需要将金蝶退料申请单的数据通过ETL过程转换为旺店通·企业奇门API接口 wdt.purchase.return.push
所需的格式。以下是元数据配置的详细解析:
- API接口:
wdt.purchase.return.push
- 请求方法:
POST
- ID检查:
true
- 操作配置:
- 合并方法:
merge
- 字段:
FBillNo, FStockId_Fnumber, FSUPPLIERID_Fnumber
- 明细列表节点名称:
details_list
- 明细合计字段:
FMRAPPQTY
- 表头字段:
FBillNo
(外部单号)FStockId_Fnumber
(出库仓库编号)FSUPPLIERID_Fnumber
(供应商编号)FRemarks
(备注)- 表体字段:
FMATERIALID_Fnumber
(商家编码)FMRAPPQTY
(退货数量)FAPPROVEPRICE_F
(税后单价)FNOTE_M
(备注)FPRICEQTY_F
(数量)FPRICE_F
(单价)FEntryTaxRate
(税率)FDISCOUNT_F
(折扣)
- 合并方法:
请求参数配置
根据元数据配置,我们需要构建如下请求参数:
-
供应商编号 (
provider_no
){ "field": "provider_no", "label": "供应商编号", "type": "string", "value": "{FSUPPLIERID_Fnumber}" }
-
外部单号 (
outer_no
){ "field": "outer_no", "label": "外部单号", "type": "string", "value": "{FBillNo}" }
-
传入ERP采购单号 (
is_use_outer_no
){ "field": "is_use_outer_no", "label": "传入ERP采购单号", "type": "string", "value": "1" }
-
是否审核 (
is_check
){ "field": "is_check", "label": "是否审核", "type": "string", "value": "1" }
-
出库仓库编号 (
warehouse_no
){ "field": "warehouse_no", "label": "出库仓库编号", "type": "string", "value": "{FStockId_Fnumber}" }
-
备注 (
remark
){ "field": "remark", "label": "备注", "type": "string", *"value":"{FRemarks}" }
-
明细列表节点 (
detail_list
){ field: 'detail_list', label: '明细列表节点', type: 'array', value: 'details_list', children: [ { field: 'spec_no', label: '商家编码', type: 'string', value: '{{details_list.FMATERIALID_Fnumber}}' }, { field: 'num', label: '退货数量', type: 'string', value: '{{details_list.FPRICEQTY_F}}' }, { field: 'price', label: '单价', type: 'string', value: '{{details_list.FPRICE_F}}' }, { field: 'discount', label: '折扣', type:'string', value:'1' }, { field:'detail_remark', label:'备注', type:'string', value:'{{details_list.FNOTE_M}}' }, { field:'tax_price', label:'税后单价', type:'string', value:'{{details_list.FAPPROVEPRICE_F}}' }, { field:'tax', label:'税率', type:'string', value:'{{details_list.FEntryTaxRate}}' } ] }
数据转换与写入
在上述配置完成后,我们可以使用轻易云数据集成平台提供的可视化界面,执行以下步骤:
- 提取金蝶退料申请单的数据。
- 根据元数据配置,将提取的数据字段映射到旺店通·企业奇门API接口所需的字段。
- 构建请求体,包含表头和表体信息。
- 调用API接口,将转换后的数据发送至旺店通·企业奇门系统。
通过这些步骤,我们实现了从金蝶系统到旺店通系统的数据无缝对接,确保了数据的一致性和准确性。