base_from_rzd_data.go 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. // Package data_manage @Author gmy 2024/8/7 9:50:00
  2. package data_manage
  3. import (
  4. "eta/eta_api/utils"
  5. "github.com/beego/beego/v2/client/orm"
  6. "strings"
  7. )
  8. type BaseFromRzdData struct {
  9. BaseFromRzdDataId int `orm:"column(base_from_rzd_data_id);pk"`
  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. // RzdIndexAddReq 指标添加vo
  18. type RzdIndexAddReq struct {
  19. EdbCode string `description:"指标编码"`
  20. EdbName string `description:"指标名称"`
  21. Frequency string `description:"频度"`
  22. Unit string `description:"单位"`
  23. ClassifyId int `description:"分类ID"`
  24. AdminId int `description:"管理员ID"`
  25. AdminRealName string `description:"管理员名称"`
  26. }
  27. type RzdIndexDataCountGroup struct {
  28. IndexCode string
  29. Count int
  30. }
  31. func init() {
  32. orm.RegisterModel(new(BaseFromRzdData))
  33. }
  34. func GetRzdIndexDataCountGroup(indexCodes []string) (items []*RzdIndexDataCountGroup, err error) {
  35. if len(indexCodes) <= 0 {
  36. return
  37. }
  38. o := orm.NewOrmUsingDB("data")
  39. 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`
  40. _, err = o.Raw(sql, indexCodes).QueryRows(&items)
  41. return
  42. }
  43. func GetRzdIndexData(indexCode string, startSize, pageSize int) (items []*BaseFromRzdData, err error) {
  44. o := orm.NewOrmUsingDB("data")
  45. sql := ` SELECT * FROM base_from_rzd_data WHERE index_code=? ORDER BY data_time DESC LIMIT ?,? `
  46. _, err = o.Raw(sql, indexCode, startSize, pageSize).QueryRows(&items)
  47. return
  48. }
  49. // GetBaseFormRzdDataByIndexCode 根据指标编码查询
  50. func GetBaseFormRzdDataByIndexCode(indexCode string) (items []*BaseFromRzdData, err error) {
  51. sql := `SELECT * FROM base_from_rzd_data WHERE index_code=? ORDER BY data_time desc`
  52. o := orm.NewOrmUsingDB("data")
  53. _, err = o.Raw(sql, indexCode).QueryRows(&items)
  54. return
  55. }
  56. // GetRzdDataListByIndexCodes 根据指标编码查询
  57. func GetRzdDataListByIndexCodes(IndexCodes string) (items []string, err error) {
  58. sql := ` SELECT data_time FROM base_from_rzd_data WHERE index_code IN(` + IndexCodes + `) GROUP BY data_time DESC `
  59. o := orm.NewOrmUsingDB("data")
  60. _, err = o.Raw(sql).QueryRows(&items)
  61. return
  62. }
  63. // GetRzdLastUpdateTimeLastByIndexCode 根据指标编码查询 返回ModifyTime最后一条数据
  64. func GetRzdLastUpdateTimeLastByIndexCode(indexCodes []string) (items []*BaseFromRzdData, err error) {
  65. o := orm.NewOrmUsingDB("data")
  66. // 将 indexCodes 切片转换为逗号分隔的字符串
  67. placeholders := strings.Repeat("?,", len(indexCodes)-1) + "?"
  68. // 构造 SQL 查询
  69. sql := `SELECT index_code, MAX(modify_time) AS modify_time
  70. FROM base_from_rzd_data
  71. WHERE index_code IN (` + placeholders + `)
  72. GROUP BY index_code`
  73. // 执行 SQL 查询
  74. _, err = o.Raw(sql, indexCodes).QueryRows(&items)
  75. if err != nil {
  76. return nil, err
  77. }
  78. return items, nil
  79. }