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

金蝶云星空数据集成到旺店通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.rhkb.cn/news/448856.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据-174 Elasticsearch Query DSL - 全文检索 full-text query 匹配、短语、多字段 详细操作

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

【软件工程】软件工程入门

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀软件开发必练内功_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前…

海绵宝宝动画网页

适合学习、作业、小白 部分代码 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>海绵宝宝-首页</title><link rel"stylesheet" type"text/css" href"css/style.css"/><me…

国外电商系统开发-运维系统应用和软件安装过程

安装流程图 注意&#xff1a;上面只是作者本人安装Apache的举例&#xff0c;如果您的安装步骤不相同都没关系&#xff0c;您完全可以自行定义。在这里只是为了演示而已。 现在&#xff0c;开始创建任务&#xff1a; 点击添加步骤任务&#xff1a; 现在&#xff0c;可以看到页面…

金融信用评分卡建模项目:AI辅助

最近我一直忙着开发一个信用评分卡建模工具&#xff0c;所以没有时间更新示例或动态。今天&#xff0c;我很高兴地跟大家分享&#xff0c;这个工具的基本框架已经完成了&#xff0c;并且探索性的将大语言模型&#xff08;AI&#xff09;整合了进去。目前ai在工具中扮演智能助手…

Gradio 全指南 | 轻松构建和托管机器学习界面

唠唠闲话 Gradio 是专为机器学习设计的轻量级 Python 库&#xff0c;它以简洁直观的方式将机器学习模型与用户界面相结合。利用 Gradio&#xff0c;用户可以轻松地通过图形界面输入数据并查看模型输出。此外&#xff0c;Gradio 还具备分享功能&#xff0c;极大地简化了模型在网…

c语言库文件

c语言库文件 动态库动态库制作首先生成动态库文件名使用动态库编译动态库运行删除动态库1.sudo su 静态库静态库制作需要将源文件.c转换成二进制文件.o&#xff08;重定向文件&#xff09;将重定向文件打包成静态库文件使用静态库文件 静态库和动态库的区别复杂工程设定工程目录…

MySQL【知识改变命运】07

MySQL 1&#xff1a;Group by 分组查询1.1&#xff1a;语法&#xff1a;1.2&#xff1a;练习 2&#xff1a;having⼦句3回顾&#xff1a;3&#xff1a;内置函数3.1 :⽇期函数 1&#xff1a;Group by 分组查询 可以根据某列&#xff0c;进行分组查询&#xff0c;比如学校里面的…

NAT:网络地址转换

基本知识 1.公有IP和私有IP 公有IP:全球唯一&#xff0c;可以在互联网中通信&#xff0c;付费使用 私有IP&#xff1a;本地唯一&#xff0c;不可以在互联网中使用&#xff0c;无需付费 私网地址范围 A类: 10.0.0.0-------10.255.255.255 B类&#xff1a;172.16.0.0------1…

汽车免拆诊断案例 | 2023款零跑C01纯电车后备厢盖无法电动打开和关闭

故障现象  一辆2023款零跑C01纯电车&#xff0c;累计行驶里程约为2万km&#xff0c;车主进厂反映&#xff0c;后备厢盖无法电动打开和关闭。 故障诊断  接车后试车&#xff0c;操作后备厢盖外侧、驾驶人侧及遥控钥匙上的后备厢盖开启按钮&#xff0c;可以听到后备厢盖解锁的…

springboot项目中开启mybatis的sql日志

在 application.yml 文件中 添加 mybatis-plus 配置&#xff0c;再重启项目&#xff0c;这里用到了mybatis-plus的自带sql日志打印 # application-jdbc.yml mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl如果只是用的mybatis的话&#x…

React(五) 受控组件和非受控组件; 获取表单元素的值。高阶组件(重点),Portals; Fragment组件;严格模式StrictMode

文章目录 一、受控组件1. 什么是受控组件2. 收集input框内容3. 收集checkBox的值4. 下拉框select总结 二、非受控组件三、高阶组件1. 高阶组件的概念 (回顾高阶函数)2. 高阶组件应用&#xff1a;注入props(1) 高阶组件给---函数式组件注入props(2) 高阶组件给---类组件注入prop…

Qt-链接数据库可视化操作

1. 概述 Qt 能够支持对常见数据库的操作&#xff0c;例如&#xff1a; MySQL、Oracle、SqlServer 等等。 Qt SQL模块中的API分为三层&#xff1a;驱动层、SQL接口层、用户接口层。 驱动层为数据库和SQL接口层之间提供了底层的桥梁。 SQL接口层提供了对数据库的访问&#xff0…

Excel多级结构转成树结构形式

第一步&#xff1a;Excel文件的形式如下 第二步&#xff1a;转换成树结构可选形式 第三步&#xff1a;具体怎么实现&#xff1f; &#xff08;1&#xff09;、需要借助数据库中表来存储这些字段&#xff0c;一张表&#xff08;aa&#xff09;存Excel文件中的所有数据&#xff…

基于百度智能体开发爱情三十六计

基于百度智能体开发爱情三十六计 文章目录 基于百度智能体开发爱情三十六计1. 爱情三十六计智能体2. 三十六计开发创意3. 智能体开发实践3.1 基础配置3.2 进阶配置3.3 调优心得3.4可能会遇到的问题 4. 为什么选择文心智能体平台 1. 爱情三十六计智能体 爱情三十六计 是一款基于…

《计算机视觉》—— 基于PyCharm中的dlib库实现人脸关键点定位

文章目录 1. 安装必要的库2. 下载dlib的人脸检测器和关键点预测器模型3. 编写代码 人脸关键点定位是指通过计算机视觉技术&#xff0c;识别和定位人脸图像中的关键点&#xff0c;如眼睛、鼻子、嘴巴等特定位置。这些关键点的准确定位对于人脸识别、表情分析、姿态估计等应用具有…

分库分表方式介绍

分库分表方式 分库分表包括分库和分表两个部分&#xff0c;在生产中通常包括&#xff1a;垂直分库、水平分库、垂直分表、水平分表四种方式&#xff1b; 1、垂直分表 1.1 垂直分表定义 垂直分表就是在同一数据库内将一张表按照指定字段分成若干表&#xff0c;每张表仅存储其…

Unity中实现预制体自动巡逻与攻击敌人的完整实现指南

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

wireshark 解密浏览器https数据包

一、导出浏览器证书有两种方法 1、在浏览器快捷方式追加启动参数&#xff1a; --ssl-key-log-file"d:\log\2.log" C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chrome.exe --ssl-key-log-file"d:\log\2.log" 2、环境变量中新建用…

整理—计算机网络

目录 网络OSI模型和TCP/IP模型 应用层有哪些协议 HTTP报文有哪些部分 HTTP常用的状态码 Http 502和 504 的区别 HTTP层请求的类型有哪些&#xff1f; GET和POST的使用场景&#xff0c;有哪些区别&#xff1f; HTTP的长连接 HTTP默认的端口是什么&#xff1f; HTTP1.1怎…