package data_manage

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

type ChartInfo struct {
	ChartInfoId     int    `orm:"column(chart_info_id);pk"`
	ChartName       string `description:"来源名称"`
	ChartClassifyId int    `description:"图表分类id"`
	SysUserId       int
	SysUserRealName string
	UniqueCode      string `description:"图表唯一编码"`
	CreateTime      time.Time
	ModifyTime      time.Time
	DateType        int    `description:"日期类型:1:00年至今,2:10年至今,3:15年至今,4:年初至今,5:自定义时间"`
	StartDate       string `description:"自定义开始日期"`
	EndDate         string `description:"自定义结束日期"`
	IsSetName       int    `description:"设置名称"`
	EdbInfoIds      string `description:"指标id"`
	ChartType       int    `description:"生成样式:1:曲线图,2:季节性图"`
	Calendar        string `description:"公历/农历"`
	SeasonStartDate string `description:"季节性图开始日期"`
	SeasonEndDate   string `description:"季节性图开始日期"`
	ChartImage      string `description:"图表图片"`
	Sort            int    `description:"排序字段,数字越小越排前面"`
	EdbEndDate      string `description:"指标最后更新日期"`
}

func GetAllChartInfo() (list []*ChartInfo, err error) {
	o := orm.NewOrm()
	sql := ` SELECT * FROM chart_info  `
	_, err = o.Raw(sql).QueryRows(&list)
	return
}

func GetChartInfoEdbEndDate() (list []*ChartInfo, err error) {
	o := orm.NewOrm()
	sql := ` SELECT a.*,max(c.end_date) AS edb_end_date FROM  chart_info  AS a
			INNER JOIN chart_edb_mapping AS b ON a.chart_info_id=b.chart_info_id
			INNER JOIN edb_info AS c ON b.edb_info_id=c.edb_info_id
			GROUP BY a.chart_info_id  `
	_, err = o.Raw(sql).QueryRows(&list)
	return
}

func ModifyChartInfoEdbEndDate(chartInfoId int, edbEndDate string) (err error) {
	o := orm.NewOrm()
	sql := ` UPDATE chart_info SET edb_end_date=? WHERE chart_info_id=? `
	_, err = o.Raw(sql, edbEndDate, chartInfoId).Exec()
	return
}