畅捷通T+数据集成到聚水潭的技术案例分享:T+进货单【红字】-->聚水潭其他出库单--ikk
在企业日常业务流程中,如何高效、安全地将不同系统的数据进行无缝对接是一个重要课题。本文将重点介绍使用轻易云数据集成平台,实现从畅捷通T+到聚水潭的一次成功系统对接。具体来说,我们将探讨如何配置元数据,将畅捷通T+中的进货单【红字】实时、批量写入聚水潭的其他出库单。
确保集成的准确性与完整性
首先,为了保证从畅捷通T+提取的数据不漏单,我们利用其API接口/tplus/api/v2/PurchaseArrivalOpenApi/FindVoucherList
进行定时可靠的数据抓取。这不仅确保了数据获取频率和稳定性,还通过灵活设置参数来实现分页处理,以应对接口限流的问题。
批量高效写入到聚水潭
在完成从畅捷通T+的数据抓取后,下一步是将这些已经格式化好的数据快速、批量地传输并写入到聚水潭。为此,我们调用其开放的API /open/jushuitan/otherinout/upload
实现大规模、高并发的数据导入。在这一过程中,特别注意根据业务需求进行字段映射,以及处理两者之间可能存在的数据格式差异。
异常与日志管理
为了提高整个数据流动过程中的透明度与可靠性,对异常处理机制及日志记录进行了专门设计。一旦出现意外错误或网络波动导致写入失败,将触发重试机制,并详细记录每个环节的状态信息,从而便于问题追溯和解决。
本文所述方案借助轻易云强大的生命周期管理特性,通过全透明可视化界面提供清晰直观的数据监控,有效提升了业务效率。以下我们将深入讨论各步骤中的技术细节以及对应代码示例。
调用畅捷通T+接口获取并加工数据的技术案例
在数据集成过程中,调用源系统接口获取数据是至关重要的一步。本文将深入探讨如何使用轻易云数据集成平台调用畅捷通T+接口/tplus/api/v2/PurchaseArrivalOpenApi/FindVoucherList
来获取进货单【红字】的数据,并进行初步加工。
接口配置与请求参数
首先,我们需要配置接口的元数据,以便正确调用畅捷通T+的API。以下是元数据配置的详细信息:
{
"api": "/tplus/api/v2/PurchaseArrivalOpenApi/FindVoucherList",
"effect": "QUERY",
"method": "POST",
"number": "Code",
"id": "Code",
"idCheck": true,
"request": [
{"field":"selectFields","label":"查询字段","type":"string","describe":"部门编码","value":"VoucherCode"},
{"field":"pageIndex","label":"pageIndex","type":"string","describe":"部门名称"},
{"field":"pageSize","label":"pageSize","type":"string","describe":"指定返回字段","value":"10"},
{
"field":"paramDic_1",
"label":"paramDic参数",
"type":"object",
"describe":"上级部门",
"children":[
{"field":"key","label":"业务类型","type":"string","describe":"上级部门编码","value":"PurchaseArrival__BusinessType__Code"},
{"field":"value","label":"value","type":"string","describe":"上级部门名称","value":"02,02"}
]
},
{
"field":"paramDic_2",
"label":"paramDic_2",
"type":"object",
"children":[
{"field":"key","label":"单据状态","type":"string","value":"PurchaseArrival__VoucherState"},
{"field":"value","label":"value","type":"string","value":"01,01"}
]
},
{
"field":"paramDic_3",
"label":"paramDic_3",
"type":"object",
"children":[
{"field":"key","label":"单据日期","type":"string","value":"PurchaseArrival__VoucherDate"},
{"field":"value","label":"","type":"","value":"'{{LAST_SYNC_TIME|date}},{{CURRENT_TIME|date}}'"}
]
}
],
"otherRequest": [
{"field": "detailkey1", "label": "detailkey1", "type": "string", "value": "voucherCode"},
{"field": "detailkey2", "label": "", "type": "", value: ""},
{"field": "", label: "", type: "", value: ""},
{"field": "", label: "", type: "", value: ""}
],
autoFillResponse: true
}
请求参数解析
- selectFields:指定要查询的字段,这里我们选择了
VoucherCode
。 - pageIndex和pageSize:用于分页查询,分别表示当前页码和每页返回的数据条数。
- paramDic_1、paramDic_2、paramDic_3:这些是复杂的对象参数,用于进一步筛选数据。
- paramDic_1:业务类型,值为
02,02
。 - paramDic_2:单据状态,值为
01,01
。 - paramDic_3:单据日期,动态值为上次同步时间到当前时间。
- paramDic_1:业务类型,值为
数据请求与清洗
通过上述配置,我们可以发送POST请求到畅捷通T+接口以获取所需的进货单【红字】数据。以下是一个示例请求体:
{
selectFields: 'VoucherCode',
pageIndex: '1',
pageSize: '10',
paramDic_1: { key: 'PurchaseArrival__BusinessType__Code', value: '02,02' },
paramDic_2: { key: 'PurchaseArrival__VoucherState', value: '01,01' },
paramDic_3: { key: 'PurchaseArrival__VoucherDate', value: '{{LAST_SYNC_TIME|date}},{{CURRENT_TIME|date}}' }
}
在接收到响应后,我们需要对数据进行初步清洗和加工,以确保其符合后续处理步骤的要求。这包括但不限于:
- 数据格式转换
- 字段重命名或删除无用字段
- 数据校验和过滤
实际应用案例
假设我们从接口中获取到以下原始数据:
{
data:[
{
VoucherCode:'VC001',
BusinessType:'02',
VoucherState:'01',
VoucherDate:'2023-10-01'
},
...
]
}
我们可以通过轻易云平台提供的数据清洗工具,对这些数据进行处理。例如,将VoucherDate
字段格式化为标准日期格式,或根据业务需求筛选出特定状态的数据。
{
data:[
{
VoucherCode:'VC001',
BusinessType:'02',
VoucherState:'已审核',
VoucherDate:'2023-10-01'
},
...
]
}
通过上述步骤,我们完成了从畅捷通T+接口获取进货单【红字】数据并进行初步加工,为后续的数据转换与写入奠定了基础。
这种方法不仅提高了数据处理效率,还确保了数据的一致性和准确性,为企业实现多系统间的数据无缝对接提供了强有力的支持。
轻易云数据集成平台ETL转换与写入目标平台的技术案例
在轻易云数据集成平台的生命周期中,ETL(Extract, Transform, Load)过程是关键步骤之一。本文将深入探讨如何将已经集成的源平台数据进行ETL转换,并转为目标平台聚水潭API接口所能够接收的格式,最终写入目标平台。
API接口配置
元数据配置如下:
{
"api": "/open/jushuitan/otherinout/upload",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"request": [
{"field": "is_confirm", "label": "是否确认单据", "type": "string", "value": "1"},
{"field": "excute_confirming", "label": "是否审核单据", "type": "string", "value": "true"},
{"field": "warehouse", "label": "仓库编号", "type": "int",
"value": "_function case '{{Warehouse.Code}}' when '2' then '4' else '1' end"},
{"field": "type", "label": "出入库类型", "type": "string",
"value": "_function case '{{Type}}' when 'out' then '出库' else '入库' end"},
{"field": "external_id", "label": "外部单号",
"type": "string",
"value":"{Code}"},
{"field":"remark","label":"备注","type":"string","value":"{Memo}"},
{"field":"items","label":"items","type":"array","value":"Details",
children:[
{"field":"sku_id","label":"商品编码","type":"string","value":"{{Details.Inventory.Code}}"},
{"field":"qty","label":"入库数量","type":"string","value":"_function ({{Details.Quantity}}*-1)"},
{"field":"sale_price","label":"单价","type":"bool","value":"{{Details.OrigTaxPrice}}"}
]}
]
}
数据请求与清洗
首先,我们需要从源平台获取原始数据并进行清洗。假设我们从T+系统获取进货单【红字】的数据,这些数据可能包含多种格式和类型的信息。通过轻易云的数据清洗功能,可以将这些原始数据标准化,确保其符合后续处理的要求。
数据转换与映射
接下来,我们需要将清洗后的数据进行转换,以符合聚水潭API接口的格式要求。以下是关键字段的映射和转换逻辑:
- 是否确认单据(is_confirm): 固定值"1",表示确认单据。
- 是否审核单据(excute_confirming): 固定值"true",表示审核单据。
- 仓库编号(warehouse): 使用条件判断,根据
Warehouse.Code
字段值进行映射。如果Warehouse.Code
为"2",则映射为"4",否则映射为"1"。 - 出入库类型(type): 根据
Type
字段值进行映射,如果Type
为"out",则映射为“出库”,否则映射为“入库”。 - 外部单号(external_id): 映射自源数据中的
Code
字段。 - 备注(remark): 映射自源数据中的
Memo
字段。 - 商品明细(items): 是一个数组,每个元素包含以下子字段:
- 商品编码(sku_id): 映射自
Details.Inventory.Code
字段。 - 入库数量(qty): 将数量乘以-1,以表示红字进货单的负数数量。
- 单价(sale_price): 映射自
Details.OrigTaxPrice
字段。
- 商品编码(sku_id): 映射自
数据写入目标平台
完成上述转换后,我们使用POST方法调用聚水潭的API接口,将处理后的数据发送到目标平台。以下是一个示例请求体:
{
"is_confirm": "1",
"excute_confirming": true,
"warehouse": 4,
"type": out,
...
}
通过这种方式,轻易云数据集成平台实现了从源系统到目标系统的数据无缝对接,确保了各环节的数据准确性和一致性。