base_from_clarksons_data.go 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package data_manage
  2. import (
  3. "database/sql"
  4. "eta/eta_api/global"
  5. "eta/eta_api/utils"
  6. "gorm.io/gorm"
  7. "time"
  8. )
  9. type BaseFromClarksonsData struct {
  10. BaseFromClarksonsDataId int `gorm:"column:base_from_clarksons_data_id;primaryKey"`
  11. BaseFromClarksonsIndexId int `description:"指标id"`
  12. IndexCode string `description:"指标编码"`
  13. DataTime string `description:"数据日期"`
  14. Value float64 `description:"数据值"`
  15. CreateTime time.Time `description:"创建时间"`
  16. ModifyTime time.Time `description:"修改时间"`
  17. DataTimestamp int64 `description:"数据时间戳"`
  18. }
  19. func (baseFromClarksonsData *BaseFromClarksonsData) AfterFind(tx *gorm.DB) (err error) {
  20. if utils.NeedDateOrTimeFormat(utils.DbDriverName) {
  21. baseFromClarksonsData.DataTime = utils.GormDateStrToDateStr(baseFromClarksonsData.DataTime)
  22. }
  23. return
  24. }
  25. // GetClarksonsDataByIndexId 根据指标id获取指标数据
  26. func GetClarksonsDataByIndexId(indexId int) (items []*BaseFromClarksonsData, err error) {
  27. sql := ` SELECT * FROM base_from_clarksons_data WHERE base_from_clarksons_index_id=? ORDER BY data_time DESC`
  28. err = global.DbMap[utils.DbNameIndex].Raw(sql, indexId).Find(&items).Error
  29. return
  30. }
  31. // GetClarksonsDataDataTimeByIndexId 根据指标id获取指标数据的日期列表
  32. func GetClarksonsDataDataTimeByIndexId(indexIdList []int) (items []string, err error) {
  33. if len(indexIdList) == 0 {
  34. return
  35. }
  36. 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`
  37. err = global.DbMap[utils.DbNameIndex].Raw(sql, indexIdList).Find(&items).Error
  38. if utils.NeedDateOrTimeFormat(utils.DbDriverName) {
  39. for i, item := range items {
  40. items[i] = utils.GormDateStrToDateStr(item)
  41. }
  42. }
  43. return
  44. }
  45. func GetClarksonsIndexDataByCode(indexCode string) (items []*BaseFromClarksonsData, err error) {
  46. sql := ` SELECT * FROM base_from_clarksons_data WHERE index_code=? ORDER BY data_time DESC `
  47. err = global.DbMap[utils.DbNameIndex].Raw(sql, indexCode).Find(&items).Error
  48. return
  49. }
  50. func GetClarksonsIndexDataCount(indexCode string) (count int, err error) {
  51. sqlStr := ` SELECT COUNT(1) AS count FROM base_from_clarksons_data WHERE index_code=? `
  52. var totalNull sql.NullInt64
  53. err = global.DbMap[utils.DbNameIndex].Raw(sqlStr, indexCode).Scan(&totalNull).Error
  54. if !totalNull.Valid {
  55. count = 0
  56. } else {
  57. count = int(totalNull.Int64)
  58. }
  59. return
  60. }
  61. // GetClarksonsLastUpdateTimeLastByIndexCode 根据指标编码查询 返回ModifyTime最后一条数据
  62. func GetClarksonsLastUpdateTimeLastByIndexCode(indexCodes []string) (items []*BaseFromClarksonsData, err error) {
  63. // 构造 SQL 查询
  64. sql := `SELECT t1.index_code, t1.data_time, t2.value
  65. FROM (
  66. SELECT index_code, MAX(data_time) AS data_time
  67. FROM base_from_clarksons_data
  68. WHERE index_code IN (` + utils.GetOrmInReplace(len(indexCodes)) + `)
  69. GROUP BY index_code
  70. ) AS t1
  71. JOIN base_from_clarksons_data AS t2 ON t1.index_code = t2.index_code AND t1.data_time = t2.data_time`
  72. // 执行 SQL 查询
  73. err = global.DbMap[utils.DbNameIndex].Raw(sql, indexCodes).Find(&items).Error
  74. if err != nil {
  75. return nil, err
  76. }
  77. return items, nil
  78. }
  79. func GetClarksonsIndexData(indexCode string, startSize, pageSize int) (items []*BaseFromClarksonsData, err error) {
  80. sql := ` SELECT * FROM base_from_clarksons_data WHERE index_code=? ORDER BY data_time DESC LIMIT ?,? `
  81. err = global.DbMap[utils.DbNameIndex].Raw(sql, indexCode, startSize, pageSize).Find(&items).Error
  82. return
  83. }