base_from_clarksons_data.go 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. package data_manage
  2. import (
  3. "eta/eta_api/utils"
  4. "time"
  5. "github.com/beego/beego/v2/client/orm"
  6. )
  7. type BaseFromClarksonsData struct {
  8. BaseFromClarksonsDataId int `orm:"column(base_from_clarksons_data_id);pk;auto"`
  9. BaseFromClarksonsIndexId int `description:"指标id"`
  10. IndexCode string `description:"指标编码"`
  11. DataTime time.Time `description:"数据日期"`
  12. Value float64 `description:"数据值"`
  13. CreateTime time.Time `description:"创建时间"`
  14. ModifyTime time.Time `description:"修改时间"`
  15. DataTimestamp int64 `description:"数据时间戳"`
  16. }
  17. type BaseFromClarksonsDataItem struct {
  18. BaseFromClarksonsDataId int `orm:"column(base_from_clarksons_data_id);pk;auto"`
  19. BaseFromClarksonsIndexId int `description:"指标id"`
  20. IndexCode string `description:"指标编码"`
  21. DataTime string `description:"数据日期"`
  22. Value float64 `description:"数据值"`
  23. CreateTime string `description:"创建时间"`
  24. ModifyTime string `description:"修改时间"`
  25. DataTimestamp int64 `description:"数据时间戳"`
  26. }
  27. func (m *BaseFromClarksonsData) ToItem() (item *BaseFromClarksonsDataItem) {
  28. return &BaseFromClarksonsDataItem{
  29. BaseFromClarksonsDataId: m.BaseFromClarksonsDataId,
  30. BaseFromClarksonsIndexId: m.BaseFromClarksonsIndexId,
  31. IndexCode: m.IndexCode,
  32. DataTime: m.DataTime.Format(utils.FormatDate),
  33. Value: m.Value,
  34. CreateTime: m.CreateTime.Format(utils.FormatDateTime),
  35. ModifyTime: m.ModifyTime.Format(utils.FormatDateTime),
  36. DataTimestamp: m.DataTimestamp,
  37. }
  38. }
  39. // GetClarksonsDataByIndexId 根据指标id获取指标数据
  40. func GetClarksonsDataByIndexId(indexId int) (items []*BaseFromClarksonsData, err error) {
  41. o := orm.NewOrmUsingDB("data")
  42. sql := ` SELECT * FROM base_from_clarksons_data WHERE base_from_clarksons_index_id=? ORDER BY data_time DESC`
  43. _, err = o.Raw(sql, indexId).QueryRows(&items)
  44. return
  45. }
  46. // GetClarksonsDataDataTimeByIndexId 根据指标id获取指标数据的日期列表
  47. func GetClarksonsDataDataTimeByIndexId(indexIdList []int) (items []time.Time, err error) {
  48. if len(indexIdList) == 0 {
  49. return
  50. }
  51. o := orm.NewOrmUsingDB("data")
  52. sql := ` SELECT DISTINCT data_time FROM base_from_clarksons_data WHERE base_from_clarksons_index_id IN (` + utils.GetOrmInReplace(len(indexIdList)) + `) ORDER BY data_time DESC`
  53. _, err = o.Raw(sql, indexIdList).QueryRows(&items)
  54. return
  55. }
  56. func GetClarksonsIndexDataByCode(indexCode string) (items []*BaseFromClarksonsData, err error) {
  57. o := orm.NewOrmUsingDB("data")
  58. sql := ` SELECT * FROM base_from_clarksons_data WHERE index_code=? ORDER BY data_time DESC `
  59. _, err = o.Raw(sql, indexCode).QueryRows(&items)
  60. return
  61. }
  62. func GetClarksonsIndexDataCount(indexCode string) (count int, err error) {
  63. o := orm.NewOrmUsingDB("data")
  64. sql := ` SELECT COUNT(1) AS count FROM base_from_clarksons_data WHERE index_code=? `
  65. err = o.Raw(sql, indexCode).QueryRow(&count)
  66. return
  67. }
  68. // GetClarksonsLastUpdateTimeLastByIndexCode 根据指标编码查询 返回ModifyTime最后一条数据
  69. func GetClarksonsLastUpdateTimeLastByIndexCode(indexCodes []string) (items []*BaseFromClarksonsData, err error) {
  70. o := orm.NewOrmUsingDB("data")
  71. // 构造 SQL 查询
  72. sql := `SELECT t1.index_code, t1.data_time, t2.value
  73. FROM (
  74. SELECT index_code, MAX(data_time) AS data_time
  75. FROM base_from_clarksons_data
  76. WHERE index_code IN (` + utils.GetOrmInReplace(len(indexCodes)) + `)
  77. GROUP BY index_code
  78. ) AS t1
  79. JOIN base_from_clarksons_data AS t2 ON t1.index_code = t2.index_code AND t1.data_time = t2.data_time`
  80. // 执行 SQL 查询
  81. _, err = o.Raw(sql, indexCodes).QueryRows(&items)
  82. if err != nil {
  83. return nil, err
  84. }
  85. return items, nil
  86. }
  87. func GetClarksonsIndexData(indexCode string, startSize, pageSize int) (items []*BaseFromClarksonsData, err error) {
  88. o := orm.NewOrmUsingDB("data")
  89. sql := ` SELECT * FROM base_from_clarksons_data WHERE index_code=? ORDER BY data_time DESC LIMIT ?,? `
  90. _, err = o.Raw(sql, indexCode, startSize, pageSize).QueryRows(&items)
  91. return
  92. }