使用轻易云调用管易云·奇门接口及数据处理详解

  • 轻易云集成顾问-曹润

销售退货数据集成案例:管易云·奇门到金蝶云星辰V2

在实际业务运营中,销售退货管理是一个极其重要但却充满挑战的环节。为了保证及时、准确的数据对接和处理,我们实施了将管易云·奇门平台的数据无缝集成到金蝶云星辰V2系统的方案。本文将详细介绍这个集成过程中的关键技术点和实现方法。

首先,为了确保从管易云·奇门(API: gy.erp.trade.return.get)抓取来的销售退货数据能够顺利、高效地写入到金蝶云星辰V2(API: /jdy/v2/scm/sal_in_bound),我们需要解决下列几个技术问题:

  1. 数据不漏单: 我们采用定时可靠的调度机制,从管易云·奇门接口抓取数据,有效避免因网络波动或接口异常导致的数据遗漏。同时,通过实时监控与日志记录功能,我们可以即时捕捉并重试失败操作,以确保所有待处理订单都能被完整获取和传输。

  2. 大量数据快速写入: 金蝶云星辰V2支持批量写入,因此在积累了一定数量的记录后,我们进行批量操作,从而大幅提升数据同步效率。这不仅减少了接口调用次数,还降低了系统负载,提高整体性能。

  3. 分页与限流处理: 管易云·奇门接口对于返回结果有分页限制,必须逐页请求才能获得全部数据。对此,我们设计了一套自动分页查询方案,每次从上次结束的位置继续拉取,直至全部记录抓取完成。此外,还加入限流机制以应对高频率请求可能带来的服务端压力。

  4. 格式差异转化: 两个平台间的数据结构存在显著差异。在每一次抓取后,我们会根据预先设定好的映射规则,将管易云·奇门的数据转换为符合金蝶云星辰V2标准的格式。该步骤不仅包括字段名称和类型转换,还涉及复杂逻辑计算,如单位换算、多级分类等。

  5. 异常处理与重试机制: 在整个对接过程中,不可避免会遇到各种异常情况,例如网络超时、服务不可用等。为此,我们设计了一套完善的错误捕获与重试机制,每当出现失败时,会自动记录并进行预设次数和间隔时间内的重复尝试,最大程度保证任务成功率。

通过上述一系列措施,实现了高效、稳定且可信赖的数据集成,将销售退货信息快速准确地推送至金蝶云星辰V2系统中,大大提高 用友与WMS系统接口开发配置

使用轻易云数据集成平台调用管易云·奇门接口gy.erp.trade.return.get获取并加工数据

在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何使用轻易云数据集成平台调用管易云·奇门接口gy.erp.trade.return.get,并对返回的数据进行加工处理。

接口调用配置

首先,我们需要配置接口调用的元数据。以下是用于调用gy.erp.trade.return.get接口的元数据配置:

{
  "api": "gy.erp.trade.return.get",
  "method": "POST",
  "number": "code",
  "id": "code",
  "pagination": {
    "pageSize": 50
  },
  "idCheck": true,
  "formatResponse": [
    {
      "old": "receive_date",
      "new": "receive_date_new",
      "format": "date"
    }
  ],
  "request": [
    {"field":"code","label":"单据编号","type":"string"},
    {"field":"in_begin_time","label":"入库时间开始段","type":"datetime","value":"{{LAST_SYNC_TIME|datetime}}"},
    {"field":"in_end_time","label":"入库时间结束段","type":"datetime","value":"{{CURRENT_TIME|datetime}}"},
    {"field":"shop_code","label":"店铺代码","type":"string"},
    {"field":"drp_tenant_name","label":"分销商名称","type":"string"},
    {"field":"platform_code","label":"平台单号","type":"string"},
    {"field":"return_type","label":"退货类型代码","type":"string"},
    {"field":"receive","label":"入库状态","type":"string","value":"1"},
    {"field":"modify_start_date","label":"修改时间开始段","type":"datetime"},
    {"field":"modify_end_date","label":"修改时间结束段","type":"datetime"}
  ],
  "otherRequest": [
    {"field": "page_size", "label": "分页大小", "type": "string", "value": "{PAGINATION_PAGE_SIZE}"},
    {"field": "page_no", "label": "页号", "type": "string", "value": "{PAGINATION_START_PAGE}"},
    {
      "field": "detailApi",
      "label": "详情查询api",
      "type": "object",
      "children":[
        {"field": "api", 
            "label": 
            "api", 
            "type":
                "string", 
                "value":
                    "gy.erp.trade.return.detail.get"}
      ]
     }
   ],
   condition: [
     [{"field":
        "warehouseout_code",
        "logic":
            "neqv2",
            "value":
                "011"
         },
       {
        "field":
            "refund_type",
            "logic":
                "neqv2",
                "value":
                    "3"
          },
          {
            "field":
                "refund_type",
                "logic":
                    "neqv2",
                    "value":
                        "4"
              },
              {

                field:
                refund_type,
                logic:
                value:
                value:
                value:
                value:
                value:
                value:
                value:
                value:
                value:
                value:
                value:
                value:5}
     ]
   ]
}

