吉客云与金蝶云星空系统对接集成案例分享:JY-BDS调拨单
在本技术案例中,我们将深入探讨如何通过轻易云数据集成平台,实现吉客云与金蝶云星空的无缝对接,具体聚焦于JY-BDS调拨单的高效处理。此方案不仅需要关注大量数据的快速写入和读取,还需应对不同系统的数据格式差异和接口调用中的分页、限流等挑战。
首先,通过吉客云API erp.allocate.get
定时可靠地抓取所需数据,并确保不漏单是整个流程中至关重要的一环。得益于轻易云平台强大的高吞吐量数据写入能力,大批量的数据能够迅速传输到金蝶云星空系统内,显著提升了业务操作效率。
同时,为了实现顺利的数据映射和转换,我们利用自定义的数据转换逻辑来适应特定的业务需求。这一过程通过可视化的数据流设计工具进行配置,使每个步骤都更加直观、便捷。此外,通过集中监控和告警系统实时跟踪任务状态及性能,及时发现并解决潜在问题,从而确保整个集成流程的稳定性与可靠性。
为了全面掌握API资产使用情况并优化资源配置,我们采用了统一视图和控制台功能,对两套系统之间进行全方位管理。在处理异常及错误重试机制方面,本方案包含详细策略,以保证即使出现意外状况也能及时恢复并继续运行,从而保障业务连续性。
这只是开端,下文我们将详细展开具体实施步骤,包括分页处理技巧以及如何克服接口限流限制,同时介绍相关代码示例以供参考。
调用吉客云接口erp.allocate.get获取并加工数据
在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用吉客云接口erp.allocate.get
来获取并加工调拨单数据。
接口概述
吉客云的erp.allocate.get
接口主要用于获取调拨单信息。该接口采用POST请求方式,支持分页查询,并提供多种过滤条件以满足不同业务需求。以下是该接口的元数据配置:
{
"api": "erp.allocate.get",
"method": "POST",
"number": "allocateNo",
"id": "allocateId",
"pagination": {
"pageSize": 50
},
"idCheck": true,
"request": [
{"field":"pageIndex","label":"页码(默认从0开始)","type":"string"},
{"field":"pageSize","label":"每页条数(默认50)","type":"string","value":"50"},
{"field":"status","label":"调拨单状态(多个中间逗号隔开)","type":"string","value":"20"},
{"field":"startCreateTime","label":"创建时间的起始时间","type":"string","value":"_function DATE_FORMAT(DATE_ADD(NOW(),INTERVAL - 30 DAY),'%Y-%m-%d 00:00:00')"},
{"field":"endCreateTime","label":"创建时间结束时间","type":"string","value":"{{CURRENT_TIME|datetime}}"},
{"field":"inWarehouseCode","label":"调入仓库编号","type":"string"},
{"field":"outSkuCode","label":"外部货品主键(支持批量 例:123,456)","type":"string"},
{"field":"outWarehouseCode","label":"调出仓库编号","type":"string"},
{"label":"调拨单号,多个中间逗号隔开","field":"allocateNos","type":"string"},
{"label":"入库状态 (支持批量查询,多个值逗号隔开 1=入库等待,2=部分入库,3=入库完成)","field":"instatus","type":"string","value":"3"},
{"label":"出库状态(支持批量,多个值逗号隔开 1=出库等待,2=部分出库,3=出库完成)","field":"outstatus","type":"string","value":"3"}
]
}
请求参数详解
-
分页参数
pageIndex
: 页码,从0开始。pageSize
: 每页条数,默认值为50。
-
过滤条件
status
: 调拨单状态,多个状态使用逗号分隔。startCreateTime
: 创建时间的起始时间,通过函数动态计算过去30天的日期。endCreateTime
: 创建时间结束时间,当前时间。inWarehouseCode
: 调入仓库编号。outSkuCode
: 外部货品主键,可批量查询。outWarehouseCode
: 调出仓库编号。allocateNos
: 调拨单号,可批量查询。instatus
: 入库状态,可批量查询。outstatus
: 出库状态,可批量查询。
数据请求与清洗
在轻易云平台上配置上述元数据后,我们可以通过以下步骤进行数据请求与清洗:
-
配置API调用 在轻易云平台上创建一个新的API调用任务,并填写上述元数据配置。确保所有必填字段都已正确配置。
-
执行API请求 启动任务后,平台会自动向吉客云发送POST请求,并根据分页参数逐页获取数据。
-
数据清洗 获取的数据可能包含冗余或不符合业务需求的信息。我们可以通过轻易云的数据清洗功能,对返回的数据进行过滤、转换和标准化处理。例如:
{ "cleaningRules": [ { "field": "status", "operation": "filter", "condition": ["20"] }, { "field": "createTime", "operation": "format", "pattern": "%Y-%m-%d %H:%M:%S" } ] }
-
存储与转换 清洗后的数据可以直接写入目标数据库或系统。在写入之前,可以根据业务需求对数据进行进一步转换,例如字段映射、单位转换等。
实践案例
假设我们需要获取过去30天内所有状态为“20”的调拨单,并且这些调拨单必须已经完成出库和入库操作。我们可以按如下方式配置请求参数:
{
"pageIndex": "0",
"pageSize": "50",
"status": "20",
"startCreateTime": "_function DATE_FORMAT(DATE_ADD(NOW(),INTERVAL - 30 DAY),'%Y-%m-%d 00:00:00')",
"endCreateTime": "{{CURRENT_TIME|datetime}}",
"instatus": "3",
"outstatus": "3"
}
通过这种方式,我们能够高效地从吉客云获取所需的调拨单信息,并在轻易云平台上进行进一步的数据处理和集成。这不仅提高了数据处理效率,还确保了数据的一致性和准确性。
轻易云数据集成平台:ETL转换与金蝶云星空API接口集成
在轻易云数据集成平台的生命周期中,第二步涉及将已经集成的源平台数据进行ETL转换,并转为目标平台金蝶云星空API接口所能够接收的格式,最终写入目标平台。本文将详细探讨这一过程中涉及的技术细节和元数据配置。
元数据配置解析
元数据配置是ETL转换过程中的核心,它定义了如何将源数据映射到目标系统所需的格式。以下是一个典型的元数据配置示例:
{
"api": "batchSave",
"method": "POST",
"idCheck": true,
"operation": {
"rowsKey": "array",
"rows": 10,
"method": "batchArraySave"
},
"request": [
{"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{allocateNo}"},
{"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"ZJDB01_SYS"},
{"field":"FStockOrgId","label":"调入库存组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_findCollection find textField_l2ib4q9s from 0ce3a160-9fb2-36e5-a2ac-57f5ad0f3c72 where textField_l2ib4q9p={intWarehouseCode}"},
{"field":"FSettleOrgId","label":"结算组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"}},
{"field":"FSaleOrgId","label":"销售组织","type":"string","describe":"下拉列表","parser":{"name":"ConvertObjectParser","params":"FNumber"}},
{"field":"FDate","label":"日期","type":"string","describe":"日期","value":"_function FROM_UNIXTIME( ( {auditDate} / 1000 ) ,'%Y-%m-%d %T' )"},
{"field":"FStockOutOrgId","label":"调出库存组织","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_findCollection find textField_l2ib4q9s from 0ce3a160-9fb2-36e5-a2ac-57f5ad0f3c72 where textField_l2ib4q9p={outWarehouseCode}"},
{"field":"FOwnerTypeOutIdHead","label":"","type":"","describe":"","parser":{"name":"","params":""},"value":""},
{"field":"","label":"","type":"","describe":"","parser":{"name":"","params":""},"value":""}
],
"otherRequest":[
{"field": "FormId", "label": "业务对象表单Id", "type": "string", "describe": "", "value": ""},
{"field": "", "label": "", "type": "", "describe": "", "value": ""}
]
}
数据字段解析与转换
-
单据编号(FBillNo):
- 类型:字符串
- 描述:单据编号
- 值:
{allocateNo}
,表示从源系统中获取的调拨单号。
-
单据类型(FBillTypeID):
- 类型:字符串
- 描述:单据类型
- 转换器:
ConvertObjectParser
,参数为FNumber
- 值:固定值
ZJDB01_SYS
,表示标准调拨单。
-
调入库存组织(FStockOrgId):
- 类型:字符串
- 描述:组织
- 转换器:
ConvertObjectParser
,参数为FNumber
- 值:通过SQL查询获取,如
_findCollection find textField_l2ib4q9s from ... where textField_l2ib4q9p={intWarehouseCode}
。
-
日期(FDate):
- 类型:字符串
- 描述:日期
- 值:使用函数转换,如
_function FROM_UNIXTIME( ( {auditDate} / 1000 ) ,'%Y-%m-%d %T' )
。
明细信息处理
对于明细信息(FBillEntry),需要处理多个子字段:
-
物料编码(FMaterialId):
- 类型:字符串
- 描述:基础资料
- 转换器:
ConvertObjectParser
,参数为FNumber
- 值:从源系统获取,如
{{stockAllocateDetailViews.goodsNo}}
。
-
实发数量(FQty):
- 类型:字符串
- 描述:数量
- 值:从源系统获取,如
{{stockAllocateDetailViews.skuCount}}
。
-
调出仓库(FSrcStockId):
- 类型:字符串
- 描述:基础资料
- 转换器:
ConvertObjectParser
,参数为FNumber
- 值:如
{outWarehouseCode}
。
-
调入仓库(FDestStockId):
- 类型:字符串
- 描述:维度关联字段
- 转换器:
ConvertObjectParser
,参数为FNumber
- 值:如
{intWarehouseCode}
。
API调用与其他请求参数
-
业务对象表单ID(FormId):
- 必须填写金蝶的表单ID,如
STK_TransferDirect
- 必须填写金蝶的表单ID,如
-
提交并审核(IsAutoSubmitAndAudit):
- 布尔值,默认为
true
- 布尔值,默认为
-
验证基础资料有效性(IsVerifyBaseDataField):
- 布尔值,默认为
true
- 布尔值,默认为
通过上述配置,我们可以实现对源数据的有效转换,并通过金蝶云星空API接口将数据写入目标平台。这一过程确保了不同系统间的数据无缝对接,并提高了业务处理的效率和准确性。