作者 yangfu

fix: calculate table add pk field

@@ -158,11 +158,23 @@ func NewFormulaCalculate(table *domain.Table, queryComponent *domain.QueryCompon @@ -158,11 +158,23 @@ func NewFormulaCalculate(table *domain.Table, queryComponent *domain.QueryCompon
158 } 158 }
159 if queryComponent.Aggregation != nil { 159 if queryComponent.Aggregation != nil {
160 res.DatabaseTableName = queryComponent.MasterTable.SQLName 160 res.DatabaseTableName = queryComponent.MasterTable.SQLName
161 - for _, f := range queryComponent.Aggregation.ValueFields { 161 + for i, f := range queryComponent.Aggregation.ValueFields {
162 tableField, ok := table.MatchField(&domain.Field{Name: f.DisplayName}) 162 tableField, ok := table.MatchField(&domain.Field{Name: f.DisplayName})
163 if !ok { 163 if !ok {
164 continue 164 continue
165 } 165 }
  166 + if i == 0 {
  167 + res.FormulaCalculateFields = append(res.FormulaCalculateFields, &FormulaCalculateField{
  168 + DatabaseTableName: queryComponent.MasterTable.SQLName,
  169 + FieldSchema: NewFieldSchemaFromField(&domain.Field{
  170 + Name: "序号",
  171 + SQLName: "id",
  172 + SQLType: domain.String.ToString(),
  173 + }),
  174 + CalculateExpression: fmt.Sprintf("max(%s.%s)", queryComponent.MasterTable.SQLName, "id"),
  175 + CalculateFieldName: "id",
  176 + })
  177 + }
166 res.FormulaCalculateFields = append(res.FormulaCalculateFields, &FormulaCalculateField{ 178 res.FormulaCalculateFields = append(res.FormulaCalculateFields, &FormulaCalculateField{
167 DatabaseTableName: queryComponent.MasterTable.SQLName, 179 DatabaseTableName: queryComponent.MasterTable.SQLName,
168 FieldSchema: NewFieldSchemaFromField(f.Field), 180 FieldSchema: NewFieldSchemaFromField(f.Field),
@@ -693,7 +693,7 @@ func (ptr *QuerySetService) CreateOrUpdateCalculateItemTable(ctx *domain.Context @@ -693,7 +693,7 @@ func (ptr *QuerySetService) CreateOrUpdateCalculateItemTable(ctx *domain.Context
693 field.SQLType = queryComponent.Formula.TableFields[0].FieldSQLType 693 field.SQLType = queryComponent.Formula.TableFields[0].FieldSQLType
694 } 694 }
695 var table *domain.Table = NewCopyTable(domain.TableType(querySet.Type), querySet.Name, []*domain.Field{field}, 1).WithContext(ctx).WithPrefix(strings.ToLower(querySet.Type)) 695 var table *domain.Table = NewCopyTable(domain.TableType(querySet.Type), querySet.Name, []*domain.Field{field}, 1).WithContext(ctx).WithPrefix(strings.ToLower(querySet.Type))
696 - table.PK = nil 696 + //table.PK = nil
697 if querySet.QuerySetInfo.BindTableId > 0 { 697 if querySet.QuerySetInfo.BindTableId > 0 {
698 table, err = tableRepository.FindOne(map[string]interface{}{"context": ctx, "tableId": querySet.QuerySetInfo.BindTableId}) 698 table, err = tableRepository.FindOne(map[string]interface{}{"context": ctx, "tableId": querySet.QuerySetInfo.BindTableId})
699 if err != nil { 699 if err != nil {