package data_stat

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

// EdbInfoDeleteLog 指标删除日志表
//type EdbInfoDeleteLog struct {
//	Id                 int  `orm:"column(id);pk"`
//	EdbInfoId          int     `description:"指标ID"`
//	EdbInfoType        int     `description:"指标类型,0:普通指标,1:预测指标"`
//	SourceName         string  `description:"来源名称"`
//	Source             int     `description:"来源id"`
//	EdbCode            string  `description:"指标编码"`
//	EdbName            string  `description:"指标名称"`
//	EdbNameEn          string  `description:"英文指标名称"`
//	EdbNameSource      string  `description:"指标名称来源"`
//	Frequency          string  `description:"频率"`
//	Unit               string  `description:"单位"`
//	UnitEn             string  `description:"英文单位"`
//	StartDate          string  `description:"起始日期"`
//	EndDate            string  `description:"终止日期"`
//	SysUserId          int     `description:"创建人ID"`
//	SysUserRealName    string  `description:"创建人姓名"`
//	UniqueCode         string  `description:"指标唯一编码"`
//	EdbCreateTime      string  `description:"指标创建时间"`
//	EdbModifyTime      string  `description:"指标修改时间"`
//	CreateTime         string  `description:"创建时间即删除时间"`
//	MinValue           float64 `description:"指标最小值"`
//	MaxValue           float64 `description:"指标最大值"`
//	CalculateFormula   string  `description:"计算公式"`
//	EdbType            int     `description:"指标类型:1:基础指标,2:计算指标"`
//	LatestDate         string  `description:"数据最新日期"`
//	LatestValue        float64 `description:"数据最新值"`
//	MoveType           int     `description:"移动方式:1:领先(默认),2:滞后"`
//	MoveFrequency      string  `description:"移动频度"`
//	NoUpdate           int8    `description:"是否停止更新,0:继续更新;1:停止更新"`
//	ChartImage         string  `description:"图表图片"`
//	Calendar           string  `description:"公历/农历" orm:"default(公历);"`
//	DataDateType       string  `orm:"column(data_date_type);size(255);null;default(交易日)"`
//	ManualSave         int     `description:"是否有手动保存过上下限: 0-否; 1-是"`
//	TerminalCode       string  `description:"终端编码,用于配置在机器上"`
//	DelSysUserId       int     `description:"删除人ID"`
//	DelSysUserRealName string  `description:"删除人姓名"`
//	DataUpdateTime     string  `description:"最近一次数据发生变化的时间"`
//	ErDataUpdateDate   string  `description:"本次更新,数据发生变化的最早日期"`
//}

