package data_stat

import (
	"eta_gn/eta_api/global"
	"github.com/rdlucklib/rdluck_tools/paging"
	"time"
)

// EdbSourceStat 数据源统计表
//type EdbSourceStat struct {
//	Id                uint64    `orm:"column(id);pk"`
//	SourceName        string    `description:"来源名称"`
//	Source            int       `description:"来源id"`
//	TerminalCode      string    `description:"终端编码,用于配置在机器上"`
//	EdbNum            int32     `description:"指标总数"`
//	EdbNewNum         int32     `description:"今日新增指标数"`
//	EdbDelNum         int32     `description:"今日删除指标数"`
//	NeedRefreshNum    int       `description:"今日需刷新指标"`
//	HasRefreshNum     int       `description:"今日发起刷新任务指标数"`
//	UpdateSuccessNum  int       `description:"今日已更新成功指标数"`
//	UpdateFailedNum   int       `description:"今日已更新失败指标数"`
//	RefreshSuccessNum int       `description:"今日已刷新成功指标数"`
//	RefreshFailedNum  int       `description:"今日已刷新失败指标数"`
//	CreateTime        time.Time `description:"创建时间"`
//	ModifyTime        time.Time `description:"修改时间"`
//}

type EdbSourceStat struct {
	Id                uint64    `gorm:"primaryKey;unique;column:id;type:bigint(20) unsigned;not null"` // 自增id
	SourceName        string    `gorm:"column:source_name;type:varchar(100)"`                          // 来源名称
	Source            int       `gorm:"column:source;type:tinyint(4)"`                                 // 来源:1:同花顺,2:wind,3:彭博,4:指标运算,5:累计值转月,6:同比值,7:同差值,8:N数值移动平均计算,9:手工指标,10:隆众,11:有色,12:环比值,13:环差值,14:变频,15:钢联
	TerminalCode      string    `gorm:"column:terminal_code;type:varchar(255);default:''"`             // 终端编码,用于配置在机器上
	EdbNum            int32     `gorm:"column:edb_num;type:int(11);not null;default:0"`                // 指标总数
	EdbNewNum         int32     `gorm:"column:edb_new_num;type:int(11);not null;default:0"`            // 今日新增指标数
	EdbDelNum         int32     `gorm:"column:edb_del_num;type:int(11);not null;default:0"`            // 今日删除指标数
	NeedRefreshNum    int       `gorm:"column:need_refresh_num;type:int(11);not null;default:0"`       // 今日需刷新指标
	HasRefreshNum     int       `gorm:"column:has_refresh_num;type:int(11);not null;default:0"`        // 今日发起刷新任务指标数
	RefreshSuccessNum int       `gorm:"column:refresh_success_num;type:int(11);not null;default:0"`    // 今日已刷新成功指标数
	RefreshFailedNum  int       `gorm:"column:refresh_failed_num;type:int(11);not null;default:0"`     // 今日已刷新失败指标数
	UpdateSuccessNum  int       `gorm:"column:update_success_num;type:int(11);not null;default:0"`     // 今日已更新成功指标数
	UpdateFailedNum   int       `gorm:"column:update_failed_num;type:int(11);not null;default:0"`      // 今日已更新失败指标数
	CreateTime        time.Time `gorm:"index:create_time_idx;column:create_time;type:datetime"`        // 创建时间
	ModifyTime        time.Time `gorm:"column:modify_time;type:datetime"`                              // 修改时间
}

type EdbInfoSourceStatItem struct {
	Id                uint64 `orm:"column(id);pk"`
	SourceName        string `description:"来源名称"`
	Source            int    `description:"来源id"`
	TerminalCode      string `description:"终端编码,用于配置在机器上"`
	EdbNum            int32  `description:"指标总数"`
	EdbNewNum         int32  `description:"今日新增指标数"`
	EdbDelNum         int32  `description:"今日删除指标数"`
	NeedRefreshNum    int    `description:"今日需刷新指标"`
	HasRefreshNum     int    `description:"今日发起刷新任务指标数"`
	UpdateSuccessNum  int    `description:"今日已更新成功指标数"`
	UpdateFailedNum   int    `description:"今日已更新失败指标数"`
	RefreshSuccessNum int    `description:"今日已刷新成功指标数"`
	RefreshFailedNum  int    `description:"今日已刷新失败指标数"`
}

type GetEdbSourceStatResp struct {
	List   []*EdbInfoSourceStatItem
	Paging *paging.PagingItem
}

func GetEdbSourceStatByCondition(condition string, pars []interface{}, orderStr string, pageSize, startSize int) (item []*EdbSourceStat, err error) {
	//o := orm.NewOrmUsingDB("data")
	sql := ` SELECT * FROM edb_source_stat WHERE 1=1 `
	if condition != "" {
		sql += condition
	}
	if orderStr != "" {
		sql += orderStr
	} else {
		sql += ` ORDER BY create_time DESC, id DESC `
	}

	sql += ` LIMIT ?,? `
	//_, err = o.Raw(sql, pars...).QueryRows(&item)
	pars = append(pars, startSize)
	pars = append(pars, pageSize)
	err = global.DmSQL["data"].Raw(sql, pars...).Find(&item).Error
	return
}

// GetEdbSourceStatCount
func GetEdbSourceStatCount(condition string, pars []interface{}) (count int, err error) {
	//o := orm.NewOrmUsingDB("data")
	sql := ` SELECT count(*) FROM edb_source_stat WHERE 1=1 `
	if condition != "" {
		sql += condition
	}
	//err = o.Raw(sql, pars).QueryRow(&count)
	err = global.DmSQL["data"].Raw(sql, pars...).Scan(&count).Error
	return
}