易仓数据集成到金蝶云星空案例分享
在本文中,我们将深入探讨一个实际运行的系统对接集成案例——易仓数据集成到金蝶云星空,具体方案名称为“CU不良品其他出库单-金蝶其他出库单”。本次实施任务主要涉及如何快速、准确地将来自易仓的出库单数据通过API接口进行抓取,并批量写入到金蝶云星空系统,确保整个流程高效且稳定。
项目开始时,我们首先需要确定两大核心操作:从易仓获取数据以及向金蝶云星空写入数据。针对数据获取部分,我们采用了易仓提供的getDeliveryDetailList API接口,这一接口支持分页和限流,可防止因一次性拉取大量记录而导致的数据丢失或超载问题。在调度机制上,通过定时任务触发API调用,以保证实现定时可靠的数据抓取,同时避免因为网络波动或服务器负载等因素造成遗漏。
接着,在处理和整合这些获取的数据后,需要使用batchSave API 接口将其批量写入至金蝶云星空。为了最大程度提升效率与准确性,我们对不同字段进行了严格映射与校验,并设计了全面的异常处理与错误重试机制。当检测到某些异常情况(如网络中断、接口返回错误)时,系统会自动重新尝试操作并记录日志,实现全程实时监控。这不仅确保了每条有效支付信息都能成功导入目标系统,还便于我们迅速响应和解决突发问题。
此外,由于易仓和金蝶云在数据格式上存在一定差异,因此必须经过预处理步骤来调整字段类型及结构。这一步骤至关重要,可以显著减少由于不匹配导致的一系列潜在风险。例如,在转换过程中,对数值型、日期型等特定字段进行了专门的格式化处理,以满足两个平台各自的数据规范要求。
总之,通过上述技术手段,我们不仅实现了高速、大量、不漏单地完成核心业务信息从源头端(即易仓)的精准转移,而且为后续分析统计提供了坚实保障。下一节内容,将详细描述具体代码实现及配置步骤。
调用源系统易仓接口getDeliveryDetailList获取并加工数据
在数据集成生命周期的第一步,我们需要调用源系统易仓接口getDeliveryDetailList
来获取并加工数据。本文将深入探讨该接口的技术细节和元数据配置,以实现高效的数据请求与清洗。
接口概述
getDeliveryDetailList
是一个用于查询出库单详细信息的API接口。该接口采用POST方法,主要用于获取指定时间范围内的出库单数据。以下是该接口的元数据配置:
{
"api": "getDeliveryDetailList",
"effect": "QUERY",
"method": "POST",
"number": "reference_no",
"id": "il_id",
"name": "reference_no",
"idCheck": true,
"request": [
{"field": "dateFor", "label": "统计开始日期", "type": "datetime", "describe": "Y-m-d\n时间格式 2020-01-01 或 2020-01-01 00:00 或 2020-01-01 00:00:00 和结束时间不能超过24H", "value": "{{LAST_SYNC_TIME|datetime}}"},
{"field": "dateTo", "label": "统计截止日期", "type": "datetime", "describe": "Y-m-d\n时间格式 2020-01-01 或 2020-01-01 00:00 或 2020-01-01 00:00:00 和开始时间不能超过24H", "value": "{{CURRENT_TIME|datetime}}"},
{"field": "warehouse_arr", "label": "仓库id数组", "type": "string", "describe":"默认全部"},
{"field": "warehouse_code_arr", "label":"仓库code数组","type":"string","describe":"最多1000个"},
{"field":"product_barcode","label":"产品代码","type":"string","describe":"产品代码"},
{"field":"product_barcode_type","label":"是否模糊查询产品代码","type":"int","describe":"1:模糊查询,0:精确查询"},
{"field":"operationUserType","label":"产品负责人","type":"string","describe":"buyer_id:采购负责人,seller_responsible_id:销售负责人,develop_responsible_id:开发负责人"},
{"field":"person","label":"负责人用户id","type":"string","describe":"负责人用户id"},
{"field":"category","label":"产品品类","type":"string","describe":"产品品类"},
{"field":"cu_type","label":"出库类型","type":"string","describe":"0借用,1领用,2不良品,3盘亏,5退货,6良品换货,7次品换良品,8良品转次品,9其他,10线下销售,11组装,12拆分,15按批次拆分,13良品还款,14不良品还款\n可组合查询,若查询多个状态需要用数组形式"},
{"field":"page","label":"当前页","type":"string","describe":"当前页"},
{"field":"pageSize","label":"每一页条数","type":"string","describe":"最大1000", “value”:”200”},
{"field”:”supplier_code”,”label”:”供应商Code”,”type”:”string”,”describe”:”供应商Code”},
{"field”:”il_id”,”label”:”上一次分页的返回值”,”type”:”string”,”describe”:”利用索引的有序性,提高查询效率"}
],
“autoFillResponse”:true,
“condition":[
[{"field”:”cu_type”, “logic”:”eqv2”, “value”:”2"}],
[{"field”:”cu_type”, “logic”:”eqv2”, “value”:”8"}]
]
}
请求参数详解
-
dateFor 和 dateTo:
- 用于指定统计的开始和结束日期,格式为
Y-m-d
或更精确到秒级别。 - 示例值分别为
{{LAST_SYNC_TIME|datetime}}
和{{CURRENT_TIME|datetime}}
,确保了时间范围在24小时内。
- 用于指定统计的开始和结束日期,格式为
-
warehouse_arr 和 warehouse_code_arr:
- 分别用于指定仓库ID和仓库代码数组。如果不传入这些参数,则默认查询所有仓库的数据。
-
product_barcode 和 product_barcode_type:
- 用于根据产品代码进行查询,可以选择模糊查询或精确查询。
-
operationUserType 和 person:
- 指定产品负责人的类型和具体用户ID,以便过滤相关负责人的出库单信息。
-
category:
- 用于按产品品类进行过滤。
-
cu_type:
- 出库类型,包括多种类型,如不良品、良品换货等。可以组合多个状态进行查询。
-
page 和 pageSize:
- 分页参数,用于控制每次请求的数据量。默认每页200条记录。
-
supplier_code:
- 用于根据供应商Code进行过滤。
-
il_id:
- 上一次分页返回值,用于提高分页查询效率。
数据请求与清洗
在调用该接口时,需要特别注意以下几点:
- 确保请求参数中的日期范围不超过24小时,以避免超时或数据量过大导致的性能问题。
- 使用分页参数(page和pageSize)合理控制每次请求的数据量,避免一次性拉取大量数据。
- 根据业务需求设置合适的过滤条件,如出库类型、仓库ID、产品代码等,以精准获取所需数据。
- 利用上一次分页返回值(il_id)提高分页查询效率,确保数据处理过程顺畅无阻。
通过上述配置和技术细节,我们能够高效地调用易仓接口getDeliveryDetailList
获取所需的出库单详细信息,并对其进行初步清洗,为后续的数据转换与写入打下坚实基础。
使用轻易云数据集成平台将源数据转换为金蝶云星空API接口格式
在数据集成的过程中,ETL(Extract, Transform, Load)是关键步骤之一。本文将详细探讨如何使用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,并最终写入目标平台金蝶云星空API接口所能接收的格式。
元数据配置解析
元数据配置是实现ETL过程的核心。以下是具体的元数据配置内容及其解析:
{
"api": "batchSave",
"method": "POST",
"idCheck": true,
"operation": {
"method": "merge",
"field": "reference_no",
"bodyName": "details",
"bodySum": [],
"header": ["reference_no", "cu_type", "warehouse_code", "add_time", "cu_note"],
"body": ["product_barcode", "quantity", "warehouse_code"]
},
...
}
该配置定义了目标API接口batchSave
,采用POST
方法提交请求,并启用了ID检查功能。操作部分指定了合并方法和相关字段信息。
数据请求与清洗
在ETL流程中,首先需要从源系统请求并清洗数据。假设我们已经获取到如下原始数据:
{
"reference_no": "12345",
"cu_type": "不良品",
"warehouse_code": "WH001",
"add_time": "2023-10-01T12:00:00Z",
"cu_note": "",
...
}
这些数据需要根据元数据配置进行清洗和转换,以符合金蝶云星空API接口的要求。
数据转换与写入
根据元数据配置,将源数据字段映射到目标字段。例如:
reference_no
映射到FBillNo
warehouse_code
映射到FStockOrgId
add_time
映射到FDate
cu_note
映射到FNote
以下是具体的字段映射和转换规则:
[
{"field":"FBillNo","label":"单据编号","type":"string","value":"{reference_no}"},
{"field":"FBillTypeID","label":"单据类型","type":"string","value":"QTCKD10_SYS"},
{"field":"FStockOrgId","label":"库存组织","type":"string","value":"{warehouse_code}"},
{"field":"FDate","label":"日期","type":"string","value":"{add_time}"},
{"field":"FNote","label":"备注","type":"string","value":"{cu_note}"}
]
对于明细信息部分,配置如下:
{
"field": "FEntity",
...
}
明细信息中的每一项都需要进行相应的转换,例如:
product_barcode
映射到FMaterialId
quantity
映射到FQty
warehouse_code
映射到FStockId
具体配置如下:
[
{"field":"FMaterialId","label":"物料编码","type":"string","value":"_findCollection find FNumber from ... where FOldNumber={product_barcode}"},
{"field":"FQty","label":"实发数量","type":"string","value":"{quantity}"},
{"field":"FStockId","label":"发货仓库","type":"string","value":"{warehouse_code}"}
]
提交请求
完成所有字段映射和转换后,构建最终的请求体,并通过轻易云平台提交至金蝶云星空API接口。
示例请求体:
{
...
}
通过POST方法将上述请求体发送至目标API接口,实现数据写入。
总结
本文详细介绍了如何利用轻易云数据集成平台,将源系统的数据进行ETL转换,并最终写入金蝶云星空API接口。通过合理配置元数据,实现了高效、准确的数据集成和传输。这一过程不仅提升了业务透明度和效率,还确保了不同系统间的数据无缝对接。