使用轻易云数据集成平台写入金蝶云星空费用应付单

  • 轻易云集成顾问-彭亮

案例分享:金蝶云星空费用应付单数据集成方案

在企业财务管理中,费用应付单是一个常见且关键的业务流程,而将其高效集成到ERP系统如金蝶云星空,更能显著提升财务处理的准确性与时效性。本篇技术案例将详细探讨如何利用轻易云数据集成平台,将原始数据从金蝶云星空获取并通过batchSave API接口写入至另一实例,实现全程自动化和无缝对接。

此次实施的具体方案“费用应付单-费用应付单 OK”主要包括以下几个关键步骤:

  1. 调用executeBillQuery API获取源数据: 首先,通过定时任务可靠地抓取原始账户中的费用应付单数据。executeBillQuery API支持分页查询,可以有效解决大量数据流动过程中可能产生的性能瓶颈问题。为确保不漏单,每次查询后需要记录上一次请求的时间戳,以便下次能够递增拉取新增或更新的数据。

  2. 自定义转换逻辑适配目标系统: 由于两个实例间可能存在的数据格式差异,需要通过自定义转换逻辑,对获取到的数据进行清洗、标准化处理。这一步骤尤其重要,因为它确保了输入到目标系统的数据格式统一且符合预期。

  3. 高吞吐量批量写入: 在完成上述步骤后,使用batchSave API实现批量写入操作。为了提高效率,我们采用了分段提交策略,即将大体量的数据拆分为若干小块进行并行处理,从而实现高吞吐量的数据快速导入。此外,通过API实时监控和告警机制,我们可以及时捕捉并处理任何潜在的问题,如错误重试机制则进一步保证了任务执行过程中的稳健性。

  4. 实时监控和异常检测: 集成过程中不可避免会出现各种意外情况,因此我们配置了一套完善的集中式监控与日志记录系统,它不仅能跟踪每个API调用的状态,还具备强大的异常检测能力。例如,当某一条记录在多次尝试后仍然失败,系统会自动发出告警通知,并按预设规则进行人工审核或重新投放。

以上四步以尽可能少的人力干预,实现了费用应付单从一个金蝶云星空实例平滑迁移至另一个实例,不仅提升了工作效率,同时也 greatly reduced data discrepancies and manual errors.

关于此项目更详细的信息以及完整实施过程将在随后章节展开,包括所有涉及到的方法调用、参数设置及调优策略等内容。 电商OMS与WMS系统接口开发配置

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

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

接口调用配置

首先,我们需要配置调用金蝶云星空接口的元数据。以下是一个典型的元数据配置示例:

{
  "api": "executeBillQuery",
  "method": "POST",
  "number": "FBillNo",
  "id": "FEntityDetail_FEntryID",
  "pagination": {
    "pageSize": 500
  },
  "idCheck": true,
  "request": [
    {"field":"FID","label":"实体主键","type":"String","describe":"实体主键","value":"FID"},
    {"field":"FEntityDetail_FEntryID","label":"实体主键","type":"String","describe":"实体主键","value":"FEntityDetail_FEntryID"},
    {"field":"FBillNo","label":"单据编号","type":"String","describe":"单据编号","value":"FBillNo"},
    {"field":"FDOCUMENTSTATUS","label":"单据状态","type":"String","describe":"单据状态","value":"FDOCUMENTSTATUS"},
    {"field":"FRelateHadPayAmount","label":"表头基本 - 付(退)款单的关联金额","type":"String","describe":"表头基本 - 付(退)款单的关联金额","value":"FRelateHadPayAmount"},
    {"field":"FDATE","label":"业务日期","type":"String","describe":"业务日期","value":"FDATE"},
    {"field":"FSETTLEORGID.fnumber","label":"结算组织编号","type":"String","describe":"结算组织编号","value":"FSETTLEORGID.fnumber"},
    {"field":"FCURRENCYID.fnumber","label":"币别编号","type":"String","describe":"币别编号","value":"FCURRENCYID.fnumber"}
  ],
  "otherRequest": [
    {"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"},
    {"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"},
    {"field": "FilterString", "label": "过滤条件", "type": "string", 
        "describe": 
        "示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=",
        "value":
        "FApproveDate>='{{LAST_SYNC_TIME|date}}' and FBillTypeID.FNumber = 'YFD02_SYS'"
    },
    {"field": 
        "FieldKeys",
        "label":
        "需查询的字段key集合",
        "type":
        "array",
        "describe":
        "金蝶分录主键ID格式:FPOOrderEntry_FEntryId,其它格式 FPurchaseOrgId.FNumber",
        "parser":
        {"name":
            "ArrayToString",
            "params":
            ","
        }
    },
    {"field":
        "FormId",
        "label":
        "业务对象表单Id",
        "type":
        "string",
        "describe":
        "必须填写金蝶的表单ID如:PUR_PurchaseOrder",
        "value":
        "AP_Payable"
    }
  ]
}

数据请求与清洗

在配置好元数据后,我们需要通过轻易云平台发送HTTP POST请求到金蝶云星空接口executeBillQuery,以获取费用应付单的数据。请求体中包含了我们需要查询的字段和过滤条件。

例如,我们可以通过以下代码片段来发送请求:

import requests

