利用轻易云实现聚水潭与金蝶云星辰V2的数据转换与清洗

  • 轻易云集成顾问-谢楷斌

聚水潭数据集成到金蝶云星辰V2案例分享:盘点单对接盘亏单

在复杂的企业资源管理和物流操作中,数据集成的准确性和效率至关重要。今天,我们将深入探讨一个实际运行的系统对接案例——“聚水潭-盘点单-->星辰-盘亏单”,并解析如何利用轻易云数据集成平台完成这一复杂任务。

确保数据不漏单与高效写入

为了确保实现从聚水潭获取的数据完整无误地写入金蝶云星辰V2,我们采用了特定的一系列策略。从聚水潭抓取各个仓库的最新库存信息(API路径为/open/inventory/count/query),然后批量导出这些数据,并按预设规则映射到金蝶云星辰V2对应的接口(API路径为/jdy/v2/scm/inv_check_loss_bill),以创建相应的盘亏单。

通过实时监控每次API调用以及分页处理机制,有效避免了因网络波动或限流导致的数据丢失问题。同时,通过定时任务机制,确保周期性抓取和处理,使得业务流程中的库存调整能够反映最新状态,大幅提升了运营效率。

API调用及分页限流处理技术要点

在实际操作过程中,对聚水潭接口进行频繁调用会面临一定程度上的服务器压力。因此,设计了一套细化的分页逻辑来平衡查询效率与服务器负载。在每次请求后,根据返回的数据条数动态调整下一页的查询参数。此外,还使用了错误重试机制,以应对偶发性的网络异常或接口超时情况。通过日志记录系统,每一次API交互过程均被详细记录,为后续故障排查和性能优化提供了充分依据。

上述方案不仅解决了大规模、多源头异构数据向目标系统高效、安全、可靠地传输问题,也让我们在各种突发情况下依然能及时响应并保持业务连续性。这一成功实践展示出了强大的技术整合能力,为其他类似需求提供了一份有价值的参考模板。在接下来的部分中,我们将进一步详述该方案涉及到的数据格式差异处理、常见异常情况及其解决方法等关键环节。 用友与MES系统接口开发配置

调用聚水潭接口获取并加工数据的技术案例

在数据集成的生命周期中,调用源系统接口是关键的第一步。本文将详细探讨如何通过轻易云数据集成平台调用聚水潭接口/open/inventory/count/query来获取盘点单数据,并进行初步加工。

接口配置与请求参数

首先,我们需要配置元数据以便正确调用聚水潭的API接口。以下是具体的元数据配置:

{
  "api": "/open/inventory/count/query",
  "effect": "QUERY",
  "method": "POST",
  "number": "io_id",
  "id": "io_id",
  "idCheck": true,
  "request": [
    {"field":"page_index","label":"第几页","type":"string","describe":"第几页,从第一页开始,默认1","value":"1"},
    {"field":"page_size","label":"每页多少条","type":"string","describe":"每页多少条,默认30,最大50","value":"10"},
    {"field":"modified_begin","label":"修改起始时间","type":"string","describe":"修改起始时间,和结束时间必须同时存在,时间间隔不能超过七天,与线上单号不能同时为空","value":"{{DAYS_AGO_1|datetime}}"},
    {"field":"modified_end","label":"修改结束时间","type":"string","describe":"修改结束时间,和起始时间必须同时存在,时间间隔不能超过七天,与线上单号不能同时为空","value":"{{CURRENT_TIME|datetime}}"},
    {"field":"status","label":"单据状态","type":"string","describe":"单据状态,Confirmed=生效,WaitConfirm待审核,Creating=草拟,Archive=归档,Cancelled=作废","value":"Confirmed"},
    {"field":"wms_co_id","label":"仓库编号","type":"string","value":"12851795"}
  ],
  "autoFillResponse": true,
  "condition_bk": [[{"field": "items.qty", "logic": "gt", "value": "0"}]],
  "beatFlat": ["items"],
  "condition": [[{"field": "items.qty", "logic": "lt", "value": "-0"},{"field": "warehouse", "logic": "in", 
"value": 
"浙江濮院分仓主仓,浙江濮院分仓销退仓,浙江濮院分仓次品仓,浙江濮院分仓报废仓,浙江濮院分仓返修仓,浙江濮院分仓进货仓"}]]
}

请求参数解析

  • page_indexpage_size:用于分页请求,每次请求返回的数据量控制在10条以内。
  • modified_beginmodified_end:指定了查询的时间范围,这两个字段必须同时存在且间隔不超过七天。
  • status:过滤出已生效的盘点单。
  • wms_co_id:指定查询的仓库编号。

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

数据清洗与转换

在获取到原始数据后,我们需要对其进行清洗和转换。根据元数据配置中的条件,我们可以对数据进行如下处理:

  1. 条件过滤

    • 使用 condition_bk 条件过滤掉库存数量大于0的记录。
    • 使用 condition 条件进一步筛选出库存数量小于0且属于特定仓库(如浙江濮院分仓)的记录。
  2. 扁平化处理

    • 使用 beatFlat 将嵌套结构中的 items 字段展开为平面结构,以便后续处理。

