借助轻易云平台实现销售出库数据写入金蝶云星辰V2的ETL转换

  • 轻易云集成顾问-张妍琪
### 管易云·奇门数据集成到金蝶云星辰V2:销售出库案例分享 在企业信息化建设中,数据对接与集成是确保业务高效运转的关键步骤之一。本案例将重点介绍如何将管易云·奇门的数据无缝集成到金蝶云星辰V2系统,以实现销售出库环节的数据自动化处理。我们选用了轻易云数据集成平台作为桥梁,实现了两个系统间的稳定、高效数据流动。 首先,为确保从管易云·奇门获取交易发货信息(gy.erp.trade.deliverys.get API)时不漏单,我们采用了定时可靠抓取机制,并结合分页限流策略,从根本上应对大批量数据的传输需求。每次调用API接口都会记录日志及抓取状态,便于追踪和监控。同时,通过轻易云提供的实时监控功能,我们可以即时掌握每个环节的数据处理情况,有效避免遗漏和延迟。 写入部分则通过调用金蝶云星辰V2提供的/jdy/v2/scm/sal_out_bound API接口,将获得的数据快速、准确地写入目标系统。在此过程中,针对两者之间可能存在的数据格式差异,我们构建了一个灵活的数据映射规则,确保源端与目的端字段对应正确,无需手动干预即可完成复杂转换操作。此外,还设计了一套异常处理与错误重试机制,当发生网络波动或其他不可预期错误时,可以自动重新发送请求,提高整个流程的鲁棒性。 通过上述方案,不仅实现了高效、透明的数据交换,更为企业日常运营提供了有力支持,为后续更复杂场景下的信息交互打下坚实基础。 ![企业微信与OA系统接口开发配置](https://pic.qeasy.cloud/D23.png~tplv-syqr462i7n-qeasy.image) ### 调用源系统管易云·奇门接口gy.erp.trade.deliverys.get获取并加工数据 在数据集成生命周期的第一步中,调用源系统接口获取数据是至关重要的一环。本文将深入探讨如何通过轻易云数据集成平台调用管易云·奇门接口`gy.erp.trade.deliverys.get`,并对获取的数据进行初步加工处理。 #### 接口概述 接口`gy.erp.trade.deliverys.get`用于查询销售出库单信息。该接口支持多种查询条件和参数设置,能够灵活地满足不同业务场景的需求。以下是该接口的元数据配置: ```json { "api": "gy.erp.trade.deliverys.get", "effect": "QUERY", "method": "POST", "number": "code", "id": "code", "name": "code", "idCheck": true, "request": [ {"field": "start_modify_date", "label": "修改时间开始段", "type": "datetime", "describe": "修改时间开始段"}, {"field": "end_modify_date", "label": "修改时间结束段", "type": "datetime", "describe": "修改时间结束段"}, {"field": "del", "label": "是否返回已作废的", "type": "int", "describe": " 默认:0\n0:不返回已作废的单据\n1:返回已作废的单据"}, {"field": " delivery", " label": " 发货状态", " type": " int", " describe": " 0:未发货、发货中、发货失败\n1:发货成功", " value": " 1"}, {"field": " wms", " label": " 是否外仓单据", " type": " int", " describe": " 0:不是\n1: 是"}, {"field": " code", " label": " 单据编码", " type": " string", describe: 单据编码 }, { field: 仓库编码 , label: 仓库编码 , type: string , describe: 仓库编码 }, { field: 店铺编码 , label: 店铺编码 , type: string , describe: 店铺编码 }, { field: 平台单号 , label: 平台单号 , type: string , describe: 平台单号 }, { field: 物流单号 , label: 物流单号 , type: string , describe: 物流单号 }, { field: 创建时间开始段 , label: 创建时间开始段 , type: datetime , describe: 创建时间开始段}, {field: end_create, label: 创建时间结束段, type: datetime, describe:111}, {field:start_delivery_date,label:发货时间开始段,type:datetime,describe:发货时间开始段,value:"{{LAST_SYNC_TIME|datetime}}"}, {field:end_delivery_date,label:发货时间结束段,type:datetime,describe:发货时间结束段,value:"{{CURRENT_TIME|datetime}}"} ], otherRequest:[ {field:"page_no",label:"页码",type:"int",describe:"默认1",value:"1"}, {field:"page_size",label:"每页大小",type:"int",describe:"每页大小",value:"20"}, {field:"detailApi",label:"详情查询api",type:"object","children":[{"field":"api","label":"api","type":"string","value":"gy.erp.trade.deliverys.detail.get"}]} ], condition:[ [{field:"warehouse_code","logic":"neqv2","value":"011"}] ] } ``` #### 请求参数解析 在实际调用过程中,我们需要根据业务需求设置请求参数。以下是一些关键字段及其说明: - `start_modify_date` 和 `end_modify_date`: 用于指定查询的修改时间范围。 - `delivery`: 发货状态,固定值为 `1` 表示只查询发货成功的记录。 - `start_delivery_date` 和 `end_delivery_date`: 用于指定查询的发货时间范围,分别使用上次同步时间和当前时间作为默认值。 - `page_no` 和 `page_size`: 分页参数,用于控制每次请求的数据量。 #### 数据请求与清洗 在轻易云数据集成平台中,我们可以通过配置上述元数据来实现对接口的调用,并对返回的数据进行清洗和初步处理。例如,我们可以过滤掉仓库编码为“011”的记录,以确保数据符合业务要求。 以下是一个示例请求配置: ```json { api: 'gy.erp.trade.deliverys.get', method: 'POST', requestParams:{ start_modify_date:'2023-01-01T00:00:00', end_modify_date:'2023-12-31T23:59:59', delivery:'1', start_delivery_date:'{{LAST_SYNC_TIME|datetime}}', end_delivery_date:'{{CURRENT_TIME|datetime}}', page_no:'1', page_size:'20' } } ``` #### 数据转换与写入 在获取并清洗数据后,下一步是将数据转换为目标系统所需的格式,并写入目标数据库或系统。这一步通常涉及字段映射、格式转换等操作。在轻易云平台中,可以通过可视化界面方便地完成这些配置。 例如,将管易云返回的数据字段映射到目标系统字段: ```json { sourceField:'code', targetField:'order_code' }, { sourceField:'warehouse_code', targetField:'wh_code' } ``` 通过以上步骤,我们可以高效地实现从管易云·奇门接口获取销售出库单信息,并进行初步加工处理,为后续的数据转换与写入打下坚实基础。 ![金蝶与外部系统打通接口](https://pic.qeasy.cloud/S3.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台:将销售出库数据转换并写入金蝶云星辰V2 API接口 在轻易云数据集成平台中,将已经集成的源平台数据进行ETL转换,并转为目标平台金蝶云星辰V2 API接口所能够接收的格式,是一个关键步骤。本文将详细探讨如何利用元数据配置,将销售出库数据成功写入金蝶云星辰V2。 #### 数据请求与清洗 首先,我们需要确保从源系统获取的数据是完整且符合要求的。这一步通常涉及到对原始数据进行清洗和预处理,以便后续的转换工作能够顺利进行。 #### 数据转换与写入 接下来,我们进入本文的重点:如何将清洗后的数据通过ETL过程转换为金蝶云星辰V2 API接口所需的格式,并最终写入目标平台。 元数据配置如下: ```json { "api": "/jdy/v2/scm/sal_out_bound", "effect": "EXECUTE", "method": "POST", "number": "1", "id": "1", "name": "1", "idCheck": true, "request": [ { "field": "bill_date", "label": "出库日期,格式:2019-01-01", "type": "string", "describe": "出库日期,格式:2019-01-01", "value": "{create_date}" }, { "field": "bill_no", "label": "单据编号", "type": "string", "describe": "单据编号", "value": "{code}" }, { "field": "customer_number", ... } ] } ``` #### 配置解析 1. **API接口路径与请求方法**: - `api`: `/jdy/v2/scm/sal_out_bound` - `method`: `POST` 金蝶云星辰V2提供了一个POST接口用于接收销售出库的数据。 2. **字段映射**: - `bill_date`: 出库日期,对应源数据中的`{create_date}`。 - `bill_no`: 单据编号,对应源数据中的`{code}`。 - `customer_number`: 客户信息,对应源数据中的`{shop_code}`。 3. **商品分录(material_entity)**: 商品分录是一个数组,每个商品项包含多个字段,如下: - `material_number`: 商品编码,对应`{{details.item_code}}`。 - `qty`: 数量,对应`{{details.qty}}`。 - `all_amount`: 价税合计,对应`{{details.amount_after}}`。 - `stock_id`: 仓库代码,通过MongoDB查询获取,条件为仓库编码等于`{warehouse_code}`。 - `is_free`: 是否赠品,通过条件判断,如果价税合计为0,则为赠品,否则不是。 - `unit_id`: 单位,通过MongoDB查询获取,条件为商品编码等于`{{details.item_code}}`。 4. **固定字段**: - `billsource`: 固定传入值“APP”。 - `remark`: 单据备注,对应源数据中的`{seller_memo}`。 5. **自定义字段(custom_field)**: 自定义字段可以根据需求添加,这里示例中包括一个外部单号字段: - `custom_field__1__35ohxg2xiepvedyh`: 外部单号,对应源数据中的`{platform_code}`。 6. **反算单价**: - `reverse_condition_calculate`: 固定传入值true,表示是否反算单价。 #### 实现步骤 1. **获取并清洗源数据**: 从源系统中提取销售出库相关的数据,并进行必要的清洗操作,确保每个字段都符合要求。 2. **构建请求体**: 根据上述元数据配置,将清洗后的源数据映射到对应的目标字段。例如: ```json { ... { field: 'bill_date', value: '2023-10-05' }, { field: 'bill_no', value: 'SO123456' }, ... } ``` 3. **发送请求**: 将构建好的请求体通过HTTP POST方法发送到金蝶云星辰V2的API接口: ```javascript const axios = require('axios'); axios.post('/jdy/v2/scm/sal_out_bound', requestBody) .then(response => console.log(response.data)) .catch(error => console.error(error)); ``` 通过以上步骤,我们可以实现将销售出库的数据从源系统转换并成功写入到金蝶云星辰V2平台。此过程不仅提高了数据处理的效率,也确保了不同系统间的数据一致性和准确性。 ![打通金蝶云星空数据接口](https://pic.qeasy.cloud/T11.png~tplv-syqr462i7n-qeasy.image)