数据集成与转换:将吉客云采购退料信息写入金蝶云星空

  • 轻易云集成顾问-彭亮

案例分享:吉客云数据集成到金蝶云星空——采购退料对接

在企业的采购退料管理中,高效、准确的数据流转至关重要。本次案例聚焦于使用轻易云数据集成平台,将吉客云中的采购退料信息高效地同步到金蝶云星空,实现系统间无缝对接。具体方案名称为“采购退料对接--正数--已测试”。

1. 系统概述与技术要点

为了实现这一目标,我们利用了多个核心特性:

  • API接口调用:通过erp.storage.goodsdocout.v2从吉客云获取采购退料数据,再通过batchSave接口将处理后的数据写入金蝶云星空。

  • 批量集成与快速写入:支持高吞吐量的数据写入能力,使得大量数据能够快速被集成,明显提升了整体时效性。

  • 实时监控与日志记录:确保每个环节都能透明可视,并提供集中监控和告警系统以追踪任务状态和性能。

2. 数据获取与转换逻辑

首先,通过调用吉客云的erp.storage.goodsdocout.v2 API接口,抓取需要处理的采购退料数据。在这个过程中,需要特别关注分页及限流问题,以确保大规模数据提取过程中的稳定性。获取到原始数据后,还需根据业务需求进行格式转换,以适应金蝶云星空的数据结构。

3. 数据质量控制与异常处理机制

为了保证传输过程中不漏单、不出错,每条记录都会经过严格的数据质量检测。同时,当遇到异常情况或者错误时,会有相应的重试机制以及详细的日志记录,这不仅方便调试,也保障了业务持续不中断。

4. 数据写入操作优化

通过自定义批量提交策略,使得大量采集来的订单可以一次性批量写入至金蝶云星空,大幅降低API调用次数,提高效率。此外,在实际运行中会根据业务需求定制化映射字段,确保每一条记录都精准无误地映射至对应表单字段,从根本上提高了录入正确率和一致性。这套方案成功证明,无论是技术实现还是实际应用效果,都达到了预期目标,为企业在数字化管理方面提供了强有力支撑。

下一部分将继续深入分析具体实现步骤,包括代码实例及相关配置细节,请保持关注。 系统集成平台API接口配置

调用吉客云接口erp.storage.goodsdocout.v2获取并加工数据

在数据集成生命周期的第一步,我们需要从源系统获取数据并进行初步加工。本文将详细探讨如何通过调用吉客云的erp.storage.goodsdocout.v2接口来实现这一目标,并分享具体的技术实现案例。

接口配置与请求参数

首先,我们需要配置接口及其请求参数。根据元数据配置,erp.storage.goodsdocout.v2接口采用POST方法进行数据查询,主要参数如下:

  • pageIndex: 分页页码,类型为字符串。
  • pageSize: 分页页数,类型为字符串,默认值为50。
  • goodsDocNo: 入库单号,类型为字符串。
  • startDate: 创建时间的起始时间,类型为字符串,使用动态变量{{LAST_SYNC_TIME|datetime}}
  • endDate: 创建时间的结束时间,类型为字符串,使用动态变量{{CURRENT_TIME|datetime}}
  • inouttype: 出库类型,类型为字符串,此处固定值为205(退料入库)。
  • selelctFields: 返回参数列表,以逗号分隔。

以下是一个典型的请求示例:

{
  "pageIndex": "1",
  "pageSize": "50",
  "goodsDocNo": "",
  "startDate": "{{LAST_SYNC_TIME|datetime}}",
  "endDate": "{{CURRENT_TIME|datetime}}",
  "inouttype": "205",
  "selelctFields": "goodsdocNo,inOutDate,inouttype,vendCustomerCode,vendCustomerName,warehouseCode,warehouseName,inOutReason,financeBillStatus,goodsDocDetailList.goodsNo,goodsDocDetailList.goodsName,goodsDocDetailList.estCost,goodsDocDetailList.estPrice,goodsDocDetailList.quantity,goodsDocDetailList"
}

数据过滤与条件设置

为了确保获取的数据符合业务需求,我们需要设置一些过滤条件。根据元数据配置中的条件部分,我们将应用以下逻辑:

  • goodsDocDetailList.quantity > 0
  • warehouseName 不包含 'VMI'

这些条件可以在请求处理后,通过代码或平台内置功能进行过滤。

数据平铺与自动填充

元数据配置中提到需要对返回的数据进行平铺处理,即将嵌套的goodsDocDetailList展开成平铺结构。这一步骤可以通过编写相应的数据处理逻辑来实现。例如:

def flatten_goods_doc_detail(response_data):
    flat_data = []
    for record in response_data:
        for detail in record.get('goodsDocDetailList', []):
            flat_record = {**record}
            flat_record.update(detail)
            flat_record.pop('goodsDocDetailList', None)
            flat_data.append(flat_record)
    return flat_data

此外,自动填充响应(autoFillResponse)功能可以简化数据处理过程,使得返回的数据结构更加一致和易于使用。

异常处理与补偿机制

在实际操作中,不可避免地会遇到各种异常情况,如网络中断、接口超时等。为了确保数据集成过程的稳定性和可靠性,我们需要设计相应的异常处理和补偿机制。

