正在显示
1 个修改的文件
包含
36 行增加
和
1 行删除
@@ -2,14 +2,15 @@ package service | @@ -2,14 +2,15 @@ package service | ||
2 | 2 | ||
3 | import ( | 3 | import ( |
4 | "fmt" | 4 | "fmt" |
5 | - | ||
6 | "github.com/linmadan/egglib-go/core/application" | 5 | "github.com/linmadan/egglib-go/core/application" |
6 | + "github.com/zeromicro/go-zero/core/collection" | ||
7 | "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/application/factory" | 7 | "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/application/factory" |
8 | "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/application/table/command" | 8 | "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/application/table/command" |
9 | "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/domain" | 9 | "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/domain" |
10 | "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/infrastructure/pg" | 10 | "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/infrastructure/pg" |
11 | "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/infrastructure/starrocks" | 11 | "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/infrastructure/starrocks" |
12 | "gorm.io/gorm" | 12 | "gorm.io/gorm" |
13 | + "sort" | ||
13 | ) | 14 | ) |
14 | 15 | ||
15 | func (tableService *TableService) FieldOptionalValues(ctx *domain.Context, cmd *command.FieldOptionalValuesCommand) (interface{}, error) { | 16 | func (tableService *TableService) FieldOptionalValues(ctx *domain.Context, cmd *command.FieldOptionalValuesCommand) (interface{}, error) { |
@@ -84,6 +85,28 @@ func (tableService *TableService) FieldOptionalValues(ctx *domain.Context, cmd * | @@ -84,6 +85,28 @@ func (tableService *TableService) FieldOptionalValues(ctx *domain.Context, cmd * | ||
84 | if !domain.SQLType(field.SQLType).IsString() { | 85 | if !domain.SQLType(field.SQLType).IsString() { |
85 | match = "" | 86 | match = "" |
86 | } | 87 | } |
88 | + | ||
89 | + if table.TableType == domain.CalculateSet.ToString() { | ||
90 | + var querySet *domain.QuerySet | ||
91 | + querySetRepository, _, _ := factory.FastPgQuerySet(transactionContext, 0) | ||
92 | + querySet, err = querySetRepository.FindOne(map[string]interface{}{"BindTableId": cmd.ObjectId}) | ||
93 | + if err != nil { | ||
94 | + return nil, factory.FastError(err) | ||
95 | + } | ||
96 | + svr, _ := factory.FastQuerySetServices(transactionContext) | ||
97 | + dataTable, err = svr.LoadCalculateSetData(ctx, querySet, querySet.QueryComponents) | ||
98 | + if err != nil { | ||
99 | + return nil, factory.FastError(err) | ||
100 | + } | ||
101 | + values := removeDuplicate(dataTable.Values(field)) | ||
102 | + sort.SliceStable(values, func(i, j int) bool { | ||
103 | + return values[i] < values[j] | ||
104 | + }) | ||
105 | + return map[string]interface{}{ | ||
106 | + "values": values, | ||
107 | + "total": len(values), | ||
108 | + }, nil | ||
109 | + } | ||
87 | options := &starrocks.QueryOptions{ | 110 | options := &starrocks.QueryOptions{ |
88 | Table: table, | 111 | Table: table, |
89 | TableName: table.SQLName, | 112 | TableName: table.SQLName, |
@@ -127,3 +150,15 @@ func (tableService *TableService) FieldOptionalValues(ctx *domain.Context, cmd * | @@ -127,3 +150,15 @@ func (tableService *TableService) FieldOptionalValues(ctx *domain.Context, cmd * | ||
127 | "total": len(values), | 150 | "total": len(values), |
128 | }, nil | 151 | }, nil |
129 | } | 152 | } |
153 | + | ||
154 | +func removeDuplicate(inputs []string) []string { | ||
155 | + s := collection.NewSet() | ||
156 | + var result = make([]string, 0) | ||
157 | + for _, input := range inputs { | ||
158 | + if !s.Contains(input) { | ||
159 | + s.Add(input) | ||
160 | + result = append(result, input) | ||
161 | + } | ||
162 | + } | ||
163 | + return result | ||
164 | +} |
-
请 注册 或 登录 后发表评论