base_from_clarksons_data.go 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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. baseFromClarksonsData.DataTime = utils.GormDateStrToDateStr(baseFromClarksonsData.DataTime)
  21. return
  22. }
  23. // GetClarksonsDataByIndexId 根据指标id获取指标数据
  24. func GetClarksonsDataByIndexId(indexId int) (items []*BaseFromClarksonsData, err error) {
  25. sql := ` SELECT * FROM base_from_clarksons_data WHERE base_from_clarksons_index_id=? ORDER BY data_time DESC`
  26. err = global.DbMap[utils.DbNameIndex].Raw(sql, indexId).Find(&items).Error
  27. return
  28. }
  29. // GetClarksonsDataDataTimeByIndexId 根据指标id获取指标数据的日期列表
  30. func GetClarksonsDataDataTimeByIndexId(indexIdList []int) (items []string, err error) {
  31. if len(indexIdList) == 0 {
  32. return
  33. }
  34. 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`
  35. err = global.DbMap[utils.DbNameIndex].Raw(sql, indexIdList).Find(&items).Error
  36. for i, item := range items {
  37. items[i] = utils.GormDateStrToDateStr(item)
  38. }
  39. return
  40. }
  41. func GetClarksonsIndexDataByCode(indexCode string) (items []*BaseFromClarksonsData, err error) {
  42. sql := ` SELECT * FROM base_from_clarksons_data WHERE index_code=? ORDER BY data_time DESC `
  43. err = global.DbMap[utils.DbNameIndex].Raw(sql, indexCode).Find(&items).Error
  44. return
  45. }
  46. func GetClarksonsIndexDataCount(indexCode string) (count int, err error) {
  47. sqlStr := ` SELECT COUNT(1) AS count FROM base_from_clarksons_data WHERE index_code=? `
  48. var totalNull sql.NullInt64
  49. err = global.DbMap[utils.DbNameIndex].Raw(sqlStr, indexCode).Scan(&totalNull).Error
  50. if !totalNull.Valid {
  51. count = 0
  52. } else {
  53. count = int(totalNull.Int64)
  54. }
  55. return
  56. }
  57. // GetClarksonsLastUpdateTimeLastByIndexCode 根据指标编码查询 返回ModifyTime最后一条数据
  58. func GetClarksonsLastUpdateTimeLastByIndexCode(indexCodes []string) (items []*BaseFromClarksonsData, err error) {
  59. // 构造 SQL 查询
  60. sql := `SELECT t1.index_code, t1.data_time, t2.value
  61. FROM (
  62. SELECT index_code, MAX(data_time) AS data_time
  63. FROM base_from_clarksons_data
  64. WHERE index_code IN (` + utils.GetOrmInReplace(len(indexCodes)) + `)
  65. GROUP BY index_code
  66. ) AS t1
  67. JOIN base_from_clarksons_data AS t2 ON t1.index_code = t2.index_code AND t1.data_time = t2.data_time`
  68. // 执行 SQL 查询
  69. err = global.DbMap[utils.DbNameIndex].Raw(sql, indexCodes).Find(&items).Error
  70. if err != nil {
  71. return nil, err
  72. }
  73. return items, nil
  74. }
  75. func GetClarksonsIndexData(indexCode string, startSize, pageSize int) (items []*BaseFromClarksonsData, err error) {
  76. sql := ` SELECT * FROM base_from_clarksons_data WHERE index_code=? ORDER BY data_time DESC LIMIT ?,? `
  77. err = global.DbMap[utils.DbNameIndex].Raw(sql, indexCode, startSize, pageSize).Find(&items).Error
  78. return
  79. }