吉客云·奇门数据集成到金蝶云星空:销售单对接技术案例
在本次技术案例中,我们将详细探讨如何实现吉客云·奇门与金蝶云星空之间的销售单数据对接。通过轻易云数据集成平台,利用其高吞吐量的数据写入能力和强大的API资产管理功能,可以确保大量数据能够快速、准确地传输至目标系统,提高业务效率和可靠性。
系统概览及关键点
1. 数据获取与接口调用
首先,从吉客云·奇门系统中抓取销售单信息。我们选择使用jackyun.tradenotsensitiveinfos.list.get
接口,该接口支持分页查询并带有限流控制,以确保不会因一次性请求过多数据而影响性能或引发服务拒绝(DoS)问题。在实际操作过程中,需要设置合理的分页参数以及限流策略,从而确保数据抓取过程平稳进行。
2. 数据转换与映射
为了适应两大系统间可能存在的数据格式差异,我们需要自定义转换逻辑,将获取到的吉客云·奇门原始数据信息映射为符合金蝶云星空要求的数据结构。这一步骤可以有效避免由于字段不匹配或缺失所造成的传输失败和业务异常。
3. 批量处理与高速写入
针对大量销售单信息的数据上传需求,轻易云平台提供了高效的批量写入机制。借助batchSave
API,我们可以将预处理完成后的批量数据快速导入金蝶云星空,大幅降低单次操作成本,并提高系统整体运行效率。同时,通过定时任务调度,实现定期自动化批量处理,保持两边系统间的数据一致性。
4. 实时监控与告警机制
整个集成流程中,通过实时监控和告警功能,对每个步骤实行全程跟踪,一旦出现任何异常情况,例如网络故障、接口返回错误等,即可及时捕捉并记录日志,为后续定位问题提供依据。此外,可配置的一系列告警方式,如邮件通知、短信提醒等,也能让运维人员第一时间掌握任务状态,迅速采取应对措施。
特殊情况处理
面对可能出现的数据遗漏问题,比如某些订单未被成功同步到目标系统,可启用重试机制来保证完整性。在检测到特定错误码或者超时时候,再次调用对应API以重新尝试执行。另外,对于不可恢复性的错报,应当建立清晰的问题反馈通道,使得相关责任人能够及时介入解决。
此次分享意在展示如何通过一系列精细化配置及高度自动化的技术手段,实现复杂场景下不同
调用吉客云·奇门接口获取并加工数据
在轻易云数据集成平台的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过吉客云·奇门接口jackyun.tradenotsensitiveinfos.list.get
获取销售单数据,并进行初步加工。
接口配置与请求参数
首先,我们需要配置接口的元数据。根据提供的元数据配置,以下是关键参数及其含义:
- API名称:
jackyun.tradenotsensitiveinfos.list.get
- 请求方法:
POST
- 分页页数:每次请求返回200条记录
- 发货时间(起始):当前日期前两天的00:00:00
- 发货时间(结束):当前日期前一天的00:00:00
- 返回字段:包括仓库代码、删除状态、仓库名称、交易状态、创建时间、交易类型、店铺名称、店铺代码、发货时间、交易编号及商品详情等
- 默认返回总记录数:首次调用时传递1以获取总记录数
以下是请求参数的具体配置:
{
"pageSize": "200",
"startConsignTime": "_function DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 2 DAY), '%Y-%m-%d 00:00:00')",
"endConsignTime": "_function DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 DAY), '%Y-%m-%d 00:00:00')",
"fields": "warehouseCode,isDelete,warehouseName,tradeStatus,gmtCreate,tradeType,shopName,shopCode,consignTime,tradeNo,goodsDetail.goodsNo,goodsDetail.goodsName,goodsDetail.ellCount,goodsDetail.shareFavourableFee,goodsDetail.sellCount,goodsDetail.unit",
"hasTotal": "1"
}
数据清洗与转换
在获取到原始数据后,需要对数据进行清洗和转换,以便后续处理。根据元数据配置中的formatResponse
字段,我们需要将consignTime
字段转换为consignDate
,并格式化为日期类型。
例如,原始响应中的一条记录可能如下:
{
"warehouseCode": "WH001",
"isDelete": false,
"warehouseName": "Main Warehouse",
"tradeStatus": 6000,
"gmtCreate": "2023-10-01T12:34:56Z",
"tradeType": 1,
"shopName": "Shop A",
"shopCode": "SHOP001",
"consignTime": "2023-10-01T14:20:30Z",
"tradeNo": "TRADE12345",
"goodsDetail": [
{
"goodsNo": "G001",
"goodsName": "Product A",
"ellCount": 100,
"shareFavourableFee": 10.5,
"sellCount": 2,
"unit": "pcs"
}
]
}
经过转换后的记录应为:
{
"warehouseCode": "WH001",
"isDelete": false,
"warehouseName": "Main Warehouse",
"tradeStatus": 6000,
"gmtCreate": "2023-10-01T12:34:56Z",
"tradeType": 1,
"shopName": "Shop A",
"shopCode": "SHOP001",
"consignDate": {"$date":"2023-10-01"},
...
}
条件过滤与数据校验
在处理过程中,还需对数据进行条件过滤和校验。根据元数据配置中的condition
字段,需满足以下条件的数据才会被保留:
tradeStatus
大于等于6000
goodsDetail.sellCount
大于0
tradeType
不在[8,11,12,13]
此外,为确保数据唯一性和完整性,我们需要对每条记录的主键字段 tradeNo
做唯一性校验。
实现示例
以下是一个简化的实现示例,展示如何调用接口并处理响应数据:
import requests
import json
from datetime import datetime, timedelta
# 配置请求参数
params = {
'pageSize': '200',
'startConsignTime': (datetime.now() - timedelta(days=2)).strftime('%Y-%m-%d %H:%M:%S'),
'endConsignTime': (datetime.now() - timedelta(days=1)).strftime('%Y-%m-%d %H:%M:%S'),
'fields': 'warehouseCode,isDelete,warehouseName,tradeStatus,gmtCreate,tradeType,...',
'hasTotal': '1'
}
# 发起POST请求
response = requests.post('https://api.jackyun.com/tradenotsensitiveinfos/list/get', data=params)
data = response.json()
# 数据清洗与转换
for record in data['result']:
record['consignDate'] = record.pop('consignTime').split('T')[0]
# 条件过滤与校验
if record['tradeStatus'] >=6000 and any(item['sellCount'] >0 for item in record['goodsDetail']) and record['tradeType'] not in [8,11,12,13]:
# 数据处理逻辑...
pass
# 后续处理逻辑...
通过上述步骤,我们可以高效地从吉客云·奇门接口获取销售单数据,并进行必要的数据清洗和转换,为后续的数据处理和分析打下坚实基础。
使用轻易云数据集成平台进行销售单数据ETL转换并写入金蝶云星空API接口
在使用轻易云数据集成平台进行数据集成时,第二步的关键任务是将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,并转为目标平台金蝶云星空API接口所能够接收的格式,最终写入目标平台。本文将详细探讨这一过程中的技术细节和实现方案。
1. 配置API接口
首先,我们需要配置金蝶云星空的API接口。根据元数据配置,我们使用的是batchSave
API,采用POST
方法进行数据提交。以下是具体的配置参数:
{
"api": "batchSave",
"effect": "EXECUTE",
"method": "POST",
"number": "FBillNo",
"id": "FBillNo",
"name": "FBillNo",
"idCheck": true,
...
}
2. 数据请求与清洗
在这个阶段,我们从源系统获取原始数据,并对其进行清洗和预处理。例如,提取销售单号、日期、客户信息等关键字段。这些字段通过特定的解析器(如ConvertObjectParser
)和查询语句(如_mongoQuery
)来获取和转换。
{
"field": "FJKYNo",
"label": "吉客云单号",
"type": "string",
...
},
{
"field": "FDate",
"label": "日期",
"type": "datetime",
...
},
{
...
}
3. 数据转换与映射
在这个阶段,我们将清洗后的数据转换为金蝶云星空API能够接收的格式。主要包括以下几个步骤:
3.1 转换单据类型和日期
{
"field": "FBillTypeID",
...
"value": "XSCKD01_SYS"
},
{
...
}
3.2 映射销售组织和客户信息
通过MongoDB查询语句,将源系统中的销售组织和客户信息映射到目标系统中:
{
...
"value": "_mongoQuery 22b42e1b-f3d2-367a-b973-2d9dbe490454 findField=content.FBelongOrgId where={\"content.FJKYCustId\":{\"$eq\":\"{shopCode}\"}}"
},
{
...
}
3.3 设置发货组织和备注信息
发货组织信息根据货主名称进行条件判断并映射:
{
...
"value": "_function CASE '{goodsDetail_ownerName}' WHEN '爱花迷(上海)日用品有限公司' THEN '上海微朵婴童用品有限公司' ELSE '{goodsDetail_ownerName}' END"
},
{
...
}
3.4 配置财务信息
财务信息包括结算组织和结算币别,通过MongoDB查询语句获取并设置:
{
...
{
...
{
...
{
...
}
}
}
}
3.5 明细信息处理
明细信息部分需要特别注意物料编码、实发数量、价税合计等字段的处理:
{
...
{
{
...
{
...
{
...
{
...
}
}
}
}
}
}
4. 数据写入目标平台
最后一步是将转换后的数据通过API接口写入金蝶云星空。我们使用批量保存操作,并设置相关参数,如自动提交审核、验证基础资料等:
{
{
...
{
...
{
...
{
...
{
...
}
}
}
}
}
}
通过上述步骤,我们可以实现从源平台到金蝶云星空的销售单数据ETL转换及写入过程。这一过程不仅确保了数据的一致性和准确性,还极大提升了业务处理效率。