配置此映射方案,除字段取值规则外的其他定义,例如:来源的单据模型、目标的单据模型、目标模型的每一层对象和来源模型的每一层对象的映射关系。
选择需要被转换的来源单据(领域模型元素)。
选择具体的来源单据数据,在单据引擎调试时使用,不影响外部调用时的实际传参。
调试时,主要关注生成的数据是否正确,不建议选择太多调试单据,若不涉及聚合,选择1条即可,若涉及聚合,至多不超过10条。
选择需要生成的来源单据(领域模型元素),单据引擎会按照目标模型的结构来组装数据,但不会将数据落库!
定义目标模型的每一层对象和来源模型的每一层对象的映射关系。目标的主对象默认对应来源的主对象,目前不可自定义,即1张来源单据生成1张目标单据。
目标对象对应来源单据的哪个层级,该来源层级有多少条数据,则会生成多少条目标对象层级的数据。
因此,映射层级的配置会影响目标模型的明细对象层级的聚合逻辑,需要结合字段映射来理解。
例如【来源单据】和【目标单据】的模型结构如下图所示:

假设来源单据01,包含5行明细:
|
头.单据编号 |
行.行号 |
行.金额 |
|---|---|---|
|
01 |
1 |
10 |
|
2 |
20 | |
|
3 |
30 | |
|
4 |
40 | |
|
5 |
50 |
我们来看看不同的映射配置,会对生成的目标单据有何影响。
场景一:目标行1和2都对应来源头
|
数据条数=来源层级数据条数 |
金额:取值路径 |
金额:计算逻辑 |
结果:行号 |
结果:金额 | |
|---|---|---|---|---|---|
|
目标行表1 |
1 |
头(1)->行(5)->行.金额(5)->求和(1) |
sum(10,20,30,40,50) = 150 |
1 |
150 |
|
目标行表2 |
同上 |
同上 |
同上 |
同上 |
同上 |
PS:如果取值规则中,计算类型不用【求和】,用【查询】,则会在每行中得到5条行金额数据,与目标行数不一致,会抛出异常。
场景二:目标行1和2都对应来源行
|
数据条数=来源层级数据条数 |
金额:取值路径 |
金额:计算逻辑 |
结果:行号 |
结果:金额 | |
|---|---|---|---|---|---|
|
目标行表1 |
5 |
行(5)->行.金额(5)->查询(5) |
10 |
1 |
10 |
|
20 |
2 |
20 | |||
|
30 |
3 |
30 | |||
|
40 |
4 |
40 | |||
|
50 |
5 |
50 | |||
|
目标行表2 |
5 |
行(5)->行.金额(5)->查询(5) |
10 |
1 |
10 |
|
20 |
2 |
20 | |||
|
30 |
3 |
30 | |||
|
40 |
4 |
40 | |||
|
50 |
5 |
50 |
PS:如果取值规则中,计算类型不用【查询】,用【求和】,其实是在各自的5行里,对自身的1行求和,结果会与查询一样。
场景三:目标行1对应来源头,目标行2对应来源行,即前两种情况的结合。
|
数据条数=来源层级数据条数 |
金额:取值路径 |
金额:计算逻辑 |
结果:行号 |
结果:金额 | |
|---|---|---|---|---|---|
|
目标行表1 |
1 |
头(1)->行(5)->行.金额(5)->求和(1) |
sum(10,20,30,40,50) = 150 |
1 |
150 |
|
目标行表2 |
5 |
行(5)->行.金额(5)->查询(5) |
10 |
1 |
10 |
|
20 |
2 |
20 | |||
|
30 |
3 |
30 | |||
|
40 |
4 |
40 | |||
|
50 |
5 |
50 |
回到顶部
咨询热线
