易仓数据集成到金蝶云星空的案例分享
在复杂的业务流程中,跨系统的数据对接无疑是一个挑战。本文探讨了如何通过轻易云数据集成平台,将易仓的数据高效、可靠地集成到金蝶云星空。具体案例为:Done-易仓-订单——>金蝶-销售出库单。
技术背景与需求分析
项目要求实现将易仓系统中的订单数据,通过API接口getOrderList获取,并批量写入至金蝶云星空中的销售出库单,对应使用其batchSave接口。在这个过程中,我们需要应对以下技术难点和需求:
- 高吞吐量的数据写入能力:确保大量订单数据可以快速、稳定地从易仓同步到金蝶云星空。
- 实时监控与告警:提供集中化监控和告警机制,确保整个数据流动过程透明可靠。
- 自定义转换逻辑:适配特定业务需求,对接双方存在的数据结构差异。
- 分页及限流处理:解决由于API限制带来的分页抓取问题以及安全限流控制。
- 异常处理与重试机制:在对接过程中出现错误时,实现智能重试,保证任务成功率。
解决方案设计思路
基于上述需求,本方案首先通过轻易云提供的可视化工具设计一个数据流配置,以直观呈现并简化复杂的数据处理逻辑。核心操作分为三个主要步骤:
- 配置定时任务,从易仓接口周期性抓取最新订单列表(getOrderList)。
- 对抓取的数据进行必要的预处理,包括格式转换和质量检查,保障后续步骤能够顺利执行。
- 将清洗后的订单数据批量提交至金蝶云星空外部API(batchSave),并通过日志记录功能跟踪每个请求响应状态。
我们将在后续章节详细阐述这三大步骤的实现方式,包括具体的代码示例和注意事项,为读者提供一份实操指南。
调用易仓接口getOrderList获取并加工数据
在轻易云数据集成平台的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过调用易仓接口getOrderList
来获取订单数据,并对其进行初步加工。
接口配置与调用
首先,我们需要配置元数据以便正确调用getOrderList
接口。以下是该接口的元数据配置:
{
"api": "getOrderList",
"effect": "QUERY",
"method": "POST",
"number": "order_code",
"id": "order_id",
"idCheck": true,
"request": [
{"field": "page", "label": "page", "type": "int", "value": "1"},
{"field": "page_size", "label": "page_size", "type": "int", "value": "50"},
{"field": "get_detail", "label": "是否返回明细", "type": "int", "value": "1"},
{"field": "get_custom_order_type",
"label":
"是否返回收件人信息",
"type":
"int",
"value":
"1"
},
{"field":"get_address","label":"地址","type":"int","value":"1"},
{
"field":"condition",
"label":"过滤参数",
"type":"object",
"children":[
{
"field":"warehouse_ship_date_start",
"label":"仓库发货时间始",
"type":"string",
"value":"{{LAST_SYNC_TIME|datetime}}"
},
{
"field":"warehouse_ship_date_end",
"label":"仓库发货时间尾",
"type":"string",
"value":"{{CURRENT_TIME|datetime}}"
},
{
"field":"status","label":"订单状态","type":"int","value":"4"
},
{
"field":
warehouse_id_list","label":
仓库id","type":
string","value":
19,4,8,11,7,6,22,12,5,16,26,25,9,28","parser":{"name":
StringToArray","params":
,"}},
{
field:
user_account_list","label":
店铺列表","type":
string","parser":{"name":
StringToArray","params":
,"}}
]
}
],
buildModel: true,
autoFillResponse: true,
condition_bk: [[{"field":"order_details.product_sku_list","logic":"neqv2","value":"G4-1400X-3P"}]],
condition: [[{"field":"order_details.product_sku_list","logic":"neqv2","value":"G4-1400X-3P"}]]
}
请求参数解析
在请求参数中,我们设置了分页参数page
和page_size
,确保每次请求返回50条记录。通过设置get_detail
、get_custom_order_type
和get_address
为1,我们可以获取订单的详细信息、收件人信息以及地址信息。
过滤参数部分则包含了多个条件:
warehouse_ship_date_start
和warehouse_ship_date_end
: 用于限定订单的发货时间范围。status
: 用于筛选订单状态为4(已发货)。warehouse_id_list
: 指定多个仓库ID,通过字符串解析器将其转换为数组。user_account_list
: 用于指定店铺列表,同样通过字符串解析器处理。
数据清洗与加工
在获取到原始数据后,需要对其进行清洗和初步加工。轻易云平台提供了自动填充响应(autoFillResponse)功能,可以简化这一过程。然而,为了确保数据质量,我们还需进行一些自定义处理。
例如,过滤掉特定SKU的产品:
{
condition: [[{"field":"order_details.product_sku_list","logic":"neqv2","value":"G4-1400X-3P"}]]
}
这段配置确保了在返回的数据中,不包含SKU为G4-1400X-3P的产品。
数据模型构建
通过设置buildModel为true,平台会自动根据返回的数据结构生成相应的数据模型。这一步极大地简化了后续的数据处理和转换工作,使得我们能够专注于业务逻辑的实现。
实践案例
假设我们需要从易仓系统中获取某个时间段内所有已发货的订单,并将这些订单导入到金蝶系统作为销售出库单。我们可以按照以下步骤进行操作:
- 配置并调用易仓接口,获取符合条件的订单数据。
- 对返回的数据进行清洗,确保数据完整性和准确性。
- 根据业务需求,将清洗后的数据转换为金蝶系统所需的格式。
- 将转换后的数据写入金蝶系统,完成销售出库单的创建。
通过以上步骤,我们实现了从易仓到金蝶系统的数据无缝对接。这不仅提高了工作效率,还保证了数据的一致性和准确性。
总之,通过合理配置元数据并充分利用轻易云平台的功能,我们能够高效地完成复杂的数据集成任务,实现不同系统间的数据无缝对接。
使用轻易云数据集成平台将源平台订单数据转换并写入金蝶云星空API接口
在数据集成的生命周期中,ETL(提取、转换、加载)过程是关键的一环。本文将详细介绍如何使用轻易云数据集成平台将源平台的订单数据转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。
1. 数据请求与清洗
在开始ETL转换之前,首先需要从源平台(例如Done-易仓)提取订单数据,并进行必要的清洗和预处理。这一步骤确保了数据的一致性和准确性,为后续的转换和加载奠定基础。
2. 数据转换与写入
在完成数据请求与清洗后,我们进入生命周期的第二步:将清洗后的数据进行ETL转换,并通过金蝶云星空API接口写入目标平台。以下是具体的元数据配置及其应用。
元数据配置解析
{
"api": "batchSave",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"request": [
{
"field": "FBillTypeID",
"label": "单据类型",
"type": "string",
"describe": "单据类型",
"parser": {
"name": "ConvertObjectParser",
"params": "FNumber"
},
"value": "XSCKD01_SYS"
},
{
"field": "F_TLQG_TextYCDD",
"label": "单据编号",
"type": "string",
"describe": "单据编号",
"value": "{order_code}"
},
{
...
}
],
...
}
关键字段解析
-
FBillTypeID:
- 描述: 单据类型
- 解析器:
ConvertObjectParser
,参数为FNumber
- 值: 固定值
XSCKD01_SYS
-
F_TLQG_TextYCDD:
- 描述: 单据编号
- 值:
{order_code}
,从源平台获取的订单编号
-
FDate:
- 描述: 日期
- 值:
{warehouse_ship_date}
,从源平台获取的发货日期
-
FSaleOrgId:
- 描述: 销售组织
- 解析器:
ConvertObjectParser
,参数为FNumber
- 值: 固定值
102
-
FCustomerID:
- 描述: 客户
- 值:
_findCollection find FNumber from bf090579-f460-3494-adb1-d067fc0d6936 where FName={user_account}
- 解析器:
ConvertObjectParser
,参数为FNumber
-
FEntity(明细信息):
- 包含多个子字段,如客户物料编码(FCustMatID)、实发数量(FRealQty)、含税单价(FTaxPrice)等。
-
SubHeadEntity(财务信息):
- 包含多个子字段,如整单折扣额(FAllDisCount)、收货人信息等。
数据写入操作
-
配置API调用:
{ ... "operation": { ... "method": "batchArraySave" }, ... }
-
执行批量保存操作:
{ ... {"field":"FormId","label":"业务对象表单Id","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"SAL_OUTSTOCK"}, {"field":"Operation","label":"执行的操作","type":"string","describe":"执行的操作","value":"Save"}, {"field":"IsAutoSubmitAndAudit","label":"提交并审核","type":"bool","describe":"提交并审核","value":"false"}, {"field":"IsVerifyBaseDataField","label":"验证基础资料","type":"bool","describe":"是否验证所有的基础资料有效性,布尔类,默认false(非必录)","value":"false"}, {"field":"SubSystemId","label":"系统模块","type":"string","describe":"默认仓库模块","value":"21"} ... }
以上配置确保了从源平台提取的数据经过适当的转换后,以正确的格式通过金蝶云星空API接口写入目标系统。每个字段都根据实际需求进行了详细配置,包括必要的数据解析和映射。
总结
通过上述步骤,我们实现了从Done-易仓到金蝶云星空的数据无缝对接。这不仅提高了数据处理效率,还确保了业务流程的透明度和可追溯性。在实际应用中,可以根据具体需求对元数据配置进行调整,以满足不同业务场景下的数据集成需求。