package models

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

type CalculateResidualAnalysisConfig struct {
	CalculateResidualAnalysisConfigId int       `orm:"column(calculate_residual_analysis_config_id);pk;auto" description:"自增id"`
	Config                            string    `orm:"column(config)" description:"计算参数配置"`
	SysUserId                         int       `orm:"column(sys_user_id)" description:"操作人id"`
	CreateTime                        time.Time `orm:"column(create_time)" description:"创建时间"`
	ModifyTime                        time.Time `orm:"column(modify_time)" description:"修改时间"`
}

type ResidualAnalysisConfig struct {
	ResidualType     int     `description:"残差类型: 1-映射残差 2-拟合残差"`
	DateType         int     `json:"dateType" description:"时间类型 -1-自定义时间 0-至今 n-枚举时间(近n年)"`
	StartDate        string  `json:"startDate"`
	EndDate          string  `json:"endDate"`
	IsOrder          bool    `description:"true:正序,false:逆序"`
	IndexType        int     `json:"indexType" description:"1-标准指标 2-领先指标"`
	LeadValue        int     `json:"leadValue" description:"领先值"`
	LeadFrequency    string  `json:"leadFrequency" description:"领先频度"`
	LeftIndexMin     float64 `description:"指标A左侧下限"`
	LeftIndexMax     float64 `description:"指标A左侧上限"`
	RightIndexMin    float64 `description:"指标B右侧下限"`
	RightIndexMax    float64 `description:"指标B右侧上限"`
	ResidualIndexMin float64 `description:"残差指标下限"`
	ResidualIndexMax float64 `description:"残差指标上限"`
	ContrastIndexMin float64 `description:"对比指标下限"`
	ContrastIndexMax float64 `description:"对比指标上限"`
}

func init() {
	orm.RegisterModel(new(CalculateResidualAnalysisConfig))
}

// GetResidualAnalysisConfigById 根据配置id查询配置信息
func GetResidualAnalysisConfigById(edbInfoId int) (residualAnalysisConfig CalculateResidualAnalysisConfig, err error) {
	o := orm.NewOrm()
	sql := `SELECT t2.* FROM calculate_residual_analysis_config_mapping t1 
			join calculate_residual_analysis_config t2 on t1.calculate_residual_analysis_config_id = t2.calculate_residual_analysis_config_id
			WHERE t1.edb_info_id = ?`
	err = o.Raw(sql, edbInfoId).QueryRow(&residualAnalysisConfig)
	return
}