元数据配置中提供了一个补偿机制示例,通过定时任务(crontab)来接管请求,并重新拉取过去三天的数据:

{
  "crontab": "1 2 * * *",
  "takeOverRequest": [
    {
      "field": "startDate",
      "value": "_function FROM_UNIXTIME( unix_timestamp() -259200 , '%Y-%m-%d %H:%i:%s' )"
    }
  ]
}

该配置表示每天凌晨2:01执行一次任务,从当前时间往前推三天重新拉取数据,以确保没有遗漏。

实际应用案例

假设我们需要集成采购退料数据,并且已经完成了上述配置和准备工作。以下是一个实际应用案例:

  1. 初始化请求参数:根据当前时间和上次同步时间生成请求参数。
  2. 调用接口:通过POST方法向吉客云接口发送请求。
  3. 处理响应:接收并解析响应数据,根据条件进行过滤和平铺处理。
  4. 异常处理:捕获可能出现的异常情况,并触发补偿机制重新拉取数据。

通过这种方式,我们可以高效地从吉客云获取所需的数据,并进行初步加工,为后续的数据转换与写入做好准备。 金蝶与WMS系统接口开发配置

轻易云数据集成平台:采购退料对接至金蝶云星空API接口的ETL转换

在数据集成生命周期的第二步,我们将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。本文将详细探讨这一过程中涉及的技术细节和元数据配置。

API接口与元数据配置解析

在本次集成方案中,我们使用了金蝶云星空的batchSave API接口。该接口通过POST方法提交请求,支持批量保存采购退料单据。以下是关键元数据配置项及其技术解析:

  1. API基本信息

    {
     "api": "batchSave",
     "effect": "EXECUTE",
     "method": "POST",
     "idCheck": true
    }
    • api: 指定调用的API接口名称。
    • effect: 操作类型,这里为执行操作。
    • method: HTTP请求方法,这里为POST。
    • idCheck: 是否进行ID校验。
  2. 操作定义

    {
     "operation": {
       "method": "merge",
       "field": "goodsDocDetailList_ownerName,goodsdocNo",
       "bodyName": "Fentity",
       "header": ["goodsdocNo", "inOutDate", "vendCustomerCode", "warehouseCode", "goodsDocDetailList_ownerName"],
       "body": ["goodsDocDetailList_goodsNo", "goodsDocDetailList_quantity", "goodsDocDetailList_estPrice", "goodsDocDetailList_estCost"]
     }
    }
    • method: 操作方法,这里为合并(merge)。
    • field: 合并依据字段。
    • bodyName: 主体名称。
    • headerbody: 定义了请求头和请求体中的字段映射关系。
  3. 请求参数映射 请求参数映射用于将源平台的数据字段转换为目标平台所需的格式。例如:

    {
     "field": "FJKYNo",
     "label": "吉客云单号",
     "type": "string",
     "describe": "单据编号",
     "value": "{goodsdocNo}",
     ...
    }

    该配置将源平台中的goodsdocNo字段映射为金蝶云星空中的FJKYNo字段。

  4. 基础资料解析器 在处理基础资料时,我们使用了自定义解析器,例如:

    {
      ...
      "parser": {
        "name": "ConvertObjectParser",
        "params": "FNumber"
      },
      ...
    }

    该解析器将源平台中的基础资料编码转换为目标平台所需格式。

  5. 明细信息处理 明细信息通过嵌套数组结构进行处理:

    {
      ...
      {
        ...
        “children”: [
          {
            “field”: “FMATERIALID”,
            “label”: “物料编码”,
            “type”: “string”,
            “describe”: “基础资料”,
            “parser”: {“name”: “ConvertObjectParser”,“params”:“FNumber”},
            “value”:“{{Fentity.goodsDocDetailList_goodsNo}}”
          },
          ...
        ]
      }
      ...
    }

    这里定义了物料编码、实退数量、仓库、含税单价、价税合计等明细信息的映射关系和解析方式。

  6. 其他请求参数

    {
      ...
      {"field":"FormId","label":"业务对象表单Id","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"PUR_MRB"},
      {"field":"Operation","label":"执行的操作","type":"string","value":"batchSave"},
      {"field":"IsAutoSubmitAndAudit","label":"提交并审核","type":"bool","value":"true"},
      {"field":"IsVerifyBaseDataField","label":"验证基础资料","type":"bool","describe":"是否验证所有的基础资料有效性,布尔类,默认false(非必录)","value":"true"},
      {"field":"SubSystemId","label":"系统模块","type":"string","describe":"默认仓库模块","value":"21"},
      {"field":"InterationFlags","label":"允许负库存","type":"string","value":"STK_InvCheckResult"}
      ...
    }

    这些参数用于控制API调用过程中的特定行为,例如自动提交并审核、验证基础资料有效性等。

数据转换与写入流程

  1. 数据提取与清洗

  2. 数据转换

  3. 数据写入

在实际操作中,通过上述元数据配置,可以实现从源平台到金蝶云星空的数据无缝对接。每个字段的映射和解析都经过精心设计,以确保数据准确无误地传输到目标系统中。 电商OMS与WMS系统接口开发配置

更多系统对接方案