当前位置: 首页 > news >正文

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接口

相关文章:

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

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

【力扣热题100】3194. 最小元素和最大元素的最小平均值【Java】

题目:3194.最小元素和最大元素的最小平均值 你有一个初始为空的浮点数数组 averages。另给你一个包含 n 个整数的数组 nums,其中 n 为偶数。 你需要重复以下步骤 n / 2 次: 从 nums 中移除 最小 的元素 minElement 和 最大 的元素 maxElement…...

机器学习拟合过程

import numpy as np import matplotlib.pyplot as plt# 步骤1: 生成模拟数据 np.random.seed(0) X 2 * np.random.rand(100, 1) y 4 3 * X 2 * X**2 np.random.randn(100, 1)# 步骤2: 定义线性模型 (我们从随机权重开始) w np.random.randn(2, 1) b np.random.randn(1)#…...

如何快速部署一套智能化openGauss测试环境

一、openGauss介绍 openGauss是一款开源关系型数据库管理系统,采用木兰宽松许可证v2发行,允许用户自由地复制、使用、修改和分发软件。openGauss内核深度融合了华为在数据库领域多年的研发经验,结合企业级场景需求,持续构建竞争力…...

【设计模式】深入理解Python中的原型设计模式

深入理解Python中的原型设计模式 在软件开发中,有时需要创建对象的过程非常复杂或者代价较高,而在同一类对象的实例之间有很多重复的属性。为了避免重复构造对象,提升性能和效率,原型设计模式(Prototype Pattern&…...

Django CORS配置方案

参考 https://pypi.org/project/django-cors-headers/ 在setting.py中设置 INSTALLED_APPS [......corsheaders, #添加此行 ]MIDDLEWARE[......corsheaders.middleware.CorsMiddleware, #添加此行django.middleware.common.CommonMiddleware,#django.middleware.csrf.CsrfVi…...

2024年开放式耳机哪个牌子好?推荐最好的顶级开放式耳机品牌

在当下,开放式耳机逐渐成为众多消费者的新宠。与传统入耳式耳机相比,开放式耳机展现出诸多独特之处。它可以呈现出更清晰的音质效果,让用户有更美妙的听觉体验。在佩戴感上,开放式耳机更为舒适,不会给耳朵带来压迫感。…...

零基础读懂Stable Diffusion!

前言 一文搞懂Stable Diffusion是什么,怎么训练和使用,语义信息影响生成图片的过程。>>[][加入极市CV技术交流群,走在计算机视觉的最前沿] 前几个月AIGC可谓是大热了一把,各种高质量的生成图片层出不穷,而其中…...

Hash Join 和 Index Join工作原理和性能差异

在数据库查询中,Hash Join 和 Index Join 是两种常见的表连接策略。了解它们的工作原理和性能差异有助于设计高效的数据库查询。我们可以使用 Java 模拟这两种不同的连接方式,并进行性能对比。 1. Hash Join 和 Index Join 的概念: Hash Joi…...

Apifox简介及使用

Apifox 是一款集 API文档管理、接口调试、接口自动化测试 和 Mock 功能于一体的全功能工具,旨在为开发者和测试人员提供一个高效的一站式解决方案。它融合了 Postman、Swagger、JMeter 等工具的优势,能够极大地提升团队协作和 API 开发的效率。 在实际开…...

十、IPD 实施细节(产品设计与开发管理)

产品设计与开发管理 产品设计与开发管理是IPD(集成产品开发)实施过程中的核心环节。它确保从概念设计到最终产品的实现能够按照预定的质量、成本、进度目标顺利完成,并与市场需求、技术发展及企业战略保持一致。IPD强调产品设计与开发管理过程中跨职能团队的协作、流程的系…...

MySQL-13.DQL-聚合函数

一.DQL-分组查询 二.聚合函数 -- DQL:分组查询 -- 聚合函数 -- 1.统计该企业员工数量 count select count(id) from tb_emp; select count(job) from tb_emp;select count(A) from tb_emp; select count(*) from tb_emp;-- 2.统计该企业最早入职的员工 min select min(entr…...

为什么跟别人学习如何证明定理要远比使用定理更有意义

目录 背景 为什么跟别人学习 什么是高人,如何判断 高人定义 如何判断一个人的能力? 如何考量一个人的成就? 只知道使用定理的局限性 1. 缺乏灵活性和适应性 2. 无法创新或拓展新方法 3. 容易误用或误解定理 4. 难以推理和分析复杂问…...

Qt在Win,Mac和Linux的开机自启设置

Windows Windows 使用注册表来管理开机自启的应用程序。 void runWithSystem(const QString& name, const QString& path, bool autoRun) {QSetting reg("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", QSetting::NativeForma…...

spring boot热部署

使用热部署解决了每次都需要重新启动的问题&#xff0c;但不过热部署的在对于改动比较小时速度可能快一些&#xff0c;改动大的话尽量停止 1.使用热部署之前需要在pom.xml文件中导入依赖 <dependency><groupId>org.springframework.boot</groupId><artifa…...

网关与蓝牙网关有什么不同之处?

尽管蓝牙网关也属于网关的一种&#xff0c;但在实际应用和功能特性上&#xff0c;它们之间存在着显著的差异。接下来&#xff0c;我们将深入探讨蓝牙网关的独特之处&#xff0c;并与传统网关进行对比分析。 一、网关与蓝牙网关的共同之处 一对多配对能力&#xff1a;无论是网关…...

JAVA计算双十一多产品实付款优惠券的省钱方案

为了计算双十一期间多产品使用优惠券后的实付款省钱方案&#xff0c;我们需要一个更复杂的逻辑来处理优惠券的应用和叠加规则。以下是一个简化的Java示例&#xff0c;用于展示如何计算多种优惠券应用于多个产品后的实付款金额&#xff0c;并找出最省钱的方案。 首先&#xff0…...

零售行业的数字化营销转型之路

一方面&#xff0c;市场竞争激烈&#xff0c;电商平台、新兴品牌和跨界对手带来巨大压力。另一方面&#xff0c;消费者需求变化迅速&#xff0c;更加追求个性化、多元化和便捷化的购物体验&#xff0c;同时传统零售企业还面临着高成本压力&#xff0c;如租金、人力和库存等。 然…...

js的for in 和 for of的详解

for...in 和 for...of 是 JavaScript 中的两种循环结构&#xff0c;它们用于不同的场景&#xff0c;适用于不同的数据类型。下面将详细介绍它们的用法、区别以及适用场景。 1. for...in 循环 for...in 用于遍历对象的可枚举属性&#xff08;包括继承的属性&#xff09;。 语…...

前端工具函数库

流行的前端工具函数库 lodashlodash-es&#xff1a;用lodash-es代替lodashes-toolkit&#xff1a;https://www.npmjs.com/package/es-toolkitradash&#xff1a;https://github.com/sodiray/radash 补充信息&#xff1a; antd-mobile 已不再依赖 lodash&#xff0c; 淘汰 lo…...

Java程序设计:Spring boot(4)——Freemarker Thymeleaf视图技术集成

1 Freemarker 视图集成 SpringBoot 内部⽀持 Freemarker 视图技术的集成&#xff0c;并提供了⾃动化配置类 FreeMarkerAuto Configuration&#xff0c;借助⾃动化配置可以很⽅便的集成 Freemarker基础到 SpringBoot 环境中。这⾥借助⼊⻔项⽬引⼊ Freemarker 环境配置。 Start…...

JavaScript 第19章:Web Storage

在JavaScript中&#xff0c;Web存储&#xff08;Web Storage&#xff09;提供了一种在用户浏览器中持久化数据的方式。这里我们会探讨localStorage、sessionStorage以及IndexedDB&#xff0c;并提供一些简单的示例代码来展示它们的用法。 localStorage localStorage允许你在用…...

[山河2024] week2

官方WP出得很快。对照官的写下私的。大概出入不大&#xff0c;毕竟第2周。后边的才难。 Crypto E&R RSA因子分解题&#xff0c;把q的2进制反转后与p异或。关于异或的题很多&#xff0c;这个还真是头一回见&#xff0c;不过爆破方法还是一样的。 r_q int(bin(q)[2:][::…...

无限可能LangChain——开启大模型世界

什么是大语言模型&#xff1f; 大语言模型是一种人工智能模型&#xff0c;通常使用深度学习技术&#xff08;如神经网络&#xff09;来理解和生成人类语言。这些模型拥有非常多的参数&#xff0c;可以达到数十亿甚至更多&#xff0c;使得它们能够处理高度复杂的语言模式。 我…...

URL路径以及Tomcat本身引入的jar包会导致的 SpringMVC项目 404问题、Tomcat调试日志的开启及总结

一、URL路径导致的 SpringMVC项目 404问题 SpringMVC项目的各项代码都没有问题&#xff0c;但是在页面请求时仍然显示404&#xff0c;编译的时候报了下面的问题&#xff1a; org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录…...

如何引起Java中的System.in.read()函数的异常

演示的为:关闭标准输入流System.in后再调用System.in.read就会报出IOException import java.io.IOException; import java.io.InputStream;public class Test {public static void main(String[] args) {InputStream in System.in;try {in.close();System.in.read();}catch (…...

深入理解Flutter鸿蒙next版本 中的Widget继承:使用extends获取数据与父类约束

目录 写在前面 什么是Widget继承&#xff1f; 基本概念 StatelessWidget与StatefulWidget build方法 创建自定义Widget 1. 继承StatelessWidget 2. 继承StatefulWidget并访问父类的约束 3. 继承其他自定义Widget并获取数据 写在最后 写在前面 在Flutter中&#xff0c…...

Loss:Focal Loss for Dense Object Detection

目录 3. 焦点损失(Focal Loss)3.1. 平衡交叉熵3.2. 焦点损失定义3.3. 类别不平衡与模型初始化3.4. 类别不平衡与两阶段检测器4. RetinaNet 检测器。4.1. 推理与训练。3. 焦点损失(Focal Loss) 焦点损失(Focal Loss)旨在解决单阶段目标检测场景中训练时前景和背景类别之间…...

Unity3D中Excel表格的数据处理模块详解

前言 在Unity3D项目中&#xff0c;处理Excel表格数据是一项常见且重要的任务。通过Excel表格&#xff0c;我们可以方便地管理游戏配置、角色属性等数据内容。本文将详细介绍如何在Unity3D中实现Excel表格的数据处理模块&#xff0c;包括技术详解和代码实现。 对惹&#xff0c…...

【python】OpenCV—Fun Mirrors

文章目录 1、准备工作2、原理介绍3、代码实现4、效果展示5、参考 1、准备工作 pip install vacm2、原理介绍 在OpenCV中&#xff0c;VCAM 库是一个用于简化创建三维曲面、定义虚拟摄像机、设置参数以及进行投影任务的工具。它特别适用于实现如哈哈镜等图像变形效果。 一、VC…...