将源数据跨平台转换并写入金蝶云星空的流程解析

  • 轻易云集成顾问-曹润
### 正常线上退货对接销售退货单---奇门 在本案例中,我们将详细分析如何实现聚水潭·奇门数据集成到金蝶云星空,并具体探讨两个系统对接的技术细节。本次任务的核心是通过轻易云平台,高效、可靠地实现正常线上退货的数据从聚水潭·奇门自动传输至金蝶云星空,生成相应的销售退货单。 #### 确保集成不漏单 首先,通过调用聚水潭·奇门API `jushuitan.refund.list.query` 获取退款信息。为了确保每一笔退款都被准确抓取,我们需要定时可靠地轮询接口,同时处理分页和限流问题。特别是在大批量数据获取过程中,合理设置分页参数并加入限流机制,以避免超出接口请求限制。 ```json { "method": "jushuitan.refund.list.query", ... } ``` #### 批量快速写入金蝶云星空 取得数据后,下一步是利用金蝶云星空提供的 `batchSave` API 将这些数据迅速写入到目标系统。这一步不仅要考虑效率,更要注意数据格式差异的映射与转换。例如,表字段命名不一致或日期格式不同的问题,都需提前在映射规则中妥善处理。 ```json { "method": "batchSave", ... } ``` #### 实施实时监控与错误重试机制 为保证整个流程透明可视且具备高容错性,在集成过程中我们采取了实时监控和日志记录手段,对每一步骤进行动态追踪。当发生异常时,立即触发错误重试机制,使流程能够自愈。例如,当连接失败或写入冲突时,会自动重新尝试操作直至成功,这样有效增加了系统的鲁棒性和稳定性。 此过程不仅解决了企业在日常运营中的诸多痛点,还为以后的扩展提供了坚实基础。在文章后续部分,我们将深入解析每一步骤中的关键技术实现及优化方案,包括详细代码示例和注意事项等。 ![如何对接金蝶云星空API接口](https://pic.qeasy.cloud/D8.png~tplv-syqr462i7n-qeasy.image) ### 调用聚水潭·奇门接口jushuitan.refund.list.query获取并加工数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用聚水潭·奇门接口`jushuitan.refund.list.query`来获取并加工数据。 #### 接口概述 `jushuitan.refund.list.query`接口用于查询退货单信息。通过该接口,我们可以获取到售后单的详细信息,包括售后类型、货物状态等。以下是元数据配置中的关键字段和参数: - **api**: `jushuitan.refund.list.query` - **method**: `POST` - **number**: `as_id` - **id**: `as_id` - **request**: 请求参数列表 - **condition**: 数据过滤条件 #### 请求参数配置 在调用接口时,需要配置一系列请求参数,以确保能够准确地获取所需的数据。以下是主要的请求参数及其配置: 1. **page_index(页码)** - 类型:string - 描述:页码默认1 - 值:`{PAGINATION_START_PAGE}` 2. **page_size(页数)** - 类型:string - 描述:页数 - 值:`{PAGINATION_PAGE_SIZE}` 3. **start_time(开始时间)** - 类型:datetime - 描述:开始时间 - 值:`{{LAST_SYNC_TIME|datetime}}` 4. **end_time(结束时间)** - 类型:datetime - 描述:结束时间 - 值:`{{CURRENT_TIME|datetime}}` 5. **status(售后单状态)** - 类型:string 6. **type(售后类型)** - 类型:string 7. **good_status(货物状态)** - 类型:string - 值:`SELLER_RECEIVED` 这些参数确保了我们能够分页获取特定时间段内的退货单信息,并且可以根据售后单状态、售后类型和货物状态进行筛选。 #### 数据过滤条件 为了确保数据的准确性和有效性,我们需要设置一些过滤条件。元数据配置中定义了两个主要的过滤条件: 1. **condition_bk** 2. **condition** 这两个条件实际上是相同的,具体如下: ```json [ {"field":"o_id","logic":"neq","value":-1}, {"field":"items.r_qty","logic":"gt","value":0} ] ``` 这些条件确保了我们只获取有效的订单,即订单ID不等于-1,并且退货数量大于0。 #### 数据处理与清洗 在获取到原始数据后,需要对数据进行清洗和转换,以便后续的数据写入操作。在轻易云平台上,可以利用自动填充响应功能(autoFillResponse),将API返回的数据直接映射到目标系统中。 例如,对于返回的退货单信息,可以根据业务需求进行如下处理: 1. 提取必要字段,如订单ID、商品名称、退货数量等。 2. 对日期格式进行标准化处理。 3. 根据业务规则,对某些字段进行计算或转换。 #### 实践案例 假设我们需要从聚水潭·奇门系统中获取2023年10月1日至2023年10月31日之间所有已收到货物的退货单信息,并将其写入到我们的销售退货单系统中。具体步骤如下: 1. 配置请求参数: ```json { "page_index": "1", "page_size": "100", "start_time": "2023-10-01T00:00:00", "end_time": "2023-10-31T23:59:59", "good_status": "SELLER_RECEIVED" } ``` 2. 设置过滤条件: ```json [ {"field":"o_id","logic":"neq","value":-1}, {"field":"items.r_qty","logic":"gt","value":0} ] ``` 3. 调用接口并处理返回的数据,根据业务需求进行清洗和转换。 通过上述步骤,我们可以高效地从聚水潭·奇门系统中获取所需的退货单信息,并将其无缝集成到我们的销售退货单系统中。这不仅提升了数据处理效率,还保证了数据的一致性和准确性。 ![如何开发用友BIP接口](https://pic.qeasy.cloud/S9.png~tplv-syqr462i7n-qeasy.image) ### 利用轻易云数据集成平台将源数据转换为金蝶云星空API接口格式并写入目标平台 在数据集成生命周期的第二阶段,我们需要将已经集成的源平台数据进行ETL(提取、转换、加载)处理,转化为金蝶云星空API接口所能够接收的格式,并最终写入目标平台。本文将详细探讨这一过程中的技术细节和实现方法。 #### 1. 数据请求与清洗 首先,我们需要从源系统中提取相关数据,并进行初步清洗。假设我们已经完成了这一步,接下来进入关键的ETL转换阶段。 #### 2. 数据转换与写入 在数据转换阶段,我们利用轻易云的数据集成平台,将提取到的数据按照金蝶云星空API接口的要求进行格式化处理。以下是具体的元数据配置示例: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 1, "method": "batchArraySave" }, "request": [ { "field": "FBillTypeID", "label": "单据类型", "type": "string", "describe": "单据类型", "parser": { "name": "ConvertObjectParser", "params": "FNumber" }, "value": "XSXSTHD" }, { ... } ], ... } ``` #### 核心字段解析与转换 1. **单据类型 (FBillTypeID)**: - 类型:字符串 - 描述:单据类型 - 转换器:`ConvertObjectParser` - 参数:`FNumber` - 值:`XSXSTHD` 2. **单据编号 (FBillNo)**: - 类型:字符串 - 描述:单据编号 - 值:`{bfn_num}` 3. **销售组织 (FSaleOrgId)**: - 类型:字符串 - 描述:组织 - 转换器:`ConvertObjectParser` - 参数:`FNumber` - 值:`_findCollection find F_XC_Base_Fnumber from ... where FNumber={shop_id}` 4. **日期 (FDate)**: - 类型:字符串 - 描述:日期 - 值:`{items_receive_date}` 5. **库存组织 (FStockOrgId)**: - 类型:字符串 - 描述:组织 - 转换器:`ConvertObjectParser` - 参数:`FNumber` - 值:`100` 6. **退货客户 (FRetcustId)**: - 类型:字符串 - 描述:基础资料 - 转换器:`ConvertObjectParser` - 参数:`FNumber` - 值:`{shop_id}` 7. **备注 (FHeadNote)**: - 类型:字符串 - 描述:多行文本 - 值:`{remark}` 8. **业务员 (F_XC_Text)**: - 类型:字符串 - 描述:多行文本 - 值: `_findCollection find so_id from ... where o_id={o_id}` #### 明细信息(FEntity) 明细信息部分包含多个子字段,每个子字段都需要进行相应的转换和映射。例如: - **物料编码 (FMaterialId)**: ```json { "field": "FMaterialId", "label": "物料编码", ... "value": "{items_sku_id}", ... } ``` - **实退数量 (FRealQty)**: ```json { ... "field": "FRealQty", ... "value": "{items_r_qty}", ... } ``` - **含税单价 (FTaxPrice)**: ```json { ... "field": "FTaxPrice", ... "value": "_function {items_amount}/{items_r_qty}", ... } ``` - **批号 (FLot)** 和**生产日期 (FProduceDate)**: ```json { ... { ... field: 'FLot', value: '_function case \'{wms_co_id}\' when \'12926523\' then \'230605\' else \'{items_batch_no}\' end', parser: { name: 'ConvertObjectParser', params: 'FNumber' } parent: 'FEntity' }, { field: 'FProduceDate', value: '_function case \'{wms_co_id}\' when \'12926523\' then \'2023-06-06\' else \'{items_product_date}\' end', parent: 'FEntity' }, { field: 'FExpiryDate', value: '_function case \'{wms_co_id}\' when \'12926523\' then \'2026-06-05\' else \'{items_expiration_date}\' end' }, } ``` 这些字段通过条件判断和函数计算来确保不同仓库ID对应不同的批号、生产日期和有效期。 #### 财务信息(SubHeadEntity) 财务信息部分同样包含多个子字段,例如: - **结算组织 (FSettleOrgId)**: ```json { "field":"FSettleOrgId", "label":"结算组织", "type":"string", "describe":"组织", "parser":{"name":"ConvertObjectParser","params":"FNumber"}, "value":"_findCollection find F_XC_Base_Fnumber from ... where FNumber={shop_id}", "parent":"SubHeadEntity" } ``` - **结算币别 (FSETTLECURRID)**: ```json { "field":"FSETTLECURRID", "label":"结算币别", "type":"string", "describe":"基础资料", "parser":{"name":"ConvertObjectParser","params":"FNumber"}, "value":"PRE001", "parent":"SubHeadEntity" } ``` #### 执行操作与写入目标平台 最后,通过配置以下参数来执行保存操作并自动提交审核: ```json { "otherRequest":[{"field":"FormId","label":"业务对象表单Id","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"SAL_RETURNSTOCK"},{"field":"Operation","label":"执行的操作","type":"string","value":"Save"},{"field":"IsAutoSubmitAndAudit","label":"提交并审核","type":"bool","value":"true"},{"field":"IsVerifyBaseDataField","label":"验证基础资料","type":"bool","describe":"是否验证所有的基础资料有效性,布尔类,默认false(非必录)","value":"false"},{"field":"SubSystemId","label":"系统模块","type":"string","describe":"默认仓库模块","value":"21"}] } ``` 通过以上配置,我们可以确保数据按照金蝶云星空API接口要求进行正确的格式化和转换,并成功写入目标平台。 ![如何开发企业微信API接口](https://pic.qeasy.cloud/T17.png~tplv-syqr462i7n-qeasy.image)