提高企业运营效率:管易云销售数据批量写入金蝶云解决方案

  • 轻易云集成顾问-陈洁琳

案例分享:管易云·奇门数据集成到金蝶云星空

在企业的日常运营中,实现不同系统之间的数据互通是提升效率和确保数据一致性的关键。本文将详细介绍如何通过轻易云数据集成平台完成将管易云·奇门中的销售出库(物流编号)信息实时、可靠地反写至金蝶云星空,实现两个系统间的无缝对接。

管易销售出库(物流编号)反写金蝶方案概述

为了实现这一目标,我们需要解决以下几个技术难点:

  1. 定时可靠的抓取管易云·奇门接口数据: 管易云提供了名为gy.erp.trade.deliverys.get的API接口,用于获取销售信息及其对应的物流编号。为了确保高效且不遗漏地获取这些数据,必须设置精确的定时任务,同时处理分页与限流问题以应对大量请求。

  2. 批量集成数据到金蝶云星空: 将从管易云获取的大量销售信息批量写入金蝶,需要使用金蝶提供的batchSave API进行操作。这不仅能够保证较高的数据传输效率,还能够减少频繁调用API带来的性能压力。

  3. 处理跨系统间的数据格式差异: 管易和金蝶之间存在显著的数据格式差异。在实际操作中,需要根据业务需求,对各字段进行相应转换,并通过脚本或配置文件实现灵活映射,这一点尤为重要。

  4. 异常处理与错误重试机制: 数据对接过程中可能会遇到网络波动、接口异常等各种问题。因此,构建健壮的异常处理机制以及合理设置重试策略,对于提高整个流程的稳定性具有重要作用。

  5. 实时监控与日志记录: 在执行上述步骤时,通过轻易平台内置功能,可以对每一步骤进行实时监控并记录日志,从而确保所有操作都清晰可见,并能够及时发现和解决潜在的问题,提高反馈响应速度。

具体实施步骤

第一步,我们将在轻易平台上配置定时任务,以周期性调用 gy.erp.trade.deliverys.get 接口抓取订单交付信息。同时,为了避免单次请求返回过多数据,需严格控制分页参数。此外,通过预设限流策略,可以防止短时间内大量访问导致接口超载。

第二步,在成功获得所需数据信息后,将其规范化并准备好待写入对象。针对每个字段,根据已有规则或自定义映射关系转化为符合金蝶要求的数据结构,然后利用 batchSave API 批量上传至金蝶系统数据库中去 如何开发用友BIP接口

调用管易云·奇门接口gy.erp.trade.deliverys.get获取并加工数据

在数据集成的生命周期中,第一步是调用源系统接口获取数据。本文将详细探讨如何通过轻易云数据集成平台调用管易云·奇门接口gy.erp.trade.deliverys.get来获取销售出库单的物流编号,并进行初步的数据清洗和加工。

接口配置与请求参数

在轻易云数据集成平台上,配置gy.erp.trade.deliverys.get接口时,需要设置以下请求参数:

  • start_create: 创建时间开始段
  • end_create: 创建时间结束段
  • start_delivery_date: 发货时间开始段,默认值为上次同步时间 {{LAST_SYNC_TIME|datetime}}
  • end_delivery_date: 发货时间结束段,默认值为当前时间 {{CURRENT_TIME|datetime}}
  • start_modify_date: 修改时间开始段
  • end_modify_date: 修改时间结束段
  • del: 返回是否作废的单据
  • delivery: 发货状态,默认值为 1
  • code: 单据编号

此外,还需要设置分页参数:

  • page_size: 分页大小,默认值为 50
  • page_no: 页号

请求示例

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

{
  "api": "gy.erp.trade.deliverys.get",
  "method": "POST",
  "request": {
    "start_create": "2023-01-01 00:00:00",
    "end_create": "2023-01-31 23:59:59",
    "start_delivery_date": "{{LAST_SYNC_TIME|datetime}}",
    "end_delivery_date": "{{CURRENT_TIME|datetime}}",
    "start_modify_date": "",
    "end_modify_date": "",
    "del": "",
    "delivery": "1",
    "code": ""
  },
  "otherRequest": {
    "page_size": "50",
    "page_no": ""
  }
}

数据清洗与转换

在获取到原始数据后,需要对数据进行清洗和转换,以便后续处理。以下是一些常见的数据清洗步骤:

  1. 过滤无效数据:根据业务需求过滤掉作废的单据。
  2. 字段映射与转换:将原始数据字段映射到目标系统所需的字段格式。例如,将发货状态从数字 1 转换为对应的文本描述。
  3. 日期格式化:将日期字段格式化为标准的日期时间格式,以便统一处理。

自动填充与补救机制

轻易云平台提供了自动填充响应和补救机制,以确保数据完整性和一致性:

  • 自动填充响应(autoFillResponse):在配置中启用此选项,可以自动将响应中的某些字段填充到请求参数中,以简化后续处理。

  • 补救机制(omissionRemedy):通过定时任务(crontab)和接管请求字段,可以定期检查并补救遗漏的数据。例如,每12小时执行一次检查,并使用 {{HOURE_AGO_s12|datetime}} 作为接管字段的默认值。

条件过滤

在实际应用中,可能需要根据特定条件过滤数据。例如,只获取备注包含“金蝶”或“XSCKD”的单据。可以通过以下条件配置实现:

{
  "condition_bk": [
    [
      {"field":"seller_memo","logic":"like","value":"金蝶"}
    ]
  ],
  "condition": [
    [
      {"field":"seller_memo","logic":"like","value":"XSCKD"}
    ]
  ]
}

