详解管易云·奇门到金蝶云星空的销售退货数据集成流程

  • 轻易云集成顾问-谢楷斌

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

在本篇技术案例中,我们将分享如何利用轻易云数据集成平台,将管易云·奇门的退货单信息无缝对接至金蝶云星空系统,实现销售退货数据的高效同步。具体方案名称为“管易退货单-->金蝶销售退货单(销售退货同步-手工运维-2)”。这个过程中,主要涉及两个关键API接口:从管易云·奇门获取数据的gy.erp.trade.return.get和向金蝶云星空写入数据的batchSave

为了确保整个流程的顺畅执行,我们采用了以下几项关键技术措施:

  1. 高吞吐量的数据写入能力

    • 使用批量集成功能来处理大规模的数据,使得大量来自管易云·奇门的退货单能够快速写入到金蝶云星空。这不仅提升了效率,还减少了可能的数据积压情况。
  2. 实时监控与告警系统

    • 集成过程中的每一个环节都受到集中监控,一旦出现任何异常或性能问题,系统会立即触发告警机制,以保证故障能够及时被发现和解决。
  3. 自定义数据转换逻辑

    • 根据实际业务需求,对从管易云·奇门获取的原始数据信息进行必要的转换,以适应金蝶云星空的数据格式要求。这一步通过可视化的数据流设计工具完成,使得转换逻辑直观且容易管理。
  4. 分页和限流处理

    • 在调用 gy.erp.trade.return.get 接口时,为避免超出API请求限制及保障稳定性,我们采取了分页查询并设置合理限流策略,确保每次接口调用既不会被拒绝,也能满足性能要求。
  5. 错误重试机制与日志记录

    • 针对可能发生的数据传输错误,如网络不稳等,通过实现错误重试机制,可以自动重新尝试失败操作。同时,通过详细日志记录整个过程中的各类事件,便于后续审计和问题分析。

此次技术实施,不仅有效解决了跨系统间复杂的数据整合问题,还使企业日常运营中的销售退货处理更加高效可靠。在下文中,我们将详细阐述每一个步骤以及具体代码实现细节。 打通金蝶云星空数据接口

调用源系统管易云·奇门接口gy.erp.trade.return.get获取并加工数据

在数据集成的生命周期中,调用源系统接口是关键的第一步。本文将详细介绍如何通过轻易云数据集成平台调用管易云·奇门接口gy.erp.trade.return.get,获取并加工退货单数据。

接口配置与请求参数

为了实现从管易云·奇门获取退货单数据,我们需要配置相应的API接口和请求参数。以下是元数据配置中的关键部分:

{
  "api": "gy.erp.trade.return.get",
  "method": "POST",
  "number": "code",
  "id": "code",
  "pagination": {"pageSize": 100},
  "idCheck": true,
  "request": [
    {"field": "code", "label": "单据编号", "type": "string"},
    {"field": "start_create", "label": "创建时间开始段", "type": "datetime"},
    {"field": "end_create", "label": "创建时间结束段", "type": "datetime"},
    {"field": "in_begin_time", "label": "入库时间开始段", "type": "datetime"},
    {"field": "in_end_time", "label": "入库时间结束段", "type":"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":"express_no","label":"快递单号","type":"string"},
    {"field":"vip_name","label":"会员名称","type":"string"},
    {"field":"agree","label":"同意状态","type":"string"},
    {"field":"receive","label":"入库状态","type":"string", 
        "value":"1"}, // 默认值为1,表示已入库
    {"field":"cancel","label":"作废状态","type":"string"},
    {"field":"no_parcel","label":"是否三无包裹","type":
        "string"},
    {"field":
        "receiver_name",
        "label":
        "退货人姓名",
        "type":
        "string"
    },
    {
        "field":
        "receiver_phone",
        "label":
        "退货人手机",
        "type":
        "string"
     },
     {
        "field":
        "warehousein_code",
        "label":
        "退入仓库代码",
        "type":
        "string"
     },
     {
        "field":
        "warehouseout_code",
        "label":
        "退出仓库代码",
        "type":
        "string"
     },
     {
        "field":
        "modify_start_date",
        "label":
        "修改时间开始段",
        "type":
          string,
          value:
          "{{LAST_SYNC_TIME|datetime}}"
        },
        {
            field:
            modify_end_date,
            label:
            modify_time_end_segment,
            type:
            string,
            value:
            CURRENT_TIME|datetime
        }
   ],
   otherRequest: [
     {
     field: page_no,
     label: 页码,
     type: string,
     describe: 默认为1,
     value: {PAGINATION_START_PAGE}
     },
     {
     field: page_size,
     label: 每页大小,
     type: string,
     describe: 默认为10,
     value: {PAGINATION_PAGE_SIZE}
   }],
   autoFillResponse: true
}

请求参数详解

  • code:单据编号,用于唯一标识每个退货单。
  • start_create / end_create:创建时间的起止范围,用于筛选特定时间段内的退货单。
  • in_begin_time / in_end_time:入库时间的起止范围。
  • shop_code:店铺代码,用于区分不同店铺的数据。
  • drp_tenant_name:分销商名称。
  • platform_code:平台单号。
  • return_type:退货类型代码。
  • express_no:快递单号。
  • vip_name:会员名称。
  • agree:同意状态。
  • receive:入库状态,默认值为1,表示已入库。
  • cancel:作废状态。
  • no_parcel:是否三无包裹。
  • receiver_name / receiver_phone:退货人姓名和手机号码。
  • warehousein_code / warehouseout_code:退入和退出仓库代码。
  • modify_start_date / modify_end_date:修改时间的起止范围,分别使用上次同步时间和当前时间。

数据过滤与分页处理

