利用轻易云实现YS-采购退料单的ETL转换

  • 轻易云集成顾问-李国敏

用友BIP到吉客云的系统对接集成案例分享

为满足企业业务流程高效、可靠的数据交互需求,本次技术案例将重点探讨如何通过用友BIP数据集成至吉客云。具体来说,本例方案“YS-采购退料单--->吉客云-出库单-ok”展示了如何利用轻易云数据集成平台实现这一复杂任务。

在本案例中,我们需要从用友BIP获取采购退料单的数据,并将其转换后写入到吉客云的出库单中。核心挑战包括处理接口分页和限流问题,确保数据完整性,以及解决两者之间的数据格式差异。此外,为避免漏单风险,我们设计了一套定时抓取机制,通过调用用友BIP提供的API接口 /yonbip/scm/purinrecord/list 获取数据,再利用轻易云平台中的自定义转换逻辑和批量写入能力,将处理后的数据通过 API 接口 erp.stock.createandstockout 写入至吉客云。

整个过程中,充分利用了以下几个关键特性:

  1. 高吞吐量的数据写入能力:能够快速、大量地将采购退料单数据导入到吉客云,从而显著提升处理效率。
  2. 实时监控与日志记录:可以全程跟踪每个步骤的执行情况,及时发现并处理异常,以保证不漏任何一条重要信息。
  3. 自定义数据转换逻辑:根据实际业务需求,对获取的数据进行适应性的调整,以便顺利完成跨系统对接。

通过使用这些特性和方法,我们有效地解决了跨系统间大批量、高频率、精准的一体化管理,实现了两大企业信息系统之间无缝衔接。在之后部分,将详细阐述具体实施方案及所遇挑战与解决策略。 用友与CRM系统接口开发配置

用友BIP接口调用与数据加工技术案例

在数据集成过程中,调用源系统接口获取并加工数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用用友BIP接口/yonbip/scm/purinrecord/list,并对获取的数据进行加工处理。

接口调用配置

首先,我们需要配置接口的元数据,以便正确调用和处理返回的数据。以下是元数据配置的关键部分:

{
  "api": "/yonbip/scm/purinrecord/list",
  "effect": "QUERY",
  "method": "POST",
  "number": "code",
  "id": "id",
  "idCheck": true,
  "formatResponse": [
    {
      "old": "warehouse",
      "new": "new_warehouse",
      "format": "string"
    }
  ],
  ...
}
  • api: 指定了要调用的API路径。
  • effect: 表示该操作为查询类型。
  • method: 使用POST方法进行请求。
  • numberid: 用于标识单据编码和唯一ID。
  • formatResponse: 定义了响应数据的格式转换规则,将warehouse字段重命名为new_warehouse

请求参数配置

为了获取所需的数据,我们需要设置适当的请求参数。以下是一些关键参数及其配置:

{
  "request": [
    {"field":"pageIndex","label":"页码","type":"string","describe":"例:1 默认值:1","value":"1"},
    {"field":"pageSize","label":"每页数","type":"string","describe":"例:10 默认值:10","value":"100"},
    {"field":"isSum","label":"查询表头","type":"string","describe":"例:false 默认值:false"},
    {"field":"code","label":"单据编码","type":"string"},
    {"field":"open_vouchdate_begin","label":"开始日期","type":"string"},
    {"field":"open_vouchdate_end","label":"结束日期","type":"string"},
    ...
  ]
}
  • pageIndexpageSize: 控制分页查询,默认值分别为1和100。
  • isSum: 是否查询表头信息,默认为false。
  • code, open_vouchdate_begin, open_vouchdate_end: 用于过滤特定单据和日期范围。

数据过滤条件

为了进一步精确地筛选数据,可以使用复杂的过滤条件。例如:

{
  "simpleVOs": {
    "field1": {
      "field": "auditTime",
      "op": "between",
      "value1": "{{DAYS_AGO_3|datetime}}",
      "value2": "{{CURRENT_TIME|datetime}}"
    },
    ...
  }
}
  • 使用auditTime字段进行时间范围过滤,取最近三天的数据。
  • 支持多种比较符,如between, lt, 等等。

调用接口并处理响应

在完成上述配置后,通过轻易云平台发起请求,并对响应数据进行处理。以下是一个示例代码片段:

import requests
import json

url = 'https://api.yonyoucloud.com/yonbip/scm/purinrecord/list'
headers = {'Content-Type': 'application/json'}
payload = {
    'pageIndex': '1',
    'pageSize': '100',
    'isSum': 'false',
    'simpleVOs': {
        'field1': {
            'field': 'auditTime',
            'op': 'between',
            'value1': '{{DAYS_AGO_3|datetime}}',
            'value2': '{{CURRENT_TIME|datetime}}'
        }
    }
}

response = requests.post(url, headers=headers, data=json.dumps(payload))
data = response.json()

# 数据格式转换
for record in data['records']:
    record['new_warehouse'] = record.pop('warehouse')

通过上述步骤,我们成功调用了用友BIP接口,并对返回的数据进行了必要的格式转换和处理。

