base_from_rzd_data.go 4.5 KB

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