在实际操作中,我们可能需要对返回的数据进行过滤和分页处理。元数据配置中包含了分页参数page_nopage_size,默认每页大小为10条记录,可以根据需求调整。

此外,通过条件过滤(condition_bk),可以排除不符合条件的数据。例如:

[
  [{"field": 
   platform_code, 
   logic: notlike, 
   value: CKSQ}, 
   { field : platform_code, logic : notlike, value : XXXSDD }, 
   { field : approve , logic : eqv2 , value : 1 }, 
   { field : shop_code , logic : neqv2 , value : CB0066 }, 
   { field : shop_code , logic : neqv2 , value : SXF001 }, 
   { field : order_type_name , logic : notlike , value : 维修 }]
]

这些条件确保了我们只获取符合业务需求的数据,提高了数据处理的效率和准确性。

数据清洗与转换

在获取到原始数据后,需要进行清洗和转换,以便后续写入目标系统。轻易云平台提供了强大的数据清洗功能,可以自动填充响应字段(autoFillResponse),并根据预定义规则进行转换。

例如,将日期格式统一转换为目标系统所需的格式,将字符串字段去除空格或特殊字符等。这些操作可以通过轻易云平台的可视化界面轻松完成,无需编写复杂的代码。

实时监控与日志记录

为了确保数据集成过程的透明度和可追溯性,轻易云平台提供了实时监控和日志记录功能。每次API调用、数据清洗和转换操作都会被详细记录,并可以随时查看。这有助于快速定位问题并进行调试,提高整体效率。

通过上述步骤,我们可以高效地从管易云·奇门接口获取并加工退货单数据,为后续的数据写入和业务处理打下坚实基础。在整个过程中,充分利用轻易云平台提供的元数据配置和可视化工具,可以极大简化操作流程,提高工作效率。 金蝶与CRM系统接口开发配置

将管易退货单数据转换并写入金蝶云星空API接口

在数据集成过程中,数据的ETL(提取、转换、加载)是至关重要的一环。本文将详细探讨如何利用轻易云数据集成平台,将从管易系统提取的退货单数据,转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。

1. API接口配置

首先,我们需要配置金蝶云星空的API接口。根据元数据配置,使用batchSave方法进行批量保存操作。以下是主要的配置参数:

  • api: "batchSave"
  • method: "POST"
  • effect: "EXECUTE"
  • idCheck: true

2. 请求参数解析

请求参数包含多个字段,每个字段都有具体的解析和映射规则。以下是几个关键字段的解析:

单据类型(FBillTypeID)
{
    "field": "FBillTypeID",
    "label": "单据类型",
    "type": "string",
    "describe": "单据类型",
    "parser": {
        "name": "ConvertObjectParser",
        "params": "FNumber"
    },
    "value": "_findCollection find order_type_name from 7723935e-2816-3e02-8989-bb0df0b07b86 where code={order_code}",
    "mapping": {
        "target": "65af5c453b91c238504d3a58",
        "direction": "positive"
    }
}

这里使用了ConvertObjectParser进行对象转换,通过order_code从指定集合中查找对应的order_type_name

销售组织(FSaleOrgId)
{
    "field": "FSaleOrgId",
    "label": "销售组织",
    "type": "string",
    "describe": "销售组织",
    "parser": {
        "name": "ConvertObjectParser",
        "params": "FNumber"
    },
    "value": "_function CASE '{shop_code}' WHEN 'SXF001' THEN '103' WHEN 'SXF002' THEN '103' WHEN 'SXF003' THEN '103' WHEN 'SXF004' THEN '103' WHEN 'SXF005' THEN '103' WHEN 'SXF006' THEN '103' ELSE '100' END"
}

通过函数判断shop_code来确定销售组织ID,这里使用了条件判断语句来进行映射。

库存组织(FStockOrgId)
{
    "field": "FStockOrgId",
    "label": "库存组织",
    "type": "string",
    "describe": "库存组织",
    ...
}

库存组织与销售组织类似,也通过条件判断语句映射。

3. 明细信息处理

明细信息部分包含多个子字段,每个子字段也有相应的解析和映射规则。例如:

物料编码(FMaterialId)
{
    ...
    {
        "field":"FMaterialId",
        ...
        ,"value":"_findCollection find FNumber from a430738b-c21a-3683-832c-4b519dc241ba where F_UQRW_Text={{details.item_code}}"
        ...
     }
}

通过物料编码从指定集合中查找对应的物料编号。

实退数量(FRealQty)
{
   ...
   {
       ...
       ,"value":"{{details.real_in}}"
       ...
   }
}

直接使用明细中的实际退货数量。

4. 执行操作

最后,需要设置执行操作参数:

{
   ...
   {"field":"FormId","label":"业务对象表单Id","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"SAL_RETURNSTOCK"},
   {"field":"Operation","label":"执行的操作","type":"string","describe":"执行的操作","value":"BatchSave"},
   {"field":"IsAutoSubmitAndAudit","label":"提交并审核","type":"bool","describe":"提交并审核","value":"true"},
   {"field":"IsVerifyBaseDataField","label":"验证基础资料","type":"bool","describe":"是否验证所有的基础资料有效性,布尔类,默认false(非必录)","value":"true"}
}

这些参数确保了数据在写入金蝶云星空时能够自动提交并审核,同时验证基础资料的有效性。

总结

通过上述步骤,我们实现了从管易系统提取退货单数据,并通过轻易云数据集成平台,将其转换为金蝶云星空API接口所能接收的格式,并最终成功写入目标平台。这一过程不仅提高了数据处理效率,还确保了数据的一致性和准确性。 金蝶与SCM系统接口开发配置

更多系统对接方案