请求参数设置

在请求参数部分,我们需要设置多个字段来确保数据请求的准确性和完整性。例如:

  • code: 单据编号,用于唯一标识每个退货记录。
  • in_begin_timein_end_time: 入库时间的开始和结束段,确保我们获取的是特定时间范围内的数据。
  • shop_code: 店铺代码,用于区分不同店铺的退货记录。
  • drp_tenant_name: 分销商名称,用于进一步过滤数据。
  • platform_code: 平台单号,关联具体的平台订单。
  • return_type: 退货类型代码,用于区分不同类型的退货。
  • receive: 入库状态,这里固定为“1”,表示已入库。

此外,还包括分页参数page_sizepage_no,确保我们能够分批次获取大规模的数据。

数据格式化与条件过滤

在返回的数据中,我们需要对某些字段进行格式化处理。例如,将原始字段receive_date重新命名为receive_date_new并转换为日期格式:

{
  old: 'receive_date',
  new: 'receive_date_new',
  format: 'date'
}

同时,我们还可以设置条件过滤,例如排除某些特定的仓库出库码和退款类型:

condition: [
 [{"field":
   warehouseout_code,
   logic: neqv2,
   value: '011'},
 {'field': refund_type, 'logic': neqv2, 'value': '3'},
 {'field': refund_type, 'logic': neqv2, 'value': '4'},
 {'field': refund_type, 'logic': neqv2, 'value': '5'}
]

异步处理与实时监控

轻易云数据集成平台支持全异步处理,这意味着我们可以在后台运行这些数据请求,并实时监控其状态。这种方式不仅提高了效率,还确保了业务流程的透明度。

通过上述配置和处理,我们能够高效地从管易云·奇门接口获取销售退货数据,并进行必要的数据清洗和转换,为后续的数据写入和分析打下坚实基础。 金蝶云星空API接口配置

轻易云数据集成平台:将源数据ETL转换为金蝶云星辰V2API接口格式

在数据集成过程中,轻易云数据集成平台提供了强大的ETL(Extract, Transform, Load)功能,能够将源平台的数据转换为目标平台所需的格式。本文将重点探讨如何将销售退货数据转换为金蝶云星辰V2 API接口所能接收的格式,并最终写入目标平台。

数据请求与清洗

在开始数据转换之前,首先需要从源平台获取原始数据,并进行必要的清洗和预处理。这一步骤确保了后续的数据转换过程能够顺利进行。假设我们已经完成了这一步骤,现在进入关键的ETL阶段。

数据转换与写入

在轻易云数据集成平台中,我们可以通过元数据配置来定义如何将源数据映射到目标API接口字段。以下是针对销售退货场景的具体元数据配置:

{
  "api": "/jdy/v2/scm/sal_in_bound",
  "effect": "EXECUTE",
  "method": "POST",
  "number": "1",
  "id": "1",
  "name": "1",
  "idCheck": true,
  "request": [
    {"field":"bill_no","label":"单据编码","type":"string","describe":"单据编码","value":"{code}"},
    {"field":"bill_date","label":"出库日期","type":"string","describe":"出库日期","value":"{create_date}"},
    {"field":"customer_number","label":"客户编码","type":"string","describe":"客户编码","value":"{shop_code}"},
    {"field":"remark","label":"备注","type":"string","describe":"备注","value":"{reason}"},
    {
      "field": "material_entity",
      "label": "商品分录",
      "type": "array",
      "value": "details",
      "children": [
        {"field":"material_number","label":"商品编码","type":"string","value":"{{details.item_code}}"},
        {"field":"stock_number","label":"仓库编码","type":"string","value":"{warehousein_code}"},
        {"field":"qty","label":"数量","type":"string","value":"{{details.qty}}"},
        {
          "field": "unit_id",
          "label": "单位id",
          "type": "string",
          "value": "_mongoQuery 3cd13cee-62b8-301c-bc8c-9605ae0f6fa3 findField=content.base_unit_id where={\"content.number\":{\"$eq\":\"{{details.item_code}}\"}}"
        },
        {"field":"all_amount","label":"价税合计","type":"float","value":"{{details.amount_after}}"},
        {
          "field": "is_free",
          "label": "是否赠品",
          "type": "string",
          "value": "_function case '{{details.amount_after}}' when 0 then 'true' else 'false' end"
        }
      ]
    },
    {
      "field": "custom_field",
      "label": "自定义字段",
      "type": "object",
      children: [
        {"field": “custom_field__1__36dyhyxieq9e03p1", “label”: “外部单号”, “type”: “string”, “value”: “{platform_code}”}
      ]
    },
    {"field”: “reverse_condition_calculate”, “label”: “是否反算单价”, “type”: “bool”, “value”: “true”}
  ]
}

元数据配置解析

  1. 基础字段映射

    • bill_no(单据编码):映射到源数据中的 {code} 字段。
    • bill_date(出库日期):映射到 {create_date}
    • customer_number(客户编码):映射到 {shop_code}
    • remark(备注):映射到 {reason}
  2. 商品分录字段映射

    • material_entity 是一个数组类型,包含多个商品分录,每个分录包含以下字段:
      • material_number(商品编码):映射到 {{details.item_code}}
      • stock_number(仓库编码):映射到 {warehousein_code}
      • qty(数量):映射到 {{details.qty}}
      • unit_id(单位id):通过 _mongoQuery 查询获取,查询条件是 content.number 等于 {{details.item_code}}
      • all_amount(价税合计):映射到 {{details.amount_after}}
      • is_free(是否赠品):通过 _function case 判断,如果金额为0,则为赠品。
  3. 自定义字段

    • 包含一个自定义字段 custom_field__1__36dyhyxieq9e03p1,对应外部单号,映射到 {platform_code}
  4. 其他设置

    • reverse_condition_calculate 设置为布尔值 true,表示是否反算单价。

实际应用案例

假设我们有一条销售退货记录,其原始数据如下:

{
  code: 'TH20231001',
  create_date: '2023-10-01',
  shop_code: 'CUST001',
  reason: '产品质量问题',
  details: [
    {item_code: 'ITEM001', qty: '10', amount_after: '100.00'},
    {item_code: 'ITEM002', qty: '5', amount_after: '0.00'}
  ],
  platform_code: 'EXT123456'
}

根据上述元数据配置,这条记录会被转换为如下格式并通过API接口写入金蝶云星辰V2:

{
  bill_no: 'TH20231001',
  bill_date: '2023-10-01',
  customer_number: 'CUST001',
  remark: '产品质量问题',
  material_entity: [
    {
      material_number: 'ITEM001',
      stock_number: '{warehousein_code}',
      qty: '10',
      unit_id: '<查询结果>',
      all_amount: '100.00',
      is_free: 'false'
    },
    {
      material_number: 'ITEM002',
      stock_number: '{warehousein_code}',
      qty: '5',
      unit_id: '<查询结果>',
      all_amount: '0.00',
      is_free: 'true'
    }
  ],
  custom_field:{
    custom_field__1__36dyhyxieq9e03p1:'EXT123456'
},
reverse_condition_calculate:true
}

通过以上步骤,我们成功地将源平台的数据转换并写入目标平台金蝶云星辰V2,实现了不同系统间的数据无缝对接。 用友与WMS系统接口开发配置

更多系统对接方案