使用轻易云平台实现金蝶云星空API的数据转换与写入

  • 轻易云集成顾问-姚缘

金蝶云星空数据集成技术案例:收款单-新20231120_腾晖

在我们这次的系统对接项目中,目标是实现金蝶云星空与金蝶云星空之间的无缝数据集成。具体方案为“收款单-新20231120_腾晖”。该方案重点解决大量业务数据快速写入、接口调用与处理以及监控和异常处理等问题。

首先,为了高效获取和写入数据,利用executeBillQuery API从源系统检索收款单据的数据,并通过batchSave API将其存储到目标系统。这一过程要求我们必须考虑以下几个核心技术点:

高吞吐量的数据写入

为了确保大量数据能够迅速且准确地存储在目标金蝶云星空系统中,我们采用了批量处理机制。这个机制利用batchSave API支持一次性传递多条记录,大幅提高了吞吐效率。同时,通过定制化的数据映射逻辑,有效处理了两套系统间的数据格式差异。

接口调用优化

针对executeBillQuery接口进行分页处理,以应对潜在的大规模数据量,同时避免触发限流机制。在实践过程中,为每个请求设置合理的分页参数,这不仅提高了响应速度,还确保所有必要的数据都被成功抓取。

数据质量监控与异常检测

实时监控任务执行状态,以及相应的告警反馈,是保障集成流程顺畅的重要环节之一。集中式的监控平台,不仅能实时捕获各类操作日志,还能及时识别并报告数据异常情况,从而使运维人员可以迅速做出反应。

错误重试机制

由于网络波动或服务不可用等原因导致API调用失败时,需设立有效的错误重试策略。对此,我们设计了一套完善的错误重试和回滚机制,能够按预先设定好的规则来重新尝试无法完成的操作。同时,将相关信息详细记录到日志文件中,以供后续分析查证。

通过这些关键措施,“收款单-新20231120_腾晖”方案成功完成,实现了两个独立金蝶云星空实例间高效、可靠的数据交换。这不仅提升了业务透明度,也大大简化了日常维护工作。在下文里,我们将进一步探讨具体实施细节及其效果评估。

打通企业微信数据接口

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

在数据集成的生命周期中,第一步是从源系统获取数据,并进行初步的清洗和加工。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery接口来实现这一过程。

接口配置与调用

首先,我们需要配置并调用金蝶云星空的executeBillQuery接口。以下是元数据配置中的关键参数:

  • API: executeBillQuery
  • Method: POST
  • FormId: AR_RECEIVEBILL
  • FieldKeys: 需查询的字段key集合
  • FilterString: 过滤条件
  • Pagination: 分页参数

请求参数配置

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

{
  "FormId": "AR_RECEIVEBILL",
  "FieldKeys": "FID,FBillNo,FDOCUMENTSTATUS,FCreatorId,FAPPROVERID,FCreateDate,FSETTLEORGID.FNumber,FApproveDate,FSALEORGID.FNumber,FEXCHANGETYPE,FRECEIVEAMOUNTFOR_H,FMAINBOOKCURID,FRECEIVEAMOUNT_H,FCURRENCYID.FNumber,FDATE,FModifyDate,FModifierId,FEXCHANGERATE,FWRITTENOFFSTATUS,FSALEERID.FNumber,FSALEGROUPID.FNumber,FSALEDEPTID.FNumber,FBillTypeID.FNumber,FREALRECAMOUNTFOR,FREALRECAMOUNT_H,FACCOUNTSYSTEM,FCancelDate,FCancelStatus,FCancellerId,FCONTACTUNITTYPE,FCONTACTUNIT.FNumber,FPAYUNITTYPE,FPAYUNIT.FNumber,FBUSINESSTYPE,FCreditCheckResult,FISINIT",
  "FilterString": "FDATE ='2024-09-26 00:00:00' and FCONTACTUNIT.FNumber = 'PDD15'",
  "Limit": 2000,
  "StartRow": 0,
  "TopRowCount": true
}

数据请求与清洗

通过上述请求参数,我们可以向金蝶云星空发送POST请求以获取所需的数据。接收到响应后,需要对数据进行初步清洗和处理。

  1. 数据校验:检查返回的数据是否符合预期格式,确保每个字段都有正确的值。
  2. 数据转换:根据业务需求,对某些字段进行转换。例如,将日期字符串转换为标准日期格式。
  3. 去重处理:如果返回的数据中存在重复记录,需要进行去重处理。

以下是一个简单的数据清洗示例:

import json
import requests

# 定义请求头和URL
headers = {'Content-Type': 'application/json'}
url = 'https://api.kingdee.com/executeBillQuery'

# 构建请求体
payload = {
    "FormId": "AR_RECEIVEBILL",
    "FieldKeys": ",".join([
        "FID", "FBillNo", "FDOCUMENTSTATUS", "FCreatorId", 
        # ...其他字段...
        ]),
    "FilterString": "FDATE ='2024-09-26 00:00:00' and FCONTACTUNIT.FNumber = 'PDD15'",
    "Limit": 2000,
    "StartRow": 0,
    "TopRowCount": True
}

# 发起POST请求
response = requests.post(url, headers=headers, data=json.dumps(payload))

# 检查响应状态码
if response.status_code == 200:
    data = response.json()

    # 数据校验和清洗
    cleaned_data = []
    for record in data:
        if record['FDOCUMENTSTATUS'] == 'A':
            cleaned_record = {
                '单据编号': record['FBillNo'],
                '创建日期': record['FCreateDate'],
                # ...其他字段...
            }
            cleaned_data.append(cleaned_record)

    # 去重处理(假设单据编号唯一)
    unique_data = {record['单据编号']: record for record in cleaned_data}.values()

