edb_data_gz.go 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package data_manage
  2. import (
  3. "eta/eta_api/global"
  4. "eta/eta_api/utils"
  5. "fmt"
  6. "gorm.io/gorm"
  7. )
  8. type GzData struct {
  9. InputValue string `orm:"column(DATA_VALUE)" description:"日期"`
  10. DataTime string `orm:"column(DATA_DATE)" description:"值"`
  11. }
  12. func GetEdbDataGzMaxOrMinDate(edbCode string) (minDate, maxDate string, err error) {
  13. //o := orm.NewOrmUsingDB("data")
  14. sql := ` SELECT MIN(data_time) AS minDate,MAX(data_time) AS maxDate FROM edb_data_gz WHERE edb_code=? `
  15. //err = o.Raw(sql, edbCode).QueryRow(&minDate, &maxDate)
  16. var maxAndMinDate MaxAndMinDate
  17. err = global.DbMap[utils.DbNameIndex].Raw(sql, edbCode).First(&maxAndMinDate).Error
  18. if err != nil {
  19. return
  20. }
  21. minDate = maxAndMinDate.MinDate.Format(utils.FormatDate)
  22. maxDate = maxAndMinDate.MaxDate.Format(utils.FormatDate)
  23. return
  24. }
  25. type GzIndexView struct {
  26. BaseFromTradeGuangzhouIndexId int `description:"指标id"`
  27. BaseFromTradeGuangzhouClassifyId int `description:"分类id"`
  28. IndexCode string `description:"指标编码"`
  29. IndexName string `description:"指标名称"`
  30. Frequency string `description:"频率"`
  31. Unit string `description:"单位"`
  32. StartDate string `description:"开始日期"`
  33. EndDate string `description:"结束日期"`
  34. Value float64 `description:"数据"`
  35. }
  36. // AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
  37. func (m *GzIndexView) AfterFind(db *gorm.DB) (err error) {
  38. m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
  39. m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
  40. return
  41. }
  42. func (m *GzIndexView) ConvDateTimeStr() {
  43. m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
  44. m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
  45. return
  46. }
  47. // GetBaseInfoFromShByIndexCode 获取指标信息
  48. func GetBaseInfoFromGzByIndexCode(indexCode string) (item *GzIndexView, err error) {
  49. sql := `SELECT * FROM base_from_trade_guangzhou_index WHERE index_code=? `
  50. sql = fmt.Sprintf(sql)
  51. err = global.DbMap[utils.DbNameIndex].Raw(sql, indexCode).First(&item).Error
  52. if err != nil {
  53. return
  54. }
  55. item.ConvDateTimeStr()
  56. return
  57. }