总结

本文详细介绍了如何通过轻易云数据集成平台调用用友BIP接口获取采购退料单数据,并对其进行加工处理。这一步骤是整个数据集成生命周期中的关键环节,通过合理配置元数据和请求参数,可以高效地实现不同系统间的数据无缝对接。 金蝶与WMS系统接口开发配置

使用轻易云数据集成平台将YS-采购退料单转换为吉客云出库单

在数据集成过程中,ETL(Extract, Transform, Load)是一个关键步骤。本文将详细探讨如何利用轻易云数据集成平台,将YS-采购退料单的数据进行ETL转换,并通过吉客云API接口写入到目标平台。

API接口配置与元数据解析

我们需要使用的API接口是erp.stock.createandstockout,该接口用于创建并执行出库操作。以下是具体的元数据配置:

{
  "api": "erp.stock.createandstockout",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {
      "field": "outWarehouseCode",
      "label": "仓库编码",
      "type": "string",
      "describe": "仓库编码",
      "value": "_findCollection find code from b43de0e8-d19c-3422-87d0-363ebf7eb13e where new_id={new_warehouse}"
    },
    {
      "field": "outType",
      "label": "类型",
      "type": "string",
      "describe": "类型",
      "value": "205"
    },
    {
      "field": "relDataId",
      "label": "关联单据id",
      "type": "string",
      "describe": "关联单据id",
      "value": "{code}_1"
    },
    {
      "field": "applyDate",
      "label": "申请时间",
      "type": "string",
      "describe": "申请时间",
      "value": "{vouchdate}"
    },
    {
      ...
    }
  ],
  ...
}

数据请求与清洗

首先,我们需要从YS-采购退料单中提取相关数据,并进行必要的清洗和转换。这一步主要涉及字段映射和数据格式的调整。例如,仓库编码(outWarehouseCode)需要通过查询来获取:

{
  ...
  {
    “field”: “outWarehouseCode”,
    “label”: “仓库编码”,
    “type”: “string”,
    “describe”: “仓库编码”,
    “value”: “_findCollection find code from b43de0e8-d19c-3422-87d0-363ebf7eb13e where new_id={new_warehouse}”
  }
}

这里使用了一个查询语句来从指定集合中查找仓库编码,这种动态获取方式确保了数据的一致性和准确性。

数据转换与写入

接下来是将清洗后的数据进行转换,并按照吉客云API接口所需的格式进行组织。以下是关键字段的转换示例:

{
  ...
  {
    “field”: “relDataId”,
    “label”: “关联单据id”,
    “type”: “string”,
    “describe”: “关联单据id”,
    “value”: “{code}_1”
  },
  {
    ...
  }
}

在这个例子中,relDataId字段通过字符串拼接生成,以确保每个出库单都有唯一的关联标识。

对于出库明细信息(stockOutDetailViews),我们需要处理数组类型的数据,并对每个子项进行相应的字段映射和转换:

{
  ...
  {
    “field”: “stockOutDetailViews”,
    “label”: “出库明细信息”,
    “type”: “array”,
    ...
    ”children“: [
        {
          ”field“: ”skuBarcode“,
          ”label“: ”条形码“,
          ”type“: ”string“,
          ”value“: ”{productn_productDetail_barCode}“
        },
        ...
        {
          ”field“: ”skuCount“,
          ”label“: ”数量“,
          ”type“: ”string“,
          ”describe“: ”数量“,
          ”value“: _function ‘{qty}’*(-1)
        },
        ...
     ]
   }
}

这里特别注意数量(skuCount)字段,需要将正数转换为负数以符合出库逻辑。

实际应用案例

假设我们有一笔YS-采购退料单,其核心数据如下:

{
  ...
  { 
     new_warehouse: 'WH001',
     code: 'RT12345',
     vouchdate: '2023-10-01',
     purInRecords: [
         { 
            productn_productDetail_barCode: '1234567890123', 
            qty: '10', 
            oriTaxUnitPrice: '100.00', 
            natSum: '1000.00'
         }
     ],
     purInRecordsSNs: [
         { sn: 'SN001' }, 
         { sn: 'SN002' }
     ]
   }
}

通过上述配置和处理,我们可以生成如下符合吉客云API接口要求的数据结构:

{
   outWarehouseCode: 'WH001',
   outType: '205',
   relDataId: 'RT12345_1',
   applyDate: '2023-10-01',
   source: 'OPEN',
   memo: 'YS采购退料单-RT12345',
   stockOutDetailViews:[
       {
           skuBarcode:'1234567890123',
           relDetailId:'',
           skuCount:'-10',
           skuPrice:'100.00',
           isCertified:'1',
           totalAmount:'-1000.00',
           serialList:[
               { serialNo:'SN001' },
               { serialNo:'SN002' }
           ]
       }
   ],
   vendCode:''
}

最终,通过POST请求,将这些数据写入到吉客云,实现了从YS系统到吉客云系统的数据无缝对接。 如何开发钉钉API接口

更多系统对接方案