正在显示
3 个修改的文件
包含
54 行增加
和
10 行删除
| @@ -25,7 +25,15 @@ type FileDto struct { | @@ -25,7 +25,15 @@ type FileDto struct { | ||
| 25 | // 表ID | 25 | // 表ID |
| 26 | TableId int `json:"tableId"` | 26 | TableId int `json:"tableId"` |
| 27 | // 允许表生成标识 1:允许生成分表 0:不允许 | 27 | // 允许表生成标识 1:允许生成分表 0:不允许 |
| 28 | - AllowTableGenerateFlag int `json:"allowTableGenerateFlag"` | 28 | + AllowTableGenerateFlag int `json:"-"` |
| 29 | + // 允许表处理标识 1:允许 0:不允许 | ||
| 30 | + AllowTableProcessFlag int `json:"-"` | ||
| 31 | + // 允许表导出标识 1:允许 0:不允许 | ||
| 32 | + AllowTableExportFlag int `json:"-"` | ||
| 33 | + // 标志位 1:可校验 2:可分表生成 4:导出 | ||
| 34 | + Flag int `json:"-"` | ||
| 35 | + // 标志位 1:可校验 2:可分表生成 4:导出 | ||
| 36 | + Flags []int `json:"flags"` | ||
| 29 | } | 37 | } |
| 30 | 38 | ||
| 31 | func (d *FileDto) Load(f *domain.File) *FileDto { | 39 | func (d *FileDto) Load(f *domain.File) *FileDto { |
| @@ -40,13 +48,40 @@ func (d *FileDto) Load(f *domain.File) *FileDto { | @@ -40,13 +48,40 @@ func (d *FileDto) Load(f *domain.File) *FileDto { | ||
| 40 | d.Time = xtime.New(f.UpdatedAt).Local().Format("2006-01-02 15:04:05") | 48 | d.Time = xtime.New(f.UpdatedAt).Local().Format("2006-01-02 15:04:05") |
| 41 | d.HeaderRow = domain.GetHeaderRow(f.FileInfo.HeaderRow) | 49 | d.HeaderRow = domain.GetHeaderRow(f.FileInfo.HeaderRow) |
| 42 | d.AppKey = f.AppKey | 50 | d.AppKey = f.AppKey |
| 51 | + //d.AllowTableProcessFlag = 1 | ||
| 52 | + //d.AllowTableExportFlag = 1 | ||
| 53 | + d.AddFlag(5) // 默认可以 校验、导出 | ||
| 43 | if len(f.AppKey) > 0 && f.FileInfo.TableId > 0 { | 54 | if len(f.AppKey) > 0 && f.FileInfo.TableId > 0 { |
| 44 | d.TableId = f.FileInfo.TableId | 55 | d.TableId = f.FileInfo.TableId |
| 45 | - d.AllowTableGenerateFlag = 1 | 56 | + //d.AllowTableGenerateFlag = 1 |
| 57 | + d.AddFlag(2) // 可分表生成 | ||
| 58 | + d.RemoveFlag(1) // 不可校验 | ||
| 59 | + //d.RemoveFlag(4) // 不可校验 | ||
| 60 | + //d.AllowTableProcessFlag = 0 | ||
| 61 | + //d.AllowTableExportFlag = 0 | ||
| 62 | + } | ||
| 63 | + for i := 1; i <= 4; i = i << 1 { | ||
| 64 | + if i&d.Flag == i { | ||
| 65 | + d.Flags = append(d.Flags, i) | ||
| 66 | + } | ||
| 46 | } | 67 | } |
| 47 | return d | 68 | return d |
| 48 | } | 69 | } |
| 49 | 70 | ||
| 71 | +func (d *FileDto) AddFlag(flag int) { | ||
| 72 | + if d.Flag&flag == flag { | ||
| 73 | + return | ||
| 74 | + } | ||
| 75 | + d.Flag |= flag | ||
| 76 | +} | ||
| 77 | + | ||
| 78 | +func (d *FileDto) RemoveFlag(flag int) { | ||
| 79 | + if d.Flag&flag != flag { | ||
| 80 | + return | ||
| 81 | + } | ||
| 82 | + d.Flag ^= flag | ||
| 83 | +} | ||
| 84 | + | ||
| 50 | type AppDto struct { | 85 | type AppDto struct { |
| 51 | AppId int64 `json:"appId"` | 86 | AppId int64 `json:"appId"` |
| 52 | AppKey string `json:"appKey"` | 87 | AppKey string `json:"appKey"` |
| @@ -50,6 +50,13 @@ type LayoutCellData struct { | @@ -50,6 +50,13 @@ type LayoutCellData struct { | ||
| 50 | 50 | ||
| 51 | func (l *LayoutRuleItem) LayoutCells() []*LayoutCell { | 51 | func (l *LayoutRuleItem) LayoutCells() []*LayoutCell { |
| 52 | var cells = make([]*LayoutCell, 0) | 52 | var cells = make([]*LayoutCell, 0) |
| 53 | + // 排序 | ||
| 54 | + sort.SliceStable(l.Cells, func(i, j int) bool { | ||
| 55 | + if l.Cells[i].Position.X == l.Cells[j].Position.X { | ||
| 56 | + return l.Cells[i].Position.Y < l.Cells[j].Position.Y | ||
| 57 | + } | ||
| 58 | + return l.Cells[i].Position.X < l.Cells[j].Position.X | ||
| 59 | + }) | ||
| 53 | for _, item := range l.Cells { | 60 | for _, item := range l.Cells { |
| 54 | item.X = item.Position.X | 61 | item.X = item.Position.X |
| 55 | item.Y = item.Position.Y | 62 | item.Y = item.Position.Y |
| @@ -303,7 +303,9 @@ func DataLayout(res *domain.DataTable, cells []*domain.LayoutCell) (*domain.Data | @@ -303,7 +303,9 @@ func DataLayout(res *domain.DataTable, cells []*domain.LayoutCell) (*domain.Data | ||
| 303 | dt.processed = append(dt.processed, cell) | 303 | dt.processed = append(dt.processed, cell) |
| 304 | dt.LastCell = cell | 304 | dt.LastCell = cell |
| 305 | } | 305 | } |
| 306 | - dt.Shrink() | 306 | + if err := dt.Shrink(); err != nil { |
| 307 | + return nil, err | ||
| 308 | + } | ||
| 307 | return dt.DataTable, nil | 309 | return dt.DataTable, nil |
| 308 | } | 310 | } |
| 309 | 311 | ||
| @@ -444,16 +446,16 @@ func (d *DataLayoutDataTable) Shrink() error { | @@ -444,16 +446,16 @@ func (d *DataLayoutDataTable) Shrink() error { | ||
| 444 | // }) | 446 | // }) |
| 445 | //} | 447 | //} |
| 446 | // 默认计算集第一行作为标题 | 448 | // 默认计算集第一行作为标题 |
| 447 | - if len(data) > 1 { | 449 | + if len(data) >= 1 { |
| 448 | d.DataTable.Data = data[1:] | 450 | d.DataTable.Data = data[1:] |
| 449 | columnMap := collection.NewSet() | 451 | columnMap := collection.NewSet() |
| 450 | for i := 0; i < len(data[0]); i++ { | 452 | for i := 0; i < len(data[0]); i++ { |
| 451 | - if len(data[0][i]) == 0 { | ||
| 452 | - return fmt.Errorf("计算集标题不能为空") | ||
| 453 | - } | ||
| 454 | - if columnMap.Contains(data[0][i]) { | ||
| 455 | - return fmt.Errorf("计算集列重复:%v", data[0][i]) | ||
| 456 | - } | 453 | + //if len(data[0][i]) == 0 { |
| 454 | + // return fmt.Errorf("计算集标题第%d列不能为空", i+1) | ||
| 455 | + //} | ||
| 456 | + //if columnMap.Contains(data[0][i]) { | ||
| 457 | + // return fmt.Errorf("计算集第%d列重复:%v", i+1, data[0][i]) | ||
| 458 | + //} | ||
| 457 | columnMap.Add(data[0][i]) | 459 | columnMap.Add(data[0][i]) |
| 458 | d.DataTable.Fields = append(d.DataTable.Fields, &domain.Field{ | 460 | d.DataTable.Fields = append(d.DataTable.Fields, &domain.Field{ |
| 459 | Name: data[0][i], | 461 | Name: data[0][i], |
-
请 注册 或 登录 后发表评论