base_from_ths_hf_data.go 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  1. package models
  2. import (
  3. "eta_gn/eta_index_lib/global"
  4. "eta_gn/eta_index_lib/utils"
  5. "fmt"
  6. "strings"
  7. "time"
  8. )
  9. // BaseFromThsHfData 同花顺高频数据-指标数据
  10. type BaseFromThsHfData struct {
  11. BaseFromThsHfDataId int `gorm:"column:base_from_ths_hf_data_id;primaryKey"`
  12. BaseFromThsHfIndexId int `description:"指标ID"`
  13. IndexCode string `description:"指标编码"`
  14. DataTime time.Time `description:"数据日期(至时分秒)"`
  15. Value float64 `description:"数据值"`
  16. UniqueCode string `description:"唯一编码"`
  17. CreateTime time.Time `description:"创建时间"`
  18. ModifyTime time.Time `description:"修改时间"`
  19. DataTimestamp int64 `description:"数据日期时间戳"`
  20. }
  21. func (m *BaseFromThsHfData) TableName() string {
  22. return "base_from_ths_hf_data"
  23. }
  24. type BaseFromThsHfDataCols struct {
  25. PrimaryId string
  26. BaseFromThsHfIndexId string
  27. IndexCode string
  28. DataTime string
  29. Value string
  30. UniqueCode string
  31. CreateTime string
  32. ModifyTime string
  33. DataTimestamp string
  34. }
  35. func (m *BaseFromThsHfData) Cols() BaseFromThsHfDataCols {
  36. return BaseFromThsHfDataCols{
  37. PrimaryId: "base_from_ths_hf_data_id",
  38. BaseFromThsHfIndexId: "base_from_ths_hf_index_id",
  39. IndexCode: "index_code",
  40. DataTime: "data_time",
  41. Value: "value",
  42. UniqueCode: "unique_code",
  43. CreateTime: "create_time",
  44. ModifyTime: "modify_time",
  45. DataTimestamp: "data_timestamp",
  46. }
  47. }
  48. func (m *BaseFromThsHfData) Create() (err error) {
  49. //o := orm.NewOrm()
  50. //id, err := o.Insert(m)
  51. err = global.DEFAULT_DmSQL.Create(m).Error
  52. if err != nil {
  53. return
  54. }
  55. //m.BaseFromThsHfDataId = int(id)
  56. return
  57. }
  58. func (m *BaseFromThsHfData) CreateMulti(items []*BaseFromThsHfData) (err error) {
  59. if len(items) == 0 {
  60. return
  61. }
  62. //o := orm.NewOrm()
  63. //_, err = o.InsertMulti(500, items)
  64. err = global.DEFAULT_DmSQL.CreateInBatches(items, 500).Error
  65. return
  66. }
  67. func (m *BaseFromThsHfData) Update(cols []string) (err error) {
  68. //o := orm.NewOrm()
  69. //_, err = o.Update(m, cols...)
  70. err = global.DEFAULT_DmSQL.Model(m).Select(cols).Updates(m).Error
  71. return
  72. }
  73. func (m *BaseFromThsHfData) Remove() (err error) {
  74. //o := orm.NewOrm()
  75. sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
  76. //_, err = o.Raw(sql, m.BaseFromThsHfDataId).Exec()
  77. err = global.DEFAULT_DmSQL.Exec(sql, m.BaseFromThsHfDataId).Error
  78. return
  79. }
  80. func (m *BaseFromThsHfData) MultiRemove(ids []int) (err error) {
  81. if len(ids) == 0 {
  82. return
  83. }
  84. //o := orm.NewOrm()
  85. sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.Cols().PrimaryId, utils.GetOrmInReplace(len(ids)))
  86. //_, err = o.Raw(sql, ids).Exec()
  87. err = global.DEFAULT_DmSQL.Exec(sql, ids).Error
  88. return
  89. }
  90. func (m *BaseFromThsHfData) RemoveByCondition(condition string, pars []interface{}) (err error) {
  91. if condition == "" {
  92. return
  93. }
  94. //o := orm.NewOrm()
  95. sql := fmt.Sprintf(`DELETE FROM %s WHERE %s`, m.TableName(), condition)
  96. //_, err = o.Raw(sql, pars).Exec()
  97. err = global.DEFAULT_DmSQL.Exec(sql, pars...).Error
  98. return
  99. }
  100. func (m *BaseFromThsHfData) GetItemById(id int) (item *BaseFromThsHfData, err error) {
  101. //o := orm.NewOrm()
  102. sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
  103. //err = o.Raw(sql, id).QueryRow(&item)
  104. err = global.DEFAULT_DmSQL.Raw(sql, id).First(&item).Error
  105. return
  106. }
  107. func (m *BaseFromThsHfData) GetItemByCondition(condition string, pars []interface{}, orderRule string) (item *BaseFromThsHfData, err error) {
  108. //o := orm.NewOrm()
  109. order := ``
  110. if orderRule != "" {
  111. order = ` ORDER BY ` + orderRule
  112. }
  113. sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s %s LIMIT 1`, m.TableName(), condition, order)
  114. //err = o.Raw(sql, pars).QueryRow(&item)
  115. err = global.DEFAULT_DmSQL.Raw(sql, pars...).First(&item).Error
  116. return
  117. }
  118. func (m *BaseFromThsHfData) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
  119. //o := orm.NewOrm()
  120. sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
  121. //err = o.Raw(sql, pars).QueryRow(&count)
  122. err = global.DEFAULT_DmSQL.Raw(sql, pars...).Find(&count).Error
  123. return
  124. }
  125. func (m *BaseFromThsHfData) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromThsHfData, err error) {
  126. //o := orm.NewOrm()
  127. fields := strings.Join(fieldArr, ",")
  128. if len(fieldArr) == 0 {
  129. fields = `*`
  130. }
  131. order := fmt.Sprintf(`ORDER BY %s DESC`, m.Cols().CreateTime)
  132. if orderRule != "" {
  133. order = ` ORDER BY ` + orderRule
  134. }
  135. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
  136. //_, err = o.Raw(sql, pars).QueryRows(&items)
  137. err = global.DEFAULT_DmSQL.Raw(sql, pars...).Find(&items).Error
  138. return
  139. }
  140. func (m *BaseFromThsHfData) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*BaseFromThsHfData, err error) {
  141. //o := orm.NewOrm()
  142. fields := strings.Join(fieldArr, ",")
  143. if len(fieldArr) == 0 {
  144. fields = `*`
  145. }
  146. order := fmt.Sprintf(`ORDER BY %s DESC`, m.Cols().CreateTime)
  147. if orderRule != "" {
  148. order = ` ORDER BY ` + orderRule
  149. }
  150. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
  151. //_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
  152. pars = append(pars, startSize, pageSize)
  153. err = global.DEFAULT_DmSQL.Raw(sql, pars...).Find(&items).Error
  154. return
  155. }
  156. // BaseFromThsHfDataItem 同花顺高频数据信息
  157. type BaseFromThsHfDataItem struct {
  158. DataId int `description:"数据ID"`
  159. IndexId int `description:"指标ID"`
  160. IndexCode string `description:"指标编码"`
  161. DataTime string `description:"数据日期(至时分秒)"`
  162. Value float64 `description:"数据值"`
  163. UniqueCode string `description:"唯一编码"`
  164. }
  165. func (m *BaseFromThsHfData) Format2Item() (item *BaseFromThsHfDataItem) {
  166. item = new(BaseFromThsHfDataItem)
  167. item.DataId = m.BaseFromThsHfDataId
  168. item.IndexId = m.BaseFromThsHfIndexId
  169. item.IndexCode = m.IndexCode
  170. item.DataTime = utils.TimeTransferString(utils.FormatDateTime, m.DataTime)
  171. item.Value = m.Value
  172. item.UniqueCode = m.UniqueCode
  173. return
  174. }
  175. func (m *BaseFromThsHfData) MultiInsertOrUpdate(inserts, updates []*BaseFromThsHfData) (err error) {
  176. //o := orm.NewOrm()
  177. if len(inserts) > 0 {
  178. //_, e := o.InsertMulti(600, inserts)
  179. e := global.DEFAULT_DmSQL.CreateInBatches(inserts, 500).Error
  180. if e != nil {
  181. err = fmt.Errorf("insert multi err: %s", e.Error())
  182. return
  183. }
  184. }
  185. if len(updates) > 0 {
  186. sql := fmt.Sprintf("UPDATE %s SET %s = ?, modify_time = NOW() WHERE %s = ?", m.TableName(), m.Cols().Value, m.Cols().UniqueCode)
  187. //p, e := o.Raw(sql).Prepare()
  188. //if e != nil {
  189. // err = fmt.Errorf("prepare err: %s", e.Error())
  190. // return
  191. //}
  192. //defer func() {
  193. // _ = p.Close()
  194. //}()
  195. for _, v := range updates {
  196. //_, e = p.Exec(v.Value, v.UniqueCode)
  197. e := global.DEFAULT_DmSQL.Exec(sql, v.Value, v.UniqueCode).Error
  198. if e != nil {
  199. err = fmt.Errorf("update err: %s", e.Error())
  200. return
  201. }
  202. }
  203. }
  204. return
  205. }
  206. func (m *BaseFromThsHfData) GetIndexMinMax(indexCode string) (item *EdbInfoMaxAndMinInfo, err error) {
  207. //o := orm.NewOrm()
  208. sql := fmt.Sprintf(`SELECT MIN(%s) AS min_date, MAX(%s) AS max_date, MIN(%s) AS min_value,MAX(%s) AS max_value FROM %s WHERE %s = ?`, m.Cols().DataTime, m.Cols().DataTime, m.Cols().Value, m.Cols().Value, m.TableName(), m.Cols().IndexCode)
  209. //err = o.Raw(sql, indexCode).QueryRow(&item)
  210. err = global.DEFAULT_DmSQL.Raw(sql, indexCode).First(&item).Error
  211. if err != nil {
  212. return
  213. }
  214. // 获取最新值
  215. var lastVal float64
  216. sql = fmt.Sprintf(`SELECT %s AS latest_value FROM %s WHERE %s = ? ORDER BY %s DESC LIMIT 1`, m.Cols().Value, m.TableName(), m.Cols().IndexCode, m.Cols().DataTime)
  217. //err = o.Raw(sql, indexCode).QueryRow(&lastVal)
  218. err = global.DEFAULT_DmSQL.Raw(sql, indexCode).First(&lastVal).Error
  219. if err != nil {
  220. return
  221. }
  222. item.LatestValue = lastVal
  223. return
  224. }