package data_manage

import (
	"eta/eta_api/utils"
	"github.com/beego/beego/v2/client/orm"
	"github.com/rdlucklib/rdluck_tools/paging"
)

type BaseFromOilchemClassify struct {
	BaseFromCcfClassifyId int       // 分类ID
	ClassifyName          string    // 分类名称
	ParentID              int       // 上级ID
	Level                 int       // 层级
	Sort                  int       // 排序
	CreateTime            string // 创建时间
	ModifyTime            string // 修改时间
}

type BaseFromOilchemIndex struct {
	BaseFromOilchemIndexId int    // 主键ID
	IndexCode              string // 指标编码
	IndexName              string // 指标名称
	ClassifyId             uint   // 分类ID
	Unit                   string // 单位
	Frequency              string // 频度
	Describe               string // 指标描述
	Sort                   int    // 排序
	CreateTime             string // 创建时间
	ModifyTime             string // 修改时间
}

type BaseFromOilchemData struct {
	BaseFromOilchemDataId  int    // 数据表ID
	BaseFromOilchemIndexId int    // 指标ID
	IndexCode              string // 指标编码
	DataTime               string
	Value                  string
	CreateTime             string
	ModifyTime             string
}

func GetOilchemClassifyList() (list []*BaseFromOilchemClassify, err error) {
	o := orm.NewOrmUsingDB("data")
	sql := "SELECT * FROM base_from_oilchem_classify ORDER BY sort ASC"
	_, err = o.Raw(sql).QueryRows(&list)
	return
}

type BaseFromOilchemIndexList struct {
	BaseFromOilchemIndexId int    // 主键ID
	IndexCode              string // 指标编码
	IndexName              string // 指标名称
	ClassifyId             uint   // 分类ID
	Unit                   string // 单位
	Frequency              string // 频度
	Describe               string // 指标描述
	Sort                   int    // 排序
	CreateTime             string // 创建时间
	ModifyTime             string // 修改时间
	DataList               []*BaseFromOilchemData
	Paging                 *paging.PagingItem `description:"分页数据"`
}


type BaseFromOilchemIndexListResp struct {
	List   []*BaseFromOilchemIndex
	Paging *paging.PagingItem `description:"分页数据"`
}

func GetOilchemIndexById(indexId int) (item *BaseFromOilchemIndex, err error) {
	o := orm.NewOrmUsingDB("data")
	sql := ` SELECT * FROM base_from_oilchem_index WHERE 1=1 base_from_oilchem_index_id = ? `
	sql += `ORDER BY base_from_oilchem_index_id ASC `
	err = o.Raw(sql, indexId).QueryRow(&item)
	return
}
func GetOilchemIndexByCode(indexCode string) (item *BaseFromOilchemIndex, err error) {
	o := orm.NewOrmUsingDB("data")
	sql := ` SELECT * FROM base_from_oilchem_index WHERE 1=1 and index_code = ? `
	sql += `ORDER BY base_from_oilchem_index_id ASC `
	err = o.Raw(sql, indexCode).QueryRow(&item)
	return
}

func GetOilchemIndexList(condition string, pars interface{}, startSize, pageSize int) (items []*BaseFromOilchemIndex, err error) {
	o := orm.NewOrmUsingDB("data")
	sql := ` SELECT * FROM base_from_oilchem_index WHERE 1=1  `
	if condition != "" {
		sql += condition
	}

	sql += `group BY index_code ASC order by create_time DESC LIMIT ?,? `
	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
	return
}

func GetOilchemIndexListCount(condition string, pars interface{}) (count int, err error) {
	o := orm.NewOrmUsingDB("data")
	sql := ` SELECT COUNT(1) AS count FROM base_from_oilchem_index WHERE 1=1  `
	if condition != "" {
		sql += condition
	}
	err = o.Raw(sql, pars).QueryRow(&count)
	return
}

func GetOilchemDataListCount(condition string, pars interface{}) (count int, err error) {
	o := orm.NewOrmUsingDB("data")
	sql := ` SELECT COUNT(1) AS count FROM base_from_oilchem_data WHERE 1=1  `
	if condition != "" {
		sql += condition
	}
	err = o.Raw(sql, pars).QueryRow(&count)
	return
}

func GetOilchemIndexData(condition string, pars interface{}, startSize, pageSize int) (items []*BaseFromOilchemData, err error) {
	o := orm.NewOrmUsingDB("data")
	sql := ` SELECT * FROM base_from_oilchem_data WHERE 1=1  `
	if condition != "" {
		sql += condition
	}

	sql += ` order by data_time DESC LIMIT ?,? `
	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
	return
}

// GetOilchemItemList 模糊查询隆众资讯数据库指标列表
func GetOilchemItemList(keyword string) (items []*BaseFromOilchemIndex, err error) {
	o := orm.NewOrmUsingDB("data")
	sql := "SELECT * FROM base_from_oilchem_index WHERE CONCAT(index_name,index_code) LIKE ? "
	_, err = o.Raw(sql, utils.GetLikeKeyword(keyword)).QueryRows(&items)
	return
}