base_from_clarksons_data.go 3.2 KB

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