汤臣倍健营销云数据集成到金蝶云星辰V2案例分享
在企业的日常运营中,不同系统之间的数据流通和无缝对接至关重要。本文将详细分析并剖析一个具体的系统对接实例,即汤臣倍健营销云的数据如何通过轻易云数据集成平台被高效、可靠地集成到金蝶云星辰V2。在此过程中,我们将探讨多个技术要点,包括API接口调用、大量数据快速写入、分页处理与限流处理,以及定制化的数据映射等。
为了实现这一目标,首先需要考虑如何确保从汤臣倍健营销云获取订单数据时不漏单。使用 /erp/api/order/query/borrowOrder
接口可以定时可靠地抓取最新的订单信息。同时,为了避免大规模数据请求带来的服务压力,通过合理设置分页参数及限流机制,可以有效保障接口的可用性。
其次,针对获取的大量订单数据,我们设计了一套高效且批量的写入方案,将其存储到金蝶云星辰V2中。在实际操作中,要调用金蝶提供的 /jdy/v2/scm/inv_tfmove
接口,并根据业务需求,对原始数据进行转换,以符合目标系统要求。这一过程中的关键步骤是建立一个稳定、高效的数据映射工具,它能自动完成从源头格式向目的格式转化。
此外,在处理两者之间的数据传输时,还需特别注意异常处理与错误重试机制。当发生网络延迟或其他不可预见的问题时,该机制确保不会丢失关键业务流程中的任何重要信息,从而提升整体运行稳健性。
在本文后续部分,将会进一步深入讨论这些技术点以及具体实施方法,而如何实时监控整个过程以及详细记录日志也是我们关注的重要方面,这不仅有助于排查问题,更能提高运维效率。敬请期待进一步详解这一极具代表性的成功案例。
调用汤臣倍健营销云接口获取并加工数据的技术案例
在数据集成生命周期的第一步中,调用源系统的API接口是至关重要的一环。本文将深入探讨如何使用轻易云数据集成平台配置元数据,调用汤臣倍健营销云的/erp/api/order/query/borrowOrder
接口获取并加工数据。
接口调用配置
首先,我们需要配置API接口的基本信息。根据提供的元数据配置,我们可以看到以下关键参数:
api
:/erp/api/order/query/borrowOrder
method
:POST
number
:number
id
:id
pagination
: 分页参数,默认每页30条记录omissionRemedy
: 数据补偿机制,定时任务每两小时执行一次
请求参数详解
在请求参数部分,我们需要特别注意以下字段:
- tenantId: 经销商ID,这是一个必填项,用于标识具体的经销商。例如:
08e2fd9d074f4ef7b5e6416b74d006d6
。 - number: 系统订单号(调拨出库单),如果传递此参数,其他时间和状态条件将无效。例如:
JHDRK00000008602
。 - status: 订单状态,0表示未审核,1表示已审核(已出库)。默认值为1。
- beginTime: 开始时间,用于基于更新时间查询。格式为
YYYY-MM-DD HH:mm:ss
。 - endTime: 结束时间,同样用于基于更新时间查询。格式为
YYYY-MM-DD HH:mm:ss
。 - pageNo: 页码,默认值为1。
- pageSize: 每页条数,默认值为30。
数据补偿机制
为了确保数据的完整性和及时性,我们设置了一个定时任务,每两小时执行一次(crontab: 2 */2 * * *
),以弥补可能遗漏的数据。这个任务会自动填充请求中的开始时间字段(beginTime
),设置为两小时前。
"omissionRemedy": {
"crontab": "2 */2 * * *",
"takeOverRequest": [
{
"field": "beginTime",
"label": "修改时间开始段",
"type": "string",
"is_required": true,
"value": "{{HOURE_AGO_2|datetime}}"
}
]
}
条件过滤
为了确保我们只获取特定类型的数据,我们在请求中添加了条件过滤:
"condition": [
[
{
"field": "subtype",
"logic": "eq",
"value": "301"
}
]
]
这里我们指定了字段subtype
必须等于301,这样可以过滤掉不相关的数据。
请求示例
综合以上配置,一个完整的请求示例如下:
{
"tenantId": "08e2fd9d074f4ef7b5e6416b74d006d6",
"number": "",
"status": "1",
"beginTime": "{{DAYS_AGO_1|datetime}}",
"endTime": "{{CURRENT_TIME|datetime}}",
"pageNo": "1",
"pageSize": "30"
}
在这个示例中,我们没有传递具体的订单号,因此系统会基于更新时间范围来查询数据。
数据处理与清洗
获取到数据后,需要进行一定的数据清洗和转换,以便后续处理。常见的数据清洗操作包括:
- 去除重复记录
- 格式化日期字段
- 转换数据类型(如字符串转整数)
- 补全缺失字段
这些操作可以通过轻易云平台提供的可视化工具实现,无需编写复杂代码。
实时监控与日志记录
为了确保整个过程顺利进行,我们可以利用平台提供的实时监控功能,对每个环节进行监控,并记录日志。这有助于快速发现和解决问题,提高整体效率。
通过以上步骤,我们成功调用了汤臣倍健营销云的API接口,并对获取到的数据进行了初步处理。这只是数据集成生命周期中的第一步,但它奠定了坚实的基础,为后续的数据转换与写入提供了保障。
使用轻易云数据集成平台将源数据转换为金蝶云星辰V2API格式并写入目标平台
在数据集成的过程中,ETL(提取、转换、加载)是一个至关重要的环节。本文将详细探讨如何使用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,转为金蝶云星辰V2API接口所能够接收的格式,并最终写入目标平台。
数据请求与清洗阶段
在开始ETL转换之前,我们首先需要对源数据进行请求和清洗。这一阶段主要包括从源系统中提取原始数据,并对其进行必要的预处理,如去除噪声、填补缺失值等。此步骤确保了数据的质量,为后续的转换和加载奠定了基础。
数据转换与写入阶段
接下来,我们进入本文的重点:将清洗后的数据进行转换,并通过金蝶云星辰V2API接口写入目标平台。
元数据配置解析
以下是我们针对金蝶云星辰V2API接口所需的数据格式进行的元数据配置:
{
"api": "/jdy/v2/scm/inv_tfmove",
"effect": "EXECUTE",
"method": "POST",
"number": "1",
"autoCheck": "inv_tfmove_bill_order",
"id": "1",
"name": "1",
"idCheck": true,
"request": [
{"field":"bill_date","label":"出库日期","type":"string","describe":"出库日期,格式:2019-01-01","value":"{created}"},
{"field":"trans_type","label":"业务类型","type":"string","describe":"1:同价调拨(默认),2:异价调拨","value":"1"},
{"field":"trans_fer_status","label":"调拨状态","type":"string","describe":"0:未出库(默认),1:未入库,2:部分入库,3:全部入库","value":"3"},
{"field":"remark","label":"单据备注","type":"string","describe":"单据备注","value":"来自营销云{number}"},
{
"field":"material_entity",
"label":"商品分录",
"type":"array",
"describe":"商品编码",
"value":"itemList",
"children":[
{"field":"material_id","label":"商品","type":"string","describe":"商品","value":"_findCollection find id from 395d1591-aee0-3f10-ad09-d5593167af48 where number={{itemList.helpCode}}"},
{"field":"in_stock_id","label":"调入仓库","type":"string","describe":"调入仓库","value":"_findCollection find id from f4dc9f0e-4ac1-3513-861b-a741c0e67f10 where number={{itemList.otherExtDepotCode}}"},
{"field":"out_stock_id","label":"调出仓库","type":"string","describe":"调出仓库","value":"_findCollection find id from f4dc9f0e-4ac1-3513-861b-a741c0e67f10 where number={{itemList.extDepotCode}}"},
{"field":"batch_no","label":"批次号","type":"string","value":"{{itemList._Flot}}"},
{"field":"kf_date","label":"生产日期","type":"string","value":"{{itemList._Fmfg}}"},
{"field":"valid_date","label":"","有效日期"type:"string","value":"{{itemList._Fexp}}"},
{"field":"","kf_period":"保质期天数","type":"string","describe":"调入仓位,启用了仓位管理则必填","value":"730"},
{"field":"","kf_type":"保质期单位","type":"string","describe":"保质期类型:1/天,2/月,3/年(保质期商品必填)","value":"1"},
{"field":"","qty":"数量","type":"string","describe":"数量","value":"{{itemList.opernumber}}"},
{"field":"","unit_id":"单位","type":"string","describe":"单位","_findCollection find base_unit_id from 395d1591-aee0-3f10-ad09-d5593167af48 where number={{itemList.helpCode}}" }
]
}
]
}
数据字段映射与转换
根据上述元数据配置,我们需要将源数据字段映射到目标系统所需的数据字段。以下是关键字段的映射和转换规则:
- 出库日期 (
bill_date
): 从源数据中提取创建时间{created}
。 - 业务类型 (
trans_type
): 固定值1
表示同价调拨。 - 调拨状态 (
trans_fer_status
): 固定值3
表示全部入库。 - 单据备注 (
remark
): 使用模板字符串来自营销云{number}
。 - 商品分录 (
material_entity
):- 商品ID (
material_id
): 根据商品编码helpCode
查询对应ID。 - 调入仓库ID (
in_stock_id
): 根据调入仓库编码otherExtDepotCode
查询对应ID。 - 调出仓库ID (
out_stock_id
): 根据调出仓库编码extDepotCode
查询对应ID。 - 批次号 (
batch_no
), 生产日期 (kf_date
), 有效日期 (valid_date
) 等直接从源数据中提取相应字段值。 - 保质期天数 (
kf_period
) 和单位 (unit_id
) 固定值分别为730
天和1
。
- 商品ID (
API调用与写入
完成上述字段映射和转换后,即可通过HTTP POST请求将处理后的数据发送至金蝶云星辰V2API接口 /jdy/v2/scm/inv_tfmove
。以下是一个示例请求:
{
"bill_date": "2023-10-01",
"trans_type": "1",
"trans_fer_status": "3",
"remark": "来自营销云12345",
"material_entity": [
{
"material_id": "<查询结果>",
"in_stock_id": "<查询结果>",
"out_stock_id": "<查询结果>",
...
}
...
]
}
通过这种方式,我们可以确保源系统中的数据经过ETL处理后,符合目标系统(金蝶云星辰)的要求,并顺利完成写入操作。这一过程不仅提高了数据处理效率,还保证了数据的一致性和准确性。