实践案例

假设我们需要获取2023年1月内所有发货状态为已发货(delivery=1)的销售出库单,并且备注包含“XSCKD”。可以通过以下配置实现:

{
  "api": "gy.erp.trade.deliverys.get",
  "method": "POST",
  "request": {
    "start_create": "2023-01-01 00:00:00",
    "end_create": "2023-01-31 23:59:59",
    ...
    ...
},
"condition":[[{"field":"seller_memo","logic":"like","value":"XSCKD"}]]
}

通过以上配置,我们可以高效地从管易云·奇门接口获取所需的数据,并进行初步清洗和加工,为后续的数据转换与写入奠定基础。 钉钉与ERP系统接口开发配置

使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口

在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL转换,并转为目标平台能够接收的格式。本文将重点探讨如何通过轻易云数据集成平台,将管易销售出库(物流编号)反写到金蝶云星空API接口。

API接口配置

为了实现数据从源平台到目标平台的无缝对接,我们需要配置金蝶云星空的API接口。以下是元数据配置的详细说明:

{
  "api": "batchSave",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {
      "field": "FID",
      "label": "单据ID",
      "type": "string",
      "value": "_mongoQuery 77db61fd-60fd-36b0-bd8a-fe7bf1a5163f findField=content.FID where={\"content.FBillNo\":{\"$eq\":\"{seller_memo}\"},\"content.F_recipient\":{\"$eq\":\"{receiver_name}\"}}"
    },
    {
      "field": "F_WFHW_Combo_qtr",
      "label": "出货类型",
      "type": "string",
      "value": "_mongoQuery 77db61fd-60fd-36b0-bd8a-fe7bf1a5163f findField=content.F_WFHW_Combo_qtr where={\"content.FBillNo\":{\"$eq\":\"{seller_memo}\"},\"content.F_recipient\":{\"$eq\":\"{receiver_name}\"}}"
    },
    {
      "field": "FEntity",
      "label": "FEntity",
      "type": "array",
      "value": "details",
      "children": [
        {
          "field": "FENTRYID",
          "label": "FENTRYID",
          "type": "string",
          "value": "_mongoQuery 77db61fd-60fd-36b0-bd8a-fe7bf1a5163f findField=content.FEntity_FENTRYID where={\"content.FBillNo\":{\"$eq\":\"{seller_memo}\"},\"content.F_recipient\":{\"$eq\":\"{receiver_name}\"},\"content.FMaterialID_FNumber\":{\"$eq\":\"{{details.item_code}}\"}}"
        },
        {
          "field": "F_Express_tracking_number2",
          "label": "快递单号",
          "type": "string",
          "value": "{express_no}"
        }
      ]
    }
  ],
  ...
}

数据请求与清洗

在数据请求阶段,我们使用_mongoQuery来获取所需的数据。例如,FID字段的值通过查询MongoDB数据库中的content.FID字段获取,查询条件包括单据编号和收件人姓名。

{
  "_mongoQuery 77db61fd-60fd-36b0-bd8a-fe7bf1a5163f findField=content.FID where={\"content.FBillNo\":{\"$eq\":\"{seller_memo}\"},\"content.F_recipient\":{\"$eq\":\"{receiver_name}\"}}"
}

这种方式确保了我们能够精确地获取所需的数据,避免了冗余信息的干扰。

数据转换与写入

在数据转换阶段,我们需要将源平台的数据格式转换为金蝶云星空API能够接受的格式。以下是关键字段及其对应关系:

  1. 单据ID (FID): 从MongoDB查询得到。
  2. 出货类型 (F_WFHW_Combo_qtr): 从MongoDB查询得到。
  3. 实体数组 (FEntity): 包含多个子字段,如FENTRYID快递单号 (F_Express_tracking_number2)

例如,对于实体数组中的每一项,我们需要根据物料编码、单据编号和收件人姓名进行查询,以获取对应的FENTRYID

{
  "_mongoQuery 77db61fd-60fd-36b0-bd8a-fe7bf1a5163f findField=content.FEntity_FENTRYID where={\"content.FBillNo\":{\"$eq\":\"{seller_memo}\"},\"content.F_recipient\":{\"$eq\":\"{receiver_name}\"},\"content.FMaterialID_FNumber\":{\"$eq\":\"{{details.item_code}}\"}}"
}

配置其他请求参数

除了主要字段外,还需要配置一些其他请求参数,以确保API调用成功:

{
  ...
  {
    field: 'FormId',
    label: 'FormId',
    type: 'string',
    describe: '必须填写金蝶的表单ID如:PUR_PurchaseOrder',
    value: 'SAL_OUTSTOCK'
  },
  {
    field: 'Operation',
    label: 'Operation',
    type: 'string',
    value: 'BatchSave'
  },
  ...
}

这些参数包括表单ID (FormId) 和操作类型 (Operation) 等,确保API调用符合金蝶云星空的要求。

批量保存操作

最后,我们使用批量保存操作将转换后的数据写入目标平台。通过配置元数据中的 operation 字段,实现批量保存功能:

{
  operation: {
    rowsKey: 'array',
    rows: 1,
    method: 'batchArraySave'
  }
}

这种方法不仅提高了效率,还减少了网络请求次数,从而提升整体性能。

通过上述步骤,我们成功实现了从管易销售出库到金蝶云星空的数据ETL转换和写入。这种方法不仅保证了数据的一致性和准确性,还大大简化了复杂的数据集成过程。 如何开发用友BIP接口

更多系统对接方案