base_from_rzd_data.go 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. // Package data_manage @Author gmy 2024/8/7 9:50:00
  2. package data_manage
  3. import (
  4. "eta/eta_api/global"
  5. "eta/eta_api/utils"
  6. "gorm.io/gorm"
  7. "github.com/beego/beego/v2/client/orm"
  8. )
  9. type BaseFromRzdData struct {
  10. BaseFromRzdDataId int `orm:"column(base_from_rzd_data_id);pk" gorm:"primaryKey"`
  11. BaseFromRzdIndexId int `orm:"column(base_from_rzd_index_id)"`
  12. CreateTime string `orm:"column(create_time)"`
  13. DataTime string `orm:"column(data_time)"`
  14. IndexCode string `orm:"column(index_code)"`
  15. ModifyTime string `orm:"column(modify_time)"`
  16. Value float64 `orm:"column(value)"`
  17. }
  18. func (baseFromRzdData *BaseFromRzdData) AfterFind(tx *gorm.DB) (err error) {
  19. if utils.NeedDateOrTimeFormat(utils.DbDriverName) {
  20. if baseFromRzdData.ModifyTime != "" {
  21. baseFromRzdData.ModifyTime = utils.GormDateStrToDateTimeStr(baseFromRzdData.ModifyTime)
  22. }
  23. if baseFromRzdData.CreateTime != "" {
  24. baseFromRzdData.CreateTime = utils.GormDateStrToDateTimeStr(baseFromRzdData.CreateTime)
  25. }
  26. if baseFromRzdData.DataTime != "" {
  27. baseFromRzdData.DataTime = utils.GormDateStrToDateStr(baseFromRzdData.DataTime)
  28. }
  29. }
  30. return
  31. }
  32. // RzdIndexAddReq 指标添加vo
  33. type RzdIndexAddReq struct {
  34. EdbCode string `description:"指标编码"`
  35. EdbName string `description:"指标名称"`
  36. Frequency string `description:"频度"`
  37. Unit string `description:"单位"`
  38. ClassifyId int `description:"分类ID"`
  39. AdminId int `description:"管理员ID"`
  40. AdminRealName string `description:"管理员名称"`
  41. }
  42. type RzdIndexDataCountGroup struct {
  43. IndexCode string
  44. Count int
  45. }
  46. func init() {
  47. orm.RegisterModel(new(BaseFromRzdData))
  48. }
  49. func GetRzdIndexDataCountGroup(indexCodes []string) (items []*RzdIndexDataCountGroup, err error) {
  50. if len(indexCodes) <= 0 {
  51. return
  52. }
  53. o := global.DbMap[utils.DbNameIndex]
  54. sql := ` SELECT COUNT(1) AS count, index_code FROM base_from_rzd_data WHERE index_code IN (` + utils.GetOrmInReplace(len(indexCodes)) + `) GROUP BY index_code`
  55. err = o.Raw(sql, indexCodes).Find(&items).Error
  56. return
  57. }
  58. func GetRzdIndexData(indexCode string, startSize, pageSize int) (items []*BaseFromRzdData, err error) {
  59. o := global.DbMap[utils.DbNameIndex]
  60. sql := ` SELECT * FROM base_from_rzd_data WHERE index_code=? ORDER BY data_time DESC LIMIT ?,? `
  61. err = o.Raw(sql, indexCode, startSize, pageSize).Find(&items).Error
  62. return
  63. }
  64. // GetBaseFormRzdDataByIndexCode 根据指标编码查询
  65. func GetBaseFormRzdDataByIndexCode(indexCode string) (items []*BaseFromRzdData, err error) {
  66. sql := `SELECT * FROM base_from_rzd_data WHERE index_code=? ORDER BY data_time desc`
  67. o := global.DbMap[utils.DbNameIndex]
  68. err = o.Raw(sql, indexCode).Find(&items).Error
  69. return
  70. }
  71. func GetBaseFormRzdDataByConditionCount(condition string, pars []interface{}) (count int, err error) {
  72. o := global.DbMap[utils.DbNameIndex]
  73. sql := ` SELECT count(1) FROM base_from_rzd_data WHERE 1=1 `
  74. if condition != "" {
  75. sql += condition
  76. }
  77. err = o.Raw(sql, pars...).Scan(&count).Error
  78. if err != nil {
  79. return 0, err
  80. }
  81. return
  82. }
  83. func GetBaseFormRzdDataByCondition(condition string, pars []interface{}) (items []*BaseFromRzdData, err error) {
  84. o := global.DbMap[utils.DbNameIndex]
  85. sql := ` SELECT * FROM base_from_rzd_data WHERE 1=1 `
  86. if condition != "" {
  87. sql += condition
  88. }
  89. err = o.Raw(sql, pars...).Find(&items).Error
  90. return
  91. }
  92. // GetRzdDataListByIndexCodes 根据指标编码查询
  93. func GetRzdDataListByIndexCodes(IndexCodes string) (items []string, err error) {
  94. sql := ` SELECT data_time FROM base_from_rzd_data WHERE index_code IN(` + IndexCodes + `) GROUP BY data_time DESC `
  95. o := global.DbMap[utils.DbNameIndex]
  96. err = o.Raw(sql).Find(&items).Error
  97. if utils.NeedDateOrTimeFormat(utils.DbDriverName) {
  98. for i := 0; i < len(items); i++ {
  99. items[i] = utils.GormDateStrToDateStr(items[i])
  100. }
  101. }
  102. return
  103. }
  104. // GetRzdLastUpdateTimeLastByIndexCode 根据指标编码查询 返回ModifyTime最后一条数据
  105. func GetRzdLastUpdateTimeLastByIndexCode(indexCodes []string) (items []*BaseFromRzdData, err error) {
  106. o := global.DbMap[utils.DbNameIndex]
  107. // 构造 SQL 查询
  108. sql := `SELECT t1.index_code, t1.data_time, t2.value
  109. FROM (
  110. SELECT index_code, MAX(data_time) AS data_time
  111. FROM base_from_rzd_data
  112. WHERE index_code IN (` + utils.GetOrmInReplace(len(indexCodes)) + `)
  113. GROUP BY index_code
  114. ) AS t1
  115. JOIN base_from_rzd_data AS t2 ON t1.index_code = t2.index_code AND t1.data_time = t2.data_time`
  116. // 执行 SQL 查询
  117. err = o.Raw(sql, indexCodes).Find(&items).Error
  118. if err != nil {
  119. return nil, err
  120. }
  121. return items, nil
  122. }