base_from_ly_data.go 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. // @Author gmy 2024/8/7 9:50:00
  2. package models
  3. import (
  4. "eta/eta_index_lib/global"
  5. "eta/eta_index_lib/utils"
  6. "gorm.io/gorm"
  7. "time"
  8. )
  9. type BaseFromLyData struct {
  10. BaseFromLyDataId int `gorm:"column:base_from_ly_data_id;type:int(10) UNSIGNED;primaryKey;not null;"`
  11. CreateTime time.Time `gorm:"column:create_time;type:datetime;comment:创建时间;not null;default:CURRENT_TIMESTAMP;"` // 创建时间
  12. ModifyTime time.Time `gorm:"column:modify_time;type:datetime;comment:修改时间;not null;default:CURRENT_TIMESTAMP;"` // 修改时间
  13. BaseFromLyIndexId int `gorm:"column:base_from_ly_index_id;type:int(10) UNSIGNED;comment:指标id;not null;"` // 指标id
  14. IndexCode string `gorm:"column:index_code;type:varchar(128);comment:指标编码;not null;"` // 指标编码
  15. DataTime string `gorm:"column:data_time;type:date;comment:数据日期;default:NULL;"` // 数据日期
  16. Value float64 `gorm:"column:value;type:double;comment:数据值;default:NULL;"` // 数据值
  17. }
  18. // AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
  19. func (m *BaseFromLyData) AfterFind(db *gorm.DB) (err error) {
  20. m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
  21. return
  22. }
  23. // AddLyDataList 批量插入数据记录列表
  24. func AddLyDataList(items []BaseFromLyData) (err error) {
  25. //o := orm.NewOrm()
  26. //_, err = o.InsertMulti(len(items), items)
  27. err = global.DEFAULT_DB.CreateInBatches(items, len(items)).Error
  28. return
  29. }
  30. // GetLyDataByIndexIdAndDataTime 根据指标id和数据日期查询数据
  31. func GetLyDataByIndexIdAndDataTime(indexId int, dataTime string) (items []BaseFromLyData, err error) {
  32. //o := orm.NewOrm()
  33. sql := `SELECT * FROM base_from_ly_data WHERE base_from_ly_index_id=? AND data_time=?`
  34. //_, err = o.Raw(sql, indexId, dataTime).QueryRows(&items)
  35. err = global.DEFAULT_DB.Raw(sql, indexId, dataTime).Find(&items).Error
  36. if utils.IsErrNoRow(err) {
  37. return nil, nil
  38. }
  39. return
  40. }
  41. // GetLyDataByIndexIdAndDataTimeYM 根据指标id和数据日期的年月查询数据
  42. func GetLyDataByIndexIdAndDataTimeYM(indexId int, dataTime string) (items []BaseFromLyData, err error) {
  43. //o := orm.NewOrm()
  44. sql := `SELECT * FROM base_from_ly_data WHERE base_from_ly_index_id=? AND data_time like ?`
  45. //_, err = o.Raw(sql, indexId, dataTime+"%").QueryRows(&items)
  46. err = global.DEFAULT_DB.Raw(sql, indexId, dataTime+"%").Find(&items).Error
  47. if utils.IsErrNoRow(err) {
  48. return nil, nil
  49. }
  50. return
  51. }
  52. // UpdateLyDataById 根据主键id更新数据
  53. func UpdateLyDataById(dataId int, value float64) (err error) {
  54. //o := orm.NewOrm()
  55. sql := `UPDATE base_from_ly_data SET value=? WHERE base_from_ly_data_id=?`
  56. //_, err = o.Raw(sql, value, dataId).Exec()
  57. err = global.DEFAULT_DB.Exec(sql, value, dataId).Error
  58. return
  59. }
  60. // GetBaseFromLyDataByIndexCode 根据指标编码查询
  61. func GetBaseFromLyDataByIndexCode(condition string, pars []interface{}) (items []BaseFromLyData, err error) {
  62. sql := `SELECT * FROM base_from_ly_data WHERE 1=1 `
  63. //o := orm.NewOrm()
  64. if condition != "" {
  65. sql += condition
  66. }
  67. //_, err = o.Raw(sql, pars...).QueryRows(&items)
  68. err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
  69. if utils.IsErrNoRow(err) {
  70. return nil, nil
  71. }
  72. return
  73. }