汤臣倍健营销云到金蝶云星辰V2数据集成案例分享
在本次技术案例中,我们将详细探讨如何通过轻易云数据集成平台,实现汤臣倍健营销云的数据无缝对接至金蝶云星辰V2。具体方案基于新版订单-出库单-厦门康圆的运行实践,着力解决大规模数据处理与接口调用等关键问题。
首先,为了确保从汤臣倍健营销云获取的数据不漏单,我们采用定时可靠的抓取机制,通过调用API接口/api/openapi/v1/erp/order/honour/agreement/header
进行增量同步。同时,还特别设计了分页和限流策略,以保证系统在高并发环境下依然能稳定工作。
数据写入方面,面临的是大量订单信息需要快速准确地存储到金蝶云星辰V2中。通过批量插入操作,以及合理的错峰调度策略,我们成功地提升了数据处理效率,并降低目标系统负载。同时,在写入过程中使用自定义映射规则,将不同格式的数据进行统一转换,以满足金蝶云星辰V2 API /jdy/v2/scm/sal_out_bound
的要求。
此外,对于两套系统之间可能出现的数据交互异常情况,也有完善的错误重试机制和实时监控日志记录功能。这些措施不仅提高了整个流程的鲁棒性,同时也极大地方便了日常运维中问题排查与定位。
以上是此次数据集成项目中的一些核心步骤和方法,接下来我们会逐步展开具体实现细节,包括各个环节中的配置参数以及实际应用效果评估。
调用汤臣倍健营销云接口获取并加工数据
在数据集成生命周期的第一步中,调用源系统的API接口获取数据是至关重要的一环。本文将深入探讨如何通过轻易云数据集成平台调用汤臣倍健营销云的接口/api/openapi/v1/erp/order/honour/agreement/header
来获取订单相关的数据,并进行初步加工处理。
接口配置与调用
首先,我们需要配置接口的元数据,以便能够正确地请求和处理数据。以下是该接口的元数据配置:
{
"api": "/api/openapi/v1/erp/order/honour/agreement/header",
"effect": "QUERY",
"method": "POST",
"number": "no",
"id": "id",
"idCheck": true,
"request": [
{"field":"orgId","label":"组织ID","type":"string","describe":"111","value":"911d09e4c0274ed18aa9a6036b3d4bc7"},
{"field":"page","label":"页码","type":"string","describe":"111","value":"1"},
{"field":"id","label":"订单id","type":"string","describe":"111"},
{"field":"applyerId","label":"要货方id","type":"string","describe":"111"},
{"field":"supplierId","label":"供货方id","type":"string","describe":"111"},
{"field":"no","label":"订单号","type":"string","describe":"111"},
{"field":"distributionType","label":"分销类型","type":"string","describe":"111"},
{"field":"distributorId","label":"分销商id","type":"string","describe":"111"},
{"field":"orderStatus","label":"订单状态","type":"string","describe":"111", "value": "WAIT_DELIVERY,PART_DELIVERY,ALL_DELIVERY,WAIT_OUT_STORAGE,PART_OUT_STORAGE,ALL_OUT_STORAGE,PART_CONFIRM,CONFIRM,AUDIT_SUCCESS,FINISH"},
{"field":"createDt","label":"创建时间","type":"string","describe":"111"},
{"field":"orderTypeCode","label":"订单类型,如普通订单、直运销售","type": "string", "describe": "111"},
{"field": "isDeliveryFreezed", "label": "是否暂停发货", "type": "string", "describe": "111"},
{"field": "nature", "label": "单据类型1订单、2退货", "type": "string", "describe": "111", "value": "1"},
{"field": "relatedApplyerId", "label": "关联交易经销商id", "type": "string", "describe": "111"},
{"field": "saleDistribution", "label": "销售渠道", "type": "string", "describe": "111"},
{"field": "disApplyerId", "label": "分销商id", "type": "string", "describe": "111"},
{"field": "startDt", "label": "订单时间(开始)", "type": "string", "describe": "111"},
{"field": "endDt", "label": "订单时间(结束)", "type": "string", "describe: 111},
{"field: appStartDt," label: 审批时间(开始), type: string," describe: 111},
{ field: appEndDt," label: 审批时间(结束), type: string," describe: 111},
{ field: lastStartDt," label: 最后修改时间(开始), type: string," describe: 111,value:"{{LAST_SYNC_TIME|datetime}} },
{ field: lastEndDt," label: 最后修改时间(结束), type: string," describe: 111,value:"{{CURRENT_TIME|datetime}} }
],
autoFillResponse:true
}
请求参数解析
在上述元数据配置中,request
字段定义了请求参数。以下是几个关键参数的解释:
orgId
: 固定值,用于标识组织。page
: 页码,默认值为1。orderStatus
: 用于过滤不同状态的订单,如待发货、部分发货等。nature
: 单据类型,固定为1表示订单。lastStartDt
和lastEndDt
: 分别表示最后修改时间的开始和结束,用于增量同步。
这些参数确保了我们能够精确地获取所需的数据,并且可以根据业务需求进行灵活调整。
数据请求与清洗
通过上述配置,我们可以使用POST方法向汤臣倍健营销云发送请求,获取符合条件的订单数据。以下是一个示例请求体:
{
"orgId": "911d09e4c0274ed18aa9a6036b3d4bc7",
"page": 1,
...
}
在接收到响应后,我们需要对原始数据进行清洗和初步加工。例如,可以过滤掉不必要的字段,只保留业务需要的信息。同时,可以对日期格式进行标准化处理,以便后续的数据转换和写入。
自动填充响应
元数据配置中的autoFillResponse
设置为true,这意味着平台会自动处理响应数据,将其填充到预定义的数据结构中。这一步骤极大地简化了开发工作,使得我们可以专注于业务逻辑而非底层实现细节。
总结
通过合理配置元数据并调用汤臣倍健营销云接口,我们能够高效地获取并清洗所需的订单数据。这一步骤不仅是整个数据集成生命周期的重要组成部分,也是确保后续数据转换与写入顺利进行的基础。
使用轻易云数据集成平台实现数据ETL转换并写入金蝶云星辰V2API接口
在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,最终转为目标平台金蝶云星辰V2API接口所能够接收的格式,并写入目标平台。本文将详细探讨如何使用轻易云数据集成平台配置元数据,实现这一过程。
API接口配置
首先,我们需要了解金蝶云星辰V2API接口的具体配置要求。根据提供的元数据配置,目标API为/jdy/v2/scm/sal_out_bound
,请求方法为POST。以下是主要字段及其配置:
bill_source
: 固定传入值ISV
bill_date
: 出库日期,格式为YYYY-MM-DD
customer_id
: 客户ID,通过客户编号查询获取remark
: 单据备注contact_linkman
,contact_phone
,contact_address
: 联系信息custom_field
: 自定义字段,包括营销云单号material_entity
: 商品分录,包括商品编号、仓库ID、数量、单位ID、单价、折扣、是否赠品、批次、生产日期、有效日期等信息
数据提取与转换
在ETL过程中,我们需要从源系统提取数据,并按照目标API接口的要求进行转换。以下是具体步骤:
-
提取数据:从源系统中提取订单和出库单相关的数据。这些数据包括订单编号、客户信息、商品信息等。
-
转换数据:
- 将出库日期格式化为
YYYY-MM-DD
格式。 - 通过客户编号查询获取客户ID。
- 将联系信息中的联系人、联系方式和详细地址分别映射到对应字段。
- 处理自定义字段,如营销云单号。
- 对商品分录进行处理,包括商品编号、仓库ID、数量、单位ID等字段的映射和计算。
- 将出库日期格式化为
以下是一个示例代码片段,展示如何进行数据转换:
{
"api": "/jdy/v2/scm/sal_out_bound",
"method": "POST",
"request": [
{
"field": "bill_source",
"value": "ISV"
},
{
"field": "bill_date",
"value": "{{financeApproveDt|date}}"
},
{
"field": "customer_id",
"value": "_findCollection find id from 617d3b33-162f-3e9f-be59-14e1953bc4a0 where number={clientAppNo}"
},
{
"field": "remark",
"value": "{remark}"
},
{
"field": "contact_linkman",
"value": "{contacts}"
},
{
"field": "contact_phone",
"value": "{phone}"
},
{
"field": "contact_address",
"value": "{shippingAddress}"
},
{
"field": "custom_field",
"children": [
{
"field": "custom_field__1__2xietiob41d0jia2",
"value": "{no}"
}
]
},
{
"field": "material_entity",
"children": [
{
"field": "material_number",
"value": "{{details.easNo}}"
},
{
"field": "stock_id",
"value": 1269848096431430656
},
{
"field": "qty",
"value": "{{details.quantity}}"
},
{
...
}
]
}
]
}
数据写入
在完成数据转换后,将其写入金蝶云星辰V2API接口。通过轻易云数据集成平台,可以实现自动化的数据写入操作,确保每个字段都符合目标系统的要求。
import requests
url = 'https://api.kingdee.com/jdy/v2/scm/sal_out_bound'
headers = {'Content-Type': 'application/json'}
data = {
# 转换后的JSON数据
}
response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
print("Data successfully written to Kingdee Cloud")
else:
print(f"Failed to write data: {response.text}")
通过上述步骤,我们可以高效地将源平台的数据经过ETL转换后写入到金蝶云星辰V2API接口中,实现不同系统间的数据无缝对接。这不仅提升了业务流程的自动化程度,也确保了数据的一致性和准确性。