从数据获取到写入:轻易云平台实现销售单对接金蝶云星空

  • 轻易云集成顾问-彭萍
### 吉客云·奇门数据集成到金蝶云星空:销售单对接销售出库_类型1零售业务_合并 在本案例中,我们将重点探讨如何通过轻易云数据集成平台,将吉客云·奇门中的销售单数据高效、可靠地对接至金蝶云星空的销售出库系统。此次集成方案命名为:"销售单对接销售出库_类型1零售业务_合并"。 实现这一目标的关键步骤包括通过调用吉客云·奇门提供的数据接口jackyun.tradenotsensitiveinfos.list.get,以定时获取最新的交易信息,并使用金蝶云星空的batchSave API批量写入处理后的数据。在此过程中,需要解决两个系统之间的数据格式差异、分页与限流管理,以及确保任务执行过程中的异常处理和监控,所有这些都依赖于强大的可视化操作界面和实时监控功能。 具体而言,在设计数据流时,通过自定义转换逻辑来适应特定业务需求是一个重要环节,尤其是在面对大规模、高频次的数据传输任务时。我们的解决方案不仅支持高吞吐量的数据写入能力,还提供集中式的监控和告警系统,能实时跟踪每个集成任务的状态和性能,从而保证了整个流程的一致性和可靠性。 以下内容将详细介绍各个技术要点及其实现方法,通过实际案例演示如何配置和优化这套复杂的数据集成功能,为企业在数字化转型过程中提供有效支撑。 ![钉钉与WMS系统接口开发配置](https://pic.qeasy.cloud/D15.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台调用吉客云·奇门接口获取并加工数据 在数据集成的生命周期中,第一步是从源系统获取数据。本文将详细探讨如何使用轻易云数据集成平台调用吉客云·奇门接口`jackyun.tradenotsensitiveinfos.list.get`来获取销售单数据,并进行必要的数据加工。 #### 接口调用配置 首先,我们需要配置接口调用的元数据。根据提供的元数据配置,接口调用采用POST方法,主要参数包括: - `api`: 接口名称,固定为`jackyun.tradenotsensitiveinfos.list.get` - `method`: 请求方法,固定为`POST` - `number`: 销售单号字段,对应`tradeNo` - `id`: 唯一标识字段,对应`tradeId` - `pagination`: 分页信息,每页记录数为20 - `idCheck`: 是否进行ID检查,设置为`true` - `condition`: 查询条件,这里设置了订单状态大于等于6000 #### 请求参数 请求参数部分较为复杂,包括时间范围、分页信息、订单状态等。以下是关键参数及其描述: - `modified_begin`和`modified_end`: 修改时间范围,必须同时存在且间隔不超过七天 - `startModified`和`endModified`: 最后修改时间范围 - `tradeNo`: 销售单号,可以多个用逗号分隔 - `pageSize`: 每页记录数,默认50,最大200,这里设置为200 - `pageIndex`: 页码,从0开始 - `hasTotal`: 是否返回总记录数,首次调用时传1 - 其他时间范围参数如创建时间、审核时间、发货时间等 特别注意的是发货时间的起始和截止值通过函数计算得出: ```json "startConsignTime": "_function from_unixtime(({LAST_SYNC_TIME}-86400),'%Y-%m-%d %H:%i:%s')", "endConsignTime": "_function from_unixtime(({CURRENT_TIME}-86400),'%Y-%m-%d 23:59:59')" ``` 这些函数确保了我们获取的是最近一天的数据。 #### 数据请求与清洗 在完成请求参数配置后,我们发送请求以获取销售单数据。返回的数据需要经过清洗和转换,以便后续处理。以下是一些关键步骤: 1. **字段映射**:根据元数据配置中的`fields`字段列表,我们只提取需要的字段。 2. **格式转换**:例如,将返回结果中的`consignTime`字段格式化为日期类型,并重命名为`consign_date`。 3. **去重与合并**:如果有重复记录或需要合并处理的数据,需要进行去重和合并操作。 #### 示例代码 以下是一个示例代码片段,用于展示如何通过轻易云平台调用该接口并处理返回的数据: ```python import requests import json # 配置请求URL和头部信息 url = "https://api.jackyun.com/tradenotsensitiveinfos/list/get" headers = { "Content-Type": "application/json", "Authorization": "Bearer YOUR_ACCESS_TOKEN" } # 配置请求参数 payload = { "modified_begin": "2023-01-01 00:00:00", "modified_end": "2023-01-07 23:59:59", "pageSize": 200, "pageIndex": 0, "hasTotal": 1, # 其他必要的参数... } # 发起POST请求 response = requests.post(url, headers=headers, data=json.dumps(payload)) # 检查响应状态码 if response.status_code == 200: data = response.json() # 数据清洗与转换 cleaned_data = [] for record in data["result"]: cleaned_record = { "consign_date": record["consignTime"], # 映射其他字段... } cleaned_data.append(cleaned_record) # 输出或进一步处理cleaned_data else: print(f"Error: {response.status_code}, {response.text}") ``` 以上代码展示了如何配置请求参数、发送请求以及对返回的数据进行清洗和转换。在实际应用中,还需根据具体业务需求进一步完善。 #### 小结 通过上述步骤,我们成功实现了从吉客云·奇门接口获取销售单数据,并进行了必要的数据清洗和转换。这一步骤是整个数据集成过程中的基础,为后续的数据写入和处理奠定了坚实基础。 ![金蝶与SCM系统接口开发配置](https://pic.qeasy.cloud/S18.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将销售单数据转换并写入金蝶云星空 在数据集成过程中,将源平台的数据转换为目标平台所能接收的格式是至关重要的一步。本文将详细探讨如何使用轻易云数据集成平台,将销售单数据通过ETL(提取、转换、加载)过程,转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。 #### 配置元数据 在轻易云数据集成平台中,我们需要配置元数据来定义API请求的各个字段及其对应的处理逻辑。以下是一个典型的元数据配置示例: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 10, "method": "batchArraySave" }, "request": [ {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"XSCKD01_SYS"}, {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号"}, {"field":"FDate","label":"日期","type":"string","describe":"日期","value":"{consign_date}"}, {"field":"FSaleOrgId","label":"销售组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_mongoQuery 38faaa66-9955-34e5-bd58-7c4099b53af5 findField=content.warehouseCompanyCode where={\"content.warehouseCode\" : {\"$eq\":\"{warehouseCode}\"}}"}, {"field":"FStockOrgId","label":"库存组织","type":"string","describe":"多类别基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_mongoQuery 38faaa66-9955-34e5-bd58-7c4099b53af5 findField=content.warehouseCompanyCode where={\"content.warehouseCode\" : {\"$eq\":\"{warehouseCode}\"}}"}, {"field":"FOwnerIdHead","label":"货主","type":"string","describe":"多类别基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_mongoQuery 38faaa66-9955-34e5-bd58-7c4099b53af5 findField=content.warehouseCompanyCode where={\"content.warehouseCode\" : {\"$eq\":\"{warehouseCode}\"}}"}, {"field":"FCustomerID","label":"客户","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{shopCode}"}, {"field":"FNote","label":"","type":"","describe":"","value":""}, {"field":"","label":"","type":"","describe":"","value":""}, {"field":"","label":"","type":"","describe":"","value":""} ], "otherRequest":[ {"field": "FormId", "label": "业务对象表单Id", "type": "string", "describe": "必须填写金蝶的表单ID如:PUR_PurchaseOrder", "value": "SAL_OUTSTOCK"}, {"field": "Operation", "label": "", "type": "", ""}, {"field": "", ""} ] } ``` #### 数据提取与清洗 首先,我们需要从源系统中提取原始销售单数据,并对其进行清洗和预处理。这一步通常包括以下几个步骤: 1. **提取原始数据**:从源系统中提取原始销售单数据,确保所有必要字段都已包含。 2. **数据清洗**:对提取的数据进行清洗,包括去除无效或重复的数据,确保数据质量。 #### 数据转换 在完成数据清洗后,需要将清洗后的数据转换为金蝶云星空API接口所能接受的格式。根据上述元数据配置,我们需要处理以下关键字段: 1. **FBillTypeID**:固定值"XSCKD01_SYS",表示单据类型。 2. **FBillNo**:从源系统中获取的销售单编号。 3. **FDate**:从源系统中获取的日期字段,映射到`consign_date`。 4. **FSaleOrgId**、**FStockOrgId**、**FOwnerIdHead**:通过`_mongoQuery`查询仓库公司代码,根据`warehouseCode`进行映射。 5. **FCustomerID**:直接映射为`shopCode`。 对于明细信息(`FEntity`),我们需要处理以下字段: 1. **FMaterialId**:物料编码,通过`ConvertObjectParser`解析为物料编码的数字形式。 2. **FRealQty**:实退数量,从源系统中的`goodsDetail_sellCount`获取。 3. **Flot**:批号,固定值"01"。 4. **FAmount**、**FTaxPrice**、**FDiscount**等其他字段按照相应规则进行映射和计算。 #### 数据加载 最后一步是将转换后的数据通过API接口写入金蝶云星空。在此过程中,需要注意以下几点: 1. **API请求方法和路径配置**:根据元数据配置,使用POST方法调用`batchSave`接口。 2. **批量处理机制**:设置批量处理参数,如每次提交的数据行数(例如10行)。 3. **错误处理与重试机制**:在实际操作中可能会遇到网络问题或其他异常情况,需要设置错误处理和重试机制,以确保数据能够成功写入目标系统。 通过以上步骤,我们可以实现从源平台到金蝶云星空的数据无缝对接,并确保每个环节都能高效稳定地运行。 ![如何开发用友BIP接口](https://pic.qeasy.cloud/T16.png~tplv-syqr462i7n-qeasy.image)