调拨入库对接-金蝶其他出库(负数)——吉客云与金蝶云星空的数据集成技术案例
在本文中,我们将分享一个具体的系统对接集成案例:如何高效地实现吉客云数据到金蝶云星空的批量数据写入,并确保数据的实时监控和异常处理。
吉客云接口调用:erp.storage.goodsdocin.v2
首先,调拨入库的数据从吉客云获取,这里使用了erp.storage.goodsdocin.v2
接口,该API支持分页查询和限流控制,可以应对大批量数据传输。需要特别注意的是,通过此API获取的数据必须进行格式转换,以满足后续在金蝶云星空中的处理需求。
为了确保获取过程不漏单,我们设置了定时可靠的任务调度机制。通过轻易平台提供的计划任务功能,每隔一段时间自动抓取最新的调拨入库记录。在实际操作中,还会结合集中监控和告警系统,来实时追踪每个任务执行状态,确保无论什么原因导致的数据遗漏都能被及时发现并处理。
数据转换及映射定制化
由于吉客云与金蝶云星空之间存在一定的数据结构差异,需要自定义数据转换逻辑。这部分工作可以借助轻易平台提供的数据流设计工具,通过可视化界面直观地配置字段映射、逻辑校验等操作。例如,将取得的SKU编码、数量等字段按照目标系统标准重新排列组合,以适应金蝶其他出库(负数)的业务逻辑要求。
金蝶API写入:batchSave
接下来,将经过清洗和转换后的数据推送到金蝶云星空,需要使用其官方提供的batchSave
API进行批量保存操作。在这一过程中,由于可能涉及大量数据,因此要充分利用平台支持高吞吐量写入能力,同时做好限流和重试机制设计,以防止网络波动或服务器响应慢带来的请求失败问题。此外,对于成功与否以及异常情况,同样会借助日志记录功能详细跟踪,为后续故障排查提供依据。
高级别概述过这些关键环节之后,以下章节将深入探讨每一步骤具体实施细节,包括代码示例、错误处理策略以及性能优化建议……
调用吉客云接口获取并加工数据的技术实现
在数据集成生命周期的第一步,我们需要调用源系统吉客云接口erp.storage.goodsdocin.v2
,以获取并加工数据。本文将详细探讨如何通过轻易云数据集成平台配置元数据,实现这一过程。
接口调用与元数据配置
首先,我们需要了解接口的基本信息和元数据配置。以下是接口erp.storage.goodsdocin.v2
的相关配置:
{
"api": "erp.storage.goodsdocin.v2",
"effect": "QUERY",
"method": "POST",
"number": "goodsdocNo",
"id": "goodsdocNo",
"idCheck": true,
"request": [
{"field": "pageIndex", "label": "分页页码", "type": "string"},
{"field": "pageSize", "label": "分页页数", "type": "string", "value": "50"},
{"field": "goodsDocNo", "label": "入库单号", "type": "string"},
{"field": "startDate", "label": "创建时间的起始时间", "type": "string",
"value":"{{LAST_SYNC_TIME|datetime}}"},
{"field": "endDate", "label":"创建时间的结束时间","type":"string","value":"{{CURRENT_TIME|datetime}}"},
{"field":"inouttype","label":"入库类型","type":"string","describe":"入库类型(100-期初库存 101-采购入库 102-调拨入库 103-盘盈入库 104-其他入库 105-销售退货 106-完工入库 107-组装拆卸入库 108-翻新入库 109-报废入库 110-残次品入库111-成本调整 112-即采即入113-退料入库114-调拨退回115-维修返厂返还)","value":"102"},
{"field":"warehouseId","label":"仓库ID","type":"string"},
{"field":"warehouseCode","label":"仓库编号","type":"string"},
{"field":"vendId","label":"供应商ID(往来单位)","type":"string"},
{"field":"vendCode","label":"供应商编号(往来单位)","type":"string"},
{"field":"billNo","label":"上游单据号(关联单号)","type":"string"},
{"field":"userName","label":"创建人名称","type":"string"},
{"field":"gmtModifiedStart","label":"主表更新时间起始","type":"string"},
{"field":"gmtModifiedEnd","label":"主表更新时间截至","type":"string"},
{"field":"selelctFields","label":"返回参数","type":"string",
"value":
"goodsdocNo,inOutDate,gmtCreate,inouttype,vendCustomerCode,warehouseCode,warehouseName,sourceBillNo,redStatus,financeBillStatus,goodsDocDetailList.goodsNo,goodsDocDetailList.quantity,goodsDocDetailList"}
],
"autoFillResponse":true,
"condition":[
[{"field":
"goodsDocDetailList.quantity",
"logic":
"lt",
"value":
"0"
},
{"field":
"fromWarehouse",
"logic":
"notlike",
"value":
"VMI"
}]
],
"beatFlat":["goodsDocDetailList"],
"omissionRemedy":{
"crontab":
"39 2 * * *",
"takeOverRequest":[
{"field":
"startDate",
"value":
"_function FROM_UNIXTIME( unix_timestamp() -259200 , '%Y-%m-%d %H:%i:%s' )",
"type":
"string",
"label":
"接管字段",
"formModel":{
"enable":
false
},
}
}
]
}
请求参数配置
在请求参数部分,我们需要特别注意以下几个关键字段:
-
分页参数:
pageIndex
:分页页码。pageSize
:分页页数,默认值为50。
-
时间范围:
startDate
:创建时间的起始时间,使用动态变量{{LAST_SYNC_TIME|datetime}}
。endDate
:创建时间的结束时间,使用动态变量{{CURRENT_TIME|datetime}}
。
-
过滤条件:
inouttype
:指定为调拨入库(102)。
-
返回参数:
selelctFields
:指定返回字段,包括单据编号、日期、仓库信息、商品明细等。
数据过滤与清洗
在获取到原始数据后,需要进行一定的数据过滤和清洗。根据元数据配置中的条件部分,我们需要过滤出商品数量小于0且不属于VMI仓库的数据:
{
"condition":[
[{"field": "goodsDocDetailList.quantity", "logic": "lt", "value": "-0"},
{"field": ":fromWarehouse", ":logic: notlike:", ":value: VMI"}]
}
数据展平处理
由于商品明细列表(goodsDocDetailList
)是一个嵌套结构,需要将其展平以便后续处理:
{
":beatFlat: ["goodsDocDetailList"]
}
异常处理与补偿机制
为了确保数据同步的完整性和准确性,配置了异常处理与补偿机制。当出现遗漏或错误时,通过定时任务(crontab)进行补偿请求:
{
":omissionRemedy: {
":crontab: :39 :2 :* :* :* ",
":takeOverRequest: [
{:" field: startDate ", :" value: _function FROM_UNIXTIME( unix_timestamp() -259200 , '%Y-%m-%d %H:%i:%s' ) ", :" type: string ", :" label: 接管字段 ", :" formModel: {:" enable: false }, :" tableModel: {:" enable: false }, :" physicalModel: {:" enable: false }}
]
}
通过上述步骤,我们可以有效地调用吉客云接口获取并加工所需的数据,为后续的数据转换与写入打下坚实基础。这一过程不仅保证了数据的准确性和完整性,还提升了业务流程的透明度和效率。
轻易云数据集成平台ETL转换:将源数据写入金蝶云星空API接口
在轻易云数据集成平台上进行ETL转换的过程中,我们需要将已经集成的源平台数据转换为目标平台——金蝶云星空API接口所能接收的格式,并最终写入目标平台。以下是详细的技术步骤和元数据配置解析。
API接口调用配置
我们使用的是金蝶云星空的batchSave
API接口,采用POST方法进行数据传输。以下是该接口的主要配置项:
- api:
batchSave
- effect:
EXECUTE
- method:
POST
- idCheck:
true
操作参数解析
在操作参数中,我们定义了如何处理请求体的数据:
- method:
merge
- field:
goodsDocDetailList_ownerName,goodsdocNo
- bodyName:
items
- header: 包含字段
goodsdocNo
,inOutDate
,goodsDocDetailList_ownerName
,sourceBillNo
- body: 包含字段
goodsDocDetailList_goodsNo
,goodsDocDetailList_quantity
,warehouseCode
,outWarehouseCode
这些字段对应于源平台的数据,将被转换并映射到金蝶云星空API所需的格式。
请求参数配置
以下是具体的请求参数及其配置:
-
单据编号(FJKYNo)
- 字段:
FJKYNo
- 类型:
string
- 描述:单据编号
- 值:
{goodsdocNo}
- 字段:
-
调拨单号(FJKYLinkNo)
- 字段:
FJKYLinkNo
- 类型:
string
- 值:
{sourceBillNo}
- 字段:
-
单据类型(FBillTypeID)
- 字段:
FBillTypeID
- 类型:
string
- 描述:单据类型
- 解析器:
ConvertObjectParser
,参数为FNumber
- 值:
QTCKD95_SYS
- 字段:
-
库存组织(FStockOrgId)
- 字段:
FStockOrgId
- 类型:
string
- 描述:组织
- 解析器:
ConvertObjectParser
,参数为FNumber
- 值:
{goodsDocDetailList_ownerName}
- 映射目标ID:6441f0214af70a2f240adb22,方向为正向(positive)
- 字段:
-
库存方向(FStockDirect)
- 字段:
FStockDirect
- 类型:
string
- 描述:下拉列表
- 值:
GENERAL
- 字段:
-
日期(FDate)
- 字段:
FDate
- 类型:
string
- 描述:日期
- 值:
{inOutDate}
- 字段:
-
领料部门(FDeptId)
- 字段:
FDeptId
- 类型:
string
- 描述:基础资料
- 解析器:
ConvertObjectParser
,参数为FNumber
- 值:BM000029
- 字段:
-
货主类型(FOwnerTypeIdHead)
- 字段: FOwnerTypeIdHead
- 类型: string
- 描述: 多类别基础资料列表
- 值: BD_OwnerOrg
-
货主(FOwnerIdHead)
- 字段: FOwnerIdHead
- 类型: string
- 描述: 多类别基础资料
- 解析器: ConvertObjectParser,参数为 FNumber
- 值: {goodsDocDetailList_ownerName}
- 映射目标ID: 6441f0214af70a2f240adb22,方向为正向 (positive)
明细信息配置
明细信息部分涉及数组类型的数据处理,每个子项都需要进行特定字段的映射和转换:
-
物料编码(FMATERIALID)
- 字段: FMATERIALID
- 类型: string
- 描述: 基础资料
- 解析器: ConvertObjectParser,参数为 FNumber – 值: {{items.goodsDocDetailList_goodsNo}}
-
库存状态(FStockStatusId) – 字段: FStockStatusId – 类型: string – 值: KCZT01_SYS
-
发货仓库(FSTOCKID) – 字段: FSTOCKID – 类型: string – 描述: 基础资料 – 解析器: ConvertObjectParser,参数为 FNumber – 值: {{items.warehouseCode}}
-
实发数量(FQty) – 字段:FQty – 类型:string –值:_function {{items.goodsDocDetailList_quantity}} *(-1)
其他请求配置
除了上述字段,还需要一些额外的请求配置来确保数据正确写入目标系统:
- 表单ID (FormId)
- 提交并审核 (IsAutoSubmitAndAudit)
- 验证基础资料 (IsVerifyBaseDataField)
- 执行操作 (Operation)
- 负库存标志 (InterationFlags)
这些配置项确保了在调用API时能够正确执行并验证所有必要的数据。
通过以上步骤和配置,我们能够将源平台的数据成功转换并写入金蝶云星空,实现不同系统间的数据无缝对接。这不仅提升了业务透明度和效率,也确保了数据处理过程中的准确性和一致性。