实际操作步骤

  1. 发送请求

    import requests
    import json
    from datetime import datetime, timedelta
    
    url = 'https://api.jushuitan.com/open/inventory/count/query'
    headers = {'Content-Type': 'application/json'}
    
    # 设置请求参数
    params = {
       'page_index': '1',
       'page_size': '10',
       'modified_begin': (datetime.now() - timedelta(days=1)).strftime('%Y-%m-%d %H:%M:%S'),
       'modified_end': datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
       'status': 'Confirmed',
       'wms_co_id': '12851795'
    }
    
    response = requests.post(url, headers=headers, data=json.dumps(params))
    
    if response.status_code == 200:
       data = response.json()
       # 后续处理逻辑...
    else:
       print(f'Error: {response.status_code}')
  2. 数据清洗与转换

    def clean_and_transform(data):
       filtered_data = []
    
       for record in data['items']:
           if record['qty'] < 0 and record['warehouse'] in [
               '浙江濮院分仓主仓', 
               '浙江濮院分仓销退仓', 
               '浙江濮院分仓次品仓', 
               '浙江濮院分仓报废仓', 
               '浙江濮院分仓返修仓', 
               '浙江濮院分仓进货仓'
           ]:
               filtered_data.append(record)
    
       return filtered_data
    
    cleaned_data = clean_and_transform(data)

通过上述步骤,我们成功调用了聚水潭接口获取盘点单数据,并进行了初步的数据清洗和转换。这些处理后的数据将为后续的数据写入和业务分析提供坚实基础。 数据集成平台可视化配置API接口

利用轻易云数据集成平台将聚水潭盘点单转换为金蝶云星辰V2盘亏单

在数据集成的生命周期中,ETL(Extract, Transform, Load)过程至关重要。本文将详细探讨如何利用轻易云数据集成平台,将聚水潭的盘点单数据转换为金蝶云星辰V2 API接口所能接收的格式,并最终写入目标平台。

1. 数据请求与清洗

在这个阶段,我们已经从源系统聚水潭获取了盘点单的数据。接下来,我们需要对这些数据进行清洗和预处理,以确保其能够顺利通过ETL流程。

2. 数据转换与写入

在这一阶段,我们将重点讨论如何将清洗后的数据转换为金蝶云星辰V2所需的格式,并通过API接口将其写入目标平台。以下是元数据配置的详细解析及应用。

3. 元数据配置解析

根据提供的元数据配置,我们需要将聚水潭盘点单的数据映射到金蝶云星辰V2 API接口所需的字段。这些字段包括单据日期、单据编码、操作类型、备注以及商品分录等。

{
    "api": "/jdy/v2/scm/inv_check_loss_bill",
    "effect": "EXECUTE",
    "method": "POST",
    "number": "id",
    "id": "id",
    "name": "id",
    "idCheck": true,
    "request": [
        {
            "field": "bill_date",
            "label": "单据日期",
            "type": "string",
            "describe": "单据日期",
            "value": "{io_date}"
        },
        {
            "field": "bill_no",
            "label": "单据编码",
            "type": "string",
            "describe": "单据编码",
            "value": "{io_id}"
        },
        {
            "field": "operation_key",
            "label": "操作类型",
            "type": "string",
            "describe": "操作类型,审核audit、提交submit",
            "value": "audit"
        },
        {
            "field": "remark",
            ...

4. 字段映射与转换逻辑

单据头部字段映射
  • bill_date:从源系统的io_date字段获取。
  • bill_no:从源系统的io_id字段获取。
  • operation_key:固定值为audit,表示审核操作。
  • remark:备注信息,可选填。
商品分录字段映射

商品分录是一个数组,每个商品项包含以下字段:

  • material_id:通过 _findCollection find id from ac1d70fd-05db-3961-a168-b5617749605e where number={items_sku_id} 从 SKU ID 获取商品 ID。
  • qty:数量,通过 _function ABS( {items_qty} ) 获取绝对值。
  • unit_id:单位,固定值为 4
  • stock_id:仓库,通过 _findCollection find id from f05acc4f-b637-3497-86d3-3ed5423f226a where name={warehouse} 从仓库名称获取仓库 ID。

5. 数据组装与提交

根据上述映射关系,将源系统的数据组装成目标系统所需的 JSON 格式,并通过 POST 方法提交到 /jdy/v2/scm/inv_check_loss_bill 接口。以下是一个示例请求体:


{
    ...
    {
        ...
        {
            ...
                {
                    ...
                    {
                        ...
                        {
                            ...
                            {
                                ...
                                {
                                    ...
                                    {
                                        ...
                                        {
                                            ...
                                            {
                                                ...
                                                {
                                                    ...
                                                    {
                                                        ...
                                                        {
                                                            ...
                                                            {
                                                                ...
                                                                {
                                                                    ...
                                                                    {
                                                                        ...
                                                                        {
                                                                            ...
                                                                            [
                                                                                ...
![金蝶与WMS系统接口开发配置](https://pic.qeasy.cloud/T12.png~tplv-syqr462i7n-qeasy.image)
更多系统对接方案