使用轻易云平台实现聚水潭与金蝶云数据集成

  • 轻易云集成顾问-蔡威
### 聚水潭·奇门数据集成到金蝶云星辰V2的技术分享 在系统集成过程中,如何高效、可靠地将聚水潭·奇门的数据无缝对接至金蝶云星辰V2,一直是业界关注的重点。在本文中,我们将通过一个具体的案例:从聚水潭获取销售出库单数据并写入到金蝶云星辰V2,来详细探讨这一过程中的关键技术点和解决方案。 #### 数据获取与集成方法 首先,通过调用聚水潭提供的`jushuitan.saleout.list.query` API接口,我们可以实时抓取销售出库单数据。为了确保不漏单并提高整体数据抓取效率,对API调用进行了分页处理,并设定相应限流策略,以避免请求过多导致接口响应超时或异常。 ```json { "method": "jushuitan.saleout.list.query", "params": { // 参数设置 } } ``` #### 数据格式转换与映射 从聚水潭获取的数据,其结构通常与金蝶云星辰所需的数据格式存在差异。因此,在数据处理阶段,需要进行字段映射和格式转换以满足目标系统需求。例如,将聚水潭返回的一些键值对转化为符合金蝶API `/jdy/v2/scm/sal_out_bound` 接口规范的JSON对象。这一步骤至关重要,因为错误的数据格式会直接导致写入失败。 ```json { "scm_sal_out_bound": { // 转换后的参数设置 } } ``` #### 大量数据快速写入及异常处理 当面对大量订单需要写入至金蝶云星辰时,为了提升效率,可以采用批量提交机制,每次传递一组记录。这样不仅减少了API请求次数,还提高了整体传输速度。 在实际操作中,不可避免地会遇到各种异常问题,如网络波动或接口错误等。此类情况下,应实现细致周全的错误重试机制,并做好日志记录。比如,当某次写入失败后,可以根据日志信息定位问题根源,同时利用重试机制再尝试提交,以确保最终全部成功导入目标系统。 由此,通过上述几个关键步骤,我们能够有效且精确地完成从聚水潭到金蝶云星辰V2销售出库单数据的全面集成,实现真正意义上的业务流程自动化和透明管理。 ![如何开发钉钉API接口](https://pic.qeasy.cloud/D26.png~tplv-syqr462i7n-qeasy.image) ### 调用聚水潭·奇门接口获取并加工数据 在数据集成生命周期的第一步中,我们需要从源系统调用API接口以获取原始数据,并对其进行初步加工。本文将详细介绍如何通过调用聚水潭·奇门接口`jushuitan.saleout.list.query`来实现这一过程。 #### 接口配置与请求参数 我们首先需要配置API接口的元数据,以确保能够正确调用并获取所需数据。以下是该接口的元数据配置: ```json { "api": "jushuitan.saleout.list.query", "effect": "QUERY", "method": "POST", "number": "io_id", "id": "io_id", "name": "io_id", "idCheck": true, "request": [ {"field": "page_index", "label": "页数", "type": "string", "describe": "第几页,从第一页开始,默认1", "value": "1"}, {"field": "page_size", "label": "每页行数", "type": "string", "describe": "每页多少条,默认25,最大25", "value": "25"}, {"field": "start_time", "label": "修改开始时间", "type": "string", "describe": "修改起始时间,和结束时间必须同时存在,时间间隔不能超过七天,与线上单号不能同时为空", "value":"{{MINUTE_AGO_30|datetime}}"}, {"field": "end_time", "label":"修改结束时间","type":"string","describe":"修改结束时间,和起始时间必须同时存在,时间间隔不能超过七天,与线上单号不能同时为空","value":"{{CURRENT_TIME|datetime}}"}, {"field":"status","label":"单据状态","type":"string","describe":"单据状态: WaitConfirm=待出库; Confirmed=已出库; Cancelled=作废","value":"Confirmed"}, {"field":"date_type","label":"时间类型","type":"int","describe":"时间类型 默认0 0=修改时间 ; 1=制单日期; 2=出库时间","value":"2"}, {"field":"wms_co_id","label":"分仓编号","type":"string","value":"12851795"} ], ... } ``` 在上述配置中,我们定义了多个请求参数,包括分页信息、时间范围、单据状态等。这些参数将用于构建API请求,以确保我们能够准确地获取所需的数据。 #### 数据请求与清洗 在实际操作中,我们会通过POST方法向`jushuitan.saleout.list.query`接口发送请求,并使用上述配置中的参数来过滤和分页处理数据。例如: ```python import requests import datetime # 设置请求URL和头部信息 url = 'https://api.jushuitan.com/saleout/list/query' headers = {'Content-Type': 'application/json'} # 构建请求参数 params = { 'page_index': '1', 'page_size': '25', 'start_time': (datetime.datetime.now() - datetime.timedelta(minutes=30)).strftime('%Y-%m-%d %H:%M:%S'), 'end_time': datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), 'status': 'Confirmed', 'date_type': '2', 'wms_co_id': '12851795' } # 发起POST请求 response = requests.post(url, json=params, headers=headers) # 检查响应状态码 if response.status_code == 200: data = response.json() else: print(f"Error: {response.status_code}") ``` 在这个示例中,我们使用Python的requests库发起HTTP POST请求,并传递必要的参数以获取销售出库单的数据。 #### 数据转换与写入 一旦我们成功获取到数据,就需要对其进行初步清洗和转换,以便后续写入目标系统。在这个过程中,可以根据业务需求对数据进行筛选、格式化等操作。例如: ```python # 假设我们已经获取到了data sales_orders = data.get('orders', []) # 清洗和转换数据 cleaned_data = [] for order in sales_orders: if order['items']['qty'] > 0: cleaned_order = { 'order_id': order['io_id'], 'warehouse_id': order['wms_co_id'], 'status': order['status'], # 添加其他必要字段... } cleaned_data.append(cleaned_order) # 将清洗后的数据写入目标系统(例如金蝶) for cleaned_order in cleaned_data: # 构建写入目标系统的API请求... ``` 通过上述步骤,我们完成了从源系统调用API接口、获取并清洗数据的全过程。这为后续的数据转换与写入奠定了基础,使得整个数据集成流程更加顺畅高效。 ![用友与SCM系统接口开发配置](https://pic.qeasy.cloud/S10.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将聚水潭销售出库单转换并写入金蝶云星辰V2 在数据集成过程中,ETL(Extract, Transform, Load)是关键步骤之一。本文将详细介绍如何使用轻易云数据集成平台,将聚水潭的销售出库单数据进行ETL转换,并写入金蝶云星辰V2 API接口。 #### 1. 数据请求与清洗 首先,从聚水潭系统中获取销售出库单的数据。这一步主要包括数据的提取和初步清洗,确保获取的数据完整且符合预期格式。在此不做过多展开,重点关注下一步的数据转换与写入。 #### 2. 数据转换与写入 在轻易云数据集成平台中,我们需要将聚水潭的销售出库单数据转换为金蝶云星辰V2 API接口所能接受的格式。以下是具体的元数据配置及其应用: ```json { "api": "/jdy/v2/scm/sal_out_bound", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ { "field": "bill_source", "label": "单据来源,固定传入ISV", "type": "string", "describe": "单据来源,固定传入APP", "value": "ISV" }, { "field": "bill_date", "label": "出库日期,格式:2019-01-01", "type": "datetime", "describe": "出库日期,格式:2019-01-01", "value": "{io_date}" }, { "field": "bill_no", "label": "单据编号", "type": "string", "describe": "单据编号", "value": "{io_id}" }, { "field": "customer_number", ... ``` ##### 核心字段解析 1. **bill_source**: 固定传入值"ISV",表示单据来源。 2. **bill_date**: 出库日期,从源数据中的`io_date`字段获取,并转换为"YYYY-MM-DD"格式。 3. **bill_no**: 单据编号,对应源数据中的`io_id`字段。 4. **customer_number**: 客户信息,对应源数据中的`shop_id`字段。 ##### 自定义字段处理 自定义字段部分,通过嵌套对象实现复杂结构: ```json { ... { "field": "custom_field", ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... {"field":"custom_field__1__3u8xfb7v04v1","label":"聚水潭线上单号","type":"string","value":"{so_id}"}, {"field":"custom_field__1__3w9dyhhn5ntwzg","label":"订单类型","type":"string","value":"{order_type}"} } } } } } } } } } } } } } ``` 这里定义了两个自定义字段: - `custom_field__1__3u8xfb7v04v1`: 聚水潭线上单号,对应源数据中的`so_id`。 - `custom_field__1__3w9dyhhn5ntwzg`: 订单类型,对应源数据中的`order_type`。 ##### 商品分录处理 商品分录部分通过数组对象实现: ```json { ... { ... {"field":"material_entity","label":"商品分录","type":"array","describe":"商品分录","value":"items","children":[ {"field":"material_number","label":"商品","type":"string","describe":"商品","value":"{{items.sku_id}}"}, {"field":"stock_number","label":"仓库","type":"string","describe":"仓库","value":"{wms_co_id}"}, {"field":"qty","label":"数量","type":"string","describe":"数量","value":"{{items.qty}}"}, {"field":"unit_id","label":"单位","type":"string","describe":"单位(只能填商品关联的单位,来源于商品单位查询接口或商品详情中的baseunitid_id、fixunit1_id等)",... ``` 每个商品分录包含以下字段: - `material_number`: 商品编号,对应源数据中的`sku_id`。 - `stock_number`: 仓库编号,对应源数据中的`wms_co_id`。 - `qty`: 数量,对应源数据中的`qty`。 ##### 特殊逻辑处理 某些字段需要根据特定逻辑进行处理,例如折扣额和是否赠品: ```json { ... {"field":"bill_dis_amount",... "_function CASE '{order_type}' WHEN '换货订单' THEN '0.0' WHEN '补发订单' THEN '0' ELSE '{free_amount}' END"}, {"field":"is_free",... "_function case when '{{items.sale_price}}' = '0' or '{{items.sale_price}}' = '0.0' or '{order_type}' = '换货订单' or '{order_type}' = '补发订单' then 'true' else 'false' end"} } ``` 这些逻辑确保了不同订单类型下的数据正确性和一致性。 #### 数据写入目标平台 完成上述配置后,通过轻易云平台调用金蝶云星辰V2 API接口,将转换后的销售出库单数据写入目标系统。API调用采用POST方法,并启用ID检查以确保唯一性和防止重复提交。 ```json { ..., method: POST, idCheck: true, } ``` 通过这种方式,实现了从聚水潭到金蝶云星辰V2的无缝对接,确保了业务流程的高效运转和数据的一致性。 ![打通金蝶云星空数据接口](https://pic.qeasy.cloud/T14.png~tplv-syqr462i7n-qeasy.image)