逐步解析金蝶云星空到泛微OA的数据集成方案

  • 轻易云集成顾问-叶威宏

金蝶云星空数据集成到泛微OA-Http案例分享:金蝶逐单查询客户=>泛微--已完成

在本次技术案例中,我们探讨如何将金蝶云星空的数据成功集成到泛微OA-Http系统,实现了从“逐单查询客户”接口到数据写入的过程。这一整合方案不仅确保了无缝的数据流动,还显著提升了业务处理的时效性和可靠性。

首先是数据获取阶段。我们利用金蝶云星空提供的ExecuteBillQuery API进行逐单查询,实时抓取最新的客户信息。由于API调用过程中可能涉及分页与限流机制,因此需要特别关注通过循环及异步处理来优化接口调用频次,以防止出现漏单或请求超限的问题。

在数据传输部分,采用自定义的数据转换逻辑对获取的数据进行格式转换,以适应泛微OA-Http 的提交要求。这涉及字段匹配、类型验证等多个步骤,通过轻易云平台的可视化设计工具,可以直观地设置和管理这些转换规则,确保个环节都清晰透明。

对于大量数据快速写入需求,我们调用泛微OA-Http 提供的新建卡片接口 /api/cube/new/card/doSubmit。在此过程中,保证高吞吐量以及批量操作,是提高效率的重要手段之一。此外,为确保每条记录都被准确写入,并减少错误发生,对接过程中加入异常处理及重试机制,当检测到失败时,可自动重试提交,从而进一步保障系统稳定运行。

为了实现全流程监控和告警,在整个集成过程中,我们部署了一套集中监控系统。该系统可以实时跟踪任务状态及性能指标,一旦发现问题,高效告警并生成详细日志,为后续排查提供依据。同时,通过前置质量监控措施,可以及时捕获并修正潜在数据异常,提高整体数据质量。

以上是本次集成案例中的关键技术点与实现思路,希望能为类似项目提供参考和借鉴。 如何对接企业微信API接口

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

在数据集成过程中,调用源系统的API接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的ExecuteBillQuery接口来获取并加工数据。

接口配置与调用

首先,我们需要了解ExecuteBillQuery接口的元数据配置。该接口采用POST方法进行调用,主要用于查询金蝶系统中的业务单据。以下是具体的元数据配置:

{
  "api": "ExecuteBillQuery",
  "effect": "QUERY",
  "method": "POST",
  "number": "FNumber",
  "id": "FId",
  "request": [
    {"field": "Limit", "label": "Limit", "type": "string", "describe": "金蝶的查询分页参数", "value": "20"},
    {"field": "StartRow", "label": "StartRow", "type": "string", "describe": "金蝶的查询分页参数"},
    {"field": "TopRowCount", "label": "TopRowCount", "type": "int", "describe": "金蝶的查询分页参数"},
    {"field": "FilterString", 
     "label": "FilterString", 
     "type": "string", 
     "describe": 
     `示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=`, 
     `value`: 
     `FAPPROVEDATE>='{{LAST_SYNC_TIME|datetime}}' and FUseOrgId.FNumber='000' and FForbidStatus='A'`
    },
    {"field": 
      `FieldKeys`, 
      `label`: 
      `FieldKeys`, 
      `type`: 
      `array`, 
      `describe`: 
      `金蝶分录主键ID格式:FPOOrderEntry_FEntryId,其它格式 FPurchaseOrgId.FNumber`
    },
    {"field":
      `FormId`,
      `label`: 
      `FormId`,
      `type`: 
      `string`,
      `describe`: 
      `必须填写金蝶的表单ID如:PUR_PurchaseOrder`,
      `value`: 
      `BD_Customer`
    }
  ],
  autoFillResponse: true
}

请求参数详解

  1. Limit: 用于控制每次查询返回的数据条数,这里设定为20。
  2. StartRow: 查询起始行,用于分页处理。
  3. TopRowCount: 查询返回的最大行数。
  4. FilterString: 查询过滤条件,这里使用了动态变量{{LAST_SYNC_TIME|datetime}},表示自上次同步时间以来的数据,并且限定了组织和状态。
  5. FieldKeys: 指定需要返回的字段,这里可以根据业务需求进行调整。
  6. FormId: 表单ID,这里指定为客户信息表单BD_Customer

数据请求与清洗

在轻易云平台上,我们可以通过配置上述元数据来实现对金蝶云星空系统的查询。以下是一个示例请求:

{
  "Limit": 20,
  "`StartRow`": "`0`",
  "`TopRowCount`" : "`1000`",
  "`FilterString`" : "`FAPPROVEDATE>='2023-01-01T00:00:00' and FUseOrgId.FNumber='000' and FForbidStatus='A'`",
  "`FieldKeys`" : ["FNumber","FName","FCreateDate"],
  "`FormId`" : "`BD_Customer`"
}

该请求将返回符合条件的客户信息,包括客户编号、名称和创建日期等字段。

数据转换与写入

获取到原始数据后,需要对其进行必要的数据清洗和转换,以便后续写入目标系统。在轻易云平台上,可以利用内置的数据转换工具对字段进行映射和格式化。例如,将日期格式从ISO标准转换为目标系统所需格式,或者将某些字段值进行编码转换等。

