数据集成与ETL转换:从聚水潭到金蝶云星辰V2

  • 轻易云集成顾问-黄宏棵
### 聚水潭·奇门到金蝶云星辰V2的销售退货单数据集成 在实际业务操作中,企业往往需要将多个系统的数据进行有效整合,以确保信息流的一致性和准确性。本文将介绍如何通过轻易云数据集成平台,实现聚水潭·奇门的销售退货单数据无缝映射到金蝶云星辰V2。此次集成任务旨在利用API接口技术,将来自聚水潭·奇门的jushuitan.refund.list.query接口获取的数据,精准高效地写入至金蝶云星辰V2的/jdy/v2/scm/sal_in_bound接口。 #### 数据抓取和处理 首先,我们需要从聚水潭·奇门获取待处理的销售退货单列表。通过调用其jushuitan.refund.list.query API,我们能实时抓取相关数据。这一过程中,需要特别注意分页与限流机制,以确保在大量数据请求时不遗漏任何订单并避免对API服务造成过大压力。 ```json { "api_name": "jushuitan.refund.list.query", "timestamp": "2023-10-01T12:34:56Z", ... } ``` 这一阶段的重要步骤包括: 1. 设置定时任务以周期性调度该API,并可靠地抓取当前所有待处理订单。 2. 实现分页处理逻辑,通过递增查询条件参数来迭代获取全量数据。 3. 应用限流策略,例如每分钟最大请求次数限制,从而避免触发服务器端保护机制。 #### 数据格式转换与映射 由于聚水潭·奇门与金蝶云星辰V2之间的数据结构存在差异,必须进行必要的数据格式转换。在此环节,定制化的字段映射规则尤为关键,可以借助轻易云提供的平台功能实现具体字段间的一一对应关系。 例如: 聚水潭返回的数据格式可能如下: ```json { "refund_id": "123456", "order_number": "78901234", ... } ``` 而对于目标系统——金蝶云星辰所需提交的数据格式则类似于: ```json { "id": "", ... } ``` 这种情况下,需要配置相应转化逻辑,将`refund_id` 映射为 `id` 等操作。此外,还要考虑到可能出现的不一致值,并设计适当异常处理与错误重试机制,以保证整个流程执行稳定且顺畅。 #### 快速批量写入与监控 接下来是将转换后大量数据信息快速导入至金蝶云星辰中。利用他们提供的/jdy/v2/scm/sal_in_bound API,可以实现批量精准写入。同时 ![用友与外部系统接口集成开发](https://pic.qeasy.cloud/D10.png~tplv-syqr462i7n-qeasy.image) ### 调用聚水潭·奇门接口获取并加工数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用聚水潭·奇门接口 `jushuitan.refund.list.query` 获取并加工数据。 #### 接口配置与请求参数 首先,我们需要配置接口的元数据,以确保请求能够正确发送并接收响应。以下是 `jushuitan.refund.list.query` 接口的元数据配置: ```json { "api": "jushuitan.refund.list.query", "effect": "QUERY", "method": "POST", "number": "as_id", "id": "as_id", "name": "as_id", "idCheck": true, "formatResponse": [ {"format": "string", "old": "as_id", "new": "as_id_new"}, {"format": "string", "old": "type", "new": "type_new"} ], "request": [ {"field": "page_index", "label": "第几页", "type": "int", "describe": "从第一页开始,默认1", "value":"1"}, {"field": "page_size", "label":"每页多少条", "type":"int", "describe":"默认30,最大50","value":"100"}, {"field":"start_time","label":"修改起始时间","type":"string", "describe":"起始时间,和结束时间必须同时存在,时间间隔不能超过七天,与线上单号不能同时为空","value":"{{LAST_SYNC_TIME|datetime}}"}, {"field":"end_time","label":"修改结束时间","type":"string", "describe":"结束时间,和起始时间必须同时存在,时间间隔不能超过七天,与线上单号不能同时为空","value":"{{CURRENT_TIME|datetime}}"}, {"field":"date_type","label":"时间类型","type":"int", "describe":"修改时间:0 ; 创建时间:1; 确认时间:2;非必填,默认0"}, {"field":"type","label":"售后类型","type":"string", "describe":"普通退货,其它,拒收退货,仅退款,投诉,补发,换货,维修"}, {"field":"status","label":"售后单状态","type":"string", "describe":"(WaitConfirm:待确认,Confirmed:已确认,Cancelled:作废,Merged:被合并)"}, {"field":"good_status","label":"货物状态","type":"string", "describe":"(BUYER_NOT_RECEIVED:买家未收到货,BUYER_RECEIVED:买家已收到货,BUYER_RETURNED_GOODS:买家已退货,SELLER_RECEIVED:卖家已收到退货)","value":"SELLER_RECEIVED"}, {"field":"wms_co_id","label":"分仓编号","type":"string","value":"12851795"} ], ... } ``` #### 请求参数详解 - **page_index** 和 **page_size**:用于分页查询。`page_index` 从第一页开始,默认值为1;`page_size` 默认值为30,但最大值可设置为50。 - **start_time** 和 **end_time**:用于指定查询的时间范围。两者必须同时存在且间隔不超过七天。 - **date_type**:指定时间类型,可选值包括修改时间、创建时间和确认时间。 - **type**:售后类型,如普通退货、拒收退货等。 - **status**:售后单状态,如待确认、已确认等。 - **good_status**:货物状态,此处默认值为“SELLER_RECEIVED”表示卖家已收到退货。 - **wms_co_id**:分仓编号,用于指定具体仓库。 #### 数据处理与格式化 在接收到响应数据后,需要对数据进行格式化处理,以便后续的数据转换与写入。元数据配置中的 `formatResponse` 字段定义了需要格式化的字段: ```json [ {"format": "string", "old": "as_id", "new": "as_id_new"}, {"format": "string", "old": "type", "new": "type_new"} ] ``` 例如,将原始字段 `as_id` 格式化为新的字段 `as_id_new`。 #### 自动填充与条件过滤 为了简化操作,我们可以启用自动填充响应功能 (`autoFillResponse`) 和条件过滤 (`condition`): ```json { ... autoFillResponse: true, condition_bk: [[{"field": 'items.type', 'logic': 'in', 'value': '退货,换货'}]], ... } ``` 这确保了只有符合条件的数据会被进一步处理,从而提高效率。 #### 异常处理与补救措施 在实际操作中,不可避免地会遇到异常情况。我们可以通过设置定时任务 (`crontab`) 和接管请求 (`takeOverRequest`) 来进行异常处理和补救: ```json { ... omissionRemedy: { crontab: '2 */3 * * *', takeOverRequest: [ { field: 'start_time', value: "_function FROM_UNIXTIME( unix_timestamp() -86400 , '%Y-%m-%d %H:%i:%s' )", type: 'string', label: '接管字段' } ] } } ``` 定时任务每三小时执行一次,并通过函数计算前一天的开始时间来接管请求。 通过上述步骤,我们可以高效地调用聚水潭·奇门接口获取并加工数据,为后续的数据转换与写入打下坚实基础。这一过程不仅确保了数据的一致性和准确性,还极大提升了业务透明度和效率。 ![钉钉与WMS系统接口开发配置](https://pic.qeasy.cloud/S1.png~tplv-syqr462i7n-qeasy.image) ### 数据集成与ETL转换:从聚水潭到金蝶云星辰V2 在数据集成过程中,将源平台的数据转换为目标平台所能接受的格式是关键步骤。本文将详细探讨如何使用轻易云数据集成平台,将聚水潭的销售退货单数据转换并写入金蝶云星辰V2 API接口。 #### 1. API接口配置 首先,我们需要配置金蝶云星辰V2的API接口。根据提供的元数据配置,目标API为`/jdy/v2/scm/sal_in_bound`,请求方法为POST。以下是主要字段及其映射关系: - `bill_date`(入库日期):从源数据中的`items.receive_date`字段获取,格式化为字符串。 - `customer_number`(客户):直接映射为`shop_id`。 - `bill_no`(单据编码):直接映射为`as_id`。 - `custom_field`(自定义字段):包含两个子字段: - `custom_field__1__3u903095ncrq`(聚水潭线上单号):映射为`so_id`。 - `custom_field__1__3wingl0wgyeb`(售后类型):映射为`type`。 - `operation_key`(操作类型):固定值为'audit'。 - `remark`(备注):直接映射为`remark`。 - `bill_dis_amount`(单折扣额):通过函数判断,如果'free_amount'大于0,则取其值,否则取0。 #### 2. 商品分录字段配置 商品分录是一个数组,每个元素代表一个商品条目。主要字段及其映射如下: - `is_free`(是否赠品):通过函数判断,如果'items.amount'等于0或'type_new'等于'换货',则返回true,否则返回false。 - `material_number`(商品id):映射为'sku_id'。 - `price`(单价):直接从源数据中获取。 - `qty`(数量):映射为'r_qty'。 - `stock_number`(仓库id):通过函数判断,如果'wh_id'等于1,则返回'wms_co_id',否则返回'wms_co_id-wh_id'。 - `tax_price`(含税单价):通过函数判断,如果'type_new'等于'换货',则返回0,否则返回'items.price'。 - `unit_id`(单位id):固定值4。 此外,每个商品条目还包含一个自定义字段: - `custom_entity_field__1__3wqp66pdyh442k`(进仓时间):映射为'receive_date'。 #### 3. 数据转换与写入 在完成上述字段配置后,我们可以利用轻易云数据集成平台的ETL功能,将源数据进行清洗和转换,并最终写入金蝶云星辰V2平台。以下是一个示例代码片段,展示了如何进行这些操作: ```json { "api": "/jdy/v2/scm/sal_in_bound", "method": "POST", "request": { "bill_date": "{{items.receive_date}}", "customer_number": "{shop_id}", "bill_no": "{as_id}", "custom_field": { "custom_field__1__3u903095ncrq": "{so_id}", "custom_field__1__3wingl0wgyeb": "{type}" }, "operation_key": "audit", "remark": "{remark}", "bill_dis_amount": "_function IF('{free_amount}' > 0 , '{free_amount}' , 0 )", "material_entity": [ { "is_free": "_function case when '{{items.amount}}' = 0 or '{type_new}' = '换货' then 'true' else 'false' end", "material_number": "{{items.sku_id}}", "price": "{{items.price}}", "qty": "{{items.r_qty}}", "stock_number": "_function CASE '{wh_id}' WHEN 1 THEN '{wms_co_id}' ELSE '{wms_co_id}-{wh_id}' END", "tax_price": "_function CASE '{type_new}' WHEN '换货' THEN '0' ELSE '{{items.price}}' END", "unit_id": "4", "custom_entity_field": { "custom_entity_field__1__3wqp66pdyh442k": "{{items.receive_date}}" } } ] } } ``` 通过上述配置,我们实现了从聚水潭到金蝶云星辰V2的销售退货单数据无缝对接。在实际应用中,可以根据具体业务需求调整和扩展此配置,以满足更多复杂场景的需求。 ![用友与CRM系统接口开发配置](https://pic.qeasy.cloud/T22.png~tplv-syqr462i7n-qeasy.image)