package residual_analysis_model

import (
	"eta/eta_api/global"
	"eta/eta_api/utils"
	"time"
)

type edbDataResidualAnalysis struct {
	EdbDataId     int       `orm:"column(edb_data_id);pk" gorm:"primaryKey" description:"自增id"`
	EdbInfoId     int       `orm:"column(edb_info_id)" description:"指标id"`
	EdbCode       string    `orm:"column(edb_code)" description:"指标编码"`
	DataTime      string    `orm:"column(data_time)" description:"数据日期"`
	Value         float64   `orm:"column(value)" description:"数据值"`
	CreateTime    time.Time `orm:"column(create_time)" description:"创建时间"`
	ModifyTime    time.Time `orm:"column(modify_time)" description:"修改时间"`
	DataTimeStamp int64     `orm:"column(data_timestamp)" gorm:"column:data_timestamp"`
}


// DeleteResidualAnalysisDataByEdbCode 根据指标编码删除数据
func DeleteResidualAnalysisDataByEdbCode(edbCode string) error {
	o := global.DbMap[utils.DbNameIndex]
	sql := `delete from edb_data_residual_analysis where edb_code = ?`
	err := o.Exec(sql, edbCode).Error
	return err
}

// AddResidualAnalysisData 新增指标数据
func AddResidualAnalysisData(dataList []edbDataResidualAnalysis) (num int64, err error) {
	o := global.DbMap[utils.DbNameIndex]
	err = o.CreateInBatches(dataList, utils.MultiAddNum).Error
	if err != nil {
		return 0, err
	}

	return num, nil
}

// GetDataListByCondition 根据条件查询所有数据
func GetDataListByCondition(condition string, pars []interface{}) (items []edbDataResidualAnalysis, err error) {
	o := global.DbMap[utils.DbNameIndex]
	sql := `select * from edb_data_residual_analysis where 1=1` + condition
	err = o.Raw(sql, pars...).Find(&items).Error
	return items, err
}

// RefreshDataTimestamp 刷新残差指标时间戳
func (m *edbDataResidualAnalysis) RefreshDataTimestamp(cols []string) (err error) {
	o := global.DbMap[utils.DbNameIndex]
	err = o.Select(cols).Updates(m).Error
	if err != nil {
		return
	}
	return
}