package excel

import (
	"eta_gn/eta_api/global"
	"time"
)

// ExcelSheet excel表格详情表
type ExcelSheet struct {
	ExcelSheetId int       `orm:"column(excel_sheet_id);pk" gorm:"primaryKey" `
	ExcelInfoId  int       `description:"excel的id"`
	SheetName    string    `description:"sheet名称"`
	PageNum      int       `description:"总页码数"`
	Index        string    `description:"excel数据中的index"`
	Sort         int       `description:"排序"`
	Config       string    `description:"配置信息"`
	CalcChain    string    `description:"计算公式"`
	ModifyTime   time.Time `description:"最近修改日期"`
	CreateTime   time.Time `description:"创建日期"`
}

// Update 更新 excel表格的sheet基础信息
func (excelSheet *ExcelSheet) Update(cols []string) (err error) {
	err = global.DmSQL["data"].Select(cols).Updates(excelSheet).Error
	return
}

// GetAllSheetList 根据excel_id获取所有的sheet
func GetAllSheetList(excelInfoId int) (item []*ExcelSheet, err error) {
	sql := ` SELECT *
	FROM excel_sheet WHERE 1=1 AND excel_info_id = ? `
	sql += " ORDER BY sort asc "
	err = global.DmSQL["data"].Raw(sql, excelInfoId).Find(&item).Error
	return
}

// SheetItem excel表格详情表
type SheetItem struct {
	ExcelSheetId int             `orm:"column(excel_sheet_id);pk" gorm:"primaryKey"  json:"-"`
	ExcelInfoId  int             `description:"excel的id"  json:"-"`
	SheetName    string          `description:"sheet名称"`
	PageNum      int             `description:"数据总页码数"`
	Index        string          `description:"excel数据中的index"`
	Sort         int             `description:"排序"`
	Config       string          `description:"sheet配置"`
	CalcChain    string          `description:"计算公式"`
	ModifyTime   time.Time       `description:"最近修改日期" json:"-"`
	CreateTime   time.Time       `description:"创建日期"`
	Data         *ExcelSheetData `gorm:"-" description:"excel的数据"`
}

// GetAllSheetItemList 根据excel_id获取所有的sheet详情
func GetAllSheetItemList(excelInfoId int) (item []*SheetItem, err error) {
	sql := ` SELECT *
	FROM excel_sheet WHERE 1=1 AND excel_info_id = ? `
	sql += " ORDER BY sort asc "
	err = global.DmSQL["data"].Raw(sql, excelInfoId).Find(&item).Error
	return
}

// GetAllNoConfigSheetItemList 根据excel_id获取所有的sheet详情
func GetAllNoConfigSheetItemList(excelInfoId int) (item []*SheetItem, err error) {
	sql := ` SELECT excel_sheet_id,excel_info_id,sheet_name,sort,page_num,create_time
	FROM excel_sheet WHERE 1=1 AND excel_info_id = ? `
	sql += " ORDER BY sort asc "
	err = global.DmSQL["data"].Raw(sql, excelInfoId).Find(&item).Error
	return
}

// AddExcelSheetParams excel表格详情表
type AddExcelSheetParams struct {
	ExcelSheetId int               `orm:"column(excel_sheet_id);pk" gorm:"primaryKey" `
	ExcelInfoId  int               `description:"excel的id"`
	SheetName    string            `description:"sheet名称"`
	Index        string            `description:"excel数据中的index"`
	Sort         int               `description:"排序"`
	Config       string            `description:"配置信息"`
	CalcChain    string            `description:"计算公式"`
	DataList     []*ExcelSheetData `description:"excel的数据"`
}