数据请求与清洗:利用轻易云集成平台获取旺店通销售退货单

  • 轻易云集成顾问-林峰
### 重跑数据—旺店通分销销售退货单=>销售退货单 在系统集成和数据处理过程中,确保每一条业务数据的准确传递至关重要。本文将重点介绍如何通过轻易云平台完成从旺店通·企业奇门到金蝶云星空的数据对接,以实现分销销售退货单的高效、可靠迁移。 该案例的核心任务是通过调用`wdt.stockin.order.query.refund`接口定时抓取旺店通·企业奇门中的销售退货单数据,并利用金蝶云星空的`batchSave`API进行快速写入。为保证不漏单且性能优化,我们采取了以下技术方案与措施: 首先,为确保集成过程不中断且稳定运行,我们使用了定时抓取机制,每隔固定时间周期性地调用`wdt.stockin.order.query.refund`接口获取最新的退货订单。这种方法不仅提高了实时性,还能保障在高并发请求场景下平滑过渡。此外,通过分页和限流策略,有效解决了大规模数据查询导致接口超时的问题。 其次,为了解决旺店通·企业奇门与金蝶云星空之间的数据格式差异,我们设计了一套灵活的数据映射机制。在提取到源数据后,对其进行结构化转换,使其符合目标系统所需格式,再通过批量方式写入到金蝶云星空中。这不仅提升了处理效率,也减少了可能出现的数据丢失或错配风险。 为了应对异常情况,特别是在网络波动及服务器压力增大时容易发生错误或超时重试问题,我们引入了一套全面的错误重试机制。当某次API调用失败后,系统会自动记录日志并进行多次尝试直至成功,这样就有效降低了因临时故障带来的业务影响。同时,实时监控功能也应用于整个集成过程中,不仅能够及时捕捉各环节状态,更可以提供详尽日志供运维人员分析和快速响应。 本案例除了展示具体操作步骤外,也着眼于一些关键细节,如分页查询、限流控制以及指标监控等,为从事类似工作的技术人员提供宝贵参考。 ![如何对接金蝶云星空API接口](https://pic.qeasy.cloud/D22.png~tplv-syqr462i7n-qeasy.image) ### 调用旺店通·企业奇门接口wdt.stockin.order.query.refund获取并加工数据 在数据集成生命周期的第一步中,调用源系统的API接口是至关重要的一环。本文将深入探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口`wdt.stockin.order.query.refund`来获取并加工数据。 #### 接口调用配置 首先,我们需要配置元数据以便正确调用该接口。以下是具体的元数据配置: ```json { "api": "wdt.stockin.order.query.refund", "method": "POST", "number": "order_no", "id": "order_no", "pagination": { "pageSize": 50 }, "idCheck": true, "request": [ { "field": "start_time", "label": "开始时间", "type": "datetime", "value": "{{LAST_SYNC_TIME|datetime}}" }, { "field": "end_time", "label": "结束时间", "type": "datetime", "value": "{{CURRENT_TIME|datetime}}" }, { "field": "status", "label": "状态", "type": "string", "value": "80" }, { "field": "shop_no", "label": "店铺编号", "type": "string" }, { "field": "src_order_no", "label": "退换单号", "type": "string" }, { "field":"stockin_no", “label":"入库单号”, “type":"string” }, { “field":"time_type”, “label":"时间类型”, “type":"int”, “value":"1” } ], “otherRequest”: [ { “field”:“page_size”, “label”:“分页大小”, “type”:“string”, “value”:“{PAGINATION_PAGE_SIZE}” }, { “field”:“page_no”, “label”:“页号”, “type”:“string”, “value”:“{PAGINATION_START_PAGE}” } ], “condition_bk”: [ [ { “field”:“shop_name”, “logic”:“eqv2”, “value”:“系统分销店铺ae89e42” } ], [], [] ], “condition”: [ [ { “field”:“shop_no”, “logic”:“eqv2”, “value”:“ae89e42” } ], [], [] ] } ``` #### 数据请求与清洗 在配置好元数据后,我们开始进行数据请求。该接口使用POST方法,通过传递多个参数来获取销售退货单的数据。以下是关键参数及其作用: - `start_time` 和 `end_time`: 用于指定查询的时间范围,分别表示上次同步时间和当前时间。 - `status`: 固定值为80,表示查询已完成的退货单。 - `shop_no`: 店铺编号,用于过滤特定店铺的数据。 - `src_order_no` 和 `stockin_no`: 分别表示退换单号和入库单号,用于进一步筛选特定订单。 - `time_type`: 固定值为1,表示按创建时间查询。 此外,分页参数`page_size`和`page_no`用于控制每次请求的数据量和页码,以便处理大量数据时进行分页查询。 #### 数据转换与写入 在获取到原始数据后,需要对其进行清洗和转换。常见的操作包括: 1. **字段映射**:将源系统的字段名映射到目标系统的字段名。例如,将`order_no`映射为目标系统中的订单编号字段。 2. **数据格式转换**:将日期、金额等字段转换为目标系统所需的格式。例如,将日期字符串转换为标准日期格式。 3. **数据过滤**:根据业务需求过滤掉不需要的数据。例如,只保留特定状态或特定店铺的数据。 经过清洗和转换后的数据可以通过轻易云平台写入到目标系统,实现无缝对接。 #### 实践案例 假设我们需要从旺店通获取某一时间段内所有已完成的销售退货单,并将其导入到我们的ERP系统中。具体步骤如下: 1. **配置元数据**:如上所述,设置好API接口、请求参数和分页信息。 2. **调用接口**:通过轻易云平台发起API请求,获取返回的数据。 3. **清洗与转换**:对返回的数据进行必要的清洗和转换,包括字段映射、格式转换等。 4. **写入目标系统**:将处理好的数据写入ERP系统,实现数据同步。 通过以上步骤,我们能够高效地实现从旺店通到ERP系统的数据集成,为业务运营提供可靠的数据支持。 ![系统集成平台API接口配置](https://pic.qeasy.cloud/S17.png~tplv-syqr462i7n-qeasy.image) ### 数据集成与ETL转换:轻易云数据集成平台对接金蝶云星空API接口 在数据集成生命周期的第二步中,我们将已经集成的源平台数据进行ETL转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。本文将详细探讨这一过程中涉及的技术细节和实现方法。 #### 接口配置与元数据解析 首先,我们需要了解金蝶云星空API接口的基本配置。根据提供的元数据配置,我们可以看到以下关键参数: - `api`: "batchSave" - `method`: "POST" - `idCheck`: true - `operation`: 定义了批量保存操作,使用`batchArraySave`方法 - `request`: 包含多个字段映射和转换规则 - `otherRequest`: 额外的请求参数,如表单ID、操作类型等 #### 请求字段解析与映射 我们需要将源平台的数据字段映射到金蝶云星空API所需的字段。以下是一些关键字段及其解析方法: 1. **单据类型 (`FBillTypeID`)** ```json {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"ZYD-023"} ``` 这里使用了`ConvertObjectParser`解析器,将固定值`ZYD-023`转换为金蝶系统可识别的格式。 2. **单据编号 (`FBillNo`)** ```json {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{order_no}"} ``` 直接从源数据中的订单编号映射过来。 3. **销售组织 (`FSaleOrgId`)** ```json {"field":"FSaleOrgId","label":"销售组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_function CASE '{shop_no}' WHEN 'E0029' THEN '3000' WHEN 'E0030' THEN '3000' WHEN 'E0031' THEN '3000' WHEN 'E0036' THEN '3000' WHEN 'E0037' THEN '3000' ELSE '7000' END"} ``` 使用条件判断,根据不同店铺编号映射到相应的销售组织编码。 4. **日期 (`FDate`)** ```json {"field":"FDate","label":"日期","type":"string","describe":"日期","value":"{check_time}"} ``` 直接从源数据中的检查时间映射过来。 5. **库存组织 (`FStockOrgId`)** ```json {"field":"FStockOrgId","label":"库存组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_function CASE '{shop_no}' WHEN 'E0029' THEN '3000' WHEN 'E0030' THEN '3000' WHEN 'E0031' THEN '3000' WHEN 'E0036' THEN '3000' ELSE '7000' END"} ``` 与销售组织类似,通过条件判断进行映射。 6. **退货客户 (`FRetcustId`)** ```json {"field":"FRetcustId","label":"退货客户","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{fenxiao_nick}","mapping":{"target":"647dbcb5a2036605cc31d388","direction":"positive"}} ``` 使用分销客户昵称进行映射,并通过指定的目标ID进行正向映射。 7. **明细信息 (`FEntity`)** - 物料编码 (`FMaterialId`) ```json {"field":"FMaterialId","label":"物料编码","type":"","describe":"","parser":{"name":"","params":""},"value":""} ``` 从明细列表中提取物料编码。 - 仓库编号 (`FStockId`) ```json {"field":"","label":"","type":"","describe":"","parser":{"name":"","params":""},"value":""} ``` 根据仓库编号进行条件判断。 - 计价数量 (`FPriceUnitQty`) ```json {"field":"","label":"","type":"","describe":"","parser":{"name":"","params":""},"value":""} ``` 从明细列表中提取数量。 - 批次号 (`FLot`) ```json {"field":"","label":"","type":"","describe":"","parser":{"name":"","params":""},"value":""} ``` 根据物料编码进行条件判断。 - 计价单价 (`F_JJ_Price`) ```json {"field":"","label":"","type":"","describe":"","parser":{"name":"","params":""},"value":""} ``` 从源数据中提取价格。 8. **财务信息 (`SubHeadEntity`)** - 结算组织 (`FSettleOrgId`) ```json {"field":"","label":"","type":"","describe":"","parser":{"name":"","params":""},"value":""} ``` 根据店铺编号进行条件判断。 #### 数据转换与写入 在完成上述字段解析和映射后,我们将构建最终的数据请求体,并通过POST方法调用金蝶云星空API接口,实现数据写入。以下是一个示例请求体: ```json { "FormId": "SAL_RETURNSTOCK", "Operation": "Save", "IsAutoSubmitAndAudit": true, "IsVerifyBaseDataField": true, "SubSystemId": "21", "Model": { "FBillTypeID": { "FNumber": "ZYD-023" }, "FBillNo": "{order_no}", "FSaleOrgId": { "FNumber": "{mapped_sale_org_id}" }, "FDate": "{check_time}", ... // 更多字段映射... "SubHeadEntity": { ... // 财务信息字段映射... } } } ``` 通过这种方式,我们可以确保源平台的数据经过ETL转换后,符合金蝶云星空API接口的要求,并成功写入目标平台。这一过程不仅提升了数据处理效率,也保证了数据的一致性和准确性。 ![金蝶与WMS系统接口开发配置](https://pic.qeasy.cloud/T3.png~tplv-syqr462i7n-qeasy.image)