利用轻易云平台实现金蝶采购入库到吉客云的ETL转换流程

  • 轻易云集成顾问-张妍琪

金蝶采购入库对接吉客云采购入库的系统集成案例分享

在某制造企业的日常运维中,为了实现精准高效的数据流转,决定将其ERP系统——金蝶云星空与仓储管理平台吉客云进行数据对接。这个过程中采用了 executeBillQuery 接口从金蝶云星空获取采购入库数据,并通过调用 erp.stock.createandstockin API 将数据快速写入到吉客云。

确保集成不漏单

为了确保在整个数据集成交互过程中的无缝衔接,我们针对如何确保金蝶云星空的数据不漏单进行了严格设计。调研发现,executeBillQuery接口能够实时抓取最新的采购单据,但存在分页和限流问题。因此,通过优化接口调用策略,实现了可靠、定时地抓取接口数据。同时,在每次抓取后,对比前后两次记录数量及内容,以防遗漏任何一条重要信息。

大量数据快速写入吉客云

由于业务需求繁忙,每天大批量的数据需要由金蝶系统传输至吉客云。在这一环节,我们重点关注的是如何高效地处理和写入这些大量数据。我们选择并行化处理方式,将不同时间段或批次的数据分模块执行,实现真正意义上的快速、稳定录入。此外,还针对可能出现的大规模请求超时现象制定了自动重试机制,以确保所有数据均能准确进入目的数据库。

处理分页与限流问题

面对executeBillQuery接口返回结果中的分页限制问题,我们采取了一系列优化措施。例如,通过设置合理且动态调整的分页参数,保障每个请求都能最大效率获取所需信息。同时,对于API访问频度有限制的问题,则采用智能排队机制,根据实际情况控制并发访问次数,从而避免因过多请求而导致服务中断或失败。

本技术方案不仅解决了两个独立系统之间复杂的数据交互难题,也为未来扩展其他功能奠定坚实基础。在下文将详细描述具体配置步骤及核心代码实现逻辑,帮助同类场景中思考类似解决方案提供参考。 钉钉与WMS系统接口开发配置

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

在数据集成过程中,调用源系统的API接口是关键的一步。本文将深入探讨如何使用轻易云数据集成平台,通过调用金蝶云星空的executeBillQuery接口,获取采购入库单据并进行初步的数据加工。

接口调用配置

首先,我们需要配置API调用的元数据。根据提供的元数据配置,我们可以看到需要通过POST方法来调用executeBillQuery接口,并且需要传递多个参数以获取所需的数据。

