用友BIPAPI接口在数据集成生命周期中的应用

  • 轻易云集成顾问-何语琴
### 退换货生成销售退货(线下)-v: 旺店通·企业奇门数据集成到用友BIP 在本案例中,我们探讨了如何高效、准确地实现旺店通·企业奇门系统与用友BIP之间的数据集成,具体是将退换货信息生成销售退货单。为了确保数据无缝对接,并能实时监控处理过程,我们采用了一整套优化方案。 首先,通过调用旺店通·企业奇门的API `wdt.refund.query`,我们能够定时可靠地抓取最新的退还信息。这一过程不仅保证了数据不漏单,更大幅提升了业务操作的透明度和效率。在此基础上,为了解决大量数据快速写入到用友BIP的问题,我们专门设计了一种批量集成机制。 然而,在实际实施过程中,分页和限流问题常常成为挑战。我们通过设置合理的分页参数以及使用错峰请求策略,有效地避免了接口调用过于频繁而导致的性能瓶颈。此外,由于旺店通与用友BIP的数据格式存在差异,我们通过中间层进行细致的数据映射转换,以确保每一条记录都能正确写入目标系统。使用 /yonbip/sd/vouchersalereturn/singleSave API 完成数据保存操作,每步都经过严密测试与配置验证。 另一个关键点在于错误重试机制与异常处理。为应对网络波动或接口临时不可用等情况,本方案引入了智能重试逻辑,以及详细完善的日志记录功能,使得任何异常状况都能被迅速定位并解决。此外,还包括自定义对接规则,用以满足特定业务需求,显著提高系统整体稳定性和可维护性。 这次技术落地案例展示的不仅是一个高效的数据迁移方案,还体现出定制化、多维度对接策略如何促进企业运营水平质变提升。 ![金蝶云星空API接口配置](https://pic.qeasy.cloud/D28.png~tplv-syqr462i7n-qeasy.image) ### 调用旺店通·企业奇门接口wdt.refund.query获取并加工数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口`wdt.refund.query`来获取退换货数据,并进行相应的数据加工处理。 #### 接口调用配置 首先,我们需要配置接口调用的元数据。以下是`wdt.refund.query`接口的元数据配置: ```json { "api": "wdt.refund.query", "method": "POST", "number": "refund_no", "id": "refund_id", "pagination": { "pageSize": 40 }, "idCheck": true, "beatFlat": ["refund_order_list"], "condition": [ [{"field":"shop_no","logic":"eq","value":"063"},{"field":"process_status","logic":"egt","value":"70","strictMode":true},{"field":"type","logic":"eq","value":2}], ... [{"field":"shop_no","logic":"eq","value":"171"},{"field":"process_status","logic":"egt","value":"70","strictMode":true},{"field":"type","logic":"eq","value":3}] ], "request": [ {"field":"process_status","label":"退换单处理状态","type":"string"}, {"field":"time_type","label":"时间类型","type":"string"}, {"field":"start_time","label":"开始时间","type":"string"}, {"field":"end_time","label":"结束时间","type":"string"}, {"field":"page_size","label":"分页大小","type":"string"}, {"field":"shop_no","label":"店铺编号","type":"string"}, {"field":"page_no","label":"页号","type":"string"}, {"field":"refund_no","label":"Erp内退换单编号","type":"string"}, {"field":"src_refund_no","label":"平台原始退换单号","type":"string"}, {"field":"trade_no","label":"系统订单编号","type":"string"}, {"field":"tid","label":"原始单号","type":"string"} ] } ``` #### 请求参数设置 在请求参数中,关键字段包括`start_time`和`end_time`,用于按时间增量获取数据。以下是具体的请求参数示例: ```json { "process_status": "70", "time_type": "0", "start_time": "{{LAST_SYNC_TIME|datetime}}", "end_time": "{{CURRENT_TIME|datetime}}", "page_size": "{PAGINATION_PAGE_SIZE}", "shop_no": "063" } ``` #### 数据清洗与转换 在获取到原始数据后,需要对数据进行清洗和转换。以下是一些常见的数据清洗与转换操作: 1. **字段映射**:将源系统中的字段映射到目标系统中的字段。例如,将`refund_no`映射为目标系统中的`return_order_number`。 2. **数据格式转换**:将日期格式从字符串转换为标准日期格式。 3. **过滤无效数据**:移除不符合业务规则的数据,例如处理状态不等于70的数据。 #### 数据写入 经过清洗和转换后的数据,需要写入到目标系统中。在轻易云平台上,可以通过配置相应的写入接口实现这一过程。例如,将清洗后的退换货数据写入到ERP系统中的销售退货模块。 #### 实时监控与日志记录 为了确保数据集成过程的透明性和可追溯性,实时监控和日志记录是必不可少的。通过轻易云平台提供的监控工具,可以实时查看每个环节的数据流动和处理状态,并记录详细的操作日志,以便于后续的审计和问题排查。 #### 总结 通过以上步骤,我们可以高效地调用旺店通·企业奇门接口`wdt.refund.query`获取退换货数据,并进行相应的数据清洗、转换和写入操作。这不仅提升了业务处理效率,还确保了数据的一致性和准确性。在实际应用中,根据具体业务需求,可以进一步优化和定制这些操作流程。 ![用友与WMS系统接口开发配置](https://pic.qeasy.cloud/S22.png~tplv-syqr462i7n-qeasy.image) ### 数据集成生命周期中的ETL转换:用友BIPAPI接口应用 在数据集成生命周期的第二步中,关键任务是将已经集成的源平台数据进行ETL转换,使其符合目标平台——用友BIPAPI接口所能接收的格式,并最终写入目标平台。以下是具体操作步骤和技术细节。 #### 接口配置与数据映射 首先,我们需要配置接口及其相关字段,以确保数据能够正确传输到用友BIP系统。以下是接口配置的元数据: ```json { "api": "/yonbip/sd/vouchersalereturn/singleSave", "method": "POST", "idCheck": true, "BIPAudit": "/yonbip/sd/vouchersalereturn/approve", "operation": { "method": "merge", "field": "refund_no", "bodyName": "refund_order_list", "bodySum": ["refund_order_list_refund_num", "refund_order_list_refund_order_amount"], "header": ["refund_no", "shop_no", "remark", "modified", "actual_refund_amount", "warehouse_no", "tid"], "body": ["refund_order_list_spec_no", "refund_order_list_refund_num", "refund_order_list_refund_order_amount", "refund_order_list_oid", "refund_order_list_tid", "refund_order_list_order_id", "refund_order_list_wdttax_rate", "refund_order_list_remark"] }, ... } ``` #### 请求参数设置 在请求参数设置部分,我们需要确保每个字段都映射到相应的数据源字段,并且格式正确。例如: - `resubmitCheckKey` 用于保证请求的幂等性,值为 `{refund_no}`。 - `code` 为单据编码,值为 `{refund_no}`。 - `salesOrgId` 销售组织,通过 `_findCollection` 方法从映射表中获取。 - `transactionTypeId` 固定值为 `"1480261131563434158"`。 以下是部分请求参数配置示例: ```json [ { "field": "resubmitCheckKey", ... "value": "{refund_no}" }, { ... "value": "_findCollection find mapping_sale_org from ... where shop_no={shop_no}" }, ... ] ``` #### 数据清洗与转换 在ETL过程中,数据清洗和转换是核心步骤。我们需要确保源数据经过清洗后,符合目标系统的要求。例如,对于退款订单列表中的每一项,需要计算税额、含税金额等字段,并进行相应的转换。 ```json { ... { ... "field": "oriTaxUnitPrice", ... // 含税成交价计算公式 // round((round(退款订单金额,2) / 退款数量),2) // 示例:_function round((round({{refund_order_list.refund_order_list_refund_order_amount}},2)/{{refund_order_list.refund_order_list_refund_num}}),2) }, { ... // 无税单价计算公式 // round((round(退款订单金额,2) / (1+税率)),2) // 示例:_function round((round({{refund_order_list.refund_order_list_refund_order_amount}},2)/(1+{{refund_order_list.refund_order_list_wdttax_rate}})),2) } } ``` #### 数据写入目标平台 完成数据清洗和转换后,我们将处理后的数据通过POST请求写入用友BIP系统。为了确保操作成功,需要进行幂等性检查和审核操作。 ```json { ... // POST请求发送处理后的数据 } ``` #### 审核与确认 最后一步是调用审核接口 `/yonbip/sd/vouchersalereturn/approve` 确认退货单据。 ```json { ... // 调用审核接口确认退货单据 } ``` 通过以上步骤,我们实现了从源平台到用友BIP系统的数据ETL转换和写入,确保每个环节的数据准确性和一致性。这不仅提高了业务透明度,还大大提升了整体效率。 ![用友与MES系统接口开发配置](https://pic.qeasy.cloud/T3.png~tplv-syqr462i7n-qeasy.image)