package models

import (
	"github.com/beego/beego/v2/client/orm"
	"time"
)

type BaseFromCoalmineMapping struct {
	BaseFromCoalmineMappingId int       `orm:"column(base_from_coalmine_mapping_id);pk"`
	IndexName                 string    `description:"持买单量指标名称"`
	IndexCode                 string    `description:"持买单量指标编码"`
	CreateTime                time.Time `description:"时间"`
}

type BaseFromCoalmineJsmIndex struct {
	BaseFromCoalmineJsmIndexId int       `orm:"column(base_from_coalmine_jsm_index_id);pk"`
	IndexName                  string    `description:"持买单量指标名称"`
	IndexCode                  string    `description:"持买单量指标编码"`
	Exchange                   string    `description:"样本统计类别"`
	DealValue                  string    `description:"成交量"`
	DataTime                   string    `description:"数据日期"`
	Source                     string    `description:"来源"`
	Province                   string    `description:"省份"`
	Description                string    `description:"描述"`
	Unit                       string    `description:"单位"`
	Frequency                  string    `description:"频率"`
	CreateTime                 time.Time `description:"插入时间"`
	ModifyTime                 time.Time `description:"修改时间"`
}

type BaseFromCoalmineCompanyIndex struct {
	BaseFromCoalmineCompanyIndexId int       `orm:"column(base_from_coalmine_company_index_id);pk"`
	IndexName                      string    `description:"持买单量指标名称"`
	IndexCode                      string    `description:"持买单量指标编码"`
	DealValue                      string    `description:"成交量"`
	DataTime                       string    `description:"数据日期"`
	Source                         string    `description:"来源"`
	Province                       string    `description:"省份"`
	City                           string    `description:"城市"`
	GroupName                      string    `description:"集团名称"`
	Unit                           string    `description:"单位"`
	Frequency                      string    `description:"频率"`
	CreateTime                     time.Time `description:"插入时间"`
	ModifyTime                     time.Time `description:"修改时间"`
}


//添加指标
func AddBaseFromCoalmineMapping(item *BaseFromCoalmineMapping) (lastId int64, err error) {
	o := orm.NewOrm()
	lastId, err = o.Insert(item)
	return
}

//查询指标
func GetBaseFromCoalmineMapping() (items []*BaseFromCoalmineMapping, err error) {
	o := orm.NewOrm()
	sql := `SELECT * FROM base_from_coalmine_mapping`
	_, err = o.Raw(sql).QueryRows(&items)
	return
}

//查询数据
func GetBaseFromCoalmineIndex() (items []*BaseFromCoalmineJsmIndex, err error) {
	o := orm.NewOrm()
	sql := `SELECT * FROM base_from_coalmine_jsm_index`
	_, err = o.Raw(sql).QueryRows(&items)
	return
}

func UpdateBaseFromCoalmineIndex(item *BaseFromCoalmineJsmIndex) (err error) {
	o := orm.NewOrm()
	sql := `UPDATE base_from_coalmine_jsm_index SET deal_value=?  WHERE index_name=?  AND  data_time = ?`
	_, err = o.Raw(sql, item.DealValue, item.IndexName, item.DataTime).Exec()
	return
}

//添加数据
func AddBaseFromCoalmineIndex(item *BaseFromCoalmineJsmIndex) (lastId int64, err error) {
	o := orm.NewOrm()
	lastId, err = o.Insert(item)
	return
}

//添加公司指标
func AddBaseFromCoalmineCompanyIndex(item *BaseFromCoalmineCompanyIndex) (lastId int64, err error) {
	o := orm.NewOrm()
	lastId, err = o.Insert(item)
	return
}

//查询公司指标
func GetBaseFromCoalmineCompanyIndex() (items []*BaseFromCoalmineCompanyIndex, err error) {
	o := orm.NewOrm()
	sql := `SELECT * FROM base_from_coalmine_company_index`
	_, err = o.Raw(sql).QueryRows(&items)
	return
}

func UpdateBaseFromCoalmineCompanyIndex(item *BaseFromCoalmineCompanyIndex) (err error) {
	o := orm.NewOrm()
	sql := `UPDATE base_from_coalmine_company_index SET deal_value=?  WHERE index_name=?  AND  data_time = ?`
	_, err = o.Raw(sql, item.DealValue, item.IndexName, item.DataTime).Exec()
	return
}

type CoalMineDataReq struct {
	SheetData []SheetData
}


type SheetData struct {
	Name        string
	Rows        []Row
	Cols        []*Col
	MaxRow      int
	MaxCol      int
	Hidden      bool
	Selected    bool
}


type Row struct {
	Cells        []Cell
	Hidden       bool
	Height       float64
	OutlineLevel uint8
	isCustom     bool
}

type Col struct {
	Min             int
	Max             int
	Hidden          bool
	Width           float64
	Collapsed       bool
	OutlineLevel    uint8
	numFmt          string
}


type Cell struct {
	Value          string
}