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

  • 轻易云集成顾问-吕修远
### 小满客户数据高效集成到金蝶云星空案例分享 在企业管理系统的对接过程中,确保数据准确、实时地流转是关键。本次我们聚焦于如何高效、可靠地将小满OKKICRM的客户数据集成到金蝶云星空。通过合理配置轻易云数据集成平台,本文将展示一个完整的技术实现方案。 为了保证从小满OKKICRM到金蝶云星空的数据不漏单,我们首先设计了定时可靠抓取机制。此机制利用/v1/company/updates API定时获取最新更新的数据,并处理分页和限流问题,确保每次抓取操作均能成功执行且无遗漏。在获取阶段,通过记录日志和状态监控,实现全程可追踪。 针对大量数据写入需求,我们使用了批量写入策略,将获取的大量客户信息快速且安全地写入金蝶云星空。这里调用的是金蝶的batchSave API,该接口支持批量操作,有助于提高效率并减少请求次数。然而,必须注意两个系统之间的数据格式差异,需要进行必要的数据转换,使之符合目标系统要求。 另外,对接过程中的异常处理与错误重试也是必不可少的一环。当出现网络波动或接口响应超时时,由于是API交互频繁的问题点之一,我们设置了完善的重试机制,以保证最终一致性。同时,在整个链路上配备详细而清晰的实时监控与日志记录,可以及时发现和解决潜在的问题,大幅降低风险和运维成本。 通过以上步骤,不仅实现了高效、安全的小满OKKICRM客户数据向金蝶云星空的无缝对接,还大幅提升了集成质量和工作效率,为业务提供坚实保障。这一案例也为其他类似场景下的数据对接提供了一种稳健、灵活的方法论。 ![钉钉与ERP系统接口开发配置](https://pic.qeasy.cloud/D24.png~tplv-syqr462i7n-qeasy.image) ### 调用小满OKKICRM接口/v1/company/updates获取并加工数据 在数据集成的生命周期中,调用源系统接口获取数据是至关重要的第一步。本文将详细探讨如何通过轻易云数据集成平台调用小满OKKICRM接口`/v1/company/updates`来获取并加工客户数据。 #### 接口概述 小满OKKICRM接口`/v1/company/updates`用于查询客户更新信息。该接口支持多种查询参数,允许用户根据不同需求灵活配置请求。以下是该接口的元数据配置: ```json { "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_index` 和 `count`: 用于分页控制,分别表示起始页和每页记录数。 - `removed`: 是否查询已删除的数据。 - `all`: 是否查询所有客户。 - `group_id`: 客户分组ID,用于筛选特定分组的客户。 - `date`, `start_time`, `end_time`: 用于时间范围筛选。 例如,如果我们需要获取从上次同步时间到当前时间内更新的所有客户,可以配置如下: ```json { "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. **FCreateOrgId**和**FUseOrgId**: 创建组织和使用组织,固定值为`101`,并通过`ConvertObjectParser`进行转换。 6. **FTRADINGCURRID**: 结算币别,通过MongoDB查询获取对应的币别编号。 7. **FSALDEPTID**和**FSELLER**: 销售部门和销售员,通过MongoDB查询获取对应的数据,并通过`ConvertObjectParser`进行转换。 8. **其他字段**: 如地址、国家、客户星级等,直接从源数据中提取或通过相应的解析器进行处理。 #### 数据转换与写入 在完成上述字段解析后,我们需要将这些字段按照金蝶云星空API接口要求的格式进行封装,并通过POST请求发送到目标平台。以下是一个示例请求体: ```json { ... { 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系统接口开发配置](https://pic.qeasy.cloud/T19.png~tplv-syqr462i7n-qeasy.image)