利用轻易云跨平台数据集成:易快报到金蝶云星空

  • 轻易云集成顾问-何语琴

易快报采购订单对接金蝶应付单(非月结)技术案例分享

在现代企业的业务运营中,数据的准确性和及时性至关重要。在本技术案例中,我们将深入探讨如何通过轻易云数据集成平台,实现“易快报”采购订单与“金蝶云星空”应付单(非月结)的无缝对接。

首先,我们需要确保从易快报获取的数据完整且不漏单。为此,通过调用易快报接口/api/openapi/v1.1/docs/getApplyList,可以定时抓取最新的采购订单数据。为了避免因网络波动或接口限流导致的数据丢失问题,会采用分页请求,并结合重试机制来处理可能发生的异常情况。

在成功获取到所有所需数据后,需要将这些信息批量写入到金蝶云星空系统内。考虑到大量数据传输过程中可能产生的性能瓶颈,我们利用批量处理和并发写入策略,加速了记录提交过程。同时,为确保每条记录都被正确写入,系统会实时监控每个步骤并提供详细日志记录。如果遇到异常情况,还可触发错误重试机制以保证稳定性。

另一个关键挑战是如何高效地进行两套系统间的数据格式转换。例如,易快报中的字段名称、类型可能与金蝶云星空存在差异,这就要求我们在映射配置上做出精准调整。此外,为适配不同业务需求,还支持对接自定义规则,以便灵活应对复杂场景。

总结来说,通过以上方法有效实现了从易快报到金蝶云星空的数据集成,不仅提高了操作效率,也显著降低了人工干预带来的风险。在下一部分内容中,将深入介绍具体实现方案及其代码示例。


通过这种方式直面主题,从实际应用场景出发,使得整篇文章更具专业性和实用价值。 钉钉与MES系统接口开发配置

调用易快报接口获取并加工数据的技术实现

在数据集成生命周期的第一步中,我们需要调用易快报的接口/api/openapi/v1.1/docs/getApplyList来获取采购订单数据,并进行必要的数据清洗和转换。以下是具体的技术实现步骤和细节。

接口调用配置

首先,我们需要配置API调用的元数据。这些元数据定义了API请求的各个参数及其含义:

{
  "api": "/api/openapi/v1.1/docs/getApplyList",
  "effect": "QUERY",
  "method": "GET",
  "number": "form.code",
  "id": "id",
  "idCheck": true,
  "otherRequest": [
    {
      "field": "type",
      "label": "type",
      "type": "string",
      "describe": "expense : 报销单\nloan : 借款单\nrepayment : 还款记录\npayment : 付款单\nrequisition : 申请单\ncustom : 通用审批单\nreceipt : 收款单",
      "value": "expense"
    },
    {
      "field": "start",
      "label": "分页查询起始值",
      "type": "string"
    },
    {
      "field": "count",
      "label": "count",
      "type": "string",
      "describe": "最大不能超过 100",
      "value": "100"
    },
    {
      ...
    }
  ],
  ...
}

参数详解

  • type: 指定要查询的单据类型,这里设置为expense,即报销单。
  • start: 分页查询的起始值,用于控制数据分页。
  • count: 每次查询返回的数据条数,最大不能超过100。
  • orderBy: 查询字段,这里设置为updateTime,表示按更新时间排序。
  • startDateendDate: 查询时间范围,分别表示起始时间和结束时间。
  • specificationId: 单据模板ID,用于筛选特定模板的数据。
  • active: 是否已删除,设置为true表示只查询未删除的数据。
  • state: 单据状态,多个状态用逗号分隔。

数据请求与清洗

在调用接口获取数据后,需要对返回的数据进行清洗。清洗过程包括过滤无效数据、标准化字段格式等操作。以下是一个示例代码片段:

import requests
import datetime

# 定义API URL
url = 'https://api.yikuaibao.com/api/openapi/v1.1/docs/getApplyList'

# 定义请求参数
params = {
    'type': 'expense',
    'start': '0',
    'count': '100',
    'orderBy': 'updateTime',
    'startDate': (datetime.datetime.now() - datetime.timedelta(days=30)).strftime('%Y-%m-%d %H:%M:%S'),
    'endDate': datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
    'specificationId': 'ID01nExzdQyBs3',
    'active': 'true',
    'state': 'paying,PROCESSING,paid,archived'
}

# 发起GET请求
response = requests.get(url, params=params)

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

    # 数据清洗
    cleaned_data = []
    for item in data['data']:
        if item['details']['_amount_standard'] > 0:
            cleaned_data.append(item)
else:
    print(f"Error: {response.status_code}")

数据转换与写入

在完成数据清洗后,需要将数据转换为目标系统所需的格式,并写入目标系统。以下是一个示例代码片段:

