使用轻易云将聚水潭其他入库单数据转入畅捷通T+的步骤

  • 轻易云集成顾问-黄宏棵
### 案例分享:聚水潭数据集成到畅捷通T+的技术实施 在本案例中,我们将详细探讨如何通过API接口实现将聚水潭的其他入库单数据无缝集成至畅捷通T+系统,确保数据信息准确无误,同时大幅提升处理效率。我们的方案名称为“聚水潭-其他入库单-->畅捷通-其他入库单”,其核心涉及多个关键步骤与技术细节。 首先,通过调用聚水潭提供的数据接口`/open/other/inout/query`,我们能够定时、可靠地抓取最新的其他入库单数据。为了应对可能存在的大量数据,我们设计了一套分页机制,确保在处理限流问题时不会遗漏任何订单。 抓取到原始数据后,需要解决的是两系统之间的数据格式差异。这一过程会用到轻易云提供的数据转换工具,将聚水潭的JSON格式调整适配为畅捷通T+要求的结构。在这个过程中,我们特别关注了字段映射和类型转换的问题,以确保写入环节顺利进行。 接下来,通过调用另一个API接口 `/tplus/api/v2/otherReceive/Create` ,我们实现了批量向畅捷通T+快速写入已整理好的数据,此操作不仅提高了整体效率,还减少了每次请求的开销。尽管如此,在实际运行中难免出现异常情况。因此我们加入了错误重试机制,如果某个输入失败,会自动记录日志并尝试重新提交。 实时监控与日志记录同样是不可或缺的一部分,它帮助开发人员迅速定位问题,并随时掌握整个流程中的各个环节状态。从而保障整个集成过程透明、高效且可追踪。 通过本文所述的方法与策略,为企业客户搭建更加智能化、自动化的数据桥梁,让不同信息系统间协作变得更简单高效。 ![打通钉钉数据接口](https://pic.qeasy.cloud/D7.png~tplv-syqr462i7n-qeasy.image) ### 调用聚水潭接口/open/other/inout/query获取并加工数据 在数据集成生命周期的第一步中,调用源系统接口获取数据是至关重要的。本文将深入探讨如何通过轻易云数据集成平台调用聚水潭接口`/open/other/inout/query`,并对获取的数据进行初步加工。 #### 接口配置与请求参数 首先,我们需要配置元数据以便正确调用聚水潭接口。以下是元数据配置的详细内容: ```json { "api": "/open/other/inout/query", "effect": "QUERY", "method": "POST", "number": "io_id", "id": "io_id", "idCheck": true, "request": [ {"field":"modified_begin","label":"修改起始时间","type":"datetime","value":"{{MINUTE_AGO_20|datetime}}"}, {"field":"modified_end","label":"修改结束时间","type":"datetime","value":"{{CURRENT_TIME|datetime}}"}, {"field":"status","label":"单据状态","type":"string","value":"Confirmed"}, {"field":"page_index","label":"第几页","type":"string","value":"1"}, {"field":"page_size","label":"每页多少条","type":"string","value":"30"}, {"field":"date_type","label":"抓取时间类型","type":"string","describe":"0:修改时间,modified。 2:出入库时间 io_date,未传入时默认为0"} ], "autoFillResponse": true, "condition_bk": [ [{"field": "type", "logic": "notin", "value": "其它出库"}] ], "condition": [ [{"field": "type", "logic": "notin", "value": "其它出库"}, {"field": "wms_co_id", "logic": "neqv2", "value": "10406603"}] ], "omissionRemedy": { "crontab": "2 */3 * * *", "takeOverRequest":[ {"field":"modified_begin","value":"_function FROM_UNIXTIME( unix_timestamp() -86400 , '%Y-%m-%d %H:%i:%s' )","type":"string","label":"接管字段"} ] } } ``` #### 请求参数详解 1. **modified_begin** 和 **modified_end**:用于指定查询的时间范围。`{{MINUTE_AGO_20|datetime}}`表示从当前时间前20分钟开始,`{{CURRENT_TIME|datetime}}`表示当前时间。 2. **status**:单据状态,这里固定为"Confirmed"。 3. **page_index** 和 **page_size**:分页参数,分别表示查询第几页和每页多少条记录。 4. **date_type**:抓取时间类型,默认为0,即按修改时间查询。 #### 条件过滤与自动填充 - **condition_bk** 和 **condition**:用于过滤不需要的数据。例如,排除“其它出库”类型的单据,并且 `wms_co_id` 不等于 `10406603`。 - **autoFillResponse**:启用自动填充响应功能,可以简化后续的数据处理工作。 #### 数据请求与清洗 通过上述配置,我们可以发起POST请求,从聚水潭系统中获取符合条件的数据。以下是一个示例请求体: ```json { "modified_begin": "{{MINUTE_AGO_20|datetime}}", "modified_end": "{{CURRENT_TIME|datetime}}", "status": "Confirmed", "page_index": 1, "page_size": 30, "date_type": 0 } ``` 在接收到响应后,需要对数据进行初步清洗和验证。例如: - 确认所有必需字段是否存在且格式正确。 - 根据业务逻辑进一步过滤不需要的数据。 #### 异常处理与补救机制 为了确保数据的完整性和连续性,我们还配置了异常处理和补救机制: - **omissionRemedy**:设置了定时任务,每隔三小时执行一次,以防止遗漏数据。通过 `FROM_UNIXTIME( unix_timestamp() -86400 , '%Y-%m-%d %H:%i:%s' )` 动态计算前一天的开始时间,以便重新抓取可能遗漏的数据。 通过以上步骤,我们可以高效地从聚水潭系统中获取并清洗所需的数据,为后续的数据转换与写入打下坚实基础。这一过程充分利用了轻易云数据集成平台的强大功能,实现了不同系统间的数据无缝对接。 ![如何开发企业微信API接口](https://pic.qeasy.cloud/S6.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将聚水潭其他入库单转换并写入畅捷通T+API接口 在数据集成的生命周期中,ETL(Extract, Transform, Load)过程是至关重要的一环。本文将详细探讨如何使用轻易云数据集成平台,将已经从源平台(如聚水潭)提取并清洗后的数据,转换为畅捷通T+ API接口所能接收的格式,并最终写入目标平台。 #### API接口配置 根据元数据配置,我们需要将聚水潭的其他入库单数据转换为畅捷通T+所需的格式,并通过`/tplus/api/v2/otherReceive/Create`接口进行提交。以下是具体的配置细节: - **API路径**: `/tplus/api/v2/otherReceive/Create` - **请求方法**: `POST` - **执行效果**: `EXECUTE` - **ID检查**: `true` #### 请求参数解析 1. **ExternalCode (外部单据号)**: - 类型:`string` - 描述:外部单据号,用于唯一性检查,防止重复提交。 - 值:`{io_id}` 2. **VoucherType (单据类型)**: - 类型:`string` - 描述:单据类型,默认值为`ST1004`。 - 值:`ST1004` - 解析器:`ConvertObjectParser`,参数为`Code` 3. **VoucherDate (单据日期)**: - 类型:`string` - 描述:单据日期 - 值:`{modified}` 4. **BusiType (业务类型)**: - 类型:`string` - 描述:业务类型编码,取值范围包括13(其他)和14(其他退库)。 - 值:`13` - 解析器:`ConvertObjectParser`,参数为`Code` 5. **Warehouse (仓库信息)**: - 类型:`string` - 描述:仓库信息 - 值:`{wms_co_id}` - 解析器:`ConvertObjectParser`, 参数为 `Code` - 映射关系: ```json { "target": "66d687ab2f3fde34df428d6d", "direction": "positive" } ``` 6. **Memo (表头备注)**: - 类型:`string` - 描述:备注信息 - 值:`{remark}` 7. **DynamicPropertyKeys**: - 类型:`string` - 值:`pubuserdefnvc3,pubuserdefnvc4` - 解析器: `StringToArray`, 参数为 `,` 8. **DynamicPropertyValues**: - 类型: `string` - 值: `13<{io_id}` - 解析器: `StringToArray`, 参数为 `<` 9. **RdStyle (入库类别)**: - 类型: `string` - 值: `113` - 解析器: `ConvertObjectParser`, 参数为 `Code` 10. **RDRecordDetails (单据明细信息)**: 包含以下子字段: ```json [ { "field": "Inventory", "label": "存货信息", "type": "string", "value": "{sku_id}", "parser": { "name": "ConvertObjectParser", "params": "Code" } }, { "field": "BaseQuantity", "label": "主计量单位数量", "type": "string", "value": "{qty}" }, { "field": "Price", "label": "成本单价", "type": "string", "value": "{sale_price}" }, { "field": "Project", "label": "项目", "type": "string", "value": 807, { name: 'ConvertObjectParser', params: 'Code' } } ] ``` 11. **OtherRequest**: ```json [ { field: 'dataKey', label: 'dataKey', type: 'string', describe: '111', value: 'dto' } ] ``` #### 数据转换与写入 在实际操作中,我们需要确保每个字段的数据都经过正确的转换和映射。例如: - 使用 `{io_id}` 来填充外部单据号 (`ExternalCode`) 字段,以确保唯一性。 - 将 `{modified}` 转换为标准日期格式以填充单据日期 (`VoucherDate`) 字段。 - 利用 `ConvertObjectParser` 将业务类型编码 (`BusiType`) 转换为目标系统可识别的代码。 对于复杂的数据结构,如单据明细信息 (`RDRecordDetails`) ,我们需要逐一处理每个子字段,确保其值和格式符合目标平台的要求。 通过以上配置和处理步骤,我们可以高效地将聚水潭其他入库单的数据转换并写入畅捷通T+系统,实现不同系统间的数据无缝对接。这不仅提高了数据处理效率,也保证了数据的一致性和准确性。 ![如何对接企业微信API接口](https://pic.qeasy.cloud/T6.png~tplv-syqr462i7n-qeasy.image)