使用轻易云平台实现吉客云与金蝶云星辰的数据无缝对接

  • 轻易云集成顾问-吴伟
### PACKAGE-吉客云调拨单调出数据对接金蝶云星辰其他出库单案例分析 在不少企业的日常运营中,跨系统的数据集成是一个复杂且充满挑战的任务。本文将详细解析吉客云数据集成到金蝶云星辰V2过程中如何通过API接口实现各类数据的高效、可靠对接。本次分享聚焦于PACKAGE-吉客云调拨单调出数据对接金蝶云星辰其它出库单这一具体方案。 #### 场景概述 此方案涉及两个关键API接口:获取吉客云数据的`erp.storage.goodsdocout.v2`和向金蝶云星辰V2写入数据的`/jdy/v2/scm/inv_other_out`。为了确保不漏单以及大量数据可以快速准确地从一个系统转入另一个系统,我们采用了定时抓取、批量处理等技术手段,并配合异常检测与重试机制,实现了极其稳定的数据流动。 #### 技术要点一览 1. **高吞吐量写入能力**:在集成过程中,面对庞大的业务体量,高吞吐量的数据写入能力显得尤为重要。这不仅提升了整体效率,也避免因延迟导致后续业务环节卡壳。 2. **集中监控与告警**:通过提供实时跟踪功能,能够即时掌握每个API调用、每条记录传输状况,一旦出现问题及时预警,以便迅速定位和调整策略。 3. **自定义转换逻辑**:由于两端系统之间存在内在差异,比如字段格式不同,我们专门设计了一套自定义转换规则,在传输之前先行处理,使得双方无缝衔接。 4. **分页与限流机制**:对于大规模数据拉取而言,加装分页和限流机制能有效减轻服务器压力,同时保证所有待处理数据信息无遗漏,即使是在网络波动情况下依然稳健运行。 5. **错误重试及日志记载**: 在实际操作中不可避免地会遭遇各种意外情况,如网络超时、服务不可用等等。我们设计并实现了一整套错误处理及重试逻辑,再结合详尽完整的日志记录,为后续运维人员提供精准依据。 接下来部分将深入探讨各项技术细节如何具体应用于此场景,以及它们所带来的实际效果,包括但不限于性能改善、安全保障等方方面面内容。 ![如何开发企业微信API接口](https://pic.qeasy.cloud/D9.png~tplv-syqr462i7n-qeasy.image) ### 调用吉客云接口erp.storage.goodsdocout.v2获取并加工数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用吉客云接口`erp.storage.goodsdocout.v2`,并对获取的数据进行初步加工。 #### 接口调用配置 首先,我们需要配置接口调用的元数据。根据提供的元数据配置,可以看到该接口使用POST方法进行数据请求,主要参数如下: - `pageIndex`:分页页码 - `pageSize`:分页页数,默认值为50 - `goodsDocNo`:出库单号 - `startDate`:创建时间的起始时间,使用动态变量`{{LAST_SYNC_TIME|datetime}}` - `endDate`:创建时间的结束时间,使用动态变量`{{CURRENT_TIME|datetime}}` - `inouttype`:类型,固定值为202(调拨出库) - 其他可选参数如来源单号、仓库编号、供应商编号等 这些参数确保了我们能够灵活地控制数据请求的范围和粒度。 #### 请求示例 以下是一个具体的请求示例: ```json { "pageIndex": "1", "pageSize": "50", "startDate": "{{LAST_SYNC_TIME|datetime}}", "endDate": "{{CURRENT_TIME|datetime}}", "inouttype": "202" } ``` 在实际应用中,这些参数会被动态填充,以确保每次请求的数据都是最新的。 #### 数据加工 在获取到原始数据后,我们需要对其进行初步加工。根据元数据配置中的返回参数,我们可以提取出以下关键字段: - `goodsdocNo`: 出库单号 - `inOutDate`: 出库日期 - `gmtCreate`: 创建时间 - `userName`: 创建人名称 - `inouttype`: 类型(固定为202) - `vendCustomerCode`: 客户代码 - `warehouseCode`: 仓库编号 - `warehouseName`: 仓库名称 - `inOutReason`: 出库原因 - `redStatus`: 红字状态 - `financeBillStatus`: 财务单据状态 - 以及详细列表中的商品信息,如商品编号、商品名称、数量等 这些字段将用于后续的数据转换和写入阶段。 #### 自动填充与补偿机制 轻易云平台提供了自动填充响应和遗漏补偿机制。在本案例中,自动填充响应功能会自动处理API返回的数据,并将其映射到预定义的字段上。补偿机制则通过定时任务(如crontab)确保在网络波动或系统故障时,不会遗漏任何重要数据。 例如,补偿机制中的定时任务配置如下: ```json { "crontab": "1 0-6/2 * * *", "takeOverRequest": [ { "field": "startDate", "value": "_function FROM_UNIXTIME( unix_timestamp() -259200 , '%Y-%m-%d %H:%i:%s' )", "type": "string", "label": "接管字段" } ] } ``` 该配置表示每隔两小时检查一次,如果发现有遗漏的数据,将从三天前开始重新抓取。 #### 实践案例 假设我们需要获取最近一次同步后的所有调拨出库单,并将其写入到金蝶云星辰系统中。我们可以按照以下步骤操作: 1. **配置API请求**:按照上述示例设置请求参数。 2. **调用API**:通过轻易云平台发起POST请求。 3. **处理响应**:解析API返回的数据,并提取所需字段。 4. **数据转换**:根据金蝶云星辰系统的要求,对提取的数据进行格式转换。 5. **写入目标系统**:将转换后的数据通过相应接口写入金蝶云星辰系统。 通过以上步骤,我们实现了从吉客云到金蝶云星辰系统的数据无缝对接。这不仅提高了业务流程的效率,还确保了数据的一致性和准确性。 ![金蝶与MES系统接口开发配置](https://pic.qeasy.cloud/S21.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入金蝶云星辰V2 API接口 在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL转换,并转为目标平台所能接收的格式。本文将重点探讨如何使用轻易云数据集成平台将吉客云调拨单调出数据转换为金蝶云星辰V2 API接口所需的格式,并最终写入目标平台。 #### 1. 数据请求与清洗 在此步骤中,我们已经从吉客云获取了调拨单调出的原始数据。假设这些数据包含以下字段: - `inOutDate`:单据日期 - `goodsdocNo`:单据编码 - `goodsDocDetailList`:商品分录列表,其中每个分录包含商品编号(`goodsNo`)、数量(`quantity`)等信息 - `warehouseCode`:仓库编码 #### 2. 数据转换与写入 接下来,我们需要将这些原始数据进行ETL转换,以符合金蝶云星辰V2 API接口的要求。根据元数据配置,目标API接口为 `/jdy/v2/scm/inv_other_out`,采用POST方法提交数据。以下是具体的字段映射和转换逻辑: ```json { "api": "/jdy/v2/scm/inv_other_out", "effect": "EXECUTE", "method": "POST", "number": "id", "id": "id", "name": "id", "idCheck": true, "request": [ { "field": "bill_date", "label": "单据日期", "type": "string", "describe": "单据日期", "value": "{inOutDate}" }, { "field": "bill_no", "label": "单据编码", "type": "string", "describe": "单据编码", "value": "{goodsdocNo}" }, { "field": "trans_type_id", "label": "业务类型id", "type": "string", "describe": "业务类型id", "value": 13 }, { "field": "operation_key", "label": "操作类型", "type": "string", "describe":"操作类型:审核audit、提交submit", “value”: “audit” }, { “field”: “material_entity”, “label”: “商品分录”, “type”: “array”, “describe”: “商品分录”, “value”: “goodsDocDetailList”, “children”: [ { “field”: “material_id”, “label”: “商品”, “type”: “string”, “describe”:“商品”, ”value“: ”{{goodsDocDetailList.goodsNo}}“ }, { ”field“: ”qty“, ”label“: ”数量“, ”type“: ”string“, ”describe“: ”数量“, ”value“: ”{{goodsDocDetailList.quantity}}“ }, { ”field“: ”stock_id“, ”label“: ”仓库“, ”type“: ”string“, ”describe“: ”仓库“, ”value“: "{warehouseCode}" }, { ”field“: ”unit_id“, ”label“: ”单位“, ”type“: ”string“, describe:“单位”, value:“_findCollection find base_unit_id from 1be42e4a-5207-3c1d-8d49-1c7e49f90732 where number={{details_list.goods_no}}” } ] } ] } ``` #### 3. 关键字段解析与映射 **单据日期(bill_date)** - 源字段:`inOutDate` - 目标字段:`bill_date` - 转换方式:直接映射 **单据编码(bill_no)** - 源字段:`goodsdocNo` - 目标字段:`bill_no` - 转换方式:直接映射 **业务类型ID(trans_type_id)** - 固定值:13 **操作类型(operation_key)** - 固定值:audit **商品分录(material_entity)** 该字段是一个数组,包含多个子项,每个子项对应一个商品分录。具体映射如下: - 商品(material_id):从 `goodsDocDetailList.goodsNo` 映射 - 数量(qty):从 `goodsDocDetailList.quantity` 映射 - 仓库(stock_id):从 `warehouseCode` 映射 - 单位(unit_id):通过 `_findCollection find base_unit_id from 1be42e4a-5207-3c1d-8d49-1c7e49f90732 where number={{details_list.goods_no}}` #### 4. 提交请求 完成上述映射和转换后,通过POST方法将处理后的JSON数据提交到金蝶云星辰V2 API接口 `/jdy/v2/scm/inv_other_out`。 ```python import requests import json url = 'https://api.kingdee.com/jdy/v2/scm/inv_other_out' headers = {'Content-Type': 'application/json'} data = { # 按照上述配置生成的数据结构 } response = requests.post(url, headers=headers, data=json.dumps(data)) if response.status_code == 200: print("Data successfully posted to Kingdee Cloud") else: print("Failed to post data:", response.text) ``` 通过这种方式,我们可以确保从吉客云获取的数据经过ETL转换后,符合金蝶云星辰V2 API接口的要求,并成功写入目标系统。这不仅提升了数据处理的效率,还保证了数据在不同系统间的一致性和准确性。 ![钉钉与CRM系统接口开发配置](https://pic.qeasy.cloud/T6.png~tplv-syqr462i7n-qeasy.image)