type EdbInfoDeleteLog struct {
	Id                 int     `gorm:"primaryKey;unique;column:id;type:bigint(20) unsigned;not null"`    // 自增id
	EdbInfoId          int     `gorm:"column:edb_info_id;type:int(11);not null"`                         // 指标id
	EdbInfoType        int     `gorm:"column:edb_info_type;type:tinyint(9) unsigned;not null;default:0"` // 指标类型,0:普通指标,1:预测指标
	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:钢联
	EdbCode            string  `gorm:"column:edb_code;type:varchar(255);not null;default:''"`            // 指标编码
	EdbName            string  `gorm:"column:edb_name;type:varchar(255);default:''"`                     // 指标名称
	EdbNameSource      string  `gorm:"column:edb_name_source;type:varchar(255);default:''"`              // 指标名称_来源
	Frequency          string  `gorm:"column:frequency;type:varchar(20);default:''"`                     // 频度
	Unit               string  `gorm:"column:unit;type:varchar(20);default:''"`                          // 单位
	StartDate          string  `gorm:"column:start_date;type:date"`                                      // 更新开始日期
	EndDate            string  `gorm:"column:end_date;type:date"`                                        // 更新结束日期
	SysUserId          int     `gorm:"column:sys_user_id;type:int(11)"`                                  // 创建人
	SysUserRealName    string  `gorm:"column:sys_user_real_name;type:varchar(100)"`                      // 创建人姓名
	EdbCreateTime      string  `gorm:"column:edb_create_time;type:datetime"`                             // 指标创建时间
	EdbModifyTime      string  `gorm:"column:edb_modify_time;type:datetime"`                             // 指标修改时间
	UniqueCode         string  `gorm:"column:unique_code;type:varchar(50);default:''"`                   // 唯一编码
	MinValue           float64 `gorm:"column:min_value;type:double;default:0"`                           // 最小值
	MaxValue           float64 `gorm:"column:max_value;type:double;default:0"`                           // 最大值
	CalculateFormula   string  `gorm:"column:calculate_formula;type:varchar(255);default:''"`            // 计算公式,N数值移动
	EdbType            int     `gorm:"column:edb_type;type:tinyint(4);default:1"`                        // 指标类型:1:基础指标,2:计算指标
	LatestDate         string  `gorm:"column:latest_date;type:date"`                                     // 数据最新日期
	LatestValue        float64 `gorm:"column:latest_value;type:double"`                                  // 数据最新值
	MoveType           int     `gorm:"column:move_type;type:tinyint(4);default:1"`                       // 移动方式:1:领先(默认),2:滞后
	MoveFrequency      string  `gorm:"column:move_frequency;type:varchar(20);default:''"`                // 移动频度
	NoUpdate           int8    `gorm:"column:no_update;type:tinyint(4);default:0"`                       // 是否停止更新,0:继续更新;1:停止更新
	EdbNameEn          string  `gorm:"column:edb_name_en;type:varchar(255);default:''"`                  // 英文指标名称
	UnitEn             string  `gorm:"column:unit_en;type:varchar(20);default:''"`                       // 英文单位
	ChartImage         string  `gorm:"column:chart_image;type:varchar(255);default:''"`                  // 图表图片
	Calendar           string  `gorm:"column:calendar;type:varchar(16);default:公历"`                      // 公历/农历
	DataDateType       string  `gorm:"column:data_date_type;type:varchar(32);default:交易日"`               // 数据日期类型,枚举值:交易日、自然日
	ManualSave         int     `gorm:"column:manual_save;type:tinyint(4);not null;default:0"`            // 是否手动保存过上下限:0-否;1-是
	TerminalCode       string  `gorm:"column:terminal_code;type:varchar(255);default:''"`                // 终端编码,用于配置在机器上
	CreateTime         string  `gorm:"index:create_time_idx;column:create_time;type:datetime"`           // 创建时间
	DelSysUserId       int     `gorm:"column:del_sys_user_id;type:int(11);not null;default:0"`           // 删除人
	DelSysUserRealName string  `gorm:"column:del_sys_user_real_name;type:varchar(100);not null"`         // 删除人姓名
	DataUpdateTime     string  `gorm:"column:data_update_time;type:datetime"`                            // 最近一次数据发生变化的时间
	ErDataUpdateDate   string  `gorm:"column:er_data_update_date;type:date"`                             // 本次更新,数据发生变化的最早日期
}

type EdbInfoDeleteLogItem struct {
	Id                 int     `orm:"column(id);"`
	EdbInfoId          int     `description:"指标ID"`
	EdbInfoType        int     `description:"指标类型,0:普通指标,1:预测指标"`
	SourceName         string  `description:"来源名称"`
	Source             int     `description:"来源id"`
	EdbCode            string  `description:"指标编码"`
	EdbName            string  `description:"指标名称"`
	EdbNameEn          string  `description:"英文指标名称"`
	EdbNameSource      string  `description:"指标名称来源"`
	Frequency          string  `description:"频率"`
	Unit               string  `description:"单位"`
	StartDate          string  `description:"起始日期"`
	EndDate            string  `description:"终止日期"`
	SysUserId          int     `description:"创建人ID"`
	SysUserRealName    string  `description:"创建人姓名"`
	EdbCreateTime      string  `description:"指标创建时间"`
	CreateTime         string  `description:"创建时间即删除时间"`
	LatestDate         string  `description:"数据最新日期"`
	LatestValue        float64 `description:"数据最新值"`
	TerminalCode       string  `description:"终端编码,用于配置在机器上"`
	DelSysUserId       int     `description:"删除人ID"`
	DelSysUserRealName string  `description:"删除人姓名"`
	DataUpdateTime     string  `description:"最近一次数据发生变化的时间"`
	ErDataUpdateDate   string  `description:"本次更新,数据发生变化的最早日期"`
}

func AddEdbDeleteLog(item *EdbInfoDeleteLog) (lastId int64, err error) {
	//o := orm.NewOrmUsingDB("data")
	//lastId, err = o.Insert(item)
	err = global.DmSQL["data"].Create(item).Error
	lastId = int64(item.Id)
	return
}

type GetEdbDeleteLogResp struct {
	List   []*EdbInfoDeleteLogItem
	Paging *paging.PagingItem
}

func GetEdbDeleteLogByCondition(condition string, pars []interface{}, orderStr string, pageSize, startSize int) (item []*EdbInfoDeleteLog, err error) {
	//o := orm.NewOrmUsingDB("data")
	sql := ` SELECT * FROM edb_info_delete_log 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
}

// GetEdbDeleteLogCount
func GetEdbDeleteLogCount(condition string, pars []interface{}) (count int, err error) {
	//o := orm.NewOrmUsingDB("data")
	sql := ` SELECT count(*) FROM edb_info_delete_log 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
}