// @Author gmy 2024/8/7 9:50:00 package models import ( "errors" "eta/eta_index_lib/utils" "github.com/beego/beego/v2/client/orm" "time" ) type BaseFromLyData struct { BaseFromLyDataId int `orm:"column(base_from_ly_data_id);pk"` // 数据ID CreateTime string `orm:"column(create_time)"` // 创建时间 ModifyTime string `orm:"column(modify_time)"` // 修改时间 BaseFromLyIndexId int `orm:"column(base_from_ly_index_id)"` // 指标id IndexCode string `orm:"column(index_code)"` // 指标编码 DataTime string `orm:"column(data_time)"` // 数据日期 Value float64 `orm:"column(value)"` // 数据值 } type BaseFromLyDataOrm struct { BaseFromLyDataId int `orm:"column(base_from_ly_data_id);pk"` // 数据ID CreateTime time.Time `orm:"column(create_time)"` // 创建时间 ModifyTime time.Time `orm:"column(modify_time)"` // 修改时间 BaseFromLyIndexId int `orm:"column(base_from_ly_index_id)"` // 指标id IndexCode string `orm:"column(index_code)"` // 指标编码 DataTime time.Time `orm:"column(data_time)"` // 数据日期 Value float64 `orm:"column(value)"` // 数据值 } func (ormItem *BaseFromLyDataOrm) convertToLyData() BaseFromLyData { return BaseFromLyData{ BaseFromLyDataId: ormItem.BaseFromLyDataId, CreateTime: ormItem.CreateTime.Format(utils.FormatDateTime), ModifyTime: ormItem.ModifyTime.Format(utils.FormatDateTime), BaseFromLyIndexId: ormItem.BaseFromLyIndexId, IndexCode: ormItem.IndexCode, DataTime: ormItem.DataTime.Format(utils.FormatDate), Value: ormItem.Value, } } func convertToLyDataList(ormList []BaseFromLyDataOrm) (list []BaseFromLyData) { for _, item := range ormList { list = append(list, item.convertToLyData()) } return } func init() { orm.RegisterModel(new(BaseFromLyData)) } // AddLyDataList 批量插入数据记录列表 func AddLyDataList(items []BaseFromLyData) (err error) { o := orm.NewOrm() _, err = o.InsertMulti(len(items), items) return } // GetLyDataByIndexIdAndDataTime 根据指标id和数据日期查询数据 func GetLyDataByIndexIdAndDataTime(indexId int, dataTime string) (items []BaseFromLyData, err error) { o := orm.NewOrm() sql := `SELECT * FROM base_from_ly_data WHERE base_from_ly_index_id=? AND data_time=?` _, err = o.Raw(sql, indexId, dataTime).QueryRows(&items) if errors.Is(err, orm.ErrNoRows) { return nil, nil } return } // GetLyDataByIndexIdAndDataTimeYM 根据指标id和数据日期的年月查询数据 func GetLyDataByIndexIdAndDataTimeYM(indexId int, dataTime string) (items []BaseFromLyData, err error) { o := orm.NewOrm() sql := `SELECT * FROM base_from_ly_data WHERE base_from_ly_index_id=? AND data_time like ?` var ormList []BaseFromLyDataOrm _, err = o.Raw(sql, indexId, dataTime+"%").QueryRows(&ormList) if errors.Is(err, orm.ErrNoRows) { return nil, nil } if err != nil { return } items = convertToLyDataList(ormList) return } // UpdateLyDataById 根据主键id更新数据 func UpdateLyDataById(dataId int, value float64) (err error) { o := orm.NewOrm() sql := `UPDATE base_from_ly_data SET value=? WHERE base_from_ly_data_id=?` _, err = o.Raw(sql, value, dataId).Exec() return } // GetBaseFromLyDataByIndexCode 根据指标编码查询 func GetBaseFromLyDataByIndexCode(condition string, pars []interface{}) (items []BaseFromLyData, err error) { sql := `SELECT * FROM base_from_ly_data WHERE 1=1 ` o := orm.NewOrm() if condition != "" { sql += condition } var ormList []BaseFromLyDataOrm _, err = o.Raw(sql, pars...).QueryRows(&ormList) if errors.Is(err, orm.ErrNoRows) { return nil, nil } if err != nil { return } items = convertToLyDataList(ormList) return }