轻易云数据集成平台ETL转换:金蝶退料申请单到旺店通采购退料单

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