正在显示
6 个修改的文件
包含
129 行增加
和
85 行删除
@@ -121,21 +121,24 @@ var ( | @@ -121,21 +121,24 @@ var ( | ||
121 | ) | 121 | ) |
122 | 122 | ||
123 | var ( | 123 | var ( |
124 | - String SQLType = "STRING" | ||
125 | - Int SQLType = "INT" | ||
126 | - BigInt SQLType = "BIGINT" | ||
127 | - Float SQLType = "FLOAT" | ||
128 | - Date SQLType = "DATE" | ||
129 | - Datetime SQLType = "DATETIME" | 124 | + String SQLType = "STRING" |
125 | + Int SQLType = "INT" | ||
126 | + BigInt SQLType = "BIGINT" | ||
127 | + Float SQLType = "FLOAT" | ||
128 | + DECIMALV2 SQLType = "DECIMALV2" | ||
129 | + DECIMAL279 SQLType = "DECIMAL(27,9)" | ||
130 | + Date SQLType = "DATE" | ||
131 | + Datetime SQLType = "DATETIME" | ||
130 | ) | 132 | ) |
131 | 133 | ||
132 | var SQLTypeMap = map[string]string{ | 134 | var SQLTypeMap = map[string]string{ |
133 | - String.ToString(): "文本", | ||
134 | - Int.ToString(): "整数", | ||
135 | - BigInt.ToString(): "整数", | ||
136 | - Float.ToString(): "小数", | ||
137 | - Date.ToString(): "日期", | ||
138 | - Datetime.ToString(): "日期时间", | 135 | + String.ToString(): "文本", |
136 | + Int.ToString(): "整数", | ||
137 | + BigInt.ToString(): "整数", | ||
138 | + Float.ToString(): "小数", | ||
139 | + DECIMALV2.ToString(): "小数", | ||
140 | + Date.ToString(): "日期", | ||
141 | + Datetime.ToString(): "日期时间", | ||
139 | } | 142 | } |
140 | 143 | ||
141 | type FileType string | 144 | type FileType string |
@@ -4,7 +4,6 @@ import ( | @@ -4,7 +4,6 @@ import ( | ||
4 | "fmt" | 4 | "fmt" |
5 | "github.com/linmadan/egglib-go/utils/xtime" | 5 | "github.com/linmadan/egglib-go/utils/xtime" |
6 | "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/infrastructure/utils" | 6 | "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/infrastructure/utils" |
7 | - "strconv" | ||
8 | "strings" | 7 | "strings" |
9 | ) | 8 | ) |
10 | 9 | ||
@@ -186,6 +185,16 @@ func ValueToType(value string, sqlType string) (interface{}, error) { | @@ -186,6 +185,16 @@ func ValueToType(value string, sqlType string) (interface{}, error) { | ||
186 | if err != nil { | 185 | if err != nil { |
187 | err = fmt.Errorf("[%v]不是有效的浮点数类型", value) | 186 | err = fmt.Errorf("[%v]不是有效的浮点数类型", value) |
188 | } | 187 | } |
188 | + case DECIMALV2.ToString(): | ||
189 | + toTypeVal, err = numberString.Float64() | ||
190 | + if err != nil { | ||
191 | + err = fmt.Errorf("[%v]不是有效的浮点数类型", value) | ||
192 | + } | ||
193 | + case DECIMAL279.ToString(): | ||
194 | + toTypeVal, err = numberString.Float64() | ||
195 | + if err != nil { | ||
196 | + err = fmt.Errorf("[%v]不是有效的浮点数类型", value) | ||
197 | + } | ||
189 | case Date.ToString(): | 198 | case Date.ToString(): |
190 | toTypeVal, err = xtime.Parse(value) | 199 | toTypeVal, err = xtime.Parse(value) |
191 | if err != nil { | 200 | if err != nil { |
@@ -235,15 +244,16 @@ func ToFieldData(fields []*Field, data [][]string, byName bool, configs ...bool) | @@ -235,15 +244,16 @@ func ToFieldData(fields []*Field, data [][]string, byName bool, configs ...bool) | ||
235 | 244 | ||
236 | // RoundFieldValue 字段值精度处理 | 245 | // RoundFieldValue 字段值精度处理 |
237 | func RoundFieldValue(f *Field, v string) string { | 246 | func RoundFieldValue(f *Field, v string) string { |
238 | - if f.SQLType != Float.ToString() { | ||
239 | - return v | ||
240 | - } | ||
241 | - fv, err := strconv.ParseFloat(v, 64) | ||
242 | - if err != nil { | ||
243 | - return v | ||
244 | - } | ||
245 | - fv = utils.Round(fv, 6) | ||
246 | - return fmt.Sprintf("%v", fv) | 247 | + return v |
248 | + //if f.SQLType != DECIMALV2.ToString() { | ||
249 | + // return v | ||
250 | + //} | ||
251 | + //fv, err := strconv.ParseFloat(v, 64) | ||
252 | + //if err != nil { | ||
253 | + // return v | ||
254 | + //} | ||
255 | + //fv = utils.Round(fv, 6) | ||
256 | + //return fmt.Sprintf("%v", fv) | ||
247 | } | 257 | } |
248 | 258 | ||
249 | func GripData(data []map[string]string, total int64) map[string]interface{} { | 259 | func GripData(data []map[string]string, total int64) map[string]interface{} { |
pkg/infrastructure/api/bytelib/convert.go
0 → 100644
1 | +package bytelib | ||
2 | + | ||
3 | +import "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/domain" | ||
4 | + | ||
5 | +func DomainFieldsToColumnSchemas(fields []*domain.Field) []domain.ColumnSchema { | ||
6 | + result := make([]domain.ColumnSchema, 0) | ||
7 | + for _, f := range fields { | ||
8 | + res := domain.ColumnSchema{ | ||
9 | + ColumnName: f.Name, | ||
10 | + ColumnType: f.SQLType, | ||
11 | + } | ||
12 | + if convertFiledSQLType(f.SQLType) { | ||
13 | + res.ColumnType = domain.DECIMAL279.ToString() | ||
14 | + } | ||
15 | + result = append(result) | ||
16 | + } | ||
17 | + return result | ||
18 | +} | ||
19 | + | ||
20 | +func ToFieldSchemas(fields []*domain.Field) []FieldSchema { | ||
21 | + result := make([]FieldSchema, 0) | ||
22 | + for _, f := range fields { | ||
23 | + res := FieldSchema{ | ||
24 | + FieldZhName: f.Name, | ||
25 | + FieldEnName: f.SQLName, | ||
26 | + FieldType: f.SQLType, | ||
27 | + FieldDescription: f.Description, | ||
28 | + IsAllowNull: true, | ||
29 | + } | ||
30 | + if convertFiledSQLType(f.SQLType) { | ||
31 | + res.FieldType = domain.DECIMAL279.ToString() | ||
32 | + } | ||
33 | + result = append(result, res) | ||
34 | + } | ||
35 | + return result | ||
36 | +} | ||
37 | + | ||
38 | +func NewFieldSchema(f domain.TableField) FieldSchema { | ||
39 | + var res = FieldSchema{ | ||
40 | + FieldZhName: f.FieldName, | ||
41 | + FieldEnName: f.FieldSqlName, | ||
42 | + FieldType: f.FieldSQLType, | ||
43 | + FieldDescription: "", | ||
44 | + IsAllowNull: true, | ||
45 | + } | ||
46 | + if convertFiledSQLType(f.FieldSQLType) { | ||
47 | + res.FieldType = domain.DECIMAL279.ToString() | ||
48 | + } | ||
49 | + return res | ||
50 | +} | ||
51 | + | ||
52 | +func NewFieldSchemaFromField(f *domain.Field) FieldSchema { | ||
53 | + var res = FieldSchema{ | ||
54 | + FieldZhName: f.Name, | ||
55 | + FieldEnName: f.SQLName, | ||
56 | + FieldType: f.SQLType, | ||
57 | + FieldDescription: "", | ||
58 | + IsAllowNull: true, | ||
59 | + } | ||
60 | + if convertFiledSQLType(f.SQLType) { | ||
61 | + res.FieldType = domain.DECIMAL279.ToString() | ||
62 | + } | ||
63 | + return res | ||
64 | +} | ||
65 | + | ||
66 | +func convertFiledSQLType(sqlType string) bool { | ||
67 | + if sqlType == domain.Float.ToString() || sqlType == domain.DECIMAL279.ToString() { | ||
68 | + return true | ||
69 | + } | ||
70 | + return false | ||
71 | +} |
@@ -108,18 +108,6 @@ func FieldsToColumnSchemas(fields []*domain.Field) []domain.ColumnSchema { | @@ -108,18 +108,6 @@ func FieldsToColumnSchemas(fields []*domain.Field) []domain.ColumnSchema { | ||
108 | return result | 108 | return result |
109 | } | 109 | } |
110 | 110 | ||
111 | -func DomainFieldsToColumnSchemas(fields []*domain.Field) []domain.ColumnSchema { | ||
112 | - result := make([]domain.ColumnSchema, 0) | ||
113 | - | ||
114 | - for _, f := range fields { | ||
115 | - result = append(result, domain.ColumnSchema{ | ||
116 | - ColumnName: f.Name, | ||
117 | - ColumnType: f.SQLType, // domain.String.ToString(), | ||
118 | - }) | ||
119 | - } | ||
120 | - return result | ||
121 | -} | ||
122 | - | ||
123 | func ToDataLoadDataTable(data DataCheckoutTables) *domain.DataLoadDataTable { | 111 | func ToDataLoadDataTable(data DataCheckoutTables) *domain.DataLoadDataTable { |
124 | response := &domain.DataLoadDataTable{ | 112 | response := &domain.DataLoadDataTable{ |
125 | PageNumber: data.PageNumber, | 113 | PageNumber: data.PageNumber, |
@@ -181,28 +169,6 @@ func NewRequestCheckoutTablesGenerateMasterTable(param domain.ReqGenerateTable) | @@ -181,28 +169,6 @@ func NewRequestCheckoutTablesGenerateMasterTable(param domain.ReqGenerateTable) | ||
181 | return request | 169 | return request |
182 | } | 170 | } |
183 | 171 | ||
184 | -func ToFieldSchemas(fields []*domain.Field) []FieldSchema { | ||
185 | - result := make([]FieldSchema, 0) | ||
186 | - for _, f := range fields { | ||
187 | - result = append(result, FieldSchema{ | ||
188 | - FieldZhName: f.Name, | ||
189 | - FieldEnName: f.SQLName, | ||
190 | - FieldType: f.SQLType, | ||
191 | - FieldDescription: f.Description, | ||
192 | - IsAllowNull: true, | ||
193 | - }) | ||
194 | - } | ||
195 | - return result | ||
196 | -} | ||
197 | - | ||
198 | -func ToFieldSchemaEnNames(fields []*domain.Field) []string { | ||
199 | - result := make([]string, 0) | ||
200 | - for _, f := range fields { | ||
201 | - result = append(result, f.SQLName) | ||
202 | - } | ||
203 | - return result | ||
204 | -} | ||
205 | - | ||
206 | type ( | 172 | type ( |
207 | TableAppendRequest struct { | 173 | TableAppendRequest struct { |
208 | //MasterTableId string `json:"masterTableId"` | 174 | //MasterTableId string `json:"masterTableId"` |
@@ -243,10 +209,6 @@ func NewTableAppendRequest(param domain.ReqAppendData) TableAppendRequest { | @@ -243,10 +209,6 @@ func NewTableAppendRequest(param domain.ReqAppendData) TableAppendRequest { | ||
243 | req.SchemaMap[param.To[i].SQLName] = columnSchemas[i] | 209 | req.SchemaMap[param.To[i].SQLName] = columnSchemas[i] |
244 | } | 210 | } |
245 | } | 211 | } |
246 | - //if len(param.From) > 0 { | ||
247 | - // req.ColumnSchemas = DomainFieldsToColumnSchemas(param.From) | ||
248 | - // req.FieldSchemas = ToFieldSchemas(param.To) | ||
249 | - //} | ||
250 | return req | 212 | return req |
251 | } | 213 | } |
252 | 214 |
@@ -162,7 +162,7 @@ func NewFormulaCalculate(table *domain.Table, queryComponent *domain.QueryCompon | @@ -162,7 +162,7 @@ func NewFormulaCalculate(table *domain.Table, queryComponent *domain.QueryCompon | ||
162 | } | 162 | } |
163 | if queryComponent.Aggregation != nil { | 163 | if queryComponent.Aggregation != nil { |
164 | res.DatabaseTableName = queryComponent.MasterTable.SQLName | 164 | res.DatabaseTableName = queryComponent.MasterTable.SQLName |
165 | - if len(queryComponent.Aggregation.ValueFields)>0 || len(queryComponent.Aggregation.RowFields)>0{ | 165 | + if len(queryComponent.Aggregation.ValueFields) > 0 || len(queryComponent.Aggregation.RowFields) > 0 { |
166 | res.FormulaCalculateFields = append(res.FormulaCalculateFields, &FormulaCalculateField{ | 166 | res.FormulaCalculateFields = append(res.FormulaCalculateFields, &FormulaCalculateField{ |
167 | DatabaseTableName: queryComponent.MasterTable.SQLName, | 167 | DatabaseTableName: queryComponent.MasterTable.SQLName, |
168 | FieldSchema: NewFieldSchemaFromField(&domain.Field{ | 168 | FieldSchema: NewFieldSchemaFromField(&domain.Field{ |
@@ -252,28 +252,6 @@ func NewFormulaField(f domain.FieldExpr, args ...interface{}) FormulaField { | @@ -252,28 +252,6 @@ func NewFormulaField(f domain.FieldExpr, args ...interface{}) FormulaField { | ||
252 | return res | 252 | return res |
253 | } | 253 | } |
254 | 254 | ||
255 | -func NewFieldSchema(f domain.TableField) FieldSchema { | ||
256 | - var res = FieldSchema{ | ||
257 | - FieldZhName: f.FieldName, | ||
258 | - FieldEnName: f.FieldSqlName, | ||
259 | - FieldType: f.FieldSQLType, | ||
260 | - FieldDescription: "", | ||
261 | - IsAllowNull: true, | ||
262 | - } | ||
263 | - return res | ||
264 | -} | ||
265 | - | ||
266 | -func NewFieldSchemaFromField(f *domain.Field) FieldSchema { | ||
267 | - var res = FieldSchema{ | ||
268 | - FieldZhName: f.Name, | ||
269 | - FieldEnName: f.SQLName, | ||
270 | - FieldType: f.SQLType, | ||
271 | - FieldDescription: "", | ||
272 | - IsAllowNull: true, | ||
273 | - } | ||
274 | - return res | ||
275 | -} | ||
276 | - | ||
277 | func NewFormulaDataHandleRule(s domain.SelectExprGroup) FormulaDataHandleRule { | 255 | func NewFormulaDataHandleRule(s domain.SelectExprGroup) FormulaDataHandleRule { |
278 | var res = FormulaDataHandleRule{ | 256 | var res = FormulaDataHandleRule{ |
279 | RuleType: 1, | 257 | RuleType: 1, |
@@ -168,7 +168,8 @@ func (c Condition) SetWhere(params QueryOptions, q *gorm.DB) { | @@ -168,7 +168,8 @@ func (c Condition) SetWhere(params QueryOptions, q *gorm.DB) { | ||
168 | } | 168 | } |
169 | } | 169 | } |
170 | if c.Distinct { | 170 | if c.Distinct { |
171 | - q.Distinct(c.Field.SQLName) | 171 | + // 需要优化 |
172 | + q.Distinct(c.FormatFiled(c.Field)) | ||
172 | } | 173 | } |
173 | if len(c.Order) > 0 { | 174 | if len(c.Order) > 0 { |
174 | q.Order(fmt.Sprintf("%v %v", c.Field.SQLName, c.Order)) | 175 | q.Order(fmt.Sprintf("%v %v", c.Field.SQLName, c.Order)) |
@@ -189,13 +190,32 @@ func (c Condition) FormatIfNull(params QueryOptions, f *domain.Field) string { | @@ -189,13 +190,32 @@ func (c Condition) FormatIfNull(params QueryOptions, f *domain.Field) string { | ||
189 | return f.SQLName | 190 | return f.SQLName |
190 | } | 191 | } |
191 | 192 | ||
193 | +func (c Condition) FormatFiled(f *domain.Field) string { | ||
194 | + return formatFiled(c.Field) | ||
195 | +} | ||
196 | + | ||
192 | func (c Condition) CastType(sql, t string) string { | 197 | func (c Condition) CastType(sql, t string) string { |
193 | if c.params.Table != nil && c.params.Table.TableType == domain.ObjectDBTable { | 198 | if c.params.Table != nil && c.params.Table.TableType == domain.ObjectDBTable { |
194 | return sql | 199 | return sql |
195 | } | 200 | } |
201 | + return castType(sql, t) | ||
202 | +} | ||
203 | + | ||
204 | +func formatFiled(f *domain.Field) string { | ||
205 | + if f.SQLType == domain.Float.ToString() || f.SQLType == domain.DECIMAL279.ToString() { | ||
206 | + return castTypeAlias(f.SQLName, domain.DECIMALV2.ToString()) | ||
207 | + } | ||
208 | + return f.SQLName | ||
209 | +} | ||
210 | + | ||
211 | +func castType(sql, t string) string { | ||
196 | return fmt.Sprintf("cast(%v as %v)", sql, t) | 212 | return fmt.Sprintf("cast(%v as %v)", sql, t) |
197 | } | 213 | } |
198 | 214 | ||
215 | +func castTypeAlias(sql, t string) string { | ||
216 | + return fmt.Sprintf("cast(%v as %v) %v", sql, t, sql) | ||
217 | +} | ||
218 | + | ||
199 | var opMap = map[string]string{ | 219 | var opMap = map[string]string{ |
200 | "=": "=", | 220 | "=": "=", |
201 | ">": ">", | 221 | ">": ">", |
@@ -305,7 +325,7 @@ func queryWithoutLimitOffset(query *gorm.DB, params QueryOptions) { | @@ -305,7 +325,7 @@ func queryWithoutLimitOffset(query *gorm.DB, params QueryOptions) { | ||
305 | fields = append(fields, "'' "+f.SQLName) | 325 | fields = append(fields, "'' "+f.SQLName) |
306 | continue | 326 | continue |
307 | } | 327 | } |
308 | - fields = append(fields, f.SQLName) | 328 | + fields = append(fields, formatFiled(f)) |
309 | } | 329 | } |
310 | query.Select(strings.Join(fields, ",")) | 330 | query.Select(strings.Join(fields, ",")) |
311 | } | 331 | } |
-
请 注册 或 登录 后发表评论