小满OKKICRM数据集成到金蝶云星空:销售订单反审核的技术实现
在企业信息系统中,数据集成往往扮演着至关重要的角色。本篇文章将分享一个实际运行的案例——如何成功将小满OKKICRM中的销售订单(审核驳回)对接到金蝶云星空,实现销售订单反审核操作。
背景与挑战
为了保持业务流程的一致性和流畅性,企业需要高效地在两个不同的平台间传输和处理数据。在此过程中,我们遇到了几个主要技术挑战:
- 接口调用:从小满OKKICRM获取销售信息的API为
/v1/invoices/order/list
,而要写入到金蝶云星空则需调用其APIUnAudit
。 - 分页和限流问题:由于涉及大量的数据读取以及可能出现的接口调用限制,需要批量处理这些数据,并确保不会漏单。
- 数据格式差异:两个系统之间的数据结构存在较大差异,需要自定义转换逻辑来适应特定需求。
- 实时监控与告警:为了及时发现并处理任何潜在问题,我们需要建立一个可靠且可视化的数据监控机制。
实现方案概述
我们采用轻易云数据集成平台对整个过程进行配置管理,通过可视化工具设计出整体的数据流,并利用其中的一些关键特性,如高吞吐量的数据写入能力、集中监控及告警系统,以及强大的自定义转换逻辑。
数据抓取与转换
初步步骤包括通过定时任务调用小满OKKICRM对应API /v1/invoices/order/list
来获取待处理销售信息。由于该接口支持分页返回,为了防止漏单,每次请求都必须准确记录上一次抓取的位置。另外,还需要考虑API限流的问题,以避免过多频繁访问导致被封锁。因此,对于每个抓取时间点,都必须精确控制请求频率和数量,并妥善管理返回结果中的分页标识。
数据映射与写入
获取到原始数据后,我们使用轻易云平台提供的自定义转换功能,将其转码为金蝶云星空能够理解并接受的格式。这一步骤至关重要,因为两套系统之间的信息字段名称、类型等不尽相同,如果不能正确匹配,很容易造成无法正常记录或产生错误。
最终,通过调用金蝶云星空对应API UnAudit
完成反审核操作,同时保证这个过程是幂等且具备重试机制。若某个环节发生异常情况,我们可以基于日志记录快速定位问题来源并重新发起必要
调用小满OKKICRM接口/v1/invoices/order/list获取并加工数据
在数据集成生命周期的第一步中,调用源系统接口获取数据是至关重要的一环。本文将详细探讨如何通过轻易云数据集成平台调用小满OKKICRM的/v1/invoices/order/list
接口,并对获取的数据进行初步加工。
接口调用配置
首先,我们需要配置API调用的元数据。根据提供的元数据配置,我们可以看到以下关键参数:
- API路径:
/v1/invoices/order/list
- 请求方法:GET
- 分页参数:
start_index
:第几页,默认值为1count
:每页记录数,默认值为10
- 时间查询范围:
start_time
:开始日期,使用模板变量{{LAST_SYNC_TIME|datetime}}
end_time
:结束日期,使用模板变量{{CURRENT_TIME|datetime}}
- 其他过滤条件:
removed
:查询已删除的数据列表,默认值为0approval
:查询通过审批的数据列表,默认值为0status
:查询特定状态的数据列表
这些参数确保了我们能够灵活地控制数据请求的范围和条件。
请求示例
以下是一个具体的请求示例:
GET /v1/invoices/order/list?start_time=2023-01-01T00:00:00Z&end_time=2023-01-31T23:59:59Z&start_index=1&count=10&removed=0&approval=0&status=0 HTTP/1.1
Host: api.okkicrm.com
Authorization: Bearer <your_access_token>
在这个请求中,我们指定了时间范围、分页参数以及其他过滤条件。
数据处理与清洗
在获取到原始数据后,需要对其进行初步清洗和加工。以下是一些常见的处理步骤:
-
字段映射与转换: 将小满OKKICRM返回的数据字段映射到目标系统所需的字段。例如,将订单编号(order_no)映射到目标系统的订单编号字段。
-
数据过滤: 根据业务需求过滤掉不需要的数据。例如,仅保留审核驳回状态(approval_status = 2)的订单。
-
格式转换: 将日期、金额等字段转换为目标系统所需的格式。例如,将ISO8601格式的日期转换为目标系统支持的日期格式。
-
增量同步: 使用上次同步时间(LAST_SYNC_TIME)和当前时间(CURRENT_TIME)作为时间范围参数,实现增量同步,避免重复处理已同步的数据。
数据清洗示例
假设我们从小满OKKICRM获取到以下JSON响应:
{
"data": [
{
"order_id": "12345",
"order_no": "SO12345",
"approval_status": "2",
"created_at": "2023-01-15T12:34:56Z"
},
{
"order_id": "12346",
"order_no": "SO12346",
"approval_status": "1",
"created_at": "2023-01-16T12:34:56Z"
}
]
}
我们需要对其进行如下处理:
-
过滤审核驳回状态的订单:
filtered_data = [order for order in response['data'] if order['approval_status'] == '2']
-
字段映射与格式转换:
processed_data = [] for order in filtered_data: processed_order = { 'id': order['order_id'], 'number': order['order_no'], 'date': convert_date_format(order['created_at']) } processed_data.append(processed_order)
通过上述步骤,我们可以将原始数据清洗并转换为目标系统所需的格式,为后续的数据写入做好准备。
总结来说,通过轻易云数据集成平台调用小满OKKICRM接口并对数据进行初步加工,是实现不同系统间无缝对接的重要步骤。本文详细介绍了如何配置API调用、处理和清洗数据,为实现高效的数据集成提供了技术指导。
使用轻易云数据集成平台实现小满销售订单对接金蝶云星空销售订单反审核
在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL转换,并转为目标平台所能接收的格式。本文将详细探讨如何通过轻易云数据集成平台,将小满销售订单(审核驳回)对接至金蝶云星空销售订单(反审核),并最终写入目标平台。
API接口配置
在本案例中,我们使用金蝶云星空提供的 UnAudit
API 接口来实现销售订单的反审核操作。以下是元数据配置:
{
"api": "UnAudit",
"method": "POST",
"idCheck": true,
"request": [
{
"field": "FormId",
"label": "业务对象表单Id",
"type": "string",
"describe": "必须填写金蝶的表单ID如:PUR_PurchaseOrder",
"value": "SAL_SaleOrder"
},
{
"field": "Numbers",
"label": "编码集合",
"type": "string",
"value": "{order_no}",
"parser": {
"name": "StringToArray",
"params": ","
}
},
{
"field": "Ids",
"label": "id集合",
"type": "string"
},
{
"field": "IgnoreInterationFlag",
"label": "是否允许忽略交互",
"type": "string",
"",
""
},
{
"",
},
]
}
数据请求与清洗
首先,我们从小满系统获取需要反审核的销售订单数据。假设我们已经通过API获取了以下JSON格式的数据:
{
"_id":"5f8d0d55b54764421b7156c7",
"_rev":"1-967a00dff5e02add41819138abb3284d",
"_key":"order_no:12345"
}
数据转换与写入
根据金蝶云星空API接口要求,我们需要将上述数据转换为符合 UnAudit
接口规范的请求格式。具体步骤如下:
- 设置业务对象表单Id:
FormId
字段固定为"SAL_SaleOrder"
。 - 编码集合处理:
Numbers
字段需要将order_no
转换为数组格式。使用StringToArray
解析器,将逗号分隔的字符串转换为数组。 - 其他字段设置:根据业务需求,设置
IgnoreInterationFlag
,NetworkCtrl
, 和IsVerifyProcInst
等字段。
转换后的请求体示例如下:
{
FormId: 'SAL_SaleOrder',
Numbers: ['12345'],
IgnoreInterationFlag: 'false',
NetworkCtrl: 'false',
IsVerifyProcInst: 'false'
}
调用API接口
使用轻易云数据集成平台提供的HTTP客户端模块,通过POST方法调用金蝶云星空的 UnAudit
接口,将处理后的请求体发送至目标系统。
const axios = require('axios');
const data = {
FormId: 'SAL_SaleOrder',
Numbers: ['12345'],
IgnoreInterationFlag: 'false',
NetworkCtrl: 'false',
IsVerifyProcInst: 'false'
};
axios.post('https://api.kingdee.com/k3cloud/UnAudit', data)
.then(response => {
console.log('Response:', response.data);
})
.catch(error => {
console.error('Error:', error);
});
通过以上步骤,成功实现了从小满系统到金蝶云星空系统的数据ETL转换和写入。在实际应用中,还需根据具体业务需求和系统环境进行调整和优化。
以上内容展示了如何利用轻易云数据集成平台,实现跨系统的数据集成和ETL转换,并通过标准化API接口完成目标系统的数据写入操作。