assessment_variety_data.go 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. package models
  2. import (
  3. "eta/eta_api/global"
  4. "eta/eta_api/utils"
  5. "fmt"
  6. "strings"
  7. "time"
  8. )
  9. // AssessmentVarietyData 研究员考核品种表
  10. type AssessmentVarietyData struct {
  11. Id int `gorm:"column:id;primaryKey;autoIncrement"`
  12. VarietyId int `description:"品种ID"`
  13. VarietyName string `description:"品种名称"`
  14. VarietyCode string `description:"品种编码"`
  15. WeekDate time.Time `description:"当周日期"`
  16. CloseValue float64 `description:"当周收盘价"`
  17. HighValue float64 `description:"当周最高价"`
  18. LowValue float64 `description:"当周最低价"`
  19. CreateTime time.Time `description:"创建时间"`
  20. ModifyTime time.Time `description:"修改时间"`
  21. }
  22. func (m *AssessmentVarietyData) TableName() string {
  23. return "assessment_variety_data"
  24. }
  25. type AssessmentVarietyDataCols struct {
  26. PrimaryId string
  27. VarietyId string
  28. VarietyName string
  29. VarietyCode string
  30. WeekDate string
  31. CloseValue string
  32. HighValue string
  33. LowValue string
  34. CreateTime string
  35. ModifyTime string
  36. }
  37. func (m *AssessmentVarietyData) Cols() AssessmentVarietyDataCols {
  38. return AssessmentVarietyDataCols{
  39. PrimaryId: "id",
  40. VarietyId: "variety_id",
  41. VarietyName: "variety_name",
  42. VarietyCode: "variety_code",
  43. WeekDate: "week_date",
  44. CloseValue: "close_value",
  45. HighValue: "high_value",
  46. LowValue: "low_value",
  47. CreateTime: "create_time",
  48. ModifyTime: "modify_time",
  49. }
  50. }
  51. func (m *AssessmentVarietyData) Create() (err error) {
  52. err = global.DEFAULT_DB.Create(m).Error
  53. return
  54. }
  55. func (m *AssessmentVarietyData) CreateMulti(items []*AssessmentVarietyData) (err error) {
  56. if len(items) == 0 {
  57. return
  58. }
  59. err = global.DEFAULT_DB.CreateInBatches(items, utils.MultiAddNum).Error
  60. return
  61. }
  62. func (m *AssessmentVarietyData) Update(cols []string) (err error) {
  63. err = global.DEFAULT_DB.Select(cols).Updates(m).Error
  64. return
  65. }
  66. func (m *AssessmentVarietyData) 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.Id).Error
  69. return
  70. }
  71. func (m *AssessmentVarietyData) 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 *AssessmentVarietyData) 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 *AssessmentVarietyData) GetItemById(primaryId int) (item *AssessmentVarietyData, 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, primaryId).First(&item).Error
  90. return
  91. }
  92. func (m *AssessmentVarietyData) GetItemByCondition(condition string, pars []interface{}, orderRule string) (item *AssessmentVarietyData, 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 *AssessmentVarietyData) 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 *AssessmentVarietyData) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*AssessmentVarietyData, 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. // GetVarietyMaxDateData 获取品种最新数据
  120. func (m *AssessmentVarietyData) GetVarietyMaxDateData(varietyIds []int) (items []*AssessmentVarietyData, err error) {
  121. if len(varietyIds) == 0 {
  122. return
  123. }
  124. sql := `SELECT a.*
  125. FROM assessment_variety_data a
  126. INNER JOIN (
  127. SELECT variety_id, MAX(week_date) AS max_week_date
  128. FROM assessment_variety_data
  129. WHERE variety_id IN (?)
  130. GROUP BY variety_id
  131. ) b ON a.variety_id = b.variety_id AND a.week_date = b.max_week_date`
  132. err = global.DEFAULT_DB.Raw(sql, varietyIds).Find(&items).Error
  133. return
  134. }