实现数据在金蝶云星空与源平台间高效转换与写入

  • 轻易云集成顾问-吕修远

小满客户数据高效集成到金蝶云星空案例分享

在企业管理系统的对接过程中,确保数据准确、实时地流转是关键。本次我们聚焦于如何高效、可靠地将小满OKKICRM的客户数据集成到金蝶云星空。通过合理配置轻易云数据集成平台,本文将展示一个完整的技术实现方案。

为了保证从小满OKKICRM到金蝶云星空的数据不漏单,我们首先设计了定时可靠抓取机制。此机制利用/v1/company/updates API定时获取最新更新的数据,并处理分页和限流问题,确保每次抓取操作均能成功执行且无遗漏。在获取阶段,通过记录日志和状态监控,实现全程可追踪。

针对大量数据写入需求,我们使用了批量写入策略,将获取的大量客户信息快速且安全地写入金蝶云星空。这里调用的是金蝶的batchSave API,该接口支持批量操作,有助于提高效率并减少请求次数。然而,必须注意两个系统之间的数据格式差异,需要进行必要的数据转换,使之符合目标系统要求。

另外,对接过程中的异常处理与错误重试也是必不可少的一环。当出现网络波动或接口响应超时时,由于是API交互频繁的问题点之一,我们设置了完善的重试机制,以保证最终一致性。同时,在整个链路上配备详细而清晰的实时监控与日志记录,可以及时发现和解决潜在的问题,大幅降低风险和运维成本。

通过以上步骤,不仅实现了高效、安全的小满OKKICRM客户数据向金蝶云星空的无缝对接,还大幅提升了集成质量和工作效率,为业务提供坚实保障。这一案例也为其他类似场景下的数据对接提供了一种稳健、灵活的方法论。 钉钉与ERP系统接口开发配置

调用小满OKKICRM接口/v1/company/updates获取并加工数据

在数据集成的生命周期中,调用源系统接口获取数据是至关重要的第一步。本文将详细探讨如何通过轻易云数据集成平台调用小满OKKICRM接口/v1/company/updates来获取并加工客户数据。

接口概述

小满OKKICRM接口/v1/company/updates用于查询客户更新信息。该接口支持多种查询参数,允许用户根据不同需求灵活配置请求。以下是该接口的元数据配置:

{
  "api": "/v1/company/updates",
  "effect": "QUERY",
  "method": "GET",
  "number": "serial_id",
  "id": "company_id",
  "name": "serial_id",
  "request": [
    {"field":"start_index","label":"第几页","type":"string","describe":"第几页,默认 = 1","value":"1"},
    {"field":"count","label":"每页记录数","type":"string","describe":"每页记录数,默认 = 20","value":"20"},
    {"field":"removed","label":"是否查询已删除数据","type":"string","describe":"默认值: 0,设置=1时查询已删除的数据列表"},
    {"field":"all","label":"查询所有客户","type":"string","describe":"默认值: 1,设置=1查询所有客户,设置=0只查询私海客户"},
    {"field":"group_id","label":"客户分组ID","type":"string","describe":"设置客户分组ID后,只查询对应分组的客户"},
    {"field":"date","label":"日期","type":"date","describe":"查询从此日期到今天为止有更新的客户列表"},
    {"field":"start_time","label":"开始日期","type":"datetime","describe":"开始日期","value":"{{LAST_SYNC_TIME|datetime}}"},
    {"field":"end_time","label":"结束日期","type":"datetime","describe":"结束日期","value":"{{CURRENT_TIME|datetime}}"}
  ],
  "otherRequest": [
    {"field": "info_api", "label": "详情接口", "type": "string", "describe": "详情接口", "value": "/v1/company/info"},
    {"field": "info_key", "label": "详情主键", "type": "string", "describe": "详情主键", "value": "company_id"}
  ],
  "autoFillResponse": true,
  "condition_bk":[[{"field": "管理信息客户阶段", "logic": "notin", "value": ["1-联系(开发,报价)", null]}]],
  "condition":[[{"field": "基本信息是否同步", "logic": "eqv2", "value": ["是"]}]]
}

参数配置与请求构建

在实际操作中,我们需要根据业务需求配置请求参数,以确保获取到所需的数据。以下是一些关键参数及其用途:

  • start_indexcount: 用于分页控制,分别表示起始页和每页记录数。
  • removed: 是否查询已删除的数据。
  • all: 是否查询所有客户。
  • group_id: 客户分组ID,用于筛选特定分组的客户。
  • date, start_time, end_time: 用于时间范围筛选。

例如,如果我们需要获取从上次同步时间到当前时间内更新的所有客户,可以配置如下:

