ETL技术在金蝶云星空与旺店通WMS集成中的应用

news/2024/10/17 12:12:39/

金蝶云星空数据集成到旺店通WMS的技术案例分享

在数字化转型的背景下,现代企业对系统间的数据集成需求日益增加。本篇文章将以“组装入库=>其他入库单-1”方案为例,详细解析如何通过轻易云数据集成平台,实现金蝶云星空与旺店通WMS之间的数据高效流动。

首先,在这个跨系统数据对接过程中,我们需要确保从金蝶云星空获取的数据能够准确无误地写入到旺店通WMS。为了实现这一功能,本次方案主要采用了executeBillQuery和WDT_WMS_ENTRYORDER_CREATE这两个API接口。其中,executeBillQuery用于抓取金蝶云星空中指定条件下的业务单据数据,而WDT_WMS_ENTRYORDER_CREATE用来将这些业务单据创建为旺店通中的其他入库单。

如何确保集成过程不漏单

在进行批量操作时,不容忽视的是如何避免数据遗漏和重复的问题。在本方案中,通过定时可靠的抓取机制,从金蝶云星空接口周期性拉取最新的业务流水,同时利用接口分页功能处理大数据量,提高检索效率。此外,为了解决限流问题,每次请求控制在限定数量内,并设计重试机制确保异常情况下也能够重新获取所需数据。

处理两系统之间的数据格式差异

由于金蝶云星空和旺店通WMS使用不同的数据结构,因此需要建立一个有效的数据映射策略。借助轻易云平台提供的可视化配置工具,我们可以自定义字段映射关系,把从 executeBillQuery 接口获取的信息经过转换后,再传递给 WDT_WMS_ENTRYORDER_CREATE 接口。同时,这一过程支持实时监控与日志记录,使得每一次变更都能被清楚追踪并及时调整,有效提高操作透明度和准确性。

以上只是简要介绍了我们面对的一些核心技术挑战及解决思路,后续文章部分将深入剖析各个步骤具体实施方法以及遇到的问题与解决方案,以帮助读者更好地理解大型复杂业务场景中的系统集成实践。 

金蝶与WMS系统接口开发配置

调用源系统金蝶云星空接口executeBillQuery获取并加工数据

在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery接口来获取并加工数据。

接口调用与元数据配置

首先,我们需要理解如何配置和调用金蝶云星空的executeBillQuery接口。以下是元数据配置的关键部分:

{"api": "executeBillQuery","method": "POST","number": "FBillNo","id": "FEntity_FEntryID","pagination": {"pageSize": 500},"idCheck": true,"operation": {"method": "merge","field": "FBillNo","bodyName": "items","bodySum": ["FQty"],"header": ["FBillNo"],"body": ["FMaterialID_FNumber", "FQty", "FLOT_FNumber", "FProduceDate", "FEXPIRYDATE"]},...
}
请求参数配置

在请求参数中,我们需要定义查询条件和分页参数。以下是一些关键字段及其描述:

  • FilterString: 用于过滤查询结果,例如 FApproveDate>='{{MINUTE_AGO_30|datetime}}' AND FDocumentStatus = 'C' AND FStockID.F_JZJ_CheckBox=1 AND FAFFAIRTYPE = 'Assembly'
  • FieldKeys: 定义需要查询的字段集合,例如 ["FID", "FBillNo", ...]
  • FormId: 表单ID,例如 "STK_AssembledApp"

这些参数确保我们能够精确地获取所需的数据。

数据请求与清洗

在发起请求后,返回的数据可能包含多条记录。我们需要对这些数据进行清洗和处理。以下是一个示例代码片段,用于发起请求并处理响应:

import requests
import jsonurl = 'https://api.kingdee.com/executeBillQuery'
headers = {'Content-Type': 'application/json'}
payload = {'FormId': 'STK_AssembledApp','FieldKeys': ['FID', 'FBillNo', ...],'FilterString': 'FApproveDate>=\'2023-01-01\' AND FDocumentStatus=\'C\'','Limit': 500,'StartRow': 0
}response = requests.post(url, headers=headers, data=json.dumps(payload))
data = response.json()# 清洗数据
cleaned_data = []
for record in data:cleaned_record = {'单据编号': record['FBillNo'],'物料编码': record['FMaterialID_FNumber'],...}cleaned_data.append(cleaned_record)
数据转换与写入

在清洗完数据后,需要将其转换为目标格式并写入目标系统。这里我们使用了merge操作,将相同单据编号的数据合并,并计算数量总和:

"operation": {"method": "merge",...
}

具体实现可以如下:

merged_data = {}
for record in cleaned_data:bill_no = record['单据编号']if bill_no not in merged_data:merged_data[bill_no] = {'单据编号': bill_no,'items': []}merged_data[bill_no]['items'].append({'物料编码': record['物料编码'],...'数量': record['数量']})# 写入目标系统
for bill_no, bill_data in merged_data.items():# 假设有一个函数write_to_target_system用于写入目标系统write_to_target_system(bill_data)

通过上述步骤,我们实现了从金蝶云星空获取数据、清洗、转换并写入目标系统的全过程。这一过程不仅提高了数据处理的效率,也确保了数据的一致性和准确性。 

如何对接金蝶云星空API接口

使用轻易云数据集成平台进行ETL转换并写入旺店通WMSAPI接口

在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL转换,转为目标平台旺店通WMSAPI接口所能够接收的格式,并最终写入目标平台。以下是具体的技术实现过程和细节。

