轻易云平台将聚水潭数据转换并写入畅捷通T+的实践

  • 轻易云集成顾问-何语琴
### 聚水潭·奇门数据集成到畅捷通T+的实践案例分享 在电商和企业管理系统日益复杂化的今天,实现不同平台间的数据无缝对接成为企业提升运营效率的重要课题。本文将详细介绍如何通过轻易云数据集成平台,将聚水潭·奇门的销售出库单(jushuitan.saleout.list.query接口)高效、稳定地集成至畅捷通T+(/tplus/api/v2/saleDelivery/Create接口),实现业务流程的一体化。 此次案例运行方案命名为“聚水潭-销售出库单--->畅捷通-销货单-平台-OK”。以下是该系统对接中涉及到的关键技术和解决方案: 首先,确保不漏单是任何一个数据集成项目的基础。在聚水潭·奇门获取销售出库单时,我们采用定时可靠抓取机制,通过调用API `jushuitan.saleout.list.query` 定期拉取最新的数据。同时,为了处理分页和限流问题,我们设计了专门的逻辑来分批次进行请求,并且在每次请求后,根据响应中的分页信息继续抓取,直至所有记录都被获取完毕。 其次,对于大量数据快速写入到畅捷通T+,我们使用并行处理和批量提交策略,以提高整体写入效率。这一过程中,同样需要注意两者之间的数据格式差异。为了做到这一点,我们进行了自定义的数据映射转换,使得从聚水潭·奇门拉取的数据能够顺利匹配到畅捷通T+所需字段形式上,对照API `/tplus/api/v2/saleDelivery/Create` 的要求逐一调整。 此外,在整个操作过程中实时监控与日志记录是必不可少的一环。当执行每一步操作,包括数据获取、解析、转换及上传等,都有详细的日志记录,这不仅有助于实时监测任务进度,还可以迅速定位并解决出现的问题。从而增强系统整体稳定性以及错误重试机制,实现异常情况下依旧能保障核心业务连续运作。 最后,在具体实施过程中,还特别关注到了大规模接口调用时可能遇见的问题,如网络连接超时或服务器返回错误等情况。针对这些常见挑战,部署了完善的异常处理与重试机制,从而保障整个流程达到预期效果,不会因为个别失败影响全局任务进展。 本系列文章将从以上几个方面深入探讨各个技术细节,希望为读者提供有益参考,无论是在类似项目中还是自身系统优化中,都能够有所借鉴。 ![如何对接用友BIP接口](https://pic.qeasy.cloud/D8.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台调用聚水潭·奇门接口获取并加工数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何使用轻易云数据集成平台调用聚水潭·奇门接口`jushuitan.saleout.list.query`来获取并加工销售出库单数据。 #### 接口概述 聚水潭·奇门接口`jushuitan.saleout.list.query`用于查询销售出库单列表。该接口采用POST请求方式,支持分页查询,并允许根据多种条件进行过滤。以下是元数据配置的关键字段及其描述: - **api**: `jushuitan.saleout.list.query` - **method**: `POST` - **number**: `io_id` - **id**: `io_id` - **name**: `io_id` - **idCheck**: `true` #### 请求参数配置 请求参数包括分页信息、时间范围和单据状态等。以下是具体的请求参数配置: 1. **page_index** (页数): 从第一页开始,默认值为1。 2. **page_size** (每页行数): 每页最多25条记录,默认值为100。 3. **start_time** (修改开始时间): 使用占位符`{{LAST_SYNC_TIME|datetime}}`表示上次同步时间。 4. **end_time** (修改结束时间): 使用占位符`{{CURRENT_TIME|datetime}}`表示当前时间。 5. **status** (单据状态): 固定值为`Confirmed`,表示已出库的单据。 6. **date_type** (时间类型): 固定值为2,表示按出库时间查询。 示例请求体如下: ```json { "page_index": "1", "page_size": "100", "start_time": "{{LAST_SYNC_TIME|datetime}}", "end_time": "{{CURRENT_TIME|datetime}}", "status": "Confirmed", "date_type": 2 } ``` #### 数据清洗与转换 在获取到原始数据后,需要对数据进行清洗和转换,以便后续处理和写入目标系统。在轻易云平台中,可以通过配置自动填充响应(autoFillResponse)和条件过滤(condition)来实现这一过程。 ##### 自动填充响应 自动填充响应功能可以帮助我们将API返回的数据直接映射到目标字段中。例如: ```json "autoFillResponse": true ``` ##### 条件过滤 条件过滤用于排除不符合条件的数据。例如,我们可以设置以下条件来排除特定店铺ID的数据: ```json "condition": [ [ { "field": "shop_id", "logic": "notin", "value": "10315064,14434207,11316238" } ] ] ``` #### 异常处理与补救机制 为了确保数据集成过程的稳定性和连续性,我们需要配置异常处理与补救机制。在轻易云平台中,可以通过定时任务(crontab)和接管请求(takeOverRequest)来实现。 ##### 定时任务 定时任务用于定期检查并补救可能遗漏的数据。例如,每三小时执行一次补救任务: ```json "omissionRemedy": { "crontab": "2 */3 * * *" } ``` ##### 接管请求 接管请求用于在异常情况下重新发起请求,以确保数据完整性。例如,将开始时间设置为当前时间前一天: ```json "takeOverRequest": [ { "field": "start_time", "value": "_function FROM_UNIXTIME( unix_timestamp() -86400 , '%Y-%m-%d %H:%i:%s' )", "type": "string" } ] ``` 通过上述配置,我们可以高效地调用聚水潭·奇门接口获取销售出库单数据,并对其进行清洗和转换,为后续的数据处理和写入打下坚实基础。 ![打通用友BIP数据接口](https://pic.qeasy.cloud/S30.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将销售出库单转换为畅捷通T+销货单的技术案例 在数据集成过程中,ETL(提取、转换、加载)是关键步骤。本文将详细介绍如何使用轻易云数据集成平台,将聚水潭的销售出库单数据转换为畅捷通T+系统能够接收的销货单格式,并通过API接口写入目标平台。 #### API接口配置 首先,我们需要了解畅捷通T+的API接口配置。根据提供的元数据配置,目标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"}, {"field": "VoucherDate", "label": "单据日期", "type": "string", "describe": "单据日期;默认系统日期", "value": "{io_date}"}, {"field": "ExternalCode", "label": "外部系统单据编码", "type": "string", "describe": "外部系统单据编码,编码必须唯一,且此字段不为空", "value": "{io_id}"}, {"field": "BusinessType", "label": "业务类型", "type": "string", "describe": "业务类型,BusiTypeDTO对象;", "value":"15","parser":{"name":"ConvertObjectParser","params":"Code"}}, {"field": "Customer", "label": "客户", ... ``` #### 数据字段解析与转换 1. **单据编码与日期**: - `Code`:直接从源数据中获取。 - `VoucherDate`:默认使用系统日期,通过变量 `{io_date}` 填充。 2. **外部系统单据编码**: - `ExternalCode`:确保该字段唯一且不为空,通过变量 `{io_id}` 填充。 3. **业务类型**: - `BusinessType`:固定值 `15`,通过 `ConvertObjectParser` 转换。 4. **客户信息**: - `Customer`:通过变量 `{shop_id}` 填充,并使用 `ConvertObjectParser` 转换。 5. **备注与票据类型**: - `Memo`:通过变量 `{so_id}` 填充。 - `InvoiceType`:固定值 `01`,通过 `ConvertObjectParser` 转换。 6. **仓库信息**: - `Warehouse`:通过变量 `{wms_co_id}` 填充,并使用 `ConvertObjectParser` 转换,映射到目标仓库ID。 7. **动态属性**: - `DynamicPropertyKeys` 和 `DynamicPropertyValues` 分别通过字符串转数组解析器进行处理,以便传递多个自定义属性。 8. **币别**: - `Currency`:根据条件判断,如果是人民币则转换为RMB,否则保持原值,通过 `ConvertObjectParser` 转换。 9. **销货单明细**: - 包含多个子字段,如存货、计量单位、数量和含税金额等。每个子字段都需要从源数据中提取并进行相应转换。例如: ```json { ... {"field":"Inventory","label":"存货","type":"string","describe":"_mongoQuery ...","value":"{{items.sku_id}}","parser":{"name":"ConvertObjectParser","params":"Code"}}, {"field":"Unit","label":"存货计量单位","type":"string","value":"_findCollection ... where Code={{items.sku_id}}","parser":{"name":"ConvertObjectParser","params":"Code"}}, ... } ``` #### 数据写入目标平台 完成所有字段解析与转换后,我们将生成的数据结构提交到畅捷通T+ API接口。确保请求体符合API要求的JSON格式,并包含所有必要字段和对应值。以下是一个简化示例: ```json { ... { ... { ... {"Code":"1234567890"}, {"VoucherDate":"2023-10-01"}, {"ExternalCode":"EX1234567890"}, ... {"SaleDeliveryDetails":[ { ... {"Inventory":"SKU12345"}, {"Unit":"PCS"}, {"Quantity":"100"}, ... } ]} } } } ``` #### 实践中的注意事项 1. **字段映射与验证**:确保所有字段正确映射,并进行必要的数据验证,以避免提交无效或错误的数据。 2. **错误处理机制**:在实际操作中,需要设置完善的错误处理机制,以便及时捕获和处理可能出现的问题。 3. **性能优化**:对于大批量数据处理,可以考虑批量提交和异步处理,以提高效率和响应速度。 通过上述步骤,我们可以高效地将聚水潭销售出库单数据转换为畅捷通T+销货单格式,并成功写入目标平台。这不仅提升了数据处理效率,还确保了数据的一致性和准确性。 ![数据集成平台可视化配置API接口](https://pic.qeasy.cloud/T28.png~tplv-syqr462i7n-qeasy.image)