{
  "start_index": 1,
  "count": 20,
  ...
  {
    ...
    {
      ...
      {
        ...
        {
          ...
          {
            ...
            {
              ...
              {
                ...
                {
                  ...
                  {
                    ...
                    {
                      ...
                      {
                        ...
                        {
                          ...
                          {
                            ...
                            {
                              ...
                              {
                                ...
                                {
                                  ...
![金蝶与SCM系统接口开发配置](https://pic.qeasy.cloud/S12.png~tplv-syqr462i7n-qeasy.image)
### 数据集成生命周期中的ETL转换:将源平台数据写入金蝶云星空API接口

在数据集成生命周期的第二步,ETL(Extract, Transform, Load)转换至关重要。本文将重点探讨如何利用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。

#### API接口配置与调用

在本案例中,我们使用的是金蝶云星空的`batchSave` API接口。该接口通过POST请求实现批量保存客户信息。以下是具体的元数据配置:

```json
{
  "api": "batchSave",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {"field":"FCUSTID","label":"FCUSTID","type":"string","value":"_mongoQuery d4da8655-8013-32f8-badf-d6899c822e72 findField=content.FCUSTID where={\"content.FNumber\" : {\"$eq\":\"{serial_id}\"}}"},
    {"field":"FNumber","label":"客户编码","type":"string","describe":"客户编码","value":"{serial_id}"},
    {"field":"FName","label":"客户名称","type":"string","describe":"客户名称","value":"{name}"},
    {"field":"FShortName","label":"简称","type":"string","describe":"简称"},
    {"field":"FTEL","label":"联系电话","type":"string","describe":"联系电话"},
    {"field":"FCreateOrgId","label":"创建组织","type":"string","describe":"创建组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"101"},
    {"field":"FUseOrgId","label":"使用组织","type":"string","describe":"使用组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"101"},
    {"field":"FTRADINGCURRID","label":"结算币别","type":"string","describe":"结算币别","value":"_mongoQuery d187163c-a439-358b-bf58-848411b65f2a findField=content.FNumber where={\"content.FName\" : {\"$eq\":\"{{基本信息结算货币}}\"}}"},
    {"field": "FADDRESS", "label": "地址", "type": "string", "describe": "地址"},
    {"field": "FCOUNTRY", "label": "国家", "type": "string", "value": "{{特征信息国家地区}}", "parser":{"name": "ConvertObjectParser", "params": "FNumber"}},
    {"field": "FSALDEPTID", "label": "销售部门", "type": "string", "value": "{{基本信息业务部门}}", "parser":{"name": "ConvertObjectParser", "params": "FNumber"}},
    {"field": "FSELLER", "label": "销售员", "type": "string", 
        "value": "_mongoQuery c2d0239e-93b9-35ed-91e4-c270a3d4fc0a findField=content.FStaffId where={\"content.FName\" : {\"$eq\":\"{{基本信息关联销售员}}\"}, \"content.Fdept\": {\"$eq\":\"{{基本信息业务部门}}\"}}"
    },
    {"field":   "F_PAEZ_Text", 
    "label" :   "客户星级",
    "type" :    "string",
    "value" :   "{{基本信息客户编号(客户级别)}}"    
}
],
  ...
}

元数据字段解析

  1. FCUSTID: 使用MongoDB查询获取对应的FCUSTID,根据条件{"content.FNumber" : {"$eq":"' + serial_id + '"}}进行匹配。
  2. FNumber: 客户编码,直接从源数据中提取。
  3. FName: 客户名称,同样从源数据中提取。
  4. FTEL: 联系电话,从源数据中提取。
  5. FCreateOrgIdFUseOrgId: 创建组织和使用组织,固定值为101,并通过ConvertObjectParser进行转换。
  6. FTRADINGCURRID: 结算币别,通过MongoDB查询获取对应的币别编号。
  7. FSALDEPTIDFSELLER: 销售部门和销售员,通过MongoDB查询获取对应的数据,并通过ConvertObjectParser进行转换。
  8. 其他字段: 如地址、国家、客户星级等,直接从源数据中提取或通过相应的解析器进行处理。

数据转换与写入

在完成上述字段解析后,我们需要将这些字段按照金蝶云星空API接口要求的格式进行封装,并通过POST请求发送到目标平台。以下是一个示例请求体:

{
  ...
  {
    FCUSTID: '123456',
    FNumber: 'C001',
    FName: '某某公司',
    FShortName: '某某',
    FTEL: '1234567890',
    FCreateOrgId: '101',
    FUseOrgId: '101',
    FTRADINGCURRID: 'USD',
    FADDRESS: '北京市朝阳区',
    FCOUNTRY: '中国',
    FSALDEPTID: 'D001',
    FSELLER: 'S001',
    F_PAEZ_Text: '五星'
  }
}

该请求体将被发送到金蝶云星空API接口,实现数据的批量保存。

小结

通过以上步骤,我们成功地将源平台的数据进行了ETL转换,并将其写入了目标平台金蝶云星空。这一过程不仅确保了数据的一致性和完整性,还提高了系统间的数据交互效率,为企业的数据管理提供了有力支持。 用友与CRM系统接口开发配置

更多系统对接方案