转换并将数据写入金蝶云星空:实操指南

  • 轻易云集成顾问-林峰
### 吉客云数据集成到金蝶云星空案例分享:包材其他出库对接212v2 在本技术案例中,我们将探讨如何通过轻易云数据集成平台实现吉客云与金蝶云星空之间的无缝数据对接,特别是针对"包材其他出库对接212v2"方案的配置和实施。该方案涉及从吉客云获取出库数据,并批量写入到金蝶云星空,实现两大系统的数据同步。 首先,需要调用吉客云提供的API接口 `erp.storage.goodsdocout.v2` 进行定时可靠的数据抓取。在确保不漏单情况下,对分页及限流问题进行了处理,同时使用自定义转换逻辑适应复杂业务需求。为保障数据质量,利用平台内置的实时监控和日志记录功能,全程追踪每条出库记录。 在完成初步的数据处理后,我们将大量出库数据高效地写入到金蝶云星空,通过API接口 `batchSave` 进行批量提交。这一步关键在于制定合理的映射规则,定制化匹配两个系统间的数据格式差异。此外,为了应对可能出现的异常情况和错误重试机制,在设计过程中也充分考虑各类异常捕获与告警通知,以确保整个集成过程稳定运行。 这次项目展示了轻易云强大的可视化工具,通过直观设计,使得复杂的数据流动变得简洁明了,大幅提升开发效率。集中化监控系统则提供实时性能跟踪,使潜在问题能够被迅速发现并处理,从而保障业务安全平稳推进。在接下来的章节中,将具体介绍这些细节及其实际操作步骤。 ![如何对接企业微信API接口](https://pic.qeasy.cloud/D2.png~tplv-syqr462i7n-qeasy.image) ### 调用吉客云接口erp.storage.goodsdocout.v2获取并加工数据 在数据集成的生命周期中,调用源系统接口获取数据是关键的第一步。本文将详细探讨如何通过轻易云数据集成平台调用吉客云接口`erp.storage.goodsdocout.v2`,并对获取的数据进行初步加工。 #### 接口调用配置 首先,我们需要配置接口调用的元数据。以下是具体的配置细节: - **API**: `erp.storage.goodsdocout.v2` - **Method**: `POST` - **Pagination**: 每页50条记录 - **ID Check**: 启用(`idCheck: true`) 请求参数包括分页信息、时间范围、出库类型等。以下是请求参数的详细配置: ```json { "pageIndex": "分页页码", "pageSize": "分页页数", "goodsDocNo": "出库单号", "gmtModifiedStart": "_function from_unixtime(({LAST_SYNC_TIME}-86400),'%Y-%m-%d %H:%i:%s')", "gmtModifiedEnd": "_function from_unixtime(({CURRENT_TIME}),'%Y-%m-%d %H:%i:%s')", "startDate": "创建时间的起始时间", "endDate": "创建时间的结束时间", "inouttype": "212", // 包材出库 "warehouseCode": "仓库编号", "outBillNo": "外部单号(全模糊匹配)", "vendCode": "供应商编号(往来单位)", "billNo": "上游单据号(关联单号)", "userName": "创建人名称", "selelctFields": "...", // 返回字段列表 } ``` #### 数据请求与清洗 在实际操作中,首先需要构建HTTP请求,根据元数据配置填充请求参数。例如: ```json { "pageIndex": 1, "pageSize": 50, "gmtModifiedStart": "_function from_unixtime(({LAST_SYNC_TIME}-86400),'%Y-%m-%d %H:%i:%s')", "gmtModifiedEnd": "_function from_unixtime(({CURRENT_TIME}),'%Y-%m-%d %H:%i:%s')", ... } ``` 发送请求后,系统会返回包含出库单信息的数据集。为了确保数据质量,需要对返回的数据进行清洗和验证。例如,检查每条记录是否包含必要字段,如`recId`和`goodsdocNo`。 #### 数据转换与写入 在完成数据清洗后,需要将数据转换为目标系统所需的格式。这一步通常涉及字段映射和数据类型转换。例如,将日期字符串转换为标准日期格式,将数值字段统一为浮点型等。 以下是一个简单的数据转换示例: ```python def transform_data(record): transformed_record = { 'record_id': record['recId'], 'document_number': record['goodsdocNo'], 'creation_date': datetime.strptime(record['gmtCreate'], '%Y-%m-%d %H:%M:%S'), ... } return transformed_record ``` 最后,将转换后的数据写入目标系统。这一步可以通过轻易云平台提供的多种连接器实现,如数据库连接器、API连接器等。 #### 异常处理与补偿机制 在实际操作中,可能会遇到网络故障、接口超时等异常情况。为了保证数据完整性,可以配置定时任务和补偿机制。例如,每隔5分钟执行一次补偿任务,重新请求过去两天内修改的数据: ```json { "crontab": "*\/5 * * * *", "takeOverRequest": [ { "field": "gmtModifiedStart", "value": "_function from_unixtime(({CURRENT_TIME}-172800),'%Y-%m-%d %H:%i:%s')" }, { "field": "gmtModifiedEnd", "value": "_function from_unixtime(({CURRENT_TIME}-86400),'%Y-%m-%d %H:%i:%s')" } ] } ``` 通过上述步骤,我们能够高效地调用吉客云接口获取并加工包材出库数据,为后续的数据处理和分析打下坚实基础。 ![系统集成平台API接口配置](https://pic.qeasy.cloud/S18.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将源数据转换并写入金蝶云星空API接口 在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL转换,并转为目标平台能够接收的格式。本文将详细探讨如何通过轻易云数据集成平台,将包材其他出库的数据转换为金蝶云星空API接口所需的格式,并最终写入目标平台。 #### API接口配置 我们使用的API接口是`batchSave`,请求方法为`POST`。此接口支持批量保存操作,具体配置如下: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 10, "method": "batchArraySave" }, ... } ``` #### 请求字段配置 为了确保数据能够正确写入金蝶云星空,我们需要对请求字段进行详细配置。以下是关键字段及其解析方式: 1. **单据编号 (FBillNo)** - 类型: `string` - 来源: `{goodsdocNo}` 2. **单据类型 (FBillTypeID)** - 类型: `string` - 固定值: `QTCKD01_SYS` - 解析器: `ConvertObjectParser` 3. **库存组织 (FStockOrgId)** - 类型: `string` - 来源: `{companyCode}` - 解析器: `ConvertObjectParser` 4. **日期 (FDate)** - 类型: `string` - 来源: `_function DATE_FORMAT('{inOutDate}', '%Y-%m-%d')` 5. **领料部门 (FDeptId)** - 类型: `string` - 固定值: `BM000016` - 解析器: `ConvertObjectParser` 6. **货主类型 (FOwnerTypeIdHead)** - 类型: `string` - 固定值: `BD_OwnerOrg` 7. **货主 (FOwnerIdHead)** - 类型: `string` - 来源: `{companyCode}` - 解析器: `ConvertObjectParser` 8. **备注 (FNote)** - 类型: `string` 9. **关联单号 (F_LSJC_Text)** - 类型: `string` - 来源: `{billNo}` 10. **来源单号 (F_LSJC_Text1)** - 类型: `string` - 来源: `{sourceBillNo}` 11. **收货单号 (F_LSJC_Text2)** - 类型: `string` - 来源: `{deliveryNo}` 12. **入库类型 (F_LSJC_Text4)** - 类型: `string` - 来源: `{inouttypeName}` 13. **备注 (F_LSJC_Text11)** - 类型: `string` - 来源: `{memo}` #### 明细信息配置 明细信息部分使用数组形式存储,每个元素包含以下字段: 1. **物料编码 (FMaterialId)** - 类型: `string` - 来源:`{{goodsDocDetailList.goodsNo}}` - 解析器:`ConvertObjectParser` 2. **零售条形码 (FCMKBarCode)** - 类型:`string` 3. **实发数量 (FQty)** - 类型:`string` - 来源:`{{goodsDocDetailList.quantity}}` 4. **发货仓库 (FStockId)** - 类型:`string` - 来源:`{companyCode}` - 解析器:`ConvertObjectParser` 5. **成本价 (FPrice)** - 类型:`string` - 来源:`{{goodsDocDetailList.cuPrice}}` 6. **总成本 (FAmount)** - 类型:`string` - 来源:`{{goodsDocDetailList.cuValue}}` 7. **批号 (FLot)** - 类型:`string` - 固定值:`01` 8. **条码(F_LSJC_Text3)**   - 类型: `字符串`   - 来源: {{goodsDocDetailList.skuBarcode}} #### 其他请求参数 除了上述字段外,还需要配置一些其他请求参数: 1. **业务对象表单Id(FormId)**   - 类型: 字符串   - 固定值:STK_MisDelivery 2. 提交并审核(IsAutoSubmitAndAudit)   - 类型:布尔型   - 值:false 3. 验证基础资料(IsVerifyBaseDataField)   - 类型:布尔型   - 值:true 4 操作(Operation)   - 类型字符串   - 值 Save ![打通金蝶云星空数据接口](https://pic.qeasy.cloud/T2.png~tplv-syqr462i7n-qeasy.image)