def transform_data(data):
    transformed_data = []
    for record in data:
        transformed_record = {
            'CustomerID': record['FNumber'],
            'CustomerName': record['FName'],
            'CreationDate': record['FCreateDate'].replace('T', ' ')
        }
        transformed_data.append(transformed_record)
    return transformed_data

实时监控与调试

在整个过程中,轻易云平台提供了实时监控功能,可以随时查看数据流动和处理状态。如果出现问题,可以利用日志和调试工具快速定位并解决问题。

通过以上步骤,我们实现了从金蝶云星空系统中调用API接口获取数据,并经过清洗和转换后准备写入目标系统。这不仅提高了数据处理效率,也确保了数据的一致性和准确性。 打通金蝶云星空数据接口

使用轻易云数据集成平台实现ETL转换并写入泛微OA-HttpAPI接口

在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL转换,并转为目标平台泛微OA-HttpAPI接口所能够接收的格式,最终写入目标平台。本文将详细探讨这一过程中的技术细节,特别是如何配置和使用API接口。

1. 数据请求与清洗

在数据集成的第一阶段,我们已经完成了从金蝶系统逐单查询客户数据的操作。接下来,我们需要对这些数据进行清洗和转换,以便符合泛微OA系统的要求。

2. 数据转换与写入

我们将重点放在如何将清洗后的数据通过轻易云平台转换为泛微OA-HttpAPI接口所需的格式,并最终写入目标系统。以下是元数据配置及其解析:

{
    "api": "/api/cube/new/card/doSubmit",
    "effect": "EXECUTE",
    "method": "POST",
    "idCheck": true,
    "request": [
        {"field":"billid","label":"参数ID","type":"string","describe":"打开泛微表单后可以在URL中获取该参数","value":"{F_WMMX_OAId}"},
        {"field":"type","label":"类型","type":"string","describe":"类型","value":"_function case '{F_WMMX_OAId}' when '' then 1 else 2 end"},
        {"field":"modeId","label":"modeId","type":"string","describe":"//0 正常,1重要,2紧急","value":"36"},
        {"field":"formId","label":"formId","type":"string","describe":"formId","value":"-185"},
        {
            "field": "JSONStr",
            "label": "JSONStr",
            "type": "object",
            "children": [
                {"field":"field11630","label":"客户名称","type":"string","value":"{chinese_name}"},
                {"field":"field11639","label":"开票通讯地址","type":"string","value":"{INVOICEADDRESS}"},
                {"field":"field11631","label":"使用组织","type":"string","value":"{UseOrgId_Name}"},
                {"field":"field11637","label":"发票抬头","type":"string","value":"{INVOICETITLE}"},
                {"field":"field11629","label":"客户编码","type":"string","value":"{Number}"},
                {"field":"field11638","label":"纳税登记号","type":"string","value":"{FTAXREGISTERCODE}"},
                {"field":"field11633","label":"开户银行","type":"","value":{"INVOICEBANKNAME"}},
                {"field":"","label":"","type":"","value":{"INVOICEBANKACCOUNT"}},
                {"field":"","label":"","type":"","value":{"CompanyType_Number"}},
                {"field":"","label":"","type":"","value":{"TRADINGCURRID_Name"}},
                {"field":"","label":"","type":"","value":{"ADDRESS"}},
                {"field":"","label":"","type":"","value":{"TEL"}},
                {"field":"","label":"","type":"","value":{"BD_CUSTOMEREXT.DefaultContact_Id"}},
                {"field":"","label":"","type":"","value":{"english_name"}}
            ]
        },
        {"guid", "", "", ""},
        {""}
    ]
}

API接口字段解析与配置

  1. 基本字段配置

    • api: 指定了泛微OA系统的API路径。
    • effect: 设置为EXECUTE表示执行操作。
    • method: 使用POST方法提交数据。
    • idCheck: 设置为true表示需要进行ID检查。
  2. 请求参数

    • billid: 参数ID,通过URL获取。
    • type: 类型,根据条件设置为1或2。
    • modeId: 模式ID,固定值36表示正常模式。
    • formId: 表单ID,固定值-185。
  3. JSONStr对象

    • 包含多个子字段,每个字段对应一个客户信息属性,例如客户名称、开票通讯地址、使用组织等。这些字段通过映射关系从源数据中提取并转换为目标格式。
  4. 其他参数

    • guid, layoutid, iscreate, token, user_id等,用于标识和控制请求行为。

实际应用案例

假设我们从金蝶系统获取到以下客户信息:

{
    "chinese_name": "某某公司",
    "INVOICEADDRESS": "北京市海淀区",
    "UseOrgId_Name": "总部",
    "INVOICETITLE": "某某公司发票抬头",
    "Number": "123456",
    ...
}

根据上述元数据配置,我们需要将这些信息映射到泛微OA系统的API请求中。例如:


{
    "billid": "",
    ...
    {
        ...
        {
            ...
            {
                ...
                {
                    ...
                    {
                        ...
                        {
                            ...
                            {
                                ...
                                {
                                    ...
                                    {
                                        ...
                                        {
                                            ...
                                            {
                                                ...
                                                {
                                                    ...
                                                    {
                                                        ...
                                                        {
                                                            ...
![打通金蝶云星空数据接口](https://pic.qeasy.cloud/T14.png~tplv-syqr462i7n-qeasy.image)
更多系统对接方案