1. API接口配置

首先,我们需要配置旺店通WMSAPI接口的相关信息。根据元数据配置,我们使用的是WDT_WMS_ENTRYORDER_CREATE API,采用POST请求方式。

{"api": "WDT_WMS_ENTRYORDER_CREATE","method": "POST","idCheck": true
}
2. 数据操作与字段映射

在数据操作部分,我们需要将源数据中的字段映射到目标API所需的字段。这里采用了merge操作,将源数据中的FBillNo字段合并到目标数据的details中,并定义了header和body部分。

{"method": "merge","field": "FBillNo","bodyName": "details","header": ["FBillNo", "FStockID_FNumber"],"body": ["FMaterialID_FNumber", "FEntity_FEntryID", "FQty", "FLOT_FNumber", "FProduceDate", "FEXPIRYDATE"]
}
3. 请求体结构

根据元数据配置,我们需要构建一个复杂的JSON请求体,包括入库单信息和单据信息两个主要部分。

入库单信息

入库单信息部分包含了入库单号、仓库编码和业务类型等字段。这些字段直接从源数据中提取并映射到目标API所需的格式。

{"label": "入库单信息","field": "entryOrder","type": "object","children": [{"parent": "entryOrder","label": "入库单号","field": "entryOrderCode","type": "string","value": "{FBillNo}"},{"parent": "entryOrder","label": "仓库编码","field": "warehouseCode","type": "string","value": "{FStockID_FNumber}"},{"parent": "entryOrder",{.........
单据信息

单据信息部分包含了订单行的信息,每一行都需要详细描述,包括商家编码、应收商品数量、库存类型、批次、生产日期和过期日期等。这些字段通过模板语言从源数据中提取并转换为目标API所需格式。

4. 数据清洗与转换

在实际操作中,可能会涉及到对某些字段的数据清洗与转换。例如,生产日期和过期日期需要进行格式化处理,这可以通过模板语言中的date函数实现。

实际案例:组装入库=>其他入库单-1

假设我们有一个组装入库的数据,需要将其转换为其他入库单并写入旺店通WMS。具体步骤如下:

  1. 提取源数据:从源系统中提取组装入库的数据。
  2. 映射字段:根据元数据配置,将源数据中的字段映射到目标API所需的字段。
  3. 构建请求体:按照上述结构构建JSON请求体。
  4. 发送请求:通过POST方法将请求体发送到旺店通WMSAPI接口。

通过以上步骤,我们可以实现从源系统到旺店通WMS的无缝数据集成,确保每个环节的数据都准确无误地传递和处理。这不仅提高了业务效率,也增强了系统间的数据一致性和可靠性。 

如何开发金蝶云星空API接口


http://www.ppmy.cn/news/1539702.html

相关文章

CentOS 7 网络连接显示“以太网(ens33)不可用”

创建linux虚拟机,配置网络和主机名显示"以太网(ens33,被拔出)" 桌面右键此电脑,管理,找到“服务和应用程序”,点击“服务”,找到下图两个服务,将“禁用”状态改…

JQuery创建HTML公用模块进行引用

HTML公用模块引用 一、创建公共header文件二、导入header模块三、可能会遇到的问题1. "Uncaught ReferenceError: $ is not defined" 开发环境可能会遇到多个Html存在一个模块是相同的,因此在修改过程中逐一修改比较麻烦,因此把这个公用模块另…

Ngin入门套餐

快速了解Nginx 一、代理1.1 正向代理1.2 反向代理1.3 正向代理和反向代理的区别 二、Nginx负载均衡策略2.1 轮询(Round Robin)2.2 加权轮询(Weighted Round Robin)2.3 IP 哈希(IP Hash)2.4 最少连接&#x…

代码随想录算法训练营第38天 | 第九章动态规划 part11

文章目录 第九章 动态规划 Part 111143. 最长公共子序列1035. 不相交的线53. 最大子序和392. 判断子序列 第九章 动态规划 Part 11 1143. 最长公共子序列 体会一下本题和 718. 最长重复子数组 的区别。 视频讲解:B站视频 题解链接:最长公共子序列题解 …

Rust学习如何更有信心?

关于如何学习Rust,在Hacker News上有一篇非常火的教程,作者通过自己的Rust学习经历,向大家指出了一条如何学习Rust的路径。 学习一门编程语言必不可少的是阅读技术书籍和编写代码,要想掌握Rust,两者的交替学习至关重要…

无人机之三维航迹规划篇

一、基本原理 飞行环境建模:在三维航迹规划中,首先需要对飞行环境进行建模。这包括对地形、障碍物、气象等因素进行准确的测量和分析,以获得可行的飞行路径。 飞行任务需求分析:根据无人机的任务需求,确定航迹规划的…

FreeRTOS——中断管理

中断理论剖析 中断简介 中断是一种机制,用于处理高优先级的事件或故障。当一个中断事件发生时,单片机可以立即中断正在执行的程序,转而处理中断事件。这种机制可以提高系统的响应速度和实时性。 中断优先级分组设置 ARM Cortex-M使用了8位宽…

Lumerical学习——资源管理和运行模拟

一、资源管理(Resource Manager) 在模拟计算前必须对计算资源进行配置。采用资源管理器可以完成这项任务。单击主工具条的“资源(Resources)”按钮(见上图)就可以打开资源管理器。通常每个计算机只需设置一…