API配置与数据转换:用友BIP对接旺店通的成功案例

  • 轻易云集成顾问-何语琴
### 用友BIP数据集成到旺店通·企业奇门:YS其他入库单对接旺店通其他入库单(云仓) 在实施用友BIP与旺店通·企业奇门的系统对接中,确保数据不漏单和快速、准确地传输至关重要。本案例将重点分享如何通过轻易云数据集成平台实现用友BIP的`YS其他入库单`无缝对接到旺店通的`其他入库单(云仓)`。 首先,我们需要从用友BIP获取相关的数据。使用其提供的API接口 `/yonbip/scm/othinrecord/list` 可以高效地抓取所需数据。为了保证定时可靠的数据抽取,可以设置合理的任务调度,从而避免信息延迟或遗漏。在处理大量数据时,我们还必须注意分页和限流问题,通过合适的策略确保每次请求都能稳定返回完整的数据集。 与此同时,转化这些获取的数据符合旺店通·企业奇门要求也是关键一步。两者之间可能存在格式差异,因此我们利用平台内置的数据映射功能,实现定制化转换。例如,将不同字段名进行匹配,以及处理必要的单位转换等,这样才能保证后续业务逻辑正常运作。 成功完成数据转换后,就可以调用 `wdt.vip.wms.stockinout.order.push` 接口将处理后的记录批量写入到旺店通系统。这一过程中,还需特别关注错误重试机制,以应对网络波动或突发异常情况;同时,实时监控及日志记录也必不可少,有助于及时发现并解决潜在问题。 综上所述,本案例旨在展示如何利用大规模、自动化且高效的方法来实现两个复杂系统间顺畅、安全的数据交互,并为未来类似项目建立可复制范式。在以下章节中,我们将详细探讨这一过程中的每一个技术细节与实际操作步骤。 ![企业微信与ERP系统接口开发配置](https://pic.qeasy.cloud/D36.png~tplv-syqr462i7n-qeasy.image) ### 用友BIP接口/yonbip/scm/othinrecord/list调用与数据加工 在数据集成生命周期的第一步中,调用源系统接口获取数据是至关重要的环节。本文将深入探讨如何通过轻易云数据集成平台调用用友BIP接口`/yonbip/scm/othinrecord/list`,并对获取的数据进行加工处理。 #### 接口调用配置 首先,我们需要配置API接口的元数据,以便正确地请求和处理数据。以下是元数据配置的关键部分: ```json { "api": "/yonbip/scm/othinrecord/list", "method": "POST", "number": "code", "id": "othInRecords_id", "idCheck": true, "formatResponse": [ {"old": "id", "new": "new_id", "format": "string"}, {"old": "warehouse", "new": "new_warehouse", "format": "string"}, {"old": "othInRecords_id", "new": "new_othInRecords_id", "format": "string"} ], ... } ``` 该配置指定了API的路径、请求方法以及响应数据的格式化规则。例如,将响应中的`id`字段重命名为`new_id`,并将其格式化为字符串类型。 #### 请求参数设置 为了有效地从用友BIP系统中获取所需的数据,我们需要设置请求参数。这些参数包括分页信息、查询条件等。以下是部分请求参数的定义: ```json { "request": [ {"field":"pageIndex","label":"页码","type":"string","describe":"例:1 默认值:1","value":"1"}, {"field":"pageSize","label":"每页数","type":"string","describe":"例:10 默认值:10","value":"500"}, {"field":"isSum","label":"查询表头","type":"string","describe":"例:false 默认值:false"}, {"field":"code","label":"单据编码","type":"string"}, {"field":"open_vouchdate_begin","label":"开始日期","type":"string"}, {"field":"open_vouchdate_end","label":"结束日期","type":"string"}, ... ] } ``` 这些参数允许我们灵活地控制API请求,例如通过设置`pageIndex`和`pageSize`来分页获取数据,通过设置日期范围来过滤特定时间段的数据。 #### 查询条件构建 除了基本的请求参数外,我们还可以通过复杂的查询条件来精确筛选数据。例如,可以使用以下条件来过滤掉某些特定组织的数据: ```json { "simpleVOs": { ... { "field3":{ "field":"org", "op":"neq", "value1":"1553156871271481351" } } } } ``` 该条件表示排除组织ID为`1553156871271481351`的数据。 #### 数据格式化与转换 在成功获取到原始数据后,我们需要对其进行格式化和转换,以便后续处理。例如,通过以下配置将原始字段名转换为新的字段名,并确保其格式正确: ```json { "formatResponse":[ {"old": "id", "new": "new_id", "format": "string"}, {"old": "warehouse", "new": "new_warehouse", "format": "string"}, {"old": "othInRecords_id", new: new_othInRecords_id, format: string} ] } ``` 这种格式化不仅提高了数据的一致性,还简化了后续的数据处理步骤。 #### 实际案例应用 假设我们需要从用友BIP系统中获取某个时间段内所有其他入库单,并将其对接到旺店通系统。我们可以按照上述步骤配置API调用和请求参数,然后通过轻易云平台实现自动化的数据提取和转换。 例如,设置查询条件以获取最近一次同步后的所有记录: ```json { ... { field2:{ field:"auditTime", op:"egt", value1:"{{LAST_SYNC_TIME|datetime}}" } } } ``` 该条件确保只获取自上次同步以来的新记录,从而避免重复处理。 通过这些步骤,我们可以高效地调用用友BIP接口,提取并加工所需的数据,为后续的集成工作打下坚实基础。 ![金蝶云星空API接口配置](https://pic.qeasy.cloud/S24.png~tplv-syqr462i7n-qeasy.image) ### 利用轻易云数据集成平台实现ETL转换并写入旺店通·企业奇门API接口 在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL(提取、转换、加载)处理,并将其转化为目标平台所能接收的格式。本文将深入探讨如何利用轻易云数据集成平台,将源平台的数据转换为旺店通·企业奇门API接口所需的格式,并最终写入目标平台。 #### 数据请求与清洗 在数据请求与清洗阶段,我们从源系统获取原始数据,并进行必要的数据清洗和预处理。这一步骤确保了后续的数据转换和写入过程能够顺利进行。假设我们已经完成了这一步,接下来我们重点关注如何将清洗后的数据进行ETL转换,并通过API接口写入目标系统。 #### 数据转换与写入 为了实现数据的无缝对接,我们需要根据旺店通·企业奇门API接口的要求,对源数据进行结构化处理。以下是具体的元数据配置: ```json { "api": "wdt.vip.wms.stockinout.order.push", "effect": "EXECUTE", "method": "POST", "idCheck": true, "operation": { "method": "merge", "field": "new_warehouse,code", "bodyName": "details", "bodySum": ["othInRecords_qty"], "header": ["new_warehouse", "omsInWarehouse", "code", "memo", "bustype_name"], "body": ["othInRecords_product_cCode", "othInRecords_qty", "othInRecords_memo"] }, "request": [ {"field": "api_outer_no", "label": "外部单号", "type": "string", "describe": "外部单号", "value": "{code}"}, {"field": "warehouse_no", "label": "仓库编码", "type": "string", "describe": "仓库编码", "value": "{omsInWarehouse}"}, {"field": "order_type", "label": "出入类型", "type": "string", "describe":"可选值:1(出库);2(入库)","value":"2"}, {"field":"remark","label":"备注","type":"string","describe":"备注","value":"YS{bustype_name}-{memo}"}, {"field":"auto_check","label":"是否审核","type":"string","describe":"是否审核","value":"1"}, {"field":"goods_list","label":"货品明细节点","type":"array","describe":"货品明细节点","value":"details", "children":[ {"field":"spec_no","label":"商家编码","type":"string","describe":"商家编码","value":"{{details.othInRecords_product_cCode}}"}, {"field":"num","label":"入库数量","type":"string","describe":"入库数量","value":"{{details.othInRecords_qty}}"}, {"field":"price","label":"原价","type":"string","describe":"原价"}, {"field":"remark","label":"备注","type":"string","value":"{{details.othInRecords_memo}}"} ] } ], ... } ``` #### 配置解析与应用 1. **API接口配置**: - `api`: 指定了要调用的旺店通·企业奇门API接口`wdt.vip.wms.stockinout.order.push`。 - `method`: 使用HTTP POST方法发送请求。 - `idCheck`: 启用ID检查以确保唯一性。 2. **操作配置**: - `method`: 使用合并操作(merge)。 - `field`: 指定合并字段`new_warehouse, code`。 - `bodyName`: 指定明细节点名称`details`。 - `bodySum`: 对数量字段`othInRecords_qty`进行求和操作。 - `header`和`body`: 定义了头部和明细部分需要包含的字段。 3. **请求参数**: - `api_outer_no`, `warehouse_no`, `order_type`, `remark`, `auto_check`, 和 `goods_list`:这些字段对应于API接口所需的参数,其中一些字段使用占位符从源数据中提取相应值。 4. **货品明细节点配置**: - 在`goods_list`节点下,定义了具体的子字段,如商家编码、入库数量、原价和备注等,这些子字段从源数据中的相应字段映射而来。 #### 实际应用案例 假设我们有以下源数据: ```json { “new_warehouse”: “WH001”, “omsInWarehouse”: “WMS001”, “code”: “ORD12345”, “memo”: “测试订单”, “bustype_name”: “普通入库”, “details”: [ { “othInRecords_product_cCode”: “P001”, “othInRecords_qty”: 10, “othInRecords_memo”: “无” }, { “othInRecords_product_cCode”: “P002”, “othInRecords_qty”: 20, “othInRecords_memo”: “无” } ] } ``` 经过ETL转换后,生成的请求体如下: ```json { “api_outer_no”: “ORD12345”, “warehouse_no”: “WMS001”, “order_type”: ”2”, ”remark“: ”YS普通入库-测试订单“, ”auto_check“: ”1“, ”goods_list“: [ { ”spec_no“: ”P001“, ”num“: ”10“, ”price“: “”, ”remark“: ”无“ }, { ”spec_no“: ”P002“, ”num“: ”20“, ”price“: “”, ”remark“: ”无“ } ] } ``` 通过上述配置和实际应用案例,我们可以看到,轻易云数据集成平台能够有效地将源平台的数据转换为旺店通·企业奇门API接口所需的格式,并通过HTTP POST方法成功写入目标系统。这种自动化和标准化的数据处理方式,大大提升了业务流程的效率和准确性。 ![用友BIP接口开发配置](https://pic.qeasy.cloud/T28.png~tplv-syqr462i7n-qeasy.image)