使用轻易云将聚水潭其他入库单数据转入畅捷通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)