def transform_and_write(data):
    transformed_data = []

    for item in data:
        transformed_item = {
            'order_id': item['form']['code'],
            'amount': item['details']['_amount_standard'],
            ...
        }
        transformed_data.append(transformed_item)

    # 假设目标系统有一个API用于接收转换后的数据
    target_url = 'https://target-system.com/api/receiveData'

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

通过上述步骤,我们实现了从易快报接口获取采购订单数据,并对其进行清洗、转换和写入目标系统的全过程。这一过程不仅确保了数据的一致性和准确性,还提高了业务处理效率。 数据集成平台API接口配置

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

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

1. API接口配置

我们使用的是金蝶云星空的batchSave API接口,采用POST请求方法。该接口支持批量保存操作,并且每次请求可以处理多条记录。配置如下:

{
  "api": "batchSave",
  "method": "POST",
  "pagination": {
    "pageSize": 100
  },
  "operation": {
    "rowsKey": "array",
    "rows": 1,
    "method": "batchArraySave"
  },
  "idCheck": true
}

2. 请求参数配置

根据元数据配置,我们需要构建请求参数,包括单据类型、结算组织、单据编号、业务类型等字段。以下是关键字段及其解析方式:

  • FBillTypeID: 单据类型,固定值YFD02_SYS
  • FSETTLEORGID: 结算组织,固定值102
  • FBillNo: 单据编号,动态值{code}
  • FBUSINESSTYPE: 业务类型,固定值FY
  • FDATE: 业务日期,通过预先节点审批时间转换得到{{preNodeApprovedTime|datetime}}
  • FSUPPLIERID: 供应商编码,通过变量{{u_供应商编码}}并使用解析器ConvertObjectParser
  • FCURRENCYID: 币别,通过变量映射得到
  • FAP_Remark: 易快报付款条件,通过变量{{u_付款条件说明}}
  • F_VRKB_Remarks: 费用详情,通过变量{title}

示例配置如下:

[
  {"field":"FBillTypeID","value":"YFD02_SYS"},
  {"field":"FSETTLEORGID","value":"102"},
  {"field":"FBillNo","value":"{code}"},
  {"field":"FBUSINESSTYPE","value":"FY"},
  {"field":"FDATE","value":"{{preNodeApprovedTime|datetime}}"},
  {"field":"FSUPPLIERID","value":"{{u_供应商编码}}","parser":{"name":"ConvertObjectParser","params":"FNumber"}},
  {"field":"FCURRENCYID","value":"{FCURRENCYID}","parser":{"name":"ConvertObjectParser","params":"FNumber"}},
  {"field":"FAP_Remark","value":"{{u_付款条件说明}}"},
  {"field":"F_VRKB_Remarks","value":"{title}"}
]

3. 明细字段配置

对于明细字段,我们需要处理费用项目、含税单价、计价数量等多个字段。每个字段都需要进行相应的转换和解析,例如:

  • FCOSTID: 固定值FYXM14_SYS
  • FTaxPrice: 含税单价,根据币种不同选择不同的单价
  • FPriceQty: 动态值,通过变量获取{{details.u_订单数量}}
  • FCOSTDEPARTMENTID: 根据部门编码通过MongoDB查询获取并解析

示例配置如下:

[
  {"field":"FCOSTID","value":"FYXM14_SYS","parser":{"name":"ConvertObjectParser","params":"FNumber"}},
  {"field":"FTaxPrice","value":"'function case when '{FCURRENCYID}'='CNY' then '{{details._unitPrice_standard}}' else '{{details._unitPrice_foreign}}' end'"},
  {"field":"FPriceQty","value":"{{details.u_订单数量}}"},
  {"field":"FCOSTDEPARTMENTID","value":"'mongoQuery findField=content.code where={\"id\":{\"$eq\":\"{{details.u_申请部门}}\"}}'"},
]

4. 表头财务和其他配置

表头财务信息和其他必要的配置信息也需要一并处理。例如,本位币和汇率类型等:

[
  {
    "field": "FsubHeadFinc",
    "children": [
      {
        "field": "FMAINBOOKSTDCURRID",
        "value": "PRE001",
        "parser":{"name":"ConvertObjectParser","params":"FNumber"}
      },
      {
        "field": "FEXCHANGETYPE",
        "value": "HLTX01_SYS",
        "parser":{"name":"ConvertObjectParser","params":"FNumber"}
      }
    ]
  }
]

最终请求示例

将所有字段整合后,形成最终请求体:

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

通过以上步骤,我们成功将源平台的数据转换为金蝶云星空API接口所能接受的格式,并完成数据写入。这不仅确保了数据的一致性和准确性,也提高了系统间的数据传输效率。 如何开发企业微信API接口

更多系统对接方案