ETL转换与金蝶云星空API接口结合的案例解析

  • 轻易云集成顾问-蔡威

吉客云到金蝶云星空的数据集成实战案例

在实际的系统集成项目中,如何高效且准确地将吉客云的调拨单数据成功对接到金蝶云星空,是一项具有挑战但非常重要的任务。本文将分享一个具体案例,通过轻易云数据集成平台,实现吉客云(erp.storage.goodsdocin.v2)接口读取的数据,写入至金蝶云星空(batchSave)接口。

为了确保整个过程中的数据不漏单、实时监控及高效处理,我们使用了集中监控和告警系统,并结合自定义的数据转换逻辑。这些工具不仅帮助我们应对跨系统间不同的数据格式,还能及时发现和处理任何可能出现的异常情况。

首先,我们通过调用吉客云API erp.storage.goodsdocin.v2 定时可靠地抓取最新的调拨单数据。这一步需要特别注意的是分页和限流问题,以确保大批量数据能够被分段、有序地获取。同时,为了适应业务需求,配置了自定义转换规则,将获取的数据转换为符合金蝶云星空要求的格式。

在写入阶段,通过调用金蝶API batchSave 接口,将经过转换后的调拨单快速批量写入到金蝶云星空中。针对大量数据并发写入所带来的吞吐量挑战,我们采用了一系列优化措施,提高了整体效率。此外,还实现了详尽而细致的错误重试机制,当出现对接异常时,可以自动进行重试修正,从而最大程度保障数据的一致性与完整性。

另外,通过统一视图控制台,对整个API资产进行了有效管理,实现资源利用率最大化。在此过程中,由于使用可视化的数据流设计工具,大大简化了复杂流程,使得每个操作步骤更加直观易懂,也便于后期维护和迭代更新。

这个技术方案不仅提升了企业内部多系统协同工作的效率,更为其全生命周期管理提供有力支持。通过精准高效的数据集成,进一步巩固企业信息化建设成果,不断推动业务发展。 电商OMS与WMS系统接口开发配置

调用吉客云接口erp.storage.goodsdocin.v2获取并加工数据

在数据集成生命周期的第一步,我们需要从源系统吉客云中获取数据,并对其进行初步加工。本文将详细探讨如何通过调用吉客云的erp.storage.goodsdocin.v2接口来实现这一过程。

接口调用配置

我们使用POST方法来调用erp.storage.goodsdocin.v2接口,具体的元数据配置如下:

{
  "api": "erp.storage.goodsdocin.v2",
  "effect": "QUERY",
  "method": "POST",
  "number": "goodsdocNo",
  "id": "recId",
  "idCheck": true,
  "request": [
    {"field": "pageIndex", "label": "pageIndex", "type": "int", "describe": "111", "value": "{PAGINATION_START_ROW}"},
    {"field": "pageSize", "label": "pageSize", "type": "int", "describe": "111", "value": "{PAGINATION_PAGE_SIZE}"},
    {"field": "startDate", "label": "startDate", "type": "string", "describe": "111", "value": "{{LAST_SYNC_TIME|datetime}}"},
    {"field": "endDate", "label": "endDate", "type": "string", "describe": "111", "value": "{{CURRENT_TIME|datetime}}"},
    {"field": "inouttype", 
        "label":"出入库类型",
        "type":"int",
        "describe":"出入库类型(201-销售出库 202调拨出库 204-其他出库 205采购退货 206生产领料 207组装拆卸出库 208翻新出库 209报废出库 210残次品出库 211倒冲领料 212 包材出库 215维修还厂 299可用库存修正 231成本调整出库)",
        "value":"102"
    },
    {"field":"selelctFields","label":"selelctFields","type":"string","value":"recId,goodsdocNo,billNo,inOutDate,gmtCreate,inouttype,inouttypeName,vendCustomerCode,vendCustomerName,currencyCode,currencyRate,userName,warehouseCode,warehouseName,comment,memo,logisticName,logisticNo,companyId,companyName,logisticType,logisticCode,inOutReason,sourceBillNo,channelId,channelCode,channelName,redStatus,field1,field2,field3,field4,field5,financeBillStatus,applyCompanyId,applyCompanyName,applyCompanyCode,applyDepartId,applyDepartName,departCode,applyUserId,applyUserName,outBillNo,gmtModified,companyCode,vendCustomerId,..."}
   ],
    "autoFillResponse" : true
}

请求参数解析

  1. 分页参数

    • pageIndex: 当前页码,使用占位符 {PAGINATION_START_ROW} 动态填充。
    • pageSize: 每页记录数,使用占位符 {PAGINATION_PAGE_SIZE} 动态填充。
  2. 时间范围参数

    • startDate: 数据开始时间,使用占位符 {{LAST_SYNC_TIME|datetime}} 动态填充。
    • endDate: 数据结束时间,使用占位符 {{CURRENT_TIME|datetime}} 动态填充。
  3. 业务类型参数

    • inouttype: 出入库类型,这里固定为102(调拨入库)。
  4. 选择字段参数

    • selelctFields: 指定需要返回的字段列表,包括基础信息和详细信息字段。

调用示例

以下是一个具体的HTTP请求示例:

POST /api/erp.storage.goodsdocin.v2 HTTP/1.1
Host: api.jikexyun.com
Content-Type: application/json

