畅捷通T+数据集成到吉客云案例分析
在企业信息化系统中,数据孤岛一直是效率提升的重要障碍。本文将探讨如何通过轻易云数据集成平台,实现畅捷通T+与吉客云的无缝连接。本次分享的具体方案是“T+产成品入库单【红字】--->吉客云-出库单创建-好”。
首先,我们需要确保从畅捷通T+获取的数据完整无漏,这就要求我们必须可靠地调用其API接口 /tplus/api/v2/ProductReceiveOpenApi/FindVoucherList
。为了避免漏单和数据丢失,我们采用定时任务调度,通过一定频率抓取最新的入库单数据。
为了解决分页和限流问题,每次请求我们都会动态调整查询范围,并对返回结果进行处理。而针对大批量的数据快速写入需求,则需利用轻易云平台提供的并发处理功能,将获取到的数据高效写入至吉客云对应API erp.storage.stockoutcreate
。
在实际操作中,两个系统间的数据格式差异也是一个重要挑战。例如,畅捷通T+中的某些字段需要重新映射才能符合吉客云的要求。这里我们会使用轻易云提供的自定义脚本,对字段进行转换和映射,从而实现高度兼容。此外,如果任何一步出现异常,例如网络延迟或服务器错误,都有对应的重试机制来保障最终成功完成。
针对这一系列复杂流程,实时监控与日志记录显得尤为重要。这不仅能够帮助发现和解决潜在问题,更能确保整个集成过程稳定运行,为业务流程保驾护航。
调用畅捷通T+接口获取并加工数据的技术案例
在数据集成过程中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用畅捷通T+接口/tplus/api/v2/ProductReceiveOpenApi/FindVoucherList
获取并加工数据。
接口配置与请求参数
首先,我们需要配置接口的元数据,以便正确调用和处理数据。以下是元数据配置的详细信息:
{
"api": "/tplus/api/v2/ProductReceiveOpenApi/FindVoucherList",
"effect": "QUERY",
"method": "POST",
"number": "Code",
"id": "Code",
"idCheck": true,
"request": [
{
"field": "selectFields",
"label": "查询字段",
"type": "string",
"describe": "部门编码",
"value": "VoucherCode,CustomerCode,WarehouseCode,Inventory,InventoryCode,Specification,Unit,Quantity"
},
{
"field": "pageIndex",
"label": "pageIndex",
"type": "string",
"describe": "部门名称"
},
{
"field": "pageSize",
"label": "pageSize",
"type": "string",
"describe": "指定返回字段",
"value": "5"
},
{
"field": "paramDic_1",
...
请求参数解析
- selectFields: 指定需要查询的字段,包括
VoucherCode
,CustomerCode
,WarehouseCode
,Inventory
,InventoryCode
,Specification
,Unit
,Quantity
等。 - pageIndex: 当前页码,用于分页查询。
- pageSize: 每页返回的数据条数,这里设置为5。
- paramDic_1: 包含两个键值对,分别是
RDRecord__AuditedDate
和时间范围(上次同步时间和当前时间)。 - paramDic_2: 包含两个键值对,分别是
Warehouse__ID
和仓库ID列表。
条件过滤
为了确保获取的数据符合业务需求,可以在请求中添加条件过滤。例如:
"condition":[
[
{"field":"RDRecordDetails.Quantity","logic":"lt","value":"0"},
{"field":"RDRecordDetails.InventoryCode","logic":"in","value":"050301CMP-11-001,050301CMP-13-001,..."}
]
]
此处条件表示仅获取数量小于0且库存代码在指定列表中的记录。
数据请求与清洗
通过上述配置,我们可以发送POST请求到指定API,并获取响应数据。接下来,需要对响应的数据进行清洗和转换,以便后续处理。
{
...
// 示例响应数据
{
...
// 清洗后的数据格式
{
...
// 转换后的目标格式
...
}
}
在清洗过程中,可以根据业务需求对字段进行重命名、类型转换、单位换算等操作。
数据转换与写入
完成数据清洗后,需要将其转换为目标系统所需的格式,并写入目标系统。此步骤通常涉及调用另一个API或数据库操作。
{
...
// 转换后的目标格式示例
{
...
// 写入目标系统的API调用示例
...
}
通过以上步骤,我们实现了从畅捷通T+系统获取、清洗、转换并写入目标系统的数据集成过程。这不仅提高了数据处理效率,还确保了数据的一致性和准确性。
轻易云数据集成平台生命周期第二步:ETL转换与数据写入吉客云API接口
在数据集成过程中,ETL(Extract, Transform, Load)是至关重要的一环。本文将详细探讨如何将已经集成的源平台数据,通过ETL转换为目标平台吉客云API接口所能接收的格式,并最终写入目标平台。
数据请求与清洗
在数据请求与清洗阶段,我们从源系统(如ERP系统)获取原始数据,并进行必要的清洗操作,以确保数据质量。这些操作包括去除冗余字段、标准化日期格式、处理缺失值等。在此阶段结束后,数据已经具备了进入下一步转换的基础。
数据转换与写入
接下来,我们进入数据转换与写入阶段。此阶段的核心任务是将清洗后的数据按照目标平台API接口的要求进行格式转换,并通过API接口将数据写入目标系统。以下是具体的技术实现细节:
API接口元数据配置
根据提供的元数据配置,我们需要调用吉客云的erp.storage.stockoutcreate
API接口。该接口采用POST方法,以下是具体字段及其描述:
{
"api": "erp.storage.stockoutcreate",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"request": [
{
"field": "outWarehouseCode",
"label": "仓库编码",
"type": "string",
"describe": "仓库编码",
"value": "{{Warehouse.Code}}"
},
{
"field": "outType",
"label": "入库类型",
"type": "string",
"describe": "入库类型 101=采购入库 102=调拨入库 103=盘盈入库 104=其他入库",
"value": "205"
},
{
"field": "relDataId",
...
}
]
}
数据映射与转换
-
仓库编码(outWarehouseCode):
- 从源系统中提取仓库编码,并映射到
outWarehouseCode
字段。 - 示例:
"value":"{{Warehouse.Code}}"
- 从源系统中提取仓库编码,并映射到
-
出库类型(outType):
- 固定值205,表示“其他出库”。
- 示例:
"value":"205"
-
关联单据编号(relDataId):
- 使用源系统中的单据编号进行映射,确保唯一性。
- 示例:
"value":"{Code}"
-
申请出库时间(applyDate):
- 提取并格式化源系统中的审核日期。
- 示例:
"value":"{AuditedDate}"
-
备注信息(memo):
- 添加自定义备注信息。
- 示例:
"value":"产成品入库单红字-{Code}"
-
固定值source:
- 固定为“OPEN”。
- 示例:
"value":"OPEN"
-
出库明细(stockOutDetailViews):
- 包含多个子字段,如货品编号、条形码、出库数量等。
子字段详细配置
-
货品编号(goodsNo):
- 从源系统中提取货品编号。
- 示例:
"value":"{{RDRecordDetails.InventoryCode}}"
-
条形码(skuBarcode):
- 根据货品信息匹配外部货品编号。
- 示例:
"value":"{{RDRecordDetails.InventoryCode}}{{RDRecordDetails.freeitem0}}{{RDRecordDetails.freeitem1}}"
-
出库数量(skuCount):
- 将入库数量取负值作为出库数量。
- 示例:
"value":"_function '{{RDRecordDetails.ArrivalQuantity}}'*(-1)"
-
批次信息集合(batchList): 包含批号、生产日期、质保期等信息。
批次信息详细配置
-
批号(batchNo):
- 提取批号信息。
- 示例:
"value":"{{RDRecordDetails.Batch}}"
-
生产日期(productionDate):
- 提取生产日期。
- 示例:
"value":"{{RDRecordDetails.ProductionDate}}"
-
质保期单位(shelfLiftUnit):
- 提取质保期单位,如年、月、天。
- 示例:
"value":"{{RDRecordDetails.InventoryExpiredUnit}}"
-
到期时间(expirationDate):
- 提取到期时间。
- 示例:
"value":"{{RDRecordDetails.ExpiryDate}}"
实现步骤
- 提取并清洗源系统数据
- 按照元数据配置进行字段映射和转换
- 构建符合吉客云API要求的数据结构
- 通过POST方法调用吉客云API接口
通过以上步骤,我们成功地将源平台的数据转换为目标平台所需的格式,并完成了数据写入。这不仅提升了业务流程的自动化程度,也确保了不同系统间的数据一致性和准确性。