factor_edb_series_calculate_data.go 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. package models
  2. import (
  3. "eta/eta_index_lib/global"
  4. "eta/eta_index_lib/utils"
  5. "fmt"
  6. "strings"
  7. "time"
  8. )
  9. // FactorEdbSeriesCalculateData 因子指标系列-指标计算数据表
  10. type FactorEdbSeriesCalculateData struct {
  11. FactorEdbSeriesCalculateDataId int `gorm:"primaryKey;autoIncrement;column:factor_edb_series_calculate_data_id" description:"因子指标系列计算数据ID"`
  12. FactorEdbSeriesId int `gorm:"column:factor_edb_series_id" description:"因子指标系列ID"`
  13. EdbInfoId int `gorm:"column:edb_info_id" description:"指标ID"`
  14. EdbCode string `gorm:"column:edb_code" description:"指标编码"`
  15. DataTime time.Time `gorm:"column:data_time" description:"数据日期"`
  16. Value float64 `gorm:"column:value" description:"数据值"`
  17. CreateTime time.Time `gorm:"column:create_time" description:"创建时间"`
  18. ModifyTime time.Time `gorm:"column:modify_time" description:"修改时间"`
  19. DataTimestamp int64 `gorm:"column:data_timestamp" description:"数据日期时间戳"`
  20. }
  21. func (m *FactorEdbSeriesCalculateData) TableName() string {
  22. return "factor_edb_series_calculate_data"
  23. }
  24. type FactorEdbSeriesCalculateDataCols struct {
  25. PrimaryId string
  26. FactorEdbSeriesId string
  27. EdbInfoId string
  28. EdbCode string
  29. DataTime string
  30. Value string
  31. CreateTime string
  32. ModifyTime string
  33. DataTimestamp string
  34. }
  35. func (m *FactorEdbSeriesCalculateData) Cols() FactorEdbSeriesCalculateDataCols {
  36. return FactorEdbSeriesCalculateDataCols{
  37. PrimaryId: "factor_edb_series_calculate_data_id",
  38. FactorEdbSeriesId: "factor_edb_series_id",
  39. EdbInfoId: "edb_info_id",
  40. EdbCode: "edb_code",
  41. DataTime: "data_time",
  42. Value: "value",
  43. CreateTime: "create_time",
  44. ModifyTime: "modify_time",
  45. DataTimestamp: "data_timestamp",
  46. }
  47. }
  48. func (m *FactorEdbSeriesCalculateData) Create() (err error) {
  49. err = global.DEFAULT_DB.Create(m).Error
  50. if err != nil {
  51. return
  52. }
  53. return
  54. }
  55. func (m *FactorEdbSeriesCalculateData) CreateMulti(items []*FactorEdbSeriesCalculateData) (err error) {
  56. if len(items) == 0 {
  57. return
  58. }
  59. err = global.DEFAULT_DB.CreateInBatches(items, 500).Error
  60. return
  61. }
  62. func (m *FactorEdbSeriesCalculateData) Update(cols []string) (err error) {
  63. err = global.DEFAULT_DB.Model(m).Select(cols).Updates(m).Error
  64. return
  65. }
  66. func (m *FactorEdbSeriesCalculateData) Remove() (err error) {
  67. sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
  68. err = global.DEFAULT_DB.Exec(sql, m.FactorEdbSeriesCalculateDataId).Error
  69. return
  70. }
  71. func (m *FactorEdbSeriesCalculateData) MultiRemove(ids []int) (err error) {
  72. if len(ids) == 0 {
  73. return
  74. }
  75. sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.Cols().PrimaryId, utils.GetOrmInReplace(len(ids)))
  76. err = global.DEFAULT_DB.Exec(sql, ids).Error
  77. return
  78. }
  79. func (m *FactorEdbSeriesCalculateData) RemoveByCondition(condition string, pars []interface{}) (err error) {
  80. if condition == "" {
  81. return
  82. }
  83. sql := fmt.Sprintf(`DELETE FROM %s WHERE %s`, m.TableName(), condition)
  84. err = global.DEFAULT_DB.Exec(sql, pars...).Error
  85. return
  86. }
  87. func (m *FactorEdbSeriesCalculateData) GetItemById(id int) (item *FactorEdbSeriesCalculateData, err error) {
  88. sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
  89. err = global.DEFAULT_DB.Raw(sql, id).First(&item).Error
  90. return
  91. }
  92. func (m *FactorEdbSeriesCalculateData) GetItemByCondition(condition string, pars []interface{}, orderRule string) (item *FactorEdbSeriesCalculateData, err error) {
  93. order := ``
  94. if orderRule != "" {
  95. order = ` ORDER BY ` + orderRule
  96. }
  97. sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s %s LIMIT 1`, m.TableName(), condition, order)
  98. err = global.DEFAULT_DB.Raw(sql, pars...).First(&item).Error
  99. return
  100. }
  101. func (m *FactorEdbSeriesCalculateData) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
  102. sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
  103. err = global.DEFAULT_DB.Raw(sql, pars...).Scan(&count).Error
  104. return
  105. }
  106. func (m *FactorEdbSeriesCalculateData) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*FactorEdbSeriesCalculateData, err error) {
  107. fields := strings.Join(fieldArr, ",")
  108. if len(fieldArr) == 0 {
  109. fields = `*`
  110. }
  111. order := fmt.Sprintf(`ORDER BY %s DESC`, m.Cols().CreateTime)
  112. if orderRule != "" {
  113. order = ` ORDER BY ` + orderRule
  114. }
  115. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
  116. err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
  117. return
  118. }
  119. func (m *FactorEdbSeriesCalculateData) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*FactorEdbSeriesCalculateData, err error) {
  120. fields := strings.Join(fieldArr, ",")
  121. if len(fieldArr) == 0 {
  122. fields = `*`
  123. }
  124. order := fmt.Sprintf(`ORDER BY %s DESC`, m.Cols().CreateTime)
  125. if orderRule != "" {
  126. order = ` ORDER BY ` + orderRule
  127. }
  128. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
  129. pars = append(pars, startSize, pageSize)
  130. err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
  131. return
  132. }
  133. // FactorEdbSeriesCalculateDataItem 因子指标系列-计算数据信息
  134. type FactorEdbSeriesCalculateDataItem struct {
  135. DataId int `description:"数据ID"`
  136. FactorEdbSeriesId int `description:"因子指标系列ID"`
  137. EdbInfoId int `description:"指标ID"`
  138. EdbCode string `description:"指标编码"`
  139. DataTime string `description:"数据日期"`
  140. Value float64 `description:"数据值"`
  141. }
  142. func (m *FactorEdbSeriesCalculateData) Format2Item() (item *FactorEdbSeriesCalculateDataItem) {
  143. item = new(FactorEdbSeriesCalculateDataItem)
  144. item.DataId = m.FactorEdbSeriesCalculateDataId
  145. item.FactorEdbSeriesId = m.FactorEdbSeriesId
  146. item.EdbInfoId = m.EdbInfoId
  147. item.EdbCode = m.EdbCode
  148. return
  149. }
  150. // TransEdbSeriesCalculateData2EdbDataList 转换数据格式
  151. func TransEdbSeriesCalculateData2EdbDataList(items []*FactorEdbSeriesCalculateData) (list []*EdbInfoSearchData) {
  152. list = make([]*EdbInfoSearchData, 0)
  153. for _, v := range items {
  154. list = append(list, &EdbInfoSearchData{
  155. DataTime: v.DataTime.Format(utils.FormatDate),
  156. Value: v.Value,
  157. })
  158. }
  159. return
  160. }