轻易云平台实现销售数据自动写入金蝶云星空

  • 轻易云集成顾问-叶威宏
### 旺店通·旗舰奇门数据集成到金蝶云星空:销售出库对接案例分享 在现代企业的数字化转型过程中,系统间的数据同步与集成愈发重要。本文将重点分享一个成功的系统对接集成案例,即将旺店通·旗舰奇门数据无缝对接到金蝶云星空。在这个名为“销售出库对接,供应商发货-new”的方案中,我们通过一系列API接口的调用,实现了高效、稳定的数据传输和业务流程优化。 首先,我们需要确保从旺店通·旗舰奇门抓取的数据完整且不漏单。这就涉及到如何利用其提供的API接口`wdt.wms.stockout.sales.querywithdetail`进行定时可靠的数据获取。为了处理大批量数据并快速写入金蝶云星空,我们采用了分段分页读取机制,并针对接口使用中的限流问题进行了特殊处理,以保证数据抓取过程的稳定性。 在抓取完符合条件的数据后,下一个关键步骤是将这些数据批量写入到金蝶云星空系统中。这部分工作主要使用的是金蝶云星空提供的`batchSave` API接口。值得注意的是,在这一环节,需要特别关注两者之间可能存在的数据格式差异,通过制定适配规则和映射表来解决,使得不同系统间可以顺利交互。同时,为应对潜在的问题和异常情况,还设计了详细的错误重试机制和日志记录功能,确保整个集成过程可追溯、可回溯。 最后,通过平台自带的实时监控与日志记录功能,对整个集成过程进行细致跟踪,从而及时发现并解决可能发生的问题,提高整体操作透明度及效率。本文将在以下章节,对具体实现方法及技术细节做进一步探讨,帮助您更好地理解这套覆盖全生命周期管理、高度自动化且极具实用性的系统集成方案。 ![金蝶与外部系统打通接口](https://pic.qeasy.cloud/D30.png~tplv-syqr462i7n-qeasy.image) ### 使用旺店通·旗舰奇门接口wdt.wms.stockout.sales.querywithdetail获取并加工数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·旗舰奇门接口`wdt.wms.stockout.sales.querywithdetail`,获取销售出库数据并进行初步加工。 #### 接口概述 接口`wdt.wms.stockout.sales.querywithdetail`主要用于查询销售出库单的详细信息。该接口采用POST请求方式,支持分页查询,并且可以根据多种业务参数进行过滤。以下是该接口的元数据配置: ```json { "api": "wdt.wms.stockout.sales.querywithdetail", "method": "POST", "number": "order_no", "id": "stockout_id", "idCheck": true, "request": [ { "field": "pager", "label": "分页参数", "type": "object", "children": [ { "field": "page_size", "label": "分页大小", "type": "string", "value": "200", "parent": "pager" }, { "field": "page_no", "label": "页号", "type": "string", "value": "1", "parent": "pager" } ] }, { "field": "params", ... } ], ... } ``` #### 请求参数配置 在调用该接口时,需要设置以下几个关键的请求参数: 1. **分页参数(pager)**: - `page_size`: 每页返回的数据条数,默认设置为200。 - `page_no`: 当前页码,默认设置为1。 2. **业务参数(params)**: - `start_time`: 查询开始时间,通常设定为上个月的第一天。 - `end_time`: 查询结束时间,通常设定为上个月的第15天。 - `status_type`: 出库单状态,可以选择不同状态进行过滤,例如0表示延时发货和已完成。 - `warehouse_no`: 仓库编码,用于指定查询特定仓库的数据。 - `shop_nos`: 店铺编号,可以多个店铺编号用英文逗号分隔。 - `src_order_no`: 销售订单号,用于查询特定订单的数据。 以下是一个示例请求体: ```json { "pager": { "page_size": 200, "page_no": 1 }, ... } ``` #### 数据清洗与转换 在获取到原始数据后,需要对其进行清洗和转换,以便后续处理和分析。常见的数据清洗操作包括: - **字段筛选**:仅保留需要的字段,例如订单编号、仓库编码、出库状态等。 - **格式转换**:将日期格式统一转换为标准格式,以便后续处理。 - **数据过滤**:根据业务需求过滤掉不需要的数据,例如特定店铺编号的数据。 以下是一个简单的数据清洗示例: ```python import pandas as pd # 假设已经获取到原始数据 raw_data = ... # 转换为DataFrame df = pd.DataFrame(raw_data) # 筛选需要的字段 df = df[['order_no', 'warehouse_no', 'status', 'create_time']] # 转换日期格式 df['create_time'] = pd.to_datetime(df['create_time'], format='%Y-%m-%d %H:%M:%S') # 数据过滤 filtered_df = df[df['shop_no'].isin(['29', '76', '28']) == False] ``` #### 实践案例 假设我们需要从旺店通系统中获取上个月前15天内所有已完成的销售出库单,并且只关注特定仓库和店铺的数据。我们可以按照以下步骤进行配置和调用: 1. 设置请求参数: ```json { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... // 设置业务参数 params: { start_time: "_function DATE_FORMAT(DATE_SUB(DATE_FORMAT(CURRENT_DATE, '%Y-%m-01'), INTERVAL 1 MONTH), '%Y-%m-%d 00:00:00')", end_time: "_function DATE_FORMAT(DATE_ADD(DATE_FORMAT(CURRENT_DATE - INTERVAL 1 MONTH, '%Y-%m-01'), INTERVAL (DAY(LAST_DAY(CURRENT_DATE - INTERVAL 1 MONTH)) - 1) DAY), '%Y-%m-%d 23:59:59')", status_type: '0', warehouse_no: 'WH001', shop_nos: 'SHOP001,SHOP002' } } } } } } } } } } } } } } } } } } ``` 2. 调用接口并获取数据: ```python import requests url = 'https://api.wangdian.cn/openapi2/wdt.wms.stockout.sales.querywithdetail' headers = {'Content-Type': 'application/json'} response = requests.post(url, json=request_params, headers=headers) if response.status_code == 200: data = response.json() # 数据处理逻辑... else: print(f"Error: {response.status_code}") ``` 通过上述步骤,我们能够高效地从旺店通系统中提取所需的销售出库数据,并进行初步加工,为后续的数据分析和处理奠定基础。 ![用友与SCM系统接口开发配置](https://pic.qeasy.cloud/S12.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台:将源平台数据转换并写入金蝶云星空API接口 在轻易云数据集成平台的生命周期中,第二步是将已经集成的源平台数据进行ETL(提取、转换、加载)处理,最终写入目标平台。在本技术案例中,我们将探讨如何将销售出库对接和供应商发货的数据转换为金蝶云星空API接口所能接收的格式,并写入目标平台。 #### API 接口配置与调用 为了实现数据的无缝对接,我们需要配置和调用金蝶云星空的API接口。以下是关键的元数据配置: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 20, "method": "batchArraySave" }, "request": [ { "field": "FBillTypeID", "label": "单据类型", "type": "string", "describe": "单据类型", "parser": { "name": "ConvertObjectParser", "params": "FNumber" }, "value": "XSCKD01_SYS" }, { ... } ], ... } ``` #### 数据字段映射与转换 在ETL过程中,重要的一步是将源数据字段映射到目标系统所需的字段。以下是一些关键字段及其映射关系: 1. **单据类型 (FBillTypeID)** - 源数据字段:`order_type` - 转换后字段:`XSCKD01_SYS` - 转换逻辑:使用 `ConvertObjectParser` 将源数据中的 `order_type` 转换为金蝶系统识别的 `FNumber`。 2. **单据编号 (FBillNo)** - 源数据字段:`order_no` - 转换后字段:直接映射 `{order_no}`。 3. **日期 (FDate)** - 源数据字段:`consign_time` - 转换后字段:直接映射 `{consign_time}`。 4. **客户 (FCustomerID)** - 源数据字段:`shop_no` - 转换后字段:使用 `ConvertObjectParser` 将源数据中的 `shop_no` 转换为金蝶系统识别的 `FNumber`。 5. **物流信息** - 运输单号 (FCarriageNO):直接映射 `{logistics_no}`。 - 收货人姓名 (FLinkMan):直接映射 `{receiver_name}`。 - 联系电话 (FLinkPhone):直接映射 `{receiver_mobile}`。 #### 子实体对象与数组处理 对于复杂的数据结构,如子实体对象和数组,需要特别注意其处理方式。例如,财务信息和明细信息: 1. **财务信息 (SubHeadEntity)** ```json { ... { "field": "SubHeadEntity", ... "children": [ { ... { "field": "FSettleOrgID", ... "value": "{settle_org_id}" }, ... } ] } ... } ``` 2. **明细信息 (FEntity)** ```json { ... { "field": "FEntity", ... "children": [ { ... { "field": "FMaterialID", ... "value": "{{details_list.goods_no}}" }, ... } ], ... } ... } ``` #### 批量操作与提交审核 为了提高效率,我们可以使用批量操作来一次性处理多个记录,并自动提交审核: ```json { ... { "field":"IsAutoSubmitAndAudit", ... “value”: “true” }, { “field”: “BatchCount”, … “value”: “5” } } ``` 通过上述配置,我们可以确保在ETL过程中,所有必要的数据都被正确地转换并写入到金蝶云星空系统中,从而实现不同系统间的数据无缝对接。这不仅提高了业务流程的透明度和效率,还确保了数据的一致性和准确性。 ![钉钉与WMS系统接口开发配置](https://pic.qeasy.cloud/T19.png~tplv-syqr462i7n-qeasy.image)