diff --git a/kernel/av/av.go b/kernel/av/av.go index d42c0f306..eeb54627b 100644 --- a/kernel/av/av.go +++ b/kernel/av/av.go @@ -523,6 +523,22 @@ func (av *AttributeView) GetCurrentView(viewID string) (ret *View, err error) { return } +func (av *AttributeView) ExistBlock(blockID string) bool { + for _, kv := range av.KeyValues { + if KeyTypeBlock != kv.Key.Type { + continue + } + + for _, v := range kv.Values { + if v.BlockID == blockID { + return true + } + } + return false + } + return false +} + func (av *AttributeView) GetValue(keyID, blockID string) (ret *Value) { for _, kv := range av.KeyValues { if kv.Key.ID == keyID { diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index 5dc0042a6..5a9dbdb46 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -340,9 +340,13 @@ func GetBlockAttributeViewKeys(blockID string) (ret []*BlockAttributeViewKeys) { for _, bID := range relVal.Relation.BlockIDs { destVal := destAv.GetValue(kv.Key.Rollup.KeyID, bID) if nil == destVal { - destVal = treenode.GetAttributeViewDefaultValue(ast.NewNodeID(), kv.Key.Rollup.KeyID, blockID, destKey.Type) + if destAv.ExistBlock(bID) { // 数据库中存在行但是列值不存在是数据未初始化,这里补一个默认值 + destVal = treenode.GetAttributeViewDefaultValue(ast.NewNodeID(), kv.Key.Rollup.KeyID, bID, destKey.Type) + } + if nil == destVal { + continue + } } - if av.KeyTypeNumber == destKey.Type { destVal.Number.Format = destKey.NumberFormat destVal.Number.FormatNumber() @@ -1001,7 +1005,12 @@ func renderAttributeViewTable(attrView *av.AttributeView, view *av.View, query s for _, blockID := range relVal.Relation.BlockIDs { destVal := destAv.GetValue(rollupKey.Rollup.KeyID, blockID) if nil == destVal { - continue + if destAv.ExistBlock(blockID) { // 数据库中存在行但是列值不存在是数据未初始化,这里补一个默认值 + destVal = treenode.GetAttributeViewDefaultValue(ast.NewNodeID(), rollupKey.Rollup.KeyID, blockID, destKey.Type) + } + if nil == destVal { + continue + } } if av.KeyTypeNumber == destKey.Type { destVal.Number.Format = destKey.NumberFormat diff --git a/kernel/treenode/node.go b/kernel/treenode/node.go index 8ebe61608..825865196 100644 --- a/kernel/treenode/node.go +++ b/kernel/treenode/node.go @@ -805,7 +805,12 @@ func renderAttributeViewTable(attrView *av.AttributeView, view *av.View) (ret *a for _, blockID := range relVal.Relation.BlockIDs { destVal := destAv.GetValue(rollupKey.Rollup.KeyID, blockID) if nil == destVal { - continue + if destAv.ExistBlock(blockID) { // 数据库中存在行但是列值不存在是数据未初始化,这里补一个默认值 + destVal = GetAttributeViewDefaultValue(ast.NewNodeID(), rollupKey.Rollup.KeyID, blockID, destKey.Type) + } + if nil == destVal { + continue + } } if av.KeyTypeNumber == destKey.Type { destVal.Number.Format = destKey.NumberFormat