else:
    print(f"Error fetching data: {response.status_code}")

数据转换与写入

在完成数据清洗后,下一步是将数据转换为目标系统所需的格式,并写入目标系统。这一步通常包括以下操作:

  1. 字段映射:将源系统的字段映射到目标系统的字段。
  2. 格式转换:根据目标系统的要求,对数据格式进行调整。
  3. 批量写入:将处理后的数据批量写入目标系统,以提高效率。

例如,将清洗后的收款单数据写入ERP系统,可以使用类似如下代码:

def write_to_erp(cleaned_data):
    erp_url = 'https://api.erp.com/writeData'
    headers = {'Content-Type': 'application/json'}

    for record in cleaned_data:
        payload = {
            'bill_no': record['单据编号'],
            'create_date': record['创建日期'],
            # ...其他字段映射...
        }

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

        if response.status_code != 200:
            print(f"Error writing data for bill_no {record['单据编号']}: {response.status_code}")

# 调用写入函数
write_to_erp(unique_data)

通过以上步骤,我们实现了从金蝶云星空获取收款单数据,并进行初步清洗、转换和写入目标系统的全过程。这一过程不仅确保了数据的一致性和准确性,还极大提升了业务流程的自动化程度。 钉钉与WMS系统接口开发配置

使用轻易云数据集成平台实现金蝶云星空API接口的数据转换与写入

在数据集成生命周期的第二步,我们将已经集成的源平台数据进行ETL转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。以下是详细的技术实施过程。

1. 配置元数据

首先,我们需要根据金蝶云星空API接口的要求,配置相应的元数据。以下是我们使用的元数据配置:

{
  "api": "batchSave",
  "method": "POST",
  "idCheck": true,
  "operation": {
    "method": "merge",
    "field": "FBillTypeID,FBillNo,FDATE,FPAYORGI",
    "bodyName": "details",
    "header": ["FBillNo", "FSETTLEORGID", "FDATE", "FCURRENCYID", "FBillTypeID", "FCONTACTUNITTYPE", "FCONTACTUNIT", "FPAYUNITTYPE", "FPAYUNIT", "FBUSINESSTYPE", "FPAYORGID", "FSETTLECUR"],
    "body": ["FSETTLETYPEID", "FRECTOTALAMOUNTFOR", "FACCOUNTID", "FPURPOSEID", "FRECEIVEITEMTYPE", "FSALEORDERNO"]
  },
  ...
}

2. 数据请求与清洗

在进行ETL转换之前,我们首先需要从源系统请求数据并进行清洗。这一步骤确保我们获取的数据是准确且符合目标系统要求的。

3. 数据转换

接下来,我们根据金蝶云星空API接口的要求,对数据进行转换。以下是具体字段的转换规则:

  • 单据编号(FBillNo): 从源系统直接获取 {FBillNo}
  • 结算组织(FSETTLEORGID): 使用 ConvertObjectParser 转换为金蝶云星空所需格式。
  • 汇率类型(FEXCHANGETYPE): 固定值 HLTX01_SYS
  • 币别(FCURRENCYID): 固定值 PRE001
  • 业务日期(FDATE): 从源系统直接获取 {FDATE}
  • 单据类型(FBillTypeID): 固定值 SKDLX01_SYS,并使用 ConvertObjectParser 转换。
  • 往来单位类型(FCONTACTUNITTYPE): 从源系统直接获取 {FCONTACTUNITTYPE}
  • 往来单位(FCONTACTUNIT): 使用 ConvertObjectParser 转换为金蝶云星空所需格式。
  • 付款单位类型(FPAYUNITTYPE): 从源系统直接获取 {FPAYUNITTYPE}
  • 付款单位(FPAYUNIT): 使用 ConvertObjectParser 转换为金蝶云星空所需格式。
  • 业务类型(FBUSINESSTYPE): 从源系统直接获取 {FBUSINESSTYPE}
  • 收款组织(FPAYORGID): 使用 ConvertObjectParser 转换为金蝶云星空所需格式。
  • 结算币别(FSETTLECUR): 固定值 PRE001

对于收款单明细部分,我们按照以下规则进行转换:

  • 结算方式(FSETTLETYPEID): 从源系统直接获取 {FSETTLETYPEID},并使用 ConvertObjectParser 转换。
  • 表体应收金额(FRECTOTALAMOUNTFOR): 从源系统直接获取 {FRECTOTALAMOUNTFOR}
  • 我方银行账号(FACCOUNTID): 使用 ConvertObjectParser 转换为金蝶云星空所需格式。
  • 收款用途(FPURPOSEID): 使用 ConvertObjectParser 转换为金蝶云星空所需格式。
  • 预收项目类型(FRECEIVEITEMTYPE): 从源系统直接获取 {FRECEIVEITEMTYPE}
  • 销售订单号(FSALEORDERNO): 从源系统直接获取 {FSALEORDERNO}

4. 数据写入

完成数据转换后,我们将其按照金蝶云星空API接口要求,通过POST方法批量保存到目标平台。以下是请求示例:

{
  ...
  {
    ...
    {
      ...
      {
        ...
        {
          ...
          {
            ...
            {
              ...
              {
                ...
                ...
              }
            }
          }
        }
      }
    }
  }
}

通过上述步骤,我们成功地将源平台的数据经过ETL转换后,写入到目标平台金蝶云星空,实现了不同系统间的数据无缝对接。这不仅提高了业务处理效率,也确保了数据的一致性和准确性。 金蝶云星空API接口配置

更多系统对接方案