从金蝶云星空获取数据至聚水潭的技术实现

  • 轻易云集成顾问-潘裕

金蝶云星空数据集成到聚水潭的系统对接案例分析

在企业信息化建设过程中,跨平台的数据集成往往是一个复杂而关键的环节。本文将分享一个具体的系统对接案例,通过轻易云数据集成平台,将金蝶云星空中的业务数据高效、可靠地导入聚水潭,实现对其他入库单的数据管理。

方案概述:金蝶分步式调入 => 聚水潭其他入库单

在这个项目中,我们主要解决了以下几个技术挑战:

  1. 确保金蝶云星空数据不漏单:为了防止遗漏任何一条重要的数据记录,我们采用了定时可靠抓取机制,利用executeBillQuery接口从金蝶获取所有必要的订单信息,并实现分页和限流处理,以应对大规模数据查询带来的压力。

  2. 批量写入到聚水潭:通过调用聚水潭的数据写入API /open/jushuitan/otherinout/upload,我们设计了一套高效且稳定的大量数据快速写入方案,保证了与数据库之间的同步操作能够无缝进行。

  3. 异常处理与重试机制:在整个数据传输过程中,各种网络或者业务逻辑上的错误不可避免。为此,我们构建了一套完善的异常处理与错误重试机制,从日志记录到实时监控,全方位保障每一条业务流水都能被安全处理。

  4. 定制化映射及格式转换:针对两者不同的平台接口规范,在实际应用中难免会遇到一些字段名称、格式以及结构上的差异。我们开发了一系列脚本及配置用于动态调整这些差异,使其符合目标系统要求。

技术细节解析

为了实现上诉目标,本案例重点探讨以下技术策略:

  • 实时监控与日志记录:详细阐释如何使用轻易云提供的平台工具,对整个流程进行细粒度追踪和审计。

  • 高效分页: 在executeBillQuery请求配合下,通过合理设定开始时间点、结束时间点以及查询条数来减少服务器负载,提高查询效率并防范前端超时问题。

  • 重试功能: 自定义设置最大失败次数和间隔时间,一旦检测出某次传输失败,即自动启动重试任务有效提升容错率。

在接下来的内容中,将深入讲解各个步骤实施过程中遇到的问题及其优化过程,包括但不限于如何灵活调用API、安全性考量等方面。 金蝶与MES系统接口开发配置

调用金蝶云星空接口executeBillQuery获取并加工数据

在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery接口来获取并加工数据。

接口配置与请求参数

首先,我们需要了解executeBillQuery接口的基本配置和请求参数。根据提供的元数据配置,我们可以看到该接口使用POST方法进行调用,主要用于查询操作(effect: QUERY)。

请求参数包括多个字段,这些字段涵盖了单据编号、单据状态、调入库存组织、日期等关键信息。以下是部分关键字段及其描述:

  • FBillNo: 单据编号
  • FDocumentStatus: 单据状态(暂存:Z,创建:A,审核中:B,已审核:C,重新审核:D)
  • FStockOrgID_FNumber: 调入库存组织
  • FDate: 日期
  • FTransferDirect: 调拨方向(普通: GENERAL,退货: RETURN)
  • FQty: 调入数量
  • FPrice: 成本价
  • FAmount: 总成本

这些字段在实际请求中将作为查询条件或返回结果的一部分。

构建请求体

为了调用executeBillQuery接口,我们需要构建一个完整的请求体。以下是一个示例请求体,其中包含了必要的查询条件和分页参数:

{
  "FormId": "STK_TRANSFERIN",
  "FieldKeys": "FBillNo,FDocumentStatus,FStockOrgID.FNumber,FDate,FTransferDirect,FQty,FPrice,FAmount",
  "FilterString": "FModifyDate>='2023-01-01' and FStockOrgID.FNumber IN ('115', '101') and FDocumentStatus!='C'",
  "Limit": 100,
  "StartRow": 0,
  "TopRowCount": true
}

在这个请求体中:

  • FormId指定了业务对象表单ID。
  • FieldKeys定义了需要查询的字段集合。
  • FilterString设置了过滤条件,例如修改日期大于某个时间点、库存组织编号在特定范围内且单据状态不为已审核。
  • LimitStartRow用于分页控制。

调用接口并处理响应

通过轻易云数据集成平台,我们可以方便地发起上述请求,并获取响应数据。以下是一个示例代码片段,用于调用接口并处理响应:

import requests

url = "https://api.kingdee.com/executeBillQuery"
headers = {
    "Content-Type": "application/json"
}
payload = {
    "FormId": "STK_TRANSFERIN",
    "FieldKeys": "FBillNo,FDocumentStatus,FStockOrgID.FNumber,FDate,FTransferDirect,FQty,FPrice,FAmount",
    "FilterString": "FModifyDate>='2023-01-01' and FStockOrgID.FNumber IN ('115', '101') and FDocumentStatus!='C'",
    "Limit": 100,
    "StartRow": 0,
    "TopRowCount": True
}

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