{

![钉钉与CRM系统接口开发配置](https://pic.qeasy.cloud/S8.png~tplv-syqr462i7n-qeasy.image)
### 轻易云数据集成平台生命周期的第二步:ETL转换与写入金蝶云星空API接口

在轻易云数据集成平台中,数据处理过程的第二步是将已经集成的源平台数据进行ETL(提取、转换、加载)转换,并将其转为目标平台——金蝶云星空API接口所能够接收的格式,最终写入目标平台。本文将详细探讨如何通过元数据配置实现这一过程。

#### 数据请求与清洗

在ETL流程中,首先需要从源系统(吉客云)中提取调拨单数据。这些数据通常包括单据编号、日期、调入数量等字段。在提取过程中,我们需要对这些数据进行清洗,以确保其准确性和一致性。例如,对日期格式进行标准化处理,对字符串进行去重等。

#### 数据转换

接下来,我们需要将清洗后的数据按照金蝶云星空API接口的要求进行转换。以下是一个详细的元数据配置示例,用于将吉客云中的调拨单数据转换为金蝶云星空API接口所需的格式:

```json
{
    "api": "batchSave",
    "effect": "EXECUTE",
    "method": "POST",
    "idCheck": true,
    "request": [
        {"field": "FBillNo", "label": "单据编号", "type": "string", "value": "{billNo}"},
        {"field": "FDate", "label": "日期", "type": "string", "value": "{inOutDate}"},
        {"field": "FBillTypeID", "label": "单据类型", "type": "string", "value": "FBDR01_SYS", 
            "parser":{"name":"ConvertObjectParser","params":"FNumber"}},
        {"field": "FOwnerTypeIdHead", "label": "调入货主类型", 
            "type":"string","value":"BD_OwnerOrg"},
        {"field":"FOwnerIdHead","label":"调入货主","type":"string","value":"100",
            "parser":{"name":"ConvertObjectParser","params":"FNumber"}},
        {"field":"FTransferDirect","label":"调拨方向","type":"string","value":"GENERAL"},
        {"field":"FNOTE","label":"备注","type":"string","value":"{inOutReason}"},
        {"field":"FTransferMode","label":"调拨方式","type":"string","value":"DIRECT"},
        {"field":"FVESTONWAY","label":"携带在途归属","type":"string","value":"A"},
        {"field":"FOwnerTypeOutIdHead","label":"调出货主类型",
            "type":"string","value":"BD_OwnerOrg"},
        {"field":"FOwnerOutIdHead","label":"调出货主",
            "type":"string","value":"100",
            "parser":{"name":"ConvertObjectParser","params":"FNumber"}},
        {"field": "FBizType",   "label":    "业务类型",     "type":     "string",   "value":    "NORMAL"}
    ],
    ...
}

上述配置定义了请求参数及其对应的数据字段和类型。例如,FBillNo字段对应于源系统中的billNo字段,FDate字段对应于inOutDate字段。此外,还可以通过解析器(如ConvertObjectParser)对某些字段进行进一步处理。

数据写入

完成数据转换后,我们需要将这些数据通过金蝶云星空API接口写入目标系统。以下是继续上述元数据配置中的关键部分:

{
    ...
    {
        "field":    "FSTKTRSINENTRY",
        ...
        {
            ...
            {
                ...
                {
                    ...
                    {
                        ...
                        {
                            ...
                            {
                                ...
                                {
                                    ...
                                    {
                                        ...
                                        {
                                            ...
                                            {
                                                ...
                                                {
                                                    ...
                                                    {
                                                        ...
                                                        {
                                                            ...
                                                            {
                                                                ...
                                                                {
                                                                    ...
                                                                    {
                                                                        ...
                                                                        {
                                                                            ...
                                                                            {
                                                                                ... 
                                                                                { 
                                                                                    ... 
                                                                                    { 
                                                                                        ... 
                                                                                        { 
                                                                                            ... 
                                                                                            { 
                                                                                                ... 
                                                                                                { 
                                                                                                    ... 
                                                                                                    { 
                                                                                                        ... 
                                                                                                        { 
                                                                                                            ... 
                                                                                                            { 
                                                                                                                ... 
                                                                                                                {  
                                                                                                                    ...  
                                                                                                                    {  
                                                                                                                        ...  
                                                                                                                        {  
                                                                                                                            ...  
                                                                                                                            {  
                                                                                                                                ...  
                                                                                                                                {  
                                                                                                                                    ...  

在这个部分,我们定义了如何将明细信息(如物料编码、调入仓库、调入数量等)写入目标系统。每个字段都进行了详细配置,包括其标签、类型和值来源。

例如:

  • FMaterialID 对应于 goodsDocDetailList.goodsNo
  • FDestStockID 对应于 warehouseCode
  • FQty 对应于 goodsDocDetailList.quantity

此外,还可以通过解析器对某些复杂字段进行处理,如批号和生产日期等。

实际操作

在实际操作中,我们会调用金蝶云星空的 batchSave API 接口,通过 POST 方法提交转换后的 JSON 数据。这一步骤通常包括以下几个关键点:

  1. 构建请求体:根据元数据配置生成符合 API 要求的 JSON 请求体。
  2. 发送请求:使用 HTTP 客户端(如 Postman 或编程语言内置的 HTTP 库)发送 POST 请求。
  3. 处理响应:解析 API 返回的响应,检查是否有错误或警告,并根据需要进行后续处理。

通过以上步骤,我们可以实现从吉客云到金蝶云星空的数据无缝对接,确保业务流程的顺畅运行。 打通用友BIP数据接口

更多系统对接方案