base_from_icpi.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package models
  2. import (
  3. "github.com/beego/beego/v2/client/orm"
  4. "time"
  5. )
  6. type BaseFromIcpiIndex struct {
  7. BaseFromIcpiIndexId int `orm:"column(base_from_icpi_index_id);pk"`
  8. IndexCode string `description:"指标编码"`
  9. IndexName string `description:"指标名称"`
  10. Frequency string `description:"频度"`
  11. StartDate time.Time `description:"开始日期"`
  12. EndDate time.Time `description:"结束日期"`
  13. CreateTime time.Time `description:"创建时间"`
  14. ModifyTime time.Time `description:"修改时间"`
  15. }
  16. type BaseFromIcpiData struct {
  17. BaseFromIcpiDataId int `orm:"column(base_from_icpi_data_id);pk"`
  18. BaseFromIcpiIndexId int `description:"指标id"`
  19. IndexCode string `description:"指标编码"`
  20. DataTime string `description:"日期"`
  21. Value string `description:"值"`
  22. CreateTime time.Time `description:"创建时间"`
  23. ModifyTime time.Time `description:"修改时间"`
  24. }
  25. func (obj *BaseFromIcpiIndex) GetBaseFromIcpiIndexAll() (list []*BaseFromIcpiIndex, err error) {
  26. o := orm.NewOrmUsingDB("data")
  27. sql := `SELECT * FROM base_from_icpi_index`
  28. _, err = o.Raw(sql).QueryRows(&list)
  29. return
  30. }
  31. func (m *BaseFromIcpiIndex) Add() (err error) {
  32. o := orm.NewOrmUsingDB("data")
  33. id, err := o.Insert(m)
  34. if err != nil {
  35. return
  36. }
  37. m.BaseFromIcpiIndexId = int(id)
  38. return
  39. }
  40. func (obj *BaseFromIcpiIndex) GetBaseFromIcpiData(indexCode string, limit int) (list []*BaseFromIcpiData, err error) {
  41. o := orm.NewOrmUsingDB("data")
  42. sql := `SELECT * FROM base_from_icpi_data WHERE index_code=? ORDER BY data_time DESC LIMIT ?`
  43. _, err = o.Raw(sql, indexCode, limit).QueryRows(&list)
  44. return
  45. }
  46. func (m *BaseFromIcpiIndex) AddData(dataItem *BaseFromIcpiData) (err error) {
  47. o := orm.NewOrmUsingDB("data")
  48. _, err = o.Insert(dataItem)
  49. if err != nil {
  50. return
  51. }
  52. return
  53. }
  54. func (m *BaseFromIcpiIndex) ModifyData(indexCode, dataTime, value string) (err error) {
  55. o := orm.NewOrmUsingDB("data")
  56. sql := ` UPDATE base_from_icpi_data SET value=? WHERE index_code=? AND data_time=? `
  57. _, err = o.Raw(sql, value, indexCode, dataTime).Exec()
  58. return
  59. }
  60. // EdbInfoMaxAndMinInfo 指标最新数据记录结构体
  61. type IndexMaxAndMinInfo struct {
  62. MinDate string `description:"最小日期"`
  63. MaxDate string `description:"最大日期"`
  64. MinValue float64 `description:"最小值"`
  65. MaxValue float64 `description:"最大值"`
  66. LatestValue float64 `description:"最新值"`
  67. LatestDate string `description:"实际数据最新日期"`
  68. }
  69. // 获取指标的最新数据记录信息
  70. func (m *BaseFromIcpiIndex) GetBaseFromIcpiIndexMaxAndMinInfo(indexCode string) (item *IndexMaxAndMinInfo, err error) {
  71. o := orm.NewOrmUsingDB("data")
  72. sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date,MIN(value) AS min_value,MAX(value) AS max_value FROM base_from_icpi_data WHERE index_code=? `
  73. err = o.Raw(sql, indexCode).QueryRow(&item)
  74. return
  75. }
  76. // 修改指标的最新数据信息
  77. func (m *BaseFromIcpiIndex) ModifyEdbInfoMaxAndMinInfo(indexCode string, item *IndexMaxAndMinInfo) (err error) {
  78. o := orm.NewOrmUsingDB("data")
  79. sql := ` UPDATE base_from_icpi_index SET start_date=?,end_date=?,modify_time=NOW() WHERE index_code=? `
  80. _, err = o.Raw(sql, item.MinDate, item.MaxDate, indexCode).Exec()
  81. return
  82. }