# 数据处理逻辑
for entry in data:
    bill_no = entry.get("FBillNo")
    document_status = entry.get("FDocumentStatus")
    stock_org_id = entry.get("FStockOrgID.FNumber")
    date = entry.get("FDate")
    transfer_direct = entry.get("FTransferDirect")
    qty = entry.get("FQty")
    price = entry.get("FPrice")
    amount = entry.get("FAmount")

    # 数据加工逻辑,例如转换格式、计算总成本等

在这个代码片段中,我们使用Python的requests库发起POST请求,并解析返回的JSON数据。随后,我们可以根据业务需求对数据进行进一步加工,例如格式转换、计算总成本等。

自动填充与响应处理

轻易云数据集成平台支持自动填充响应,这意味着我们可以预先定义好需要填充的数据结构,并在接收到响应后自动映射到相应的数据模型中。这极大地简化了开发工作,提高了效率。

例如,在元数据配置中,我们可以设置autoFillResponse: true,这样平台会自动将返回的数据填充到预定义的模型中,无需手动解析每个字段。

通过以上步骤,我们实现了从金蝶云星空获取并加工数据的全过程。这不仅提高了数据集成的效率,也确保了数据的一致性和准确性。在实际应用中,可以根据具体业务需求进一步优化和扩展这些操作。 企业微信与OA系统接口开发配置

轻易云数据集成平台:ETL转换与聚水潭API接口集成

在数据集成的生命周期中,第二步是将已经从源平台(金蝶)获取的数据进行ETL转换,并转为目标平台(聚水潭API接口)所能够接收的格式,最终写入目标平台。本文将深入探讨如何利用轻易云数据集成平台配置元数据,实现这一过程。

API接口配置

我们使用的聚水潭API接口为/open/jushuitan/otherinout/upload,该接口支持POST方法,用于上传其他入库单。以下是具体的元数据配置:

{
  "api": "/open/jushuitan/otherinout/upload",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {
      "field": "excute_confirming",
      "label": "是否审核单据",
      "type": "string",
      "describe": "是否审核单据;默认false",
      "value": "false"
    },
    {
      "field": "wms_co_id",
      "label": "分仓编号",
      "type": "int",
      "describe": "分仓编号",
      "value": "{FDestStockID_FNumber}",
      "mapping": {
        "target": "6479b78d40ac5e714f39f40a",
        "direction": "reverse"
      }
    },
    {
      "field": "type",
      "label": "出入库类型",
      "type": "string",
      "describe": "出入库类型:in是入库(其它退货)out是出库(其它出库)",
      "value": "in"
    },
    {
      "field": "remark",
      "label": "备注",
      "type": "string",
      "describe": "备注,不能传空值",
      "value": "{FNOTE}"
    },
    {
      ...

数据字段映射与转换

  1. 审核单据:字段excute_confirming设置为false,表示默认不审核单据。
  2. 分仓编号:字段wms_co_id映射自金蝶系统中的FDestStockID_FNumber,并通过反向映射确保正确的仓库编号。
  3. 出入库类型:字段type固定为in,表示这是一个入库操作。
  4. 备注:字段remark从金蝶系统中的FNOTE获取,并确保不能为空值。
  5. 确认单据:字段is_confirm设置为布尔类型,默认值为false
  6. 出库类型:字段drp_co_name固定为“金蝶调拨入库”。
  7. 外部单号:字段external_id从金蝶系统中的单据编号字段(FBillNo)获取。
  8. 仓库类型:字段warehouse固定为1,表示主仓。

商品列表处理

商品列表通过数组形式传递,每个商品项包含以下字段:

  • 商品编码:字段sku_id, 映射自金蝶系统中的物料编码(FMaterialID_FNumber)。
  • 备注:字段 remark, 映射自金蝶系统中的条目备注(FEntryNote)。
  • 数量:字段 qty, 映射自金蝶系统中的数量(FQty)。
{
  ...
  {
    ...
    {
      ...
        {
          ...
          {
            ...
            {
              ...
              {
                ...
                {
                  ...
                  {
                    ...
                    {
                      ...
                      {
                        ...
                        {
                          ...
                          {
                            ...
                            {
                              ...
                              {
                                ...
                                {
                                  ...
                                  }
                                ]
                              }
                            ]
                          }
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          }
        ]

数据组计算

在数据组计算部分,我们定义了头部和体部的数据组:

  • 头部数据组

    • 单据编号(FBillNo)
    • 分仓编号(FDestStockID_FNumber)
    • 备注(FNOTE)
  • 体部数据组

    • 商品编码(FMaterialID_FNumber)
    • 数量(FQty)

体部数据组命名为 list, 并且没有额外的计算逻辑。

"groupCalculate":{
    "headerGroup":["FBillNo","FDestStockID_FNumber","FNOTE"],
    "bodyGroup":["FMaterialID_FNumber","FQty"],
    "bodyName":"list",
    "calculate":[]
}

通过上述配置,我们可以确保从金蝶系统获取的数据经过ETL转换后,符合聚水潭API接口的要求,并顺利写入目标平台。这一过程充分利用了轻易云数据集成平台的强大功能,实现了不同系统间的数据无缝对接。 用友BIP接口开发配置

更多系统对接方案