优化数据流转:金蝶云星空与领星ERP的集成实践

  • 轻易云集成顾问-曾平安

金蝶云星空--直接调拨单=>领星--添加入库单:系统对接集成案例分享

在实际的企业应用环境中,数据的高效流转和准确处理至关重要。本文将详细分享一个具体的系统对接集成案例,即如何通过轻易云数据集成平台实现金蝶云星空的数据无缝转移至领星ERP系统。该场景涉及从金蝶云星空获取直接调拨单并转换为领星ERP中的入库单操作。

系统架构与API接口简介

首先,简要了解本次案例所涉及到的关键API:

  1. 金蝶云星空:提供了executeBillQuery API用于获取直接调拨单。
  2. 领星ERP:使用/erp/sc/routing/storage/storage/orderAdd API来完成入库单的添加。

为了确保数据在这两个系统之间顺畅传递且不丢失,我们需要关注以下几个技术要点:

  • 高吞吐量的数据写入能力: 确保大量来自金蝶云星空的数据可以迅速被写入到领星ERP。这不仅提升了业务流程的时效性,还减少了等待时间,提高整体效率。

  • 分页和限流管理: 针对金蝶云星空API可能存在分页和限流的问题,需要设计合理的请求策略,以便在抓取大批量数据时避免超出接口限制,从而稳定地获得完整数据集。

  • 自定义数据转换逻辑: 因为两个系统间的数据格式可能不同,而业务需求又要求精确匹配,所以我们必须配置自定义的数据映射规则,实现自动化、精准化的数据转换过程,使得从源头提取的信息能够正确存储于目标系统中。

  • 实时监控与告警机制: 借助集中式监控功能,对整个数据集成任务进行实时跟踪,包括处理状态及性能指标。当出现异常情况,如网络故障或接口响应失败时,能立即触发告警,并采取相应措施予以解决,保证任务连续性与稳定性。

数据质量保障

另一个关键环节是确保每一笔交易都能准确无误地传输并记录。这包括多个维度:

  1. 实现定时可靠抓取机制,每隔一定时间段自动调用executeBillQuery接口以更新最新纪录。
  2. 应用错误重试机制,当某条记录因短暂问题未成功存储到目标数据库中时,可重新尝试直至成功。
  3. 自定义异常处理方式,在识别特定类型错误后,根据预设规则作出适当调整或人工干预建议,以最大程度降低风险影响。

这些 金蝶与MES系统接口开发配置

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

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

接口概述

金蝶云星空的executeBillQuery接口用于查询业务单据信息。该接口支持POST请求,能够根据指定条件返回符合要求的数据记录。以下是元数据配置中的关键字段及其描述:

  • api: executeBillQuery
  • method: POST
  • number: FBillNo
  • id: FBillEntry_FEntryID
  • idCheck: true

请求参数配置

请求参数主要分为两部分:基础请求参数和其他请求参数。

基础请求参数

这些参数直接对应于金蝶云星空中的字段:

[
  {"field":"FBillEntry_FEntryID","label":"FEntryID","type":"string","describe":"FEntryID","value":"FBillEntry_FEntryID"},
  {"field":"FID","label":"实体主键","type":"string","describe":"实体主键","value":"FID"},
  {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"FBillNo"},
  {"field":"FDocumentStatus","label":"单据状态","type":"string","describe":"单据状态","value":"FDocumentStatus"},
  {"field":"FStockOrgId_FNumber","label":"调入库存组织","type":"string","describe":"调入库存组织","value":"FStockOrgId.FNumber"},
  {"field":"FDate","label":"日期","type":"string","describe":"日期","value":"FDate"},
  // 更多字段...
]

这些字段涵盖了单据的基本信息、状态、组织信息、日期等,确保了查询结果的全面性。

其他请求参数

这些参数用于控制查询行为,如分页、过滤条件等:

