factor_edb_series_calculate_func.go 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  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. // FactorEdbSeriesCalculateFunc 多因子系列-计算方式表
  10. type FactorEdbSeriesCalculateFunc struct {
  11. FactorEdbSeriesCalculateFuncId int `gorm:"primaryKey;autoIncrement;column:factor_edb_series_calculate_func_id" description:"多因子系列计算方式ID"`
  12. CalculateName string `gorm:"column:calculate_name" description:"计算方式名称"`
  13. Source int `gorm:"column:source" description:"计算方式来源"`
  14. EdbInfoType int `gorm:"column:edb_info_type" description:"指标计算类型:0-普通指标;1-预测指标"`
  15. CreateTime time.Time `gorm:"column:create_time" description:"创建时间"`
  16. ModifyTime time.Time `gorm:"column:modify_time" description:"修改时间"`
  17. }
  18. func (m *FactorEdbSeriesCalculateFunc) TableName() string {
  19. return "factor_edb_series_calculate_func"
  20. }
  21. type FactorEdbSeriesCalculateFuncCols struct {
  22. PrimaryId string
  23. CalculateName string
  24. Source string
  25. EdbInfoType string
  26. CreateTime string
  27. ModifyTime string
  28. }
  29. func (m *FactorEdbSeriesCalculateFunc) Cols() FactorEdbSeriesCalculateFuncCols {
  30. return FactorEdbSeriesCalculateFuncCols{
  31. PrimaryId: "factor_edb_series_calculate_func_id",
  32. CalculateName: "calculate_name",
  33. Source: "source",
  34. EdbInfoType: "edb_info_type",
  35. CreateTime: "create_time",
  36. ModifyTime: "modify_time",
  37. }
  38. }
  39. func (m *FactorEdbSeriesCalculateFunc) Create() (err error) {
  40. err = global.DEFAULT_DB.Create(m).Error
  41. return
  42. }
  43. func (m *FactorEdbSeriesCalculateFunc) CreateMulti(items []*FactorEdbSeriesCalculateFunc) (err error) {
  44. if len(items) == 0 {
  45. return
  46. }
  47. err = global.DEFAULT_DB.CreateInBatches(items, utils.MultiAddNum).Error
  48. return
  49. }
  50. func (m *FactorEdbSeriesCalculateFunc) Update(cols []string) (err error) {
  51. err = global.DEFAULT_DB.Model(m).Select(cols).Updates(m).Error
  52. return
  53. }
  54. func (m *FactorEdbSeriesCalculateFunc) Remove() (err error) {
  55. sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
  56. err = global.DEFAULT_DB.Exec(sql, m.FactorEdbSeriesCalculateFuncId).Error
  57. return
  58. }
  59. func (m *FactorEdbSeriesCalculateFunc) MultiRemove(ids []int) (err error) {
  60. if len(ids) == 0 {
  61. return
  62. }
  63. sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.Cols().PrimaryId, utils.GetOrmInReplace(len(ids)))
  64. err = global.DEFAULT_DB.Exec(sql, ids).Error
  65. return
  66. }
  67. func (m *FactorEdbSeriesCalculateFunc) GetItemById(id int) (item *FactorEdbSeriesCalculateFunc, err error) {
  68. sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
  69. err = global.DEFAULT_DB.Raw(sql, id).First(&item).Error
  70. return
  71. }
  72. func (m *FactorEdbSeriesCalculateFunc) GetItemByCondition(condition string, pars []interface{}, orderRule string) (item *FactorEdbSeriesCalculateFunc, err error) {
  73. order := ``
  74. if orderRule != "" {
  75. order = ` ORDER BY ` + orderRule
  76. }
  77. sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s %s LIMIT 1`, m.TableName(), condition, order)
  78. err = global.DEFAULT_DB.Raw(sql, pars...).First(&item).Error
  79. return
  80. }
  81. func (m *FactorEdbSeriesCalculateFunc) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
  82. sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
  83. err = global.DEFAULT_DB.Raw(sql, pars...).Scan(&count).Error
  84. return
  85. }
  86. func (m *FactorEdbSeriesCalculateFunc) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*FactorEdbSeriesCalculateFunc, err error) {
  87. fields := strings.Join(fieldArr, ",")
  88. if len(fieldArr) == 0 {
  89. fields = `*`
  90. }
  91. order := fmt.Sprintf(`ORDER BY %s DESC`, m.Cols().CreateTime)
  92. if orderRule != "" {
  93. order = ` ORDER BY ` + orderRule
  94. }
  95. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
  96. err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
  97. return
  98. }
  99. func (m *FactorEdbSeriesCalculateFunc) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*FactorEdbSeriesCalculateFunc, err error) {
  100. fields := strings.Join(fieldArr, ",")
  101. if len(fieldArr) == 0 {
  102. fields = `*`
  103. }
  104. order := fmt.Sprintf(`ORDER BY %s DESC`, m.Cols().CreateTime)
  105. if orderRule != "" {
  106. order = ` ORDER BY ` + orderRule
  107. }
  108. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
  109. pars = append(pars, startSize, pageSize)
  110. err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
  111. return
  112. }
  113. // FactorEdbSeriesCalculateFuncItem 多因子系列-计算方式
  114. type FactorEdbSeriesCalculateFuncItem struct {
  115. CalculateName string `description:"计算方式名称"`
  116. Source int `description:"计算方式来源"`
  117. }
  118. func (m *FactorEdbSeriesCalculateFunc) Format2Item() (item *FactorEdbSeriesCalculateFuncItem) {
  119. item = new(FactorEdbSeriesCalculateFuncItem)
  120. item.CalculateName = m.CalculateName
  121. item.Source = m.Source
  122. return
  123. }