吉客云到金蝶云星空的数据集成案例分享:盘盈单同步生成其他入库单
在本技术案例中,我们将详细探讨如何通过轻易云数据集成平台,实现吉客云数据与金蝶云星空的无缝对接,具体应用场景为“(吉客云->云星空)盘盈单同步生成其他入库单”。此方案利用了轻易云平台的高吞吐量数据写入能力、集中监控和告警系统以及自定义数据转换逻辑,确保每个环节精准可靠。
首先,我们需要解决从吉客云获取盘盈单数据信息的问题。通过调用API接口 erp.storage.goodsdocin.v2
,可以定时抓取相关数据,并构建一个稳定的数据流。不仅要注意处理分页和限流的问题,还需确保在大批量数据操作时不漏单,以保持业务流程的一致性。
随后,将这些原始盘盈单数据信息转换并映射至金蝶云星空的对应格式。由于两者之间的数据结构存在差异,自定义转换逻辑显得尤为关键,通过可视化的数据流设计工具,我们能更直观地管理这一过程。同时,在转换期间加入质量监控机制实时检测异常情况,如有偏差则触发告警,进行错误重试或人工干预。
最后一步是使用 batchSave
接口将处理后的数据写入到金蝶云星空。这一阶段强调的是高效、可靠地完成批量导入任务。为了应对接口可能出现的性能瓶颈问题,需要设置合理的重试机制和并发控制策略。此外,借助实时监控与日志记录功能,对整个过程中发生的数据交互及潜在故障点进行全面跟踪,提高整体操作透明度及成功率。
这个技术方案不仅保障了业务端到端流程的顺畅运转,还充分体现了轻易云平台在复杂环境下卓越的数据集成能力。在接下来的部分里,我们将逐步细化各阶段实施细节,以帮助读者更深入理解实际操作中的每个步骤。
调用吉客云接口erp.storage.goodsdocin.v2获取并加工数据
在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用吉客云的erp.storage.goodsdocin.v2
接口来获取盘盈单数据,并对其进行初步加工。
接口配置与请求参数
首先,我们需要根据元数据配置来设置API请求参数。以下是元数据配置的关键部分:
{
"api": "erp.storage.goodsdocin.v2",
"effect": "QUERY",
"method": "POST",
"number": "goodsdocNo",
"id": "recId",
"idCheck": true,
"request": [
{"field":"pageIndex","label":"pageIndex","type":"int","describe":"111","value":"{PAGINATION_START_ROW}"},
{"field":"pageSize","label":"pageSize","type":"int","describe":"111","value":"{PAGINATION_PAGE_SIZE}"},
{"field":"startDate","label":"startDate","type":"string","describe":"111","value":"{{LAST_SYNC_TIME|datetime}}"},
{"field":"endDate","label":"endDate","type":"string","describe":"111","value":"{{CURRENT_TIME|datetime}}"},
{"field":"inouttype","label":"出入库类型","type":"int","describe":"出入库类型(201-销售出库 202调拨出库 204-其他出库 205采购退货 206生产领料 207组装拆卸出库 208翻新出库 209报废出库 210残次品出库 211倒冲领料 212 包材出库 215维修还厂 299可用库存修正 231成本调整出库)","value":"103"},
{"field":"selelctFields","label":"selelctFields","type":"string","value":...}
],
"autoFillResponse": true,
"condition": [
[{"field": "memo", "logic": "eqv2", "value": "产品编码调整"}],
[{"field": "memo", "logic": "eqv2", "value": "批号调整"}]
]
}
请求参数详解
-
分页参数:
pageIndex
和pageSize
用于控制分页。这些值通常从系统变量中获取,例如{PAGINATION_START_ROW}
和{PAGINATION_PAGE_SIZE}
。
-
时间参数:
startDate
和endDate
用于指定查询的时间范围。通过模板变量{{LAST_SYNC_TIME|datetime}}
和{{CURRENT_TIME|datetime}}
动态生成。
-
业务参数:
inouttype
固定为103
,表示盘盈单。selelctFields
列出了所有需要返回的字段,包括主表和子表字段。
-
条件过滤:
- 使用条件过滤字段
memo
,逻辑操作符为eqv2
,值为"产品编码调整"
或"批号调整"
。
- 使用条件过滤字段
数据请求与清洗
在配置好请求参数后,通过轻易云平台发起POST请求到吉客云接口。以下是一个示例请求体:
{
"pageIndex": "{PAGINATION_START_ROW}",
"pageSize": "{PAGINATION_PAGE_SIZE}",
"startDate": "{{LAST_SYNC_TIME|datetime}}",
"endDate": "{{CURRENT_TIME|datetime}}",
"inouttype": 103,
"selelctFields": "...(省略字段列表)"
}
响应的数据将自动填充到预定义的响应结构中,确保每个字段都能正确映射到目标系统所需的数据格式。
数据转换与写入
在获取并清洗完数据后,需要对数据进行转换,以便写入目标系统(如云星空)。这一步通常包括以下操作:
-
字段映射:将吉客云返回的数据字段映射到目标系统的字段。例如,将
goodsDocDetailList.goodsName
映射到目标系统的商品名称字段。 -
数据格式转换:根据目标系统要求,对日期、数值等字段进行格式转换。例如,将日期格式从
"yyyy-MM-dd HH:mm:ss"
转换为"yyyyMMdd"
。 -
业务逻辑处理:根据业务需求对数据进行进一步处理。例如,根据备注区分不同类型的盘盈单,并生成相应的其他入库单。
通过上述步骤,我们可以高效地实现从吉客云到目标系统的数据集成,为企业提供准确、及时的数据支持。
将源平台数据转换并写入金蝶云星空API接口
在数据集成生命周期的第二阶段,我们将已经从源平台(吉客云)获取的数据进行ETL转换,最终写入目标平台(金蝶云星空)的API接口。本文将详细探讨如何利用元数据配置,将盘盈单同步生成其他入库单,并通过API接口实现数据写入。
元数据配置解析
元数据配置是实现数据转换和写入的核心。以下是具体的元数据配置内容:
{
"api": "batchSave",
"method": "POST",
"idCheck": true,
"operation": {
"rowsKey": "array",
"rows": 1,
"method": "batchArraySave"
},
"request": [
{"field":"FBillNo","label":"单据编号","type":"string","value":"{goodsdocNo}"},
{"field":"FBillTypeID","label":"单据类型","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"QTRKD01_SYS"},
{"field":"FStockOrgId","label":"库存组织","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100"},
{"field":"FDate","label":"日期","type":"string","value":"{inOutDate}"},
{"field":"FSUPPLIERID","label":"供应商","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{vendCustomerCode}"},
{"field":"FDEPTID","label":"部门","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"02"},
{"field":"FNOTE","label":"备注","type":"string","value":"入库原因:{memo}"},
{
"field": "FEntity",
"label": "明细信息",
"type": "array",
"children": [
{"field": "FMATERIALID", "label": "物料编码", "type": "string", "parser":{"name": "ConvertObjectParser", "params": "FNumber"}, "value": "{{goodsDocDetailList.goodsNo}}", "parent": "FEntity"},
{"field": "FSTOCKID", "label": "收货仓库", "type": "string", "parser":{"name": "ConvertObjectParser", "params": "FNumber"}, "value": "{{goodsDocDetailList.warehouseCode}}", "parent": "FEntity"},
{"field": "FQty", "label": "实收数量", "type": "string", "value": "{{goodsDocDetailList.quantity}}", "parent": "FEntity"},
{"field": "FEntryNote", "label": "备注", "type": "string", "value": "{{goodsDocDetailList.rowRemark}}", "parent": "FEntity"},
{"field": "FLOT", "label": "批次号", "type": "string", "value":
"{{goodsDocDetailList.batchNo}}"}
],
"value":
goodsDocDetailList
}
],
...
}
数据请求与清洗
在进行ETL转换之前,首先需要从源平台获取原始数据。这一步通常包括通过API请求获取所需的数据,并对其进行初步清洗,以确保数据的完整性和一致性。例如,从吉客云获取盘盈单的数据,并对字段进行初步处理。
数据转换
在轻易云平台中,使用上述元数据配置可以将源平台的数据转换为目标平台所需的格式。以下是一些关键字段的转换逻辑:
- 单据编号 (FBillNo): 从源数据中的
goodsdocNo
字段提取。 - 单据类型 (FBillTypeID): 固定值
QTRKD01_SYS
,通过ConvertObjectParser
转换为目标系统识别的格式。 - 库存组织 (FStockOrgId): 固定值
100
,同样通过ConvertObjectParser
转换。 - 日期 (FDate): 从源数据中的
inOutDate
字段提取。 - 供应商 (FSUPPLIERID): 从源数据中的
vendCustomerCode
字段提取,并通过ConvertObjectParser
转换。 - 备注 (FNOTE): 动态生成,包含固定文本和变量
{memo}
的组合。
对于明细信息(FEntity
),每个子字段也需要相应地从源数据中提取并转换,例如物料编码(FMATERIALID
)、收货仓库(FSTOCKID
)、实收数量(FQty
)等。
数据写入
完成所有字段的转换后,通过调用金蝶云星空的 batchSave
API 接口,将处理后的数据批量写入目标系统。具体步骤如下:
- 构建HTTP请求:根据元数据配置构建POST请求,包括设置请求头、URL和请求体。
- 执行请求:发送HTTP请求到金蝶云星空API接口,并捕获响应结果。
- 错误处理:检查响应状态码和返回消息,如果有错误则记录日志并采取相应措施。
以下是一个示例HTTP POST请求:
POST /k3cloud/api/batchSave HTTP/1.1
Host: api.kingdee.com
Content-Type: application/json
Authorization: Bearer <access_token>
{
...
}
总结
通过上述步骤,我们成功地将吉客云中的盘盈单数据经过ETL转换后,写入到金蝶云星空系统中。利用轻易云提供的全异步、多异构系统集成能力,实现了不同系统间的数据无缝对接,大大提升了业务效率和透明度。