[
  {"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "500"},
  {"field": "FieldKeys", "label": "需查询的字段key集合", "type": "array", "describe": "金蝶分录主键ID格式:FPOOrderEntry_FEntryId,其它格式 FPurchaseOrgId.FNumber", "parser":{"name": "ArrayToString", "params": ","}},
  {"field": "TopRowCount", "label": "返回总行数", "type": "int", "describe": "金蝶的查询分页参数"},
  {"field": "FilterString", "label": "过滤条件", "type": "string", "describe": "示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=", 
    "value": 
        "FApproveDate>='{{LAST_SYNC_TIME|dateTime}}' and FSrcStockId.FNumber='0104' and FDestStockId.FNumber='0115' and FDate>='{{DAYS_AGO_s10|datetime}}'"
    },
  {"field": "FormId", 
    "label": 
        "业务对象表单Id",
    "type":
        "string",
    "describe":
        "必须填写金蝶的表单ID如:PUR_PurchaseOrder",
    "value":
        "STK_TransferDirect"
    },
  {"field":
        "StartRow",
    "label":
        "开始行索引",
    "type":
        "string",
    "describe":
        "金蝶的查询分页参数"
    }
]

这些参数确保了查询结果能够满足特定业务需求,并且可以通过分页和过滤条件来优化性能。

调用示例

以下是一个调用executeBillQuery接口的示例代码:

{
    "apiName": "/k3cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery.common.kdsvc",
    "methodName": "",
    // 请求体
    {
        ...
        // 基础请求参数
        {
            ...
            // 示例字段
            {
                ...
                // 更多字段...
            }
        },
        // 其他请求参数
        {
            ...
            // 示例字段
            {
                ...
                // 更多字段...
            }
        }
    }
}

在实际操作中,需要根据具体业务需求调整请求体中的各个字段值。

数据处理与清洗

获取到数据后,需要对其进行处理与清洗,以便后续的数据转换与写入。常见的数据处理操作包括:

  1. 数据格式转换:将日期、数字等字段转换为目标系统所需格式。
  2. 数据过滤:剔除不符合业务规则的数据记录。
  3. 数据合并:将多个相关表的数据合并为一张综合表。

例如,可以使用以下代码进行简单的数据清洗:

import pandas as pd

# 假设data是从接口获取到的数据
data = pd.DataFrame(api_response)

# 转换日期格式
data['FDate'] = pd.to_datetime(data['FDate'])

# 过滤无效记录
filtered_data = data[data['FDocumentStatus'] == 'C']

# 合并相关表(假设有两个表需要合并)
merged_data = pd.merge(filtered_data, other_table, on='FID')

通过上述步骤,可以确保数据在进入下一阶段之前已经过充分处理,满足目标系统的要求。

总结

调用金蝶云星空接口executeBillQuery获取并加工数据是轻易云数据集成平台生命周期中的关键步骤之一。通过合理配置请求参数,并对返回的数据进行有效处理与清洗,可以确保数据集成过程顺利进行,为后续的数据转换与写入打下坚实基础。 泛微OA与ERP系统接口开发配置

使用轻易云数据集成平台将金蝶云星空的直接调拨单转换并写入领星ERP

在数据集成生命周期的第二步中,我们需要将源平台的数据进行ETL(提取、转换、加载)处理,以符合目标平台的API接口要求。本文将详细探讨如何通过轻易云数据集成平台,将金蝶云星空的直接调拨单数据转换为领星ERP API接口所能接收的格式,并最终写入目标平台。

API接口元数据配置解析

根据提供的元数据配置,目标平台为领星ERP,API路径为/erp/sc/routing/storage/storage/orderAdd,请求方法为POST。以下是对元数据配置的详细解析:

  • 基本信息

    • api: /erp/sc/routing/storage/storage/orderAdd
    • method: POST
    • effect: EXECUTE
    • idCheck: true
  • 操作定义

    • operation:
      {
      "method": "merge",
      "field": "FBillNo",
      "bodyName": "details",
      "header": ["FBillNo"],
      "body": ["FModel", "FQty", "FTaxPrice"]
      }
  • 请求字段

    • request:
      [
      {"field":"sys_wid","label":"系统仓库","type":"string","describe":"系统仓库","value":"14169"},
      {"field":"sys_supplier_id","label":"系统供应商id","type":"string","value":"12755"},
      {"field":"type","label":"状态","type":"string","describe":"状态","value":"1"},
      {
      "field":"product_list",
      "label":"product_list",
      "type":"array",
      "describe":"product_list",
      "value":"details",
      "children":[
        {"field":"sku","label":"sku","type":"string","describe":"sku","value":"{{details.FMaterialId_FSpecification}}"},
        {"field":"good_num","label":"良品数量","type":"string","describe":"良品数量","value":"{{details.FQty}}"},
        {"field":"bad_num","label":"次品数量","type":"string","describe":"次品数量"},
        {"field":"price","label":"单价","type":"string","describe":"单价","value":"{{details.FTaxPrice}}"}
      ]
      },
      {"field":"remark","label":"备注","type":"string","describe":"","value": "{FBillNo}"}
      ]

数据转换与写入过程

  1. 提取源数据: 从金蝶云星空提取直接调拨单的数据,包括单据编号(FBillNo)、物料规格(FMaterialId_FSpecification)、数量(FQty)和含税价格(FTaxPrice)。

  2. 数据清洗与转换: 根据元数据配置,将提取到的数据进行清洗和转换。例如,将物料规格(FMaterialId_FSpecification)映射为领星ERP所需的SKU字段,将数量(FQty)映射为良品数量等。

  3. 构建请求体: 根据API接口要求,构建POST请求体。示例如下:

    {
     "sys_wid": "14169",
     "sys_supplier_id": "12755",
     "type": "1",
     "product_list": [
       {
         "sku": "<mapped FMaterialId_FSpecification>",
         "good_num": "<mapped FQty>",
         "bad_num": "",
         "price": "<mapped FTaxPrice>"
       }
     ],
     "remark": "<FBillNo>"
    }
  4. 发送请求并写入目标平台: 使用轻易云平台的API调用功能,将构建好的请求体发送到领星ERP的/erp/sc/routing/storage/storage/orderAdd接口。

实际案例应用

假设我们从金蝶云星空提取到如下数据:

{
  "FBillNo": "DB20231001",
  "details": [
    {
      "FMaterialId_FSpecification": "MAT001-001",
      "FQty": 100,
      "FTaxPrice": 50.0
    }
  ]
}

经过ETL处理后,构建的请求体如下:


{
  "sys_wid": "14169",
  "sys_supplier_id": "12755",
  "type":
![金蝶与外部系统打通接口](https://pic.qeasy.cloud/T11.png~tplv-syqr462i7n-qeasy.image)
更多系统对接方案