旺店通·旗舰奇门数据集成到金蝶云星空:柏为其他入库单07.29
在实践中,通过旺店通·旗舰奇门的数据高效集成到金蝶云星空,实现系统对接的稳定性和一致性是一项复杂但关键的任务。本案例重点介绍如何利用API接口wdt.wms.stockother.inquery.querywithdetail
从旺店通·旗舰奇门获取数据,并通过金蝶云星空的batchSave
进行快速写入,方案名称为“柏为其他入库单07.29”。
首先,我们需要确保从旺店通·旗舰奇门获取的数据不漏单。为了这一目标,可以定时可靠地抓取相关接口数据,并处理分页和限流问题。实现这个环节,需要设置合适的时间间隔,以恰当调用API,同时应具备错误重试机制,以防网络波动导致的数据丢失。
其次,大量数据快速写入到金蝶云星空是另一个技术挑战。这里我们使用的是批量操作接口batchSave
,它允许一次性传递多条记录,从而提升了上传效率。然而,在这个过程中,我们必须解决两大难题:一是处理各自平台之间的数据格式差异,二是遇到异常情况时,需要及时进行异常处理并且有完善的日志记录以供追溯。
在实际实施方案中,还需特别注意实时监控与日志记录,确保每个步骤都能透明化管理。一旦出现任何流程上的不一致或错误,都可以通过详细日志迅速定位并修复。此外,对接流程中的所有转换与映射工作也必须依据预先设定好的业务规则来执行,以保障最终结果的一致性和准确性。
以上就是本案例开头部分的重要背景和核心要点。在后续内容中,将具体描述如何配置这些技术细节以及可能遇见的问题及其解决办法。
调用旺店通·旗舰奇门接口获取并加工数据
在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·旗舰奇门接口 wdt.wms.stockother.inquery.querywithdetail
获取并加工数据。
接口概述
接口 wdt.wms.stockother.inquery.querywithdetail
主要用于查询其他入库单的详细信息。该接口采用 POST 请求方式,支持多种查询参数和分页功能。以下是元数据配置的详细内容:
{
"api": "wdt.wms.stockother.inquery.querywithdetail",
"method": "POST",
"number": "other_in_no",
"id": "other_in_no",
"idCheck": true,
"condition_bk": [
[
{
"field": "field1",
"logic": "eqv2",
"value": null
}
]
],
"request": [
{
"field": "params",
"label": "查询参数",
"type": "object",
"children": [
{
"field": "time_type",
"label": "时间类型",
"type": "string",
"describe": "1:创建时间;2:最后修改时间 不传默认为创建时间",
"value": "2",
"parent": "params"
},
{
"field": "start_time",
"label": "开始时间",
"type": "string",
"describe": "起始时间,若无业务单号,则为必填。yyyy-MM-dd HH:mm:ss格式",
"value": "{{LAST_SYNC_TIME|datetime}}",
"parent": "params"
},
{
...
配置请求参数
在调用该接口时,需要配置一系列请求参数。这些参数可以分为查询参数和分页参数两大类。
查询参数:
time_type
: 时间类型,默认为最后修改时间(值为2)。start_time
: 起始时间,格式为yyyy-MM-dd HH:mm:ss
。end_time
: 结束时间,格式同上。warehouse_no
: 仓库编号。other_in_no
: 业务单号。status
: 业务单据状态,默认值为“65,70”。prop1
: 自定义属性1(部门)。
分页参数:
page_size
: 分页大小,默认值为50。page_no
: 页号,从0开始。
数据请求与清洗
在数据请求阶段,通过配置上述请求参数,可以灵活地获取所需的数据。例如,可以根据特定的时间范围、仓库编号或业务单据状态来筛选数据。
{
...
{
field: 'params',
label: '查询参数',
type: 'object',
children: [
{ field: 'time_type', label: '时间类型', type: 'string', value: '2' },
{ field: 'start_time', label: '开始时间', type: 'string', value: '{{LAST_SYNC_TIME|datetime}}' },
{ field: 'end_time', label: '结束时间', type: 'string', value: '{{CURRENT_TIME|datetime}}' },
{ field: 'warehouse_no', label: '仓库编号', type: 'string' },
{ field: 'other_in_no', label: '业务单号', type: 'string' },
{ field: 'status', label: '业务单据状态', type: 'string', value: '65,70' },
{ field: 'prop1', label: '其他入库业务单自定义属性1-部门', type: 'string' }
]
},
...
}
在清洗过程中,可以对返回的数据进行必要的过滤和转换,以确保其符合后续处理的要求。例如,可以根据业务需求对某些字段进行格式化或计算。
数据转换与写入
在完成数据请求与清洗后,下一步是将数据转换并写入目标系统。在这一阶段,可以利用轻易云平台提供的丰富工具,对数据进行进一步处理,如字段映射、数据合并等。
{
...
{
field: 'pager',
label: '分页',
type: 'object',
children:[
{ field:'page_size',label:'分页大小',type:'string',value:'50'},
{ field:'page_no',label:'页号',type:'string',value:'1'}
]
}
}
通过配置分页参数,可以有效地控制每次请求的数据量,从而提高系统性能和响应速度。
实践案例
假设我们需要获取某个仓库在特定时间范围内所有已完成的其他入库单,并将其写入到目标数据库中。可以按照以下步骤进行操作:
-
配置请求参数:
- 设置
time_type
为2(最后修改时间)。 - 设置
start_time
和end_time
为所需的时间范围。 - 设置
warehouse_no
为目标仓库编号。 - 设置
status
为“70”(已完成)。
- 设置
-
发送请求:
- 使用 POST 方法发送请求,并获取返回的数据。
-
清洗与转换:
- 对返回的数据进行必要的过滤和转换,如去除无效字段、格式化日期等。
-
写入目标系统:
- 将处理后的数据写入到目标数据库中。
通过以上步骤,可以高效地实现从源系统到目标系统的数据集成,并确保数据的一致性和完整性。这不仅提升了业务透明度,还极大地提高了工作效率。
使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口
在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL转换,并转为目标平台能够接收的格式。本文将详细探讨如何使用轻易云数据集成平台,将源数据转换为金蝶云星空API接口所需的格式,并最终写入目标平台。
配置元数据
首先,我们需要配置元数据,以便在轻易云平台上进行ETL转换。以下是我们需要配置的元数据:
{
"api": "batchSave",
"method": "POST",
"idCheck": true,
"operation": {
"rowsKey": "array",
"rows": 1,
"method": "batchArraySave"
},
"request": [
{"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{other_in_no}"},
{"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","value":"{reason}","parser":{"name":"ConvertObjectParser","params":"FNumber"},"mapping":"62e8d0ae581ea5127750baba","mappingDirection":"positive"},
{"field":"FStockOrgId","label":"库存组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100"},
{"field":"FStockDirect","label":"库存方向","type":"string","describe":"下拉列表"},
{"field":"FDate","label":"日期","type":"string","describe":"日期","value":"{{modified|datetime}}"},
{"field":"FSUPPLIERID","label":"供应商","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"}},
{"field":"FDEPTID","label":"部门","type":"string","describe":"基础资料","value":"{prop1}","mappingDirection\":\"positive\",\"parser\":{\"name\":\"ConvertObjectParser\",\"params\":\"FNumber\"}},
{"field\":\"FOwnerTypeIdHead\",\"label\":\"货主类型\",\"type\":\"string\",\"describe\":\"多类别基础资料列表\",\"value\":\"BD_OwnerOrg\"},
{"field\":\"FOwnerIdHead\",\"label\":\"货主\",\"type\":\"string\",\"describe\":\"多类别基础资料\",\"parser\":{\"name\":\"ConvertObjectParser\",\"params\":\"FNumber\"},\"value\":\"100\"},
{"field\":\"FNOTE\",\"label\":\"备注\",\"type\":\"string\",\"describe\":\"多行文本\",\"value\":\"{remark}\"},
{
\"field\": \"FEntity\",
\"label\": \"明细信息\",
\"type\": \"array\",
\"children\": [
{\"field\": \"FInStockType\", \"label\": \"入库类型\", \"type\": \"string\", \"describe\": \"下拉列表\", \"parent\": \"FEntity\"},
{\"field\": \"FMATERIALID\", \"label\": \"物料编码\", \"type\": \"string\", \"describe\": \"基础资料\", \"parser\":{\"name\":\"ConvertObjectParser\",\"params\":\"FNumber\"},\"value\":\"{{detail_list.goods_no}}\",\"parent\": \"FEntity\"},
{\"field\": \"FCMKBarCode\", \"label\": \"零售条形码\", \"type\": \"string\", \"describe\": \"文本\", \"parent\": \"FEntity\"},
{\"field\": \"FSTOCKID\", \”label\”: \”收货仓库\”, \”type\”: \”string\”, \”describe\”: \”基础资料\”, \”parser\":{\"name\":\"ConvertObjectParser\",\"params\":\"FNumber\"},\”value\”: \”{warehouse_no}\”, \”parent\”: \”FEntity\”},
{\"field\": \”FStockLocId\”, \”label\”: \”仓位\”, \”type\”: \”string\”, \”describe\”: \”维度关联字段\”, \”parser\":{\"name\":\"ConvertObjectParser\",\ ”params”: ” FNumber ” }, ” parent”: ” FEntity ” },
{“ field”: “ FQty”, “ label”: “ 实收数量”, “ type”: “ string”, “ describe”: “ 数量”, “ value”: “ {{ detail_list.num }}”, “ parent”: “ FEntity ” },
{“ field”: “ FPrice”, “ label”: “ 成本价”, “ type”: “ string”, “ describe”: “ 单价”, “ parent”: “ FEntity ” },
{“ field”: “ FEntryNote”, “ label”: “ 备注”, “ type”: “ string”, “ describe”: 多行文本”,“ value:“ {{ detail_list.remark }}”,“ parent: FEntity ” },
{“ field: FSRCBILLNO”,“ label: 源单编号”,“ type: string”,“ describe: 源单编号”,“ parent: FEntity ” },
{“ field: FSRCBILLTYPEID”,“ label: 源单类型”,“ type: string”,“ describe: 源单类型”,“ parent: FEntity ” },
{“ parent: FEntity”,“ label: 货主类型”,“ field: FOWNERTYPEID”,“ type: string”,“ value:“ BD_OwnerOrg ” },
{“ parent: FEntity”,“ label: 货主”,“ field: FOWNERID”,“ type: string,“ value:“ 100“, parser:{" name ":" ConvertObjectParser "," params ":" FNumber "} }
],
value: detail_list
}
],
otherRequest: [
{
field: FormId,
label: 业务对象表单Id,
type: string,
describe: 必须填写金蝶的表单ID如:PUR_PurchaseOrder,
value: STK_MISCELLANEOUS
},
{
field: IsVerifyBaseDataField,
label: 验证基础资料,
type: bool,
describe: 是否验证所有的基础资料有效性,布尔类,默认false(非必录),
value: true
},
{
field: Operation,
label: 执行的操作,
type: string,
value: Save
},
{
field: IsAutoSubmitAndAudit,
label: 提交并审核,
type: bool,
value: false
}
]
}
数据清洗与转换
在配置好元数据后,下一步是对源数据进行清洗和转换,使其符合目标平台金蝶云星空API接口的要求。
-
字段映射与解析:
- 使用
ConvertObjectParser
对字段进行解析。例如,将FBillTypeID
、FSUPPLIERID
等字段通过ConvertObjectParser
解析为金蝶系统中的编码。
- 使用
-
日期格式化:
- 使用模板语法将日期字段格式化,例如将
modified
字段通过模板语法转换为符合金蝶系统要求的日期格式。
- 使用模板语法将日期字段格式化,例如将
-
数组处理:
- 对于明细信息(如
detail_list
),需要将其转化为数组形式,并确保每个子项都经过相应的解析和映射。
- 对于明细信息(如
数据写入
完成数据清洗与转换后,最后一步是将处理后的数据通过API接口写入到金蝶云星空系统中。
-
API请求:
- 使用POST方法调用
batchSave
API,将处理后的JSON数据发送到金蝶云星空系统。
- 使用POST方法调用
-
操作参数:
- 设置必要的操作参数,如表单ID(FormId)、是否验证基础资料(IsVerifyBaseDataField)、执行操作(Operation)以及是否自动提交并审核(IsAutoSubmitAndAudit)。
通过上述步骤,我们可以高效地将源平台的数据经过ETL转换后写入到目标平台金蝶云星空中。这不仅简化了数据集成过程,还确保了数据的一致性和准确性。