使用轻易云平台进行吉客云账单数据到金蝶云星空的ETL转换

  • 轻易云集成顾问-林峰
### 吉客云数据集成到金蝶云星空案例分享:实现账单查询对接收款单的技术探讨 在本次系统集成案例中,我们重点展示如何通过轻易云数据集成平台,完成吉客云账单查询与金蝶云星空收款单对接。目标是利用吉客云提供的API接口`acs.billinfo.get`获取账单信息,并将其高效、准确地写入至金蝶云星空,通过其API `batchSave` 完成交付。 #### 确保数据不漏单 首先,我们需要确保从吉客云获取的数据全面且无遗漏。为此,在调用`acs.billinfo.get`接口时,需要处理好分页和限流问题。通过设置优化后的分页参数,可以有效避免数据丢失。此外,定期调用该接口并实时监控抓取情况,能够确保全部符合条件的账单都被及时抓取。 #### 高效批量写入 为了应对大量数据快速写入到金蝶云星空的需求,使用了金蝶旗下高性能API `batchSave` 进行批量提交。在这一过程中要特别注意处理两者之间的数据格式差异。例如,将吉客云返回的数据进行必要的转换和映射,以符合金蝶标准。 #### 定制化数据映射 面对不同源系统间的数据模式差异,我们结合具体业务逻辑,设计了自定义字段映射规则。在传输之前,对关键字段进行了相应转换,使得它们无缝契合到目标系统,同时保持原来数据信息的一致性及完整性。 #### 异常处理与重试机制 针对所有可能出现的问题,包括网络故障或服务异常,我们编写了完善的错误日志记录功能。一旦发现异常情况,会自动触发重试机制,并根据设定策略重新尝试多次提交以保证任务顺利完成。这能显著提高整个流程可靠性和鲁棒性。 以上这些措施不仅解决了具体项目中的痛点,还大大提升了日常运营中的效率和透明度,为进一步深耕智能化运营奠定坚实基础。 ![用友与外部系统接口集成开发](https://pic.qeasy.cloud/D18.png~tplv-syqr462i7n-qeasy.image) ### 调用吉客云接口acs.billinfo.get获取并加工数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用吉客云的`acs.billinfo.get`接口,并对获取的数据进行初步加工。 #### 接口配置与调用 首先,我们需要配置元数据,以便正确调用吉客云的`acs.billinfo.get`接口。以下是关键的元数据配置: ```json { "api": "acs.billinfo.get", "method": "Get", "number": "billAccountNo", "id": "billAccountNo", "pagination": { "pageSize": 50 }, "condition": [ [ { "field": "inAmount", "logic": "gt", "value": "0" } ] ], "idCheck": true, "request": [ { "field": "pageIndex", "label": "分页页码", "type": "string" }, { "field": "pageSize", "label": "分页页数", "type": "string", "value": "100" }, { "field": "settleAccountNameHeader", "label": "账户名", "type": "string" }, { "field": "bookTimeStart", "label": "开始时间", "type": "string", "value":"_function from_unixtime(({CURRENT_TIME}-3456000),'%Y-%m-%d %h:%i:%s')" }, { "field":"bookTimeEnd", "label":"结束时间", “type":"string”, “value”:”{{CURRENT_TIME|datetime}}” }, { “field”:”tradeNos”, “label”:”网店订单号”, “type”:”string” }, { “field”:”billAccountNos”, “label”:”账务流水号”, “type”:”string” }, { “field”:”bizNos”, “label”:”业务流水号”, “type”:”string” }, { “label”:”账单类型”, “field”:”billType”, “type”:”string” }, { “label”:“账单状态“, ”field“:auditStatus, ”type“:string, ”value“:1 }, { ”label“:对账状态, ”field“:checkStatus, ”type“:string, ”value“:1 }, { ”label“:对方帐号, ”field“:oppAccountNum, ”type“:string }, { ”label“:对方户名, ”field“:oppAccountName, ”type“:string }, { ”label“:备注, ”field“:tradeMemoHeader, ”type“:string }, { ”label“:收支项目, ”field“:itemName, ”type“:string }, { ”label“:修改时间开始值, field:gmtModifiedStart, type:string, value:{{LAST_SYNC_TIME|datetime}} }, { label:修改时间结束值, field:gmtModifiedEnd, type:string, value:{{CURRENT_TIME|datetime}} } } ``` #### 数据请求与清洗 在上述配置中,我们定义了多个请求参数,如分页页码(`pageIndex`)、分页页数(`pageSize`)、账户名(`settleAccountNameHeader`)等。这些参数确保我们能够灵活地获取所需的数据。 特别注意的是时间参数的处理: - `bookTimeStart`: 使用函数 `_function from_unixtime(({CURRENT_TIME}-3456000),'%Y-%m-%d %h:%i:%s')` 动态生成开始时间。 - `bookTimeEnd`: 使用模板变量 `{{CURRENT_TIME|datetime}}` 获取当前时间。 这些时间参数确保我们能够获取特定时间范围内的数据,从而提高数据的时效性和准确性。 此外,通过条件过滤 `condition` 参数,我们可以只获取入账金额大于零的数据,这有助于减少无关数据的传输和处理负担。 #### 数据转换与写入 在获取到原始数据后,我们需要对其进行清洗和转换,以便后续写入目标系统。在这个过程中,可以使用轻易云平台提供的可视化工具,对数据进行格式转换、字段映射和业务逻辑处理。例如: 1. **字段映射**: 将吉客云返回的数据字段映射到金蝶收款单所需的字段。 2. **格式转换**: 将日期格式从吉客云的格式转换为金蝶系统所需的格式。 3. **业务逻辑处理**: 根据业务需求,对某些字段进行计算或填充默认值。 通过这些步骤,我们可以确保数据在从源系统到目标系统的传输过程中保持一致性和完整性。 #### 实时监控与调试 轻易云平台提供了实时监控和调试功能,可以帮助我们在数据集成过程中及时发现并解决问题。例如,通过监控日志和错误报告,我们可以快速定位并修复接口调用中的问题,确保数据集成流程顺畅无误。 综上所述,通过合理配置元数据并利用轻易云平台强大的功能,我们可以高效地调用吉客云接口获取并加工数据,为后续的数据集成打下坚实基础。 ![泛微OA与ERP系统接口开发配置](https://pic.qeasy.cloud/S14.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将吉客云账单数据转换并写入金蝶云星空API接口 在数据集成生命周期的第二步中,我们需要将已经集成的源平台数据进行ETL(提取、转换、加载)转换,确保数据符合目标平台金蝶云星空API接口的格式要求,并最终写入目标平台。以下是具体的技术步骤和实现细节。 #### 数据请求与清洗 首先,我们从吉客云获取账单数据,并进行初步清洗和验证,确保数据完整性和准确性。这一步主要涉及数据提取和初步处理,不在本文重点讨论范围内。 #### 数据转换与写入 在这一阶段,我们使用轻易云数据集成平台的元数据配置,将清洗后的账单数据转换为金蝶云星空API接口所能接受的格式,并通过API接口将其写入目标系统。 #### 元数据配置解析 以下是我们使用的元数据配置: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "method": "batchArraySave", "rows": 1, "rowsKey": "array" }, "groupCalculate": { "headerGroup": ["settleAccountName", "bookTime_new", "bizType"], "bodyGroup": ["bizType", "itemCode"], "bodyName": "details", "targetBodyName": "FRECEIVEBILLENTRY", "bodyMaxLine": 50, "calculate": { "inAmount": "$sum" } }, ... } ``` 该配置文件定义了多个关键部分,包括API调用方式、操作方法、分组计算规则等。以下是各个部分的详细解析: 1. **API调用方式**: - `api: batchSave`:指定调用金蝶云星空的批量保存接口。 - `method: POST`:使用POST方法进行请求。 2. **操作方法**: - `operation: { method: batchArraySave, rows: 1, rowsKey: array }`:定义批量保存操作,`rows`表示每次处理一行,`rowsKey`指定数组键名。 3. **分组计算规则**: - `groupCalculate`: 定义了如何对数据进行分组和聚合计算。 - `headerGroup`: 按照结算账户名、业务日期、新业务类型进行头部分组。 - `bodyGroup`: 按照业务类型和项目代码进行体部分组。 - `calculate: { inAmount: $sum }`: 对应收金额字段进行求和计算。 #### 请求字段映射 为了将吉客云的数据正确映射到金蝶云星空API所需的字段,我们需要对每个字段进行详细配置。以下是部分关键字段的映射示例: ```json { ... { "field": "FBillNo", "label": "单据编号", "type": "string", ... }, { ... "field": "FSETTLEORGID", ... "value": "_function CASE '{settleAccountName}' when '生和堂科技(天猫生和堂食品旗舰)支付宝' then 104 else 103 end" }, ... } ``` - **单据编号(FBillNo)**:直接从源数据中提取,无需转换。 - **结算组织(FSETTLEORGID)**:根据结算账户名进行条件判断并赋值。例如,当结算账户名为“生和堂科技(天猫生和堂食品旗舰)支付宝”时,赋值为104,否则赋值为103。 #### 子表明细映射 对于复杂的数据结构,如子表明细,需要进一步嵌套配置: ```json { ... { ... "field":"FRECEIVEBILLENTRY", ... "children":[ { ... {"field":"FSETTLETYPEID","value":"JSFS04_SYS"}, {"field":"FPURPOSEID","value":"SFKYT01_SYS"}, {"field":"FRECTOTALAMOUNTFOR","value":"{{details.inAmount}}"}, {"field":"FACCOUNTID","value":"_findCollection find FNumber from e0411585-ebc3-30fb-ac16-872da1e0bfde where FName={settleAccountName}"}, {"field":"FCOMMENT","value":"{bizType}"}, {"field":"F_sht_promotiontype","value":"{{details.itemCode}}"} } ... ] } } ``` - **结算方式(FSETTLETYPEID)**:固定值“JSFS04_SYS”。 - **收款用途(FPURPOSEID)**:固定值“SFKYT01_SYS”。 - **应收金额(FRECTOTALAMOUNTFOR)**:从详情中提取并聚合计算。 - **我方银行账号(FACCOUNTID)**:根据结算账户名查找对应银行账号。 - **备注(FCOMMENT)**:直接映射业务类型。 - **收支项目(F_sht_promotiontype)**:从详情中提取项目代码并转换。 #### 最终写入 完成所有字段映射后,通过调用金蝶云星空的批量保存API,将转换后的数据写入目标系统。整个过程确保了源系统与目标系统之间的数据无缝对接,实现了高效的数据集成。 通过以上步骤,我们成功地将吉客云账单数据转换为金蝶云星空API可接受的格式,并顺利写入目标系统。这一过程充分利用了轻易云数据集成平台提供的强大功能,实现了不同系统间的数据无缝对接。 ![用友BIP接口开发配置](https://pic.qeasy.cloud/T1.png~tplv-syqr462i7n-qeasy.image)