作者 yangfu

计算集标题

... ... @@ -25,7 +25,15 @@ type FileDto struct {
// 表ID
TableId int `json:"tableId"`
// 允许表生成标识 1:允许生成分表 0:不允许
AllowTableGenerateFlag int `json:"allowTableGenerateFlag"`
AllowTableGenerateFlag int `json:"-"`
// 允许表处理标识 1:允许 0:不允许
AllowTableProcessFlag int `json:"-"`
// 允许表导出标识 1:允许 0:不允许
AllowTableExportFlag int `json:"-"`
// 标志位 1:可校验 2:可分表生成 4:导出
Flag int `json:"-"`
// 标志位 1:可校验 2:可分表生成 4:导出
Flags []int `json:"flags"`
}
func (d *FileDto) Load(f *domain.File) *FileDto {
... ... @@ -40,13 +48,40 @@ func (d *FileDto) Load(f *domain.File) *FileDto {
d.Time = xtime.New(f.UpdatedAt).Local().Format("2006-01-02 15:04:05")
d.HeaderRow = domain.GetHeaderRow(f.FileInfo.HeaderRow)
d.AppKey = f.AppKey
//d.AllowTableProcessFlag = 1
//d.AllowTableExportFlag = 1
d.AddFlag(5) // 默认可以 校验、导出
if len(f.AppKey) > 0 && f.FileInfo.TableId > 0 {
d.TableId = f.FileInfo.TableId
d.AllowTableGenerateFlag = 1
//d.AllowTableGenerateFlag = 1
d.AddFlag(2) // 可分表生成
d.RemoveFlag(1) // 不可校验
//d.RemoveFlag(4) // 不可校验
//d.AllowTableProcessFlag = 0
//d.AllowTableExportFlag = 0
}
for i := 1; i <= 4; i = i << 1 {
if i&d.Flag == i {
d.Flags = append(d.Flags, i)
}
}
return d
}
func (d *FileDto) AddFlag(flag int) {
if d.Flag&flag == flag {
return
}
d.Flag |= flag
}
func (d *FileDto) RemoveFlag(flag int) {
if d.Flag&flag != flag {
return
}
d.Flag ^= flag
}
type AppDto struct {
AppId int64 `json:"appId"`
AppKey string `json:"appKey"`
... ...
... ... @@ -50,6 +50,13 @@ type LayoutCellData struct {
func (l *LayoutRuleItem) LayoutCells() []*LayoutCell {
var cells = make([]*LayoutCell, 0)
// 排序
sort.SliceStable(l.Cells, func(i, j int) bool {
if l.Cells[i].Position.X == l.Cells[j].Position.X {
return l.Cells[i].Position.Y < l.Cells[j].Position.Y
}
return l.Cells[i].Position.X < l.Cells[j].Position.X
})
for _, item := range l.Cells {
item.X = item.Position.X
item.Y = item.Position.Y
... ...
... ... @@ -303,7 +303,9 @@ func DataLayout(res *domain.DataTable, cells []*domain.LayoutCell) (*domain.Data
dt.processed = append(dt.processed, cell)
dt.LastCell = cell
}
dt.Shrink()
if err := dt.Shrink(); err != nil {
return nil, err
}
return dt.DataTable, nil
}
... ... @@ -444,16 +446,16 @@ func (d *DataLayoutDataTable) Shrink() error {
// })
//}
// 默认计算集第一行作为标题
if len(data) > 1 {
if len(data) >= 1 {
d.DataTable.Data = data[1:]
columnMap := collection.NewSet()
for i := 0; i < len(data[0]); i++ {
if len(data[0][i]) == 0 {
return fmt.Errorf("计算集标题不能为空")
}
if columnMap.Contains(data[0][i]) {
return fmt.Errorf("计算集列重复:%v", data[0][i])
}
//if len(data[0][i]) == 0 {
// return fmt.Errorf("计算集标题第%d列不能为空", i+1)
//}
//if columnMap.Contains(data[0][i]) {
// return fmt.Errorf("计算集第%d列重复:%v", i+1, data[0][i])
//}
columnMap.Add(data[0][i])
d.DataTable.Fields = append(d.DataTable.Fields, &domain.Field{
Name: data[0][i],
... ...