{
  "api": "executeBillQuery",
  "method": "POST",
  "number": "FBillNo",
  "id": "FInStockEntry_FEntryId",
  "pagination": {
    "pageSize": 1000
  },
  "idCheck": true,
  "request": [
    {"field":"FInStockEntry_FEntryId","label":"id","type":"string","value":"FInStockEntry_FEntryId"},
    {"field":"FID","label":"实体主键","type":"string","value":"FID"},
    {"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"},
    {"field":"FDocumentStatus","label":"单据状态","type":"string","value":"FDocumentStatus"},
    {"field":"FStockOrgId_FNumber","label":"收料组织","type":"string","value":"FStockOrgId.FNumber"},
    {"field":"FDate","label":"入库日期","type":"string","value":"FDate"},
    {"field":"FBillTypeID_FNumber","label":"单据类型","type":"string","value":"FBillTypeID.FNumber"},
    {"field":"FOwnerTypeIdHead","label":"货主类型","type":"string","value":"FOwnerTypeIdHead"},
    {"field":"FOwnerIdHead_FNumber","label":"货主","type":"string","value":"FOwnerIdHead.FNumber"},
    {"field":"FDemandOrgId_FNumber","label":"需求组织","type":"string","value":"FDemandOrgId.FNumber"},
    {"field":"FPurchaseOrgId_FNumber","label":"采购组织","type":"string","value":"FPurchaseOrgId.FNumber"},
    {"field":...}
  ],
  "otherRequest": [
    {"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "2000"},
    {"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数"},
    {"field":...}
  ]
}

请求参数解析

在请求参数中,我们需要特别关注以下几个字段:

  • FormId: 必须填写金蝶的表单ID,例如STK_InStock
  • FilterString: 用于过滤条件,例如按供应商编号和入库日期进行过滤。
  • FieldKeys: 指定需要查询的字段集合。

示例请求体如下:

{
  "FormId": "STK_InStock",
  "FieldKeys": [
    ...
  ],
  "FilterString": "{{LAST_SYNC_TIME|dateTime}} and FStockId.FNumber='01DS' and FSupplierId.FNumber = '20001080'",
  ...
}

数据清洗与转换

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

  1. 字段映射:将原始字段映射到目标系统所需的字段。例如,将FBillNo映射为目标系统中的order_number
  2. 数据格式转换:例如,将日期格式从字符串转换为标准日期格式。
  3. 数据过滤:去除不符合业务规则的数据,例如状态为“作废”的单据。

示例代码:

def clean_data(raw_data):
    cleaned_data = []

    for entry in raw_data:
        if entry['FDocumentStatus'] != '作废':
            cleaned_entry = {
                'order_number': entry['FBillNo'],
                'entry_id': entry['FInStockEntry_FEntryId'],
                'stock_org': entry['FStockOrgId_FNumber'],
                'entry_date': parse_date(entry['FDate']),
                ...
            }
            cleaned_data.append(cleaned_entry)

    return cleaned_data

def parse_date(date_str):
    return datetime.strptime(date_str, '%Y-%m-%d')

数据写入

完成数据清洗和转换后,将处理后的数据写入目标系统。在此过程中,可以使用轻易云平台提供的数据写入功能,实现与吉客云采购入库模块的无缝对接。

示例代码:

def write_to_target_system(cleaned_data):
    for data in cleaned_data:
        response = target_system_api.write(data)
        if response.status_code != 200:
            log_error(response)

write_to_target_system(cleaned_data)

通过上述步骤,我们实现了从金蝶云星空获取采购入库单据,并对其进行初步加工处理,为后续的数据集成奠定了基础。 系统集成平台API接口配置

使用轻易云数据集成平台进行金蝶采购入库对接吉客云采购入库的ETL转换

在数据集成过程中,ETL(Extract, Transform, Load)是关键步骤之一。本文将深入探讨如何使用轻易云数据集成平台,将金蝶采购入库数据转换为吉客云API接口所能接收的格式,并最终写入目标平台。

数据请求与清洗

首先,我们需要从金蝶系统中提取相关的采购入库数据。此步骤涉及到调用金蝶系统的API接口,并获取原始数据。这些数据通常包括单据编号、物料编码、数量、批次信息等。

数据转换与写入

接下来,我们进入生命周期的第二步:数据转换与写入。我们需要将已经提取并清洗过的数据,按照吉客云API接口要求进行格式转换。以下是具体操作步骤和技术细节。

配置元数据

根据提供的元数据配置,我们需要将金蝶系统的数据字段映射到吉客云API所需的字段。以下是元数据配置中的关键字段及其对应关系:

  • FBillNo 对应 relDataId(关联单据编号)
  • FStockId_FNumber 对应 inWarehouseCode(仓库编码)
  • FDate 对应 applyDate(申请时间)
  • details.FMaterialId_FNumber 对应 stockInDetailViews.skuBarcode(货品编号)
  • details.FRemainInStockQty 对应 stockInDetailViews.skuCount(入库数量)
API接口调用

吉客云API接口配置如下:

{
  "api": "erp.stock.createandstockin",
  "method": "POST",
  "idCheck": true,
  "operation": {
    "method": "merge",
    "field": "FBillNo",
    "bodyName": "details",
    "bodySum": ["FRemainInStockQty"],
    "header": ["FID", "FBillNo", "FDocumentStatus", "FStockId_FNumber", "FDate"],
    "body": ["FMaterialId_FNumber", "FRemainInStockQty", "FLot_FNumber", "FProduceDate", "FExpiryDate", "FMaterialId_FExpPeriod"]
  }
}
请求参数构建

根据上述元数据配置和API要求,我们需要构建请求参数。以下是一个示例请求参数:

{
  "vendCode": "",
  "applyDepartCode": "",
  "applyCompanyCode": "",
  "inWarehouseCode": "{FStockId_FNumber}",
  "inType": "101",
  "relDataId": "{FBillNo}",
  ...
  // 省略其他固定值字段
  ...
  "stockInDetailViews": [
    {
      "skuBarcode": "{{details.FMaterialId_FNumber}}",
      ...
      // 批号明细
      ...
      {
        ...
        // 批号信息
        ...
      }
    }
  ]
}
批号明细处理

在处理批号明细时,需要特别注意以下字段:

  • FLot_FNumber 对应 batchList.batchNo(批号)
  • FProduceDate 对应 batchList.productionDate(生产日期)
  • FExpiryDate 对应 batchList.expirationDate(到期日期)

例如:

"batchList": [
  {
    ...
    // 批号信息
    ...
    {
      ...
      // 保质期和单位处理
      ...
      {
        ...
        // 保质期单位查找
        ...
      }
    }
  }
]
数据提交

最后,将构建好的请求参数通过POST方法提交到吉客云的API接口:

POST /erp.stock.createandstockin HTTP/1.1
Host: api.jikekyun.com
Content-Type: application/json
Authorization: Bearer <token>

{
   ... // 请求参数JSON对象
}

实时监控与日志记录

在整个ETL过程中,轻易云平台提供了实时监控和日志记录功能,可以帮助我们跟踪每一步操作的状态和结果。如果出现错误或异常,可以通过日志快速定位问题并进行修复。

通过以上步骤,我们成功地将金蝶采购入库的数据转换为吉客云API所能接收的格式,并顺利完成了数据写入。这不仅实现了两个异构系统之间的数据无缝对接,还极大提升了业务流程的自动化程度和效率。 用友BIP接口开发配置

更多系统对接方案