url = 'https://api.kingdee.com/executeBillQuery'
headers = {'Content-Type': 'application/json'}
payload = {
    'FormId': 'AP_Payable',
    'FieldKeys': 'FID,FEntityDetail_FEntryID,FBillNo,FDOCUMENTSTATUS,FRelateHadPayAmount,FDATE,FSETTLEORGID.fnumber,FCURRENCYID.fnumber',
    'FilterString': f'FApproveDate>="{last_sync_time}" and FBillTypeID.FNumber = \'YFD02_SYS\'',
    'Limit': pagination_page_size,
    'StartRow': pagination_start_row
}

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

在获取到数据后,需要对其进行清洗和转换,以便后续处理。例如,将日期字段转换为标准格式,或者将金额字段转换为浮点数。

数据转换与写入

清洗后的数据需要进行进一步转换,以符合目标系统的数据结构和要求。以下是一个简单的数据转换示例:

def transform_data(data):
    transformed_data = []

    for record in data:
        transformed_record = {
            'bill_no': record['FBillNo'],
            'document_status': record['FDOCUMENTSTATUS'],
            'relate_had_pay_amount': float(record['FRelateHadPayAmount']),
            'date': record['FDATE'],
            'settle_org_id': record['FSETTLEORGID.fnumber'],
            'currency_id': record['FCURRENCYID.fnumber']
        }
        transformed_data.append(transformed_record)

    return transformed_data

transformed_data = transform_data(data)

最后,将转换后的数据写入目标系统。这一步通常涉及到调用目标系统的API接口或数据库操作。

def write_to_target_system(transformed_data):
    target_url = 'https://target-system-api.com/data'

    for record in transformed_data:
        response = requests.post(target_url, json=record)
        if response.status_code != 200:
            print(f'Failed to write record: {record["bill_no"]}')

write_to_target_system(transformed_data)

通过上述步骤,我们实现了从金蝶云星空获取费用应付单数据,并将其清洗、转换后写入目标系统。这一过程不仅提高了数据处理效率,还确保了数据的一致性和准确性。 轻易云数据集成平台金蝶集成接口配置

使用轻易云数据集成平台将费用应付单数据转换并写入金蝶云星空API接口

在数据集成的生命周期中,将源平台的数据进行ETL转换,并最终写入目标平台是至关重要的一步。本文将详细探讨如何使用轻易云数据集成平台,将费用应付单数据转换为金蝶云星空API接口所能接收的格式,并成功写入目标平台。

配置元数据

首先,我们需要配置元数据,以确保能够正确地将源数据映射到目标系统的字段。以下是元数据配置示例:

{
  "api": "batchSave",
  "method": "POST",
  "idCheck": true,
  "operation": {
    "method": "merge",
    "field": "FBillTypeID,FBillNo,FDATE,FPAYORGID,FSETTLEORGID,FSUPPLIERID,FSetAccountType,FCURRENCYID",
    "bodyName": "details",
    "bodySum": [],
    "header": ["FBillTypeID", "FBillNo", "FDATE", "FPAYORGID", "FSETTLEORGID", "FSUPPLIERID", "FSetAccountType", "FCURRENCYID"],
    "body": ["FCOSTID", "FEntryTaxRate", "FNoTaxAmountFor_D", "FPriceBaseDen", "FStockBaseNum", "FEntryTaxRate"]
  },
  ...
}

请求参数解析与映射

在请求参数部分,我们需要确保每个字段都能正确解析和映射到金蝶云星空的API接口字段。例如,FBillTypeIDFSUPPLIERID等字段需要通过特定的解析器(如ConvertObjectParser)进行转换:

{
  ...
  {
    "label": "单据类型",
    "field": "FBillTypeID",
    "type": "string",
    "value": "YFD02_SYS",
    ...
  },
  {
    ...
    {
      "label": "供应商",
      ...
      {
        ...
        {"name":"ConvertObjectParser","params":"FName"}
      }
      ...
    }
  },
  ...
}

数据清洗与转换

在这个阶段,我们需要对源数据进行清洗和转换,以确保其符合目标系统的要求。具体来说,需要对每个字段进行必要的格式转换。例如,日期格式、货币单位等需要根据金蝶云星空的要求进行调整。

构建请求体

接下来,根据配置好的元数据,构建请求体。以下是一个示例请求体:

{
  ...
  {
    ...
    {
      ...
      {"field":"FormId","value":"AP_Payable"},
      {"field":"Operation","value":"BatchSave"},
      {"field":"IsVerifyBaseDataField","value":"false"},
      {"field":"IsAutoSubmitAndAudit","value":"true"}
      ...
    }
  }
}

调用API接口

最后,通过HTTP POST方法调用金蝶云星空的batchSave API接口,将构建好的请求体发送至目标系统:

{
  ...
  {
    ... 
    {"method":"POST"},
    {"url":"https://api.kingdee.com/k3cloud/api/batchSave"},
    {"headers":{"Content-Type":"application/json"}},
    {"body":{"..."}}
   }
}

实时监控与日志记录

在整个过程中,实时监控和日志记录是确保数据准确性和及时发现问题的重要手段。轻易云平台提供了全透明可视化的操作界面,可以实时监控数据流动和处理状态,极大提升业务透明度和效率。

通过上述步骤,我们成功地将费用应付单的数据从源平台转换并写入到金蝶云星空API接口,实现了不同系统间的数据无缝对接。这不仅提高了业务效率,还确保了数据的一致性和准确性。 企业微信与OA系统接口开发配置

更多系统对接方案