金蝶云星空数据集成到聚水潭的技术案例分享
在本次数据集成项目中,我们将重点分享如何通过轻易云数据集成平台,将金蝶云星空中的其他出库单高效、安全地集成到聚水潭系统。
技术背景与挑战
首先,金蝶云星空作为企业资源计划(ERP)系统的重要组成部分,其API接口executeBillQuery
提供了丰富的数据获取功能。但由于其分页和限流机制,以及与聚水潭接口在数据格式上的差异,这对我们提出了较高的技术要求。尤其是在确保不漏单、处理大量数据快速写入、以及实时监控和异常处理等方面,都需要精心设计解决方案。
另一方面,聚水潭作为电商ERP系统,需要接收来自金蝶云星空的其他出库单信息,并通过其API /open/jushuitan/otherinout/upload
对外部传入的数据进行批量处理。这一步骤强调的是大规模数据的吞吐能力及精准度,对企业业务流程顺畅性至关重要。
解决方案亮点
为了应对此次集成任务,我们采用了一系列定制化技术策略:
-
高效抓取与分页适配: 我们利用轻易云平台的调度能力,通过定时任务可靠地调用
executeBillQuery
接口来抓取金蝶云星空中的最新出库单。针对分页问题,设计自动分段拉取功能,确保每次请求都能完整获取,不丢失任何一条记录。 -
自定义转换逻辑与映射: 对于不同系统间的数据结构差异,我们创建了自定义转换规则,以符合两边的数据格式需求。例如,将金蝶云星空复杂且嵌套的数据结构平铺为简单字段,以便于被聚水潭快速导入。同时,可以灵活调整映射关系以适应变化中的业务需求。
-
批量写入与错误重试机制: 利用聚水潭支持的大容量API,我们集中每天积累的一定量出库单进行批量写入,并结合多级错误重试机制,使得即使在网络或服务异常情况下,也能够保证最终一致性。如有失败,则会记录日志并立即触发告警通知,同时进入队列等待重新尝试提交,以保障综合效率和稳定性。
-
实时监控与质量检查: 通过集中监控面板,对每一个数据节点状态进行实时追踪,一旦发现异常,如未完成、超时或者重复录入等情况,我可以根据预设规则及时采取干预措施。此外,引进额外的数据质量校验步骤,例如哈希校验码比对及逻辑
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成过程中,调用源系统的API接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery
接口,获取并加工其他出库单的数据。
接口配置与请求参数
首先,我们需要了解executeBillQuery
接口的基本配置和请求参数。根据元数据配置,以下是主要的请求字段及其描述:
FEntity_FEntryID
: 分录IDFID
: 实体主键FBillNo
: 单据编号FDocumentStatus
: 单据状态FStockOrgId_FNumber
: 库存组织FDate
: 日期FBillTypeID
: 单据类型FNOTE
: 备注FMATERIALID_FNumber
: 物料编码FMATERIALID_FBARCODE
: 条码FSTOCKID
: 收货仓库FSTOCKID_FNumber
: 收货仓库编号FBaseQty
: 实收基本单位数量FPrice
: 成本价FAmount
: 总成本FBOMID
: BOM版本FPRODUCEDATE
: 生产日期FEXPIRYDATE
: 有效期至FMTONO
: 计划跟踪号FProjectNo
: 项目编号FSTOCKSTATUSID
: 库存状态FOWNERID
: 货主FSTOCKFLAG
: 库存更新标志FJoinQty
: 关联数量FSRCBILLTYPEID
: 源单类型FSRCBILLNO
: 源单编号FLOT_FName
: 批号FEntryNote
: 分录备注
此外,还有一些分页和过滤参数,如Limit
、StartRow
、TopRowCount
和FilterString
等。
构建请求体
在构建请求体时,需要根据业务需求选择合适的字段,并设置相应的过滤条件。例如,我们可以通过以下方式构建一个查询请求:
{
"FormId": "STK_MisDelivery",
"FieldKeys": "FID,FBillNo,FDate,FStockOrgId.FNumber,FMATERIALID.FNumber,FBaseQty,FPrice,FAmount",
"FilterString": "FApproveDate>='{{LAST_SYNC_TIME|dateTime}}' and FSTOCKID.FNumber in ('CK007','CK011','CK012','CK016','CK017')",
"Limit": 100,
"StartRow": 0,
"TopRowCount": true
}
在这个示例中,我们查询了其他出库单(表单ID为STK_MisDelivery
)的相关字段,并设置了过滤条件以获取指定时间段内特定仓库的数据。
数据清洗与转换
获取到原始数据后,需要进行清洗和转换,以便后续处理。轻易云平台提供了强大的数据处理功能,可以通过脚本或内置工具对数据进行清洗。例如:
- 日期格式转换:将日期字段从字符串格式转换为标准日期格式。
- 字段映射:将金蝶云星空中的字段映射到目标系统所需的字段。
- 数据校验:检查关键字段是否为空或不符合业务规则,并进行相应处理。
以下是一个简单的数据清洗示例:
def clean_data(data):
for record in data:
# 日期格式转换
record['FDate'] = parse_date(record['FDate'])
# 字段映射示例:将物料编码映射到目标系统的物料编码字段中
record['MaterialCode'] = record.pop('FMATERIALID.FNumber')
# 数据校验:确保实收数量不为空且大于0
if not record['FBaseQty'] or float(record['FBaseQty']) <= 0:
raise ValueError("Invalid quantity")
return data
def parse_date(date_str):
# 假设输入日期格式为 'YYYY-MM-DDTHH:MM:SS'
return datetime.strptime(date_str, '%Y-%m-%dT%H:%M:%S')
数据写入目标系统
经过清洗和转换的数据可以写入目标系统。在这个案例中,我们假设目标系统是聚水潭,通过API接口将处理后的数据写入聚水潭系统。具体实现可以参考以下伪代码:
def write_to_target_system(cleaned_data):
api_endpoint = "https://api.jushuitan.com/other_outbound"
headers = {"Content-Type": "application/json"}
for record in cleaned_data:
response = requests.post(api_endpoint, json=record, headers=headers)
if response.status_code != 200:
raise Exception(f"Failed to write data: {response.text}")
通过以上步骤,我们完成了从金蝶云星空获取其他出库单数据、进行清洗和转换,并最终写入聚水潭系统的全过程。这一过程充分利用了轻易云平台的数据集成功能,实现了不同系统间的数据无缝对接。
使用轻易云数据集成平台实现金蝶到聚水潭其他出库单的ETL转换与写入
在数据集成生命周期中,将源平台的数据进行ETL(Extract, Transform, Load)转换并写入目标平台是关键步骤之一。本文将详细探讨如何使用轻易云数据集成平台将金蝶的其他出库单数据转换为聚水潭API接口所能接收的格式,并最终写入聚水潭。
1. 数据请求与清洗
在数据集成过程中,首先需要从源系统(金蝶)请求并清洗数据。这一步骤确保我们获取到的数据是准确且符合业务需求的。假设我们已经完成了这一步骤,接下来将重点放在数据转换与写入上。
2. 数据转换与写入
轻易云数据集成平台提供了强大的元数据配置功能,可以帮助我们将源系统的数据转换为目标系统所需的格式。以下是针对金蝶其他出库单到聚水潭API接口的具体元数据配置:
{
"api": "/open/jushuitan/otherinout/upload",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"request": [
{
"field": "is_confirm",
"label": "是否确认单据",
"type": "string"
},
{
"field": "excute_confirming",
"label": "是否审核单据",
"type": "string",
"value": "false"
},
{
"field": "wms_co_id",
"label": "仓库编号",
"type": "int",
"value": "{FSTOCKID_FNumber}",
"mapping": {
"target": "656fe37d5b320127d03778c2",
"direction": "positive"
}
},
{
"field": "type",
"label": "出入库类型",
"type": "string",
"value": "out"
},
{
"field": "external_id",
"label": "外部单号",
"type": "string",
"value": "{FBillNo}"
},
{
"field": "remark",
...
配置解析
-
API接口路径:
/open/jushuitan/otherinout/upload
,这是聚水潭用于接收其他出库单的API接口路径。 -
HTTP方法:
POST
,表示向服务器提交数据。 -
字段映射:
is_confirm
和excute_confirming
:用于控制单据确认和审核状态。wms_co_id
:仓库编号,从金蝶字段{FSTOCKID_FNumber}
映射过来,并通过mapping
指定目标值。type
:固定值out
表示出库类型。external_id
:外部单号,对应金蝶中的{FBillNo}
。remark
:备注信息,对应金蝶中的{FNOTE}
。
-
嵌套数组处理:
items
字段包含一个数组,每个元素代表一条商品明细。子字段包括:sku_id
: 商品编码,通过_findCollection find F_CNB_Text from 046c6ba0-144d-3f00-bde4-8532a52d4073 where FNumber={FMATERIALID_FNumber}
查询得到。qty
: 入库数量,对应{FBaseQty}
。remark
: 明细备注,对应{FEntryNote}
。sale_price
: 单价,对应{FPrice}
。
-
物流信息:
- 包含物流公司编码 (
lc_id
)、物流单号 (l_id
) 和物流公司名称 (logistics_company
) 等字段。
- 包含物流公司编码 (
数据计算
在元数据配置中,还可以通过 groupCalculate
对数据进行汇总计算。例如:
"groupCalculate":{
...
}
此配置会对指定字段进行分组和汇总计算,如对 FBaseQty
字段求和,以便生成符合业务需求的数据结构。
实际操作步骤
- 配置元数据:在轻易云平台上,根据上述元数据配置进行设置。
- 执行ETL流程:
- 提取(Extract):从金蝶系统中提取其他出库单的数据。
- 转换(Transform):根据元数据配置进行字段映射和格式转换,包括处理嵌套数组和汇总计算等操作。
- 加载(Load):通过POST请求,将转换后的数据发送到聚水潭API接口。
通过以上步骤,我们可以高效地将金蝶系统中的其他出库单数据无缝集成到聚水潭系统中,实现跨系统的数据同步与共享。