从聚水潭到畅捷通T+:实战销售数据的ETL及写入

  • 轻易云集成顾问-吕修远
### 聚水潭销售出库单到畅捷通销货单数据集成案例分析 在此次技术案例中,我们将探讨如何通过轻易云数据集成平台高效地实现聚水潭·奇门销售出库单的数据无缝对接到畅捷通T+的销货单模块。具体方案为“聚水潭销售出库单-->畅捷通销货单(零售客户)不合并写入--ikk”。本文重点涵盖API接口调用、分页和限流处理、数据格式转换以及异常处理等关键技术细节。 首先,确保从聚水潭·奇门准确抓取每日的销售出库单至关重要。在这个过程中,调用`jushuitan.saleout.list.query`接口可以实时获取订单列表,并通过定时任务调度机制保证数据按时采集。同时,为避免漏单情况发生,还需设计一个可靠的错误重试机制,应对网络波动和偶发性请求失败。此外,通过实时监控与日志记录功能,可以有效捕捉和排查任何异常情况,进一步提升系统的健壮性。 当大量订单数据成功抓取后,需要快速且批量地将其写入到畅捷通T+系统中。这里使用的是`/tplus/api/v2/saleDelivery/Create`接口,该API要求严格的数据格式匹配。因此,在处理过程中的一大难点在于如何应对两者之间的数据结构差异。例如,字段名称、日期格式以及特殊符号都需要进行精准映射,以确保目标系统能够正确解析和存储这些信息。针对这一问题,自定义一套适配规则显得尤为必要,这不仅能提高初始开发效率,也便于后续维护。 最后,由于涉及跨平台大规模数据传输,在设计时还必须充分考虑分页和限流策略。这方面主要是为了防止因一次性请求过多导致接口响应超时或触发目标系统限流保护,从而影响整体流程稳定性。在此基础上,增加相应的批次控制与并行处理机制,可以进一步优化写入速度,实现更高效的数据同步。 这只是整个集成方案的一部分内容,通过这些核心环节的优化配置,我们实现了聚水潭·奇门与畅捷通T+之间高效、稳定、安全的数据交互。不仅保障了业务流程顺利衔接,也为企业数字化管理提供了强有力支持。 ![电商OMS与WMS系统接口开发配置](https://pic.qeasy.cloud/D6.png~tplv-syqr462i7n-qeasy.image) ### 调用聚水潭·奇门接口获取并加工数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用聚水潭·奇门接口`jushuitan.saleout.list.query`,并对获取的数据进行初步加工。 #### 接口配置与请求参数 首先,我们需要配置API接口的元数据。根据提供的元数据配置,`jushuitan.saleout.list.query`接口使用POST方法进行数据查询,主要参数如下: - `page_index`: 页数,从第一页开始,默认值为1。 - `page_size`: 每页行数,默认25,最大25,这里设置为100。 - `start_time`: 修改开始时间,使用占位符`{{LAST_SYNC_TIME|datetime}}`表示上次同步时间。 - `end_time`: 修改结束时间,使用占位符`{{CURRENT_TIME|datetime}}`表示当前时间。 - `status`: 单据状态,这里设置为已出库(Confirmed)。 - `date_type`: 时间类型,这里设置为2,即出库时间。 - `shop_id`: 店铺编号,这里固定为16288585。 这些参数确保了我们能够精确地获取所需的数据。 #### 数据请求与清洗 在发送请求之前,我们需要确保所有必需参数都已正确填充,并且符合API要求。以下是一个示例请求体: ```json { "page_index": "1", "page_size": "100", "start_time": "{{LAST_SYNC_TIME|datetime}}", "end_time": "{{CURRENT_TIME|datetime}}", "status": "Confirmed", "date_type": 2, "shop_id": "16288585" } ``` 发送请求后,我们将收到一个包含销售出库单列表的响应。为了便于后续处理,我们需要对响应数据进行初步清洗和格式化。例如,将字段`io_date`重命名为`io_date_new`并转换其日期格式。 #### 数据过滤与条件检查 根据元数据配置中的条件部分,我们需要对返回的数据进行过滤。具体条件如下: - `items.qty > 0`: 确保每个销售出库单中的商品数量大于0。 - `labels not in 特殊单`: 排除标签为“特殊单”的记录。 这些条件可以通过编写相应的过滤逻辑来实现,例如: ```python def filter_data(data): filtered_data = [] for record in data: if record['items']['qty'] > 0 and '特殊单' not in record['labels']: filtered_data.append(record) return filtered_data ``` #### 数据转换与写入准备 在完成数据清洗和过滤后,我们需要对数据进行必要的转换,以便写入目标系统。在这个过程中,可以利用平台提供的自动填充功能(autoFillResponse),确保所有必需字段都已正确映射和填充。 例如,将字段`io_date_new`格式化为目标系统所需的日期格式: ```python from datetime import datetime def format_date(date_str): return datetime.strptime(date_str, '%Y-%m-%d').strftime('%Y/%m/%d') for record in filtered_data: record['io_date_new'] = format_date(record['io_date']) ``` 经过以上步骤处理后的数据即可准备写入目标系统,实现从聚水潭销售出库单到畅捷通销货单(零售客户)的无缝对接。 通过上述过程,我们展示了如何利用轻易云数据集成平台高效地调用聚水潭·奇门接口获取并加工数据,为后续的数据转换与写入奠定坚实基础。 ![打通金蝶云星空数据接口](https://pic.qeasy.cloud/S14.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将聚水潭销售出库单转换并写入畅捷通T+API接口 在数据集成生命周期的第二阶段,重点是将已集成的源平台数据进行ETL转换,并转为目标平台能够接收的格式。本文将详细探讨如何使用轻易云数据集成平台,将聚水潭销售出库单的数据转换为畅捷通T+API接口所能接收的销货单格式,并最终写入目标平台。 #### API接口与元数据配置 在本案例中,我们需要调用畅捷通T+的API接口`/tplus/api/v2/saleDelivery/Create`,通过POST方法将转换后的数据写入目标系统。以下是元数据配置的具体内容: ```json { "api": "/tplus/api/v2/saleDelivery/Create", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ {"field": "Code", "label": "单据编码", "type": "string", "value": "{io_id}"}, {"field": "VoucherDate", "label": "单据日期", "type": "string", "describe": "单据日期;默认系统日期", "value": "{io_date_new}"}, {"field": "ExternalCode", "label": "外部系统单据编码", "type": "string", "describe": "外部系统单据编码,编码必须唯一,且此字段不为空", "value": "{io_id}+1"}, {"field": "BusinessType", "label": "业务类型", "type": "string", "describe": "", "value":"15","parser":{"name":"ConvertObjectParser","params":"Code"}}, {"field": "Customer", "label":"客户","type":"string","describe":"","value":"_findCollection find short_name from 9d1225a1-9728-3799-8274-ccee890596fc where shop_name={shop_name}","parser":{"name":"ConvertObjectParser","params":"Code"}}, {"field":"Memo","label":"备注","type":"string","describe":"","value":"{remark}"}, {"field":"InvoiceType","label":"票据类型","type":"string","value":"02","parser":{"name":"ConvertObjectParser","params":"Code"}}, {"field":"Warehouse","label":"仓库","type":"string","value":"1","parser":{"name":"ConvertObjectParser","params":"Code"}}, {"field":"IsAutoGenerateSaleOut","label":"是否自动销售出库单","type":"string","value":"false"}, {"field":"SaleDeliveryDetails","label":"销货单明细","type":"array","describe":"","value":"","children":[ {"field":"Inventory","label":"存货","type":"string","describe":"","value":"","parser":{"name":"ConvertObjectParser","params":["sku_id"]}}, {"field":"Unit" ,"label" :"存货计量单位" ,"type" :"string" ,"value" :"_findCollection find unit from 034a8df4-18b0-3b85-b944-c9fbd5507677 where sku_id={{items.sku_id}} ","parser" :{"name" :"ConvertObjectParser" ,"params" :"Name"} }, {"field" :"Quantity" ,"label" :"数量" ,"type" :"string" ,"value" :"{{items.qty}}"}, {"field" :"OrigTaxPrice" ,"label" :"含税单价" ,"type" :"string" ,"value ":"{{items.sale_price}}"}, {"field ":"OrigTaxAmount ","label ":"含税金额 ","type ":"string ","value ":"{{items.sale_amount}}"}, {"field ":"DetailMemo ","label ":"备注 ","type ":"string ","value ":"{shop_buyer_id}"} ]} ], otherRequest":[{"field ":"dataKey ","label ":"dataKey ","type ":"string ","describe ": "" , value: dto }] } ``` #### 数据请求与清洗 在这个阶段,我们从聚水潭获取销售出库单数据。假设我们已经成功获取了这些数据,并对其进行了初步清洗和整理,使其符合我们的需求。 #### 数据转换与写入 1. **基本字段映射**: - `Code`(单据编码):直接映射为聚水潭的`io_id`。 - `VoucherDate`(单据日期):映射为聚水潭的`io_date_new`。 - `ExternalCode`(外部系统单据编码):使用聚水潭的`io_id`并加上一个后缀,如“+1”,以确保唯一性。 2. **业务类型、客户、票据类型、仓库等字段**: - `BusinessType`:固定值为“15”,通过`ConvertObjectParser`解析。 - `Customer`:通过查询映射,将店铺名称转换为客户短名称。 - `InvoiceType`:固定值为“02”。 - `Warehouse`:固定值为“1”。 3. **销货单明细**: - 对于每个明细项,需要分别处理存货、计量单位、数量、含税单价和含税金额等字段。 - `Inventory`(存货):通过SKU ID查询并转换。 - `Unit`(计量单位):根据SKU ID查找对应的计量单位。 - `Quantity`(数量)、`OrigTaxPrice`(含税单价)、`OrigTaxAmount`(含税金额)直接从源数据中获取并映射。 4. **其他配置**: - 设置是否自动生成销售出库单为“false”。 - 配置其他必要字段如备注等。 #### 实际操作步骤 1. **配置元数据**: 将上述元数据配置导入轻易云数据集成平台,确保每个字段都正确映射和解析。 2. **执行ETL流程**: 启动ETL流程,将清洗后的聚水潭销售出库单数据按配置进行转换,并通过API接口写入畅捷通T+系统。 3. **监控与调试**: 实时监控ETL过程中的日志和状态,确保每一步都执行正确。如果出现错误,根据日志信息进行调试和修正。 通过以上步骤,我们可以高效地将聚水潭销售出库单的数据转换并写入畅捷通T+系统,实现不同系统间的数据无缝对接。这不仅提高了业务透明度和效率,也确保了数据的一致性和准确性。 ![钉钉与WMS系统接口开发配置](https://pic.qeasy.cloud/T10.png~tplv-syqr462i7n-qeasy.image)