如何使用轻易云将吉客云奇门销售订单转换为金蝶云星空出库单

  • 轻易云集成顾问-钟家寿
### 系统对接集成案例分享:吉客云·奇门数据集成到金蝶云星空 在企业的日常运营中,数据多个系统之间的无缝对接和高效处理是关键。本文将介绍如何通过轻易云平台实现“吉客云·奇门->金蝶”的线下销售订单到销售出库单的数据集成方案。本次实施的方案名称为(吉客云奇门->金蝶)(线下)销售订单->销售出库单9090。 首先,为了确保从吉客云·奇门获取的数据不漏单,我们采用了定时可靠的抓取机制,通过调用jackyun.tradenotsensitiveinfos.list.get接口,从源头保证数据完整性。同时,为应对大量的数据传输需求,我们设计了一套高效批量写入流程,将处理后的数据快速写入到金蝶云星空系统中,使用其提供的batchSave接口。 在实际操作过程中,一个核心问题就是如何处理两端系统之间的数据格式差异。我们通过定制化的数据映射规则,对不同字段进行一一对应,实现从源系统向目标系统的无缝转换。此外,对于分页和限流等技术挑战,则采取分片处理及动态请求控制策略,以避免抓取过程中出现超时或泄露风险。 为了进一步提升稳定性,我们创建了一整套异常处理与错误重试机制。在任意节点发生错误时,能够及时捕捉并重新尝试执行特定步骤,以保障整体任务顺利完成。而实时监控与日志记录功能则帮助我们全面掌握各环节状态,在任何突发情况发生时都能迅速定位并解决问题。 ![金蝶云星空API接口配置](https://pic.qeasy.cloud/D28.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台调用吉客云·奇门接口获取并加工数据 在数据集成过程中,调用源系统的API接口是关键的一步。本文将详细探讨如何使用轻易云数据集成平台调用吉客云·奇门接口`jackyun.tradenotsensitiveinfos.list.get`,并对获取的数据进行初步加工。 #### 接口配置与请求参数 在轻易云数据集成平台中,配置元数据是实现接口调用的基础。以下是针对`jackyun.tradenotsensitiveinfos.list.get`接口的元数据配置: ```json { "api": "jackyun.tradenotsensitiveinfos.list.get", "effect": "QUERY", "method": "POST", "number": "tradeNo", "id": "tradeNo", "idCheck": true, "request": [ {"field": "startModified", "label": "startModified", "type": "string", "value": "{{LAST_SYNC_TIME|datetime}}"}, {"field": "endModified", "label": "endModified", "type": "string", "value": "{{CURRENT_TIME|datetime}}"}, {"field": "pageSize", "label": "pageSize", "type": "string", "describe":"111", "value":"{PAGINATION_PAGE_SIZE}"}, {"field": "pageIndex", "label":"pageIndex", "type":"string", "describe":"111","value":"{PAGINATION_START_PAGE}"}, {"field":"fields","label":"fields","type":"string","describe":"111","value":"tradeNo,orderNo,shopName,companyName,warehouseName,logisticName,mainPostid,goodsDetail.goodsNo,flagNames,columnExt,sourceAfterNo,goodsDetail.outerId,pickUpCode,expense.expenseFee,expense.expenseItemName,billDate,goodsPlatDiscountFee,goodsDetail.shareOrderDiscountFee,goodsDetail.shareOrderPlatDiscountFee,customizeGoodsColumn9,goodsDetail.goodsId,goodsDetail.goodsNo,goodsDetail.goodsName,goodsDetail.specName,goodsDetail.barcode,goodsDetail.sellCount,goodsDetail.unit,sellPrice,sellTotal,costTotal,taxFeeTotal,favourableFeeTotal"} ], ... } ``` #### 请求参数解析 1. **时间参数**: - `startModified` 和 `endModified` 分别表示查询的起始和结束时间,使用模板变量 `{{LAST_SYNC_TIME|datetime}}` 和 `{{CURRENT_TIME|datetime}}` 动态填充。 2. **分页参数**: - `pageSize` 和 `pageIndex` 用于控制分页查询,确保一次请求不会返回过多数据。 3. **字段选择**: - `fields` 参数指定了需要返回的字段列表,包括交易编号、订单编号、店铺名称等详细信息。 4. **过滤条件**: - 配置了多个过滤条件,例如 `shopCode` 必须等于特定值且 `goodsDetail.goodsNo` 不等于特定值等。 #### 数据请求与清洗 通过上述配置,我们可以发起POST请求来获取所需的数据。在实际操作中,轻易云平台会自动处理这些请求,并返回符合条件的数据集。接下来,我们需要对这些数据进行清洗和初步加工。 1. **数据扁平化**: - 元数据配置中的 `"beatFlat":["goodsDetail","goodsDelivery"]` 表示需要对嵌套结构的数据进行扁平化处理,将复杂的嵌套对象转换为简单的键值对结构,便于后续处理。 2. **字段校验与转换**: - 对返回的数据进行字段校验,例如检查 `tradeNo` 是否存在,并根据业务需求对某些字段进行类型转换或格式化处理。 3. **异常处理**: - 在数据清洗过程中,需要捕获并处理可能出现的异常情况,如字段缺失或格式错误,以确保数据质量。 #### 数据存储与下一步处理 经过清洗和初步加工后的数据,可以进一步写入目标系统(如金蝶),或者存储在中间数据库中供后续使用。在此过程中,需要注意以下几点: 1. **一致性校验**: - 确保写入目标系统的数据与源系统保持一致,避免因数据不一致导致业务问题。 2. **日志记录与监控**: - 对每次接口调用和数据处理过程进行详细的日志记录,并设置监控告警机制,以便及时发现和解决问题。 通过以上步骤,我们完成了从吉客云·奇门接口获取并加工销售订单数据的全过程。这一过程不仅提高了数据集成的效率,也为后续的数据分析和业务决策提供了可靠的数据支持。 ![如何对接钉钉API接口](https://pic.qeasy.cloud/S5.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将吉客云奇门销售订单转换为金蝶云星空销售出库单 在数据集成过程中,ETL(提取、转换、加载)是关键步骤之一。本文将详细探讨如何使用轻易云数据集成平台将吉客云奇门的销售订单数据转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。 #### 数据请求与清洗 首先,从吉客云奇门获取销售订单数据。假设我们已经完成了这一阶段,并且得到了结构化的数据。接下来,我们需要对这些数据进行转换,以适配金蝶云星空的API接口要求。 #### 数据转换与写入 ##### API接口配置 根据提供的元数据配置,我们需要调用金蝶云星空的`batchSave` API,使用POST方法提交请求。请求体中包含多个字段,这些字段需要从源数据中提取并进行适当的转换。 ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "method": "merge", "field": "tradeNo", "bodyName": "details", "bodySum": ["goodsDetail_goodsDelivery_sendCount"], "header": ["tradeNo", "shopCode", "warehouseCode", "sourceTradeNos", "consignTime", "customerCode", "onlineTradeNo"], "body": ["goodsDetail_goodsNo", "goodsDetail_goodsDelivery_sendCount", "goodsDetail_goodsDelivery_batchamount", "goodsDetail_goodsDelivery_batchNo", "goodsDetail_shareFavourableAfterFee", "goodsDetail_sellTotal", "goodsDetail_sellCount"] } } ``` ##### 请求字段解析 1. **单据类型** (`FBillTypeID`): 固定值 `XSCKD01_SYS`。 2. **单据编号** (`FBillNo`): 对应源数据中的 `tradeNo`。 3. **日期** (`FDate`): 转换 `consignTime` 为日期格式。 4. **销售组织** (`FSaleOrgId`): 固定值 `100`。 5. **客户** (`FCustomerID`): 对应源数据中的 `customerCode`。 6. **发货组织** (`FStockOrgId`): 固定值 `100`。 7. **备注** (`FNote`): 对应源数据中的 `sellerMemo`。 8. **明细信息** (`FEntity`): - **物料编码** (`FMaterialID`): 对应 `details.goodsDetail_goodsNo`。 - **实发数量** (`FRealQty`): 对应 `details.goodsDetail_goodsDelivery_sendCount`。 - **含税单价** (`FTaxPrice`): 通过计算得到,公式为 `details.goodsDetail_shareFavourableAfterFee / details.goodsDetail_sellCount`。 - **是否赠品** (`FIsFree`): 根据 `details.goodsDetail_sellTotal > 0 ? 'false' : 'true'` 判断。 - **仓库** (`FStockID`): 对应源数据中的 `warehouseCode`, 并通过映射到金蝶系统中的仓库编码。 ##### 示例请求体 以下是一个示例请求体,展示了如何将上述字段映射到金蝶云星空API所需的格式: ```json { "FormId": "SAL_OUTSTOCK", "Operation": "Save", "IsAutoSubmitAndAudit": true, "IsVerifyBaseDataField": false, "SubSystemId": 21, ... { ... { ... { ... { ... { ... { ... { ... { ... { FBillTypeID: { value: 'XSCKD01_SYS' }, FBillNo: { value: '{tradeNo}' }, FDate: { value: '{{consignTime|date}}' }, FSaleOrgId: { value: '100' }, FCustomerID: { value: '{customerCode}' }, FStockOrgId: { value: '100' }, FNote: { value: '{sellerMemo}' }, FEntity: [ { FMaterialID: { value: '{{details.goodsDetail_goodsNo}}' }, FRealQty: { value: '{{details.goodsDetail_goodsDelivery_sendCount}}' }, FTaxPrice: { value: '_function {{details.goodsDetail_shareFavourableAfterFee}}/{{details.goodsDetail_sellCount}}' }, FIsFree: { value: '_function CASE WHEN {{details.goodsDetail_sellTotal}}>0 THEN \'false\' ELSE \'true\' END' }, FStockID: { value: '{warehouseCode}', mapping:{ target:'63bbf565ec1c6752de523c43', direction:'reverse'} } } ] } } } } } } } } } } ``` 在这个示例中,我们展示了如何将吉客云奇门的数据字段逐一映射到金蝶云星空API所需的格式。这种方式确保了不同系统之间的数据无缝对接,同时保证了数据的一致性和准确性。 通过这种方式,我们可以高效地完成从吉客云奇门到金蝶云星空的数据集成,为企业业务流程的自动化和智能化提供强有力的支持。 ![金蝶云星空API接口配置](https://pic.qeasy.cloud/T22.png~tplv-syqr462i7n-qeasy.image)