ETL转换与旺店通API集成案例详解

  • 轻易云集成顾问-姚缘

案例分享:拆卸子项入库同步到旺店通

在本案例中,我们将详细探讨如何通过轻易云数据集成平台,实现金蝶云星空与旺店通·企业奇门的系统对接,以实现拆卸子项入库数据的高效传输和同步。整个过程中,重点技术环节包括API接口调用、数据格式转换以及异常处理机制。

首先,为了确保从金蝶云星空获取的数据完整且不漏单,我们利用了executeBillQuery API接口。该接口允许我们精确地抓取所需的业务数据,并进行分页处理以应对大批量数据查询时的性能问题。例如,通过预设定时任务,能够可靠地按周期性抓取最新的数据变动情况。此外,我们还设计了一套限流策略,以避免因大量请求导致服务器过载。

与此同时,在完成数据抓取后,需要解决的是如何快速、高效且批量将这些数据信息写入到旺店通·企业奇门。这里使用到了wdt.stockin.order.push API接口,该接口支持多条记录一次性推送,从而极大提升了传输效率。然而,面对复杂多样的数据格式差异,我们在实际操作中进行了定制化的数据映射,使得输入输出双方可以无缝衔接。此外,对于可能发生的网络波动或异常状况,系统内置有智能错误重试机制,这确保每一条记录都能准确及时地被处理和执行。

最后,为了实时监控整个集成过程中的各个节点状态和日志记录,平台提供了全透明可视化操作界面。这不仅让业务流程更为简明直观,也方便运维人员发现问题并进行快速反馈与调整。

当上述重要技术点落实之后,即使面对高频率的数据交互需求,此次方案也能保持稳定、高效运行,为业务提供强有力支持。在接下来的内容中,将进一步深入展开具体实施细节,包括配置步骤、代码示例,以及遇到常见问题时的解决思路。 企业微信与OA系统接口开发配置

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

在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何使用轻易云数据集成平台调用金蝶云星空的executeBillQuery接口,获取拆卸子项入库的数据,并进行初步加工。

接口配置与调用

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

{
  "api": "executeBillQuery",
  "method": "POST",
  "number": "FBillNo",
  "id": "FSubEntity_FDetailID",
  "pagination": {
    "pageSize": 500
  },
  "idCheck": true,
  "request": [
    {"field":"FID","label":"实体主键","type":"string","value":"FID"},
    {"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"},
    {"field":"FDocumentStatus","label":"单据状态","type":"string","value":"FDocumentStatus"},
    {"field":"FStockOrgId_FNumber","label":"库存组织","type":"string","value":"FStockOrgId.FNumber"},
    {"field":"FDate","label":"日期","type":"string","value":"FDate"},
    {"field":"FBillTypeID","label":"单据类型","type":"string","value":"FBillTypeID"},
    {"field":"FOwnerTypeIdHead","label":"成品货主类型","type":"string","value":"FOwnerTypeIdHead"},
    {"field":"FOwnerIdHead_FNumber","label":"成品货主","type":"string","value":"FOwnerIdHead.FNumber"},
    {"field":"FAffairType","label":"事务类型","type":"string","value":"FAffairType"},
    {"field":"FEE","label":"费用","type":"string","value":"FEE"},
    {"field":"FDeptID_FNumber","label":"部门","type":"string","value":"FDeptID.FNumber"},
    {"field": "FilterString", "label": "过滤条件", "type": "string", 
     "describe": "示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=",
     "value": "FApproveDate>='{{LAST_SYNC_TIME|datetime}}' and FAFFAIRTYPE = 'Dassembly' and FStockOrgId.FNumber='102'"
    },
    {"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": "STK_AssembledApp"
    }
  ]
}

数据请求与清洗

在上述配置中,我们通过POST方法调用executeBillQuery接口,并设置了分页参数(每页500条记录)以确保能够处理大量数据。关键字段包括:

  • FID: 实体主键
  • FBillNo: 单据编号
  • FDocumentStatus: 单据状态
  • FStockOrgId_FNumber: 库存组织编号
  • FilterString: 用于过滤条件,确保只获取特定时间段内的拆卸子项入库记录

这些字段将帮助我们精确地获取所需的数据。

数据转换与写入

在获取到原始数据后,我们需要对其进行转换和清洗,以便后续写入目标系统。在这个过程中,可以利用轻易云平台提供的可视化工具,对数据进行映射和转换。例如,将金蝶云星空中的字段映射到旺店通系统中的对应字段。

以下是一个简单的数据转换示例:

{
  // 原始数据字段
  "_sourceField_1" : {
      // 转换后的目标字段
      "_targetField_1" : {
          // 转换规则,例如格式化日期、计算新值等
          "_transformationRule_" : {
              "_ruleName_" : "_ruleValue_"
          }
      }
  }
}

通过这种方式,可以确保不同系统之间的数据格式一致性,从而实现无缝对接。

实时监控与异常处理

在整个数据集成过程中,实时监控和异常处理同样重要。轻易云平台提供了实时监控功能,可以随时查看数据流动和处理状态。一旦发现异常,如网络故障或数据格式错误,可以及时采取措施进行修复。

综上所述,通过合理配置元数据并利用轻易云平台强大的集成功能,我们可以高效地从金蝶云星空获取并加工拆卸子项入库的数据,为后续的数据写入和业务处理打下坚实基础。 如何开发企业微信API接口

ETL转换与写入旺店通·企业奇门API接口的技术案例

在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,并将其转为目标平台——旺店通·企业奇门API接口所能够接收的格式,最终写入目标平台。本文将详细探讨如何通过轻易云数据集成平台实现这一过程。

元数据配置解析

首先,我们需要理解元数据配置中的各个字段及其对应关系。以下是元数据配置的详细内容:

{
  "api": "wdt.stockin.order.push",
  "effect": "EXECUTE",
  "method": "POST",
  "request": [
    {"field": "outer_no", "label": "外部单号", "type": "string", "value": "{FBillNo}"},
    {"field": "warehouse_no", "label": "仓库编号", "type": "string", "value": "{FStockIDSETY_FNumber}"},
    {"field": "remark", "label": "备注", "type": "string", "value": "拆卸单子项入库"},
    {"field": "is_check", "label": "是否审核", "type": "string", "value": "1"},
    {
      "field": "goods_list",
      "label": "货品明细节点",
      "type": "array",
      "value": "{{details_lists}}",
      children: [
        {"field":"spec_no","label":"商家编码","type":"string","value":"{{details_lists.FMaterialIDSETY_FNumber}}"},
        {"field":"stockin_num","label":"入库数量","type":"string","value":"{{details_lists.FQtySETY}}"},
        {"field":"src_price","label":"原价","type":"string","value":"1"},
        {"field":"stockin_price","label":"入库价","type":"string","value":"1"}
      ]
    }
  ],
  otherRequest: [
    {"field":"stockin_info","label":"stockin_info","type":"string","describe":"111"}
  ],
  operation: {
    method: 'merge',
    field: 'FBillNo',
    bodyName: 'details_lists',
    bodySum: ['FQtySETY'],
    header: ['FBillNo', 'FStockIDSETY_FNumber'],
    body: ['FMaterialIDSETY_FNumber', 'FQtySETY']
  }
}

数据转换与映射

在ETL过程中,关键步骤之一是将源数据字段映射到目标API接口所需的字段。以下是具体步骤:

  1. 提取(Extract):从源平台提取原始数据。

  2. 转换(Transform)

    • FBillNo 转换为 outer_no
    • FStockIDSETY_FNumber 转换为 warehouse_no
    • 固定备注字段为“拆卸单子项入库”。
    • 固定审核状态为“1”。
    • 对于货品明细节点 goods_list,需要进一步处理:
      • details_lists.FMaterialIDSETY_FNumber 转换为 spec_no
      • details_lists.FQtySETY 转换为 stockin_num
      • 固定原价和入库价为“1”。
  3. 加载(Load):将转换后的数据通过POST方法写入到旺店通·企业奇门API接口。

实际操作示例

假设我们从源系统提取到以下数据:

{
  FBillNo: '20231001',
  FStockIDSETY_FNumber: 'WH001',
  details_lists: [
    { FMaterialIDSETY_FNumber: 'P001', FQtySETY: '10' },
    { FMaterialIDSETY_FNumber: 'P002', FQtySETY: '20' }
  ]
}

根据上述元数据配置,我们需要将其转换为如下格式:

{
  outer_no: '20231001',
  warehouse_no: 'WH001',
  remark: '拆卸单子项入库',
  is_check: '1',
  goods_list: [
    { spec_no: 'P001', stockin_num: '10', src_price: '1', stockin_price: '1' },
    { spec_no: 'P002', stockin_num: '20', src_price: '1', stockin_price: '1' }
  ],
  stockin_info:'111'
}

接口调用

最后,通过HTTP POST请求将上述转换后的数据发送至旺店通·企业奇门API接口。具体代码示例如下:

const axios = require('axios');

const data = {
  outer_no : '20231001',
  warehouse_no : 'WH001',
  remark : '拆卸单子项入库',
  is_check : '1',
  goods_list : [
    { spec_no : 'P001', stockin_num : '10', src_price : '1', stockin_price : '1' },
    { spec_no : 'P002', stockin_num : '20', src_price : '1', stockin_price : '1' }
  ],
  stockin_info:'111'
};

axios.post('https://api.wangdian.cn/openapi2/wdt.stockin.order.push', data)
.then(response => {
   console.log(response.data);
})
.catch(error => {
   console.error(error);
});

通过以上步骤,我们完成了从源平台的数据提取、转换并成功写入到目标平台旺店通·企业奇门API接口的全过程。这一过程不仅确保了数据的一致性和准确性,还极大地提高了业务操作的效率。 系统集成平台API接口配置

更多系统对接方案