base_from_bloomberg_index.go 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273
  1. package data_manage
  2. import (
  3. "eta/eta_api/utils"
  4. "fmt"
  5. "github.com/beego/beego/v2/client/orm"
  6. "github.com/rdlucklib/rdluck_tools/paging"
  7. "strings"
  8. "time"
  9. )
  10. // BaseFromBloombergIndex 彭博原始指标表
  11. type BaseFromBloombergIndex struct {
  12. BaseFromBloombergIndexId int `orm:"column(base_from_bloomberg_index_id);pk"`
  13. IndexCode string `description:"指标编码"`
  14. IndexName string `description:"指标名称"`
  15. Unit string `description:"单位"`
  16. Source int `description:"数据来源"`
  17. Frequency string `description:"频度"`
  18. StartDate time.Time `description:"开始日期"`
  19. EndDate time.Time `description:"结束日期"`
  20. Describe string `description:"指标描述"`
  21. Sort int `description:"排序"`
  22. IsStop int `description:"是否停更:0-否;1-停更"`
  23. EdbExist int `description:"指标库是否已添加:0-否;1-是"`
  24. TerminalCode string `description:"所属终端编码"`
  25. FilePath string `description:"文件存储路径"`
  26. CreateTime time.Time `description:"创建时间"`
  27. ModifyTime time.Time `description:"修改时间"`
  28. }
  29. var BaseFromBloombergIndexCols = struct {
  30. BaseFromBloombergIndexId string
  31. IndexCode string
  32. IndexName string
  33. Unit string
  34. Source string
  35. Frequency string
  36. StartDate string
  37. EndDate string
  38. Describe string
  39. Sort string
  40. IsStop string
  41. EdbExist string
  42. TerminalCode string
  43. FilePath string
  44. CreateTime string
  45. ModifyTime string
  46. }{
  47. BaseFromBloombergIndexId: "base_from_bloomberg_index_id",
  48. IndexCode: "index_code",
  49. IndexName: "index_name",
  50. Unit: "unit",
  51. Source: "source",
  52. Frequency: "frequency",
  53. StartDate: "start_date",
  54. EndDate: "end_date",
  55. Describe: "describe",
  56. Sort: "sort",
  57. IsStop: "is_stop",
  58. EdbExist: "edb_exist",
  59. TerminalCode: "terminal_code",
  60. FilePath: "file_path",
  61. CreateTime: "create_time",
  62. ModifyTime: "modify_time",
  63. }
  64. func (m *BaseFromBloombergIndex) TableName() string {
  65. return "base_from_bloomberg_index"
  66. }
  67. func (m *BaseFromBloombergIndex) PrimaryId() string {
  68. return BaseFromBloombergIndexCols.BaseFromBloombergIndexId
  69. }
  70. func (m *BaseFromBloombergIndex) Create() (err error) {
  71. o := orm.NewOrmUsingDB("data")
  72. id, err := o.Insert(m)
  73. if err != nil {
  74. return
  75. }
  76. m.BaseFromBloombergIndexId = int(id)
  77. return
  78. }
  79. func (m *BaseFromBloombergIndex) CreateMulti(items []*BaseFromBloombergIndex) (err error) {
  80. if len(items) == 0 {
  81. return
  82. }
  83. o := orm.NewOrmUsingDB("data")
  84. _, err = o.InsertMulti(len(items), items)
  85. return
  86. }
  87. func (m *BaseFromBloombergIndex) Update(cols []string) (err error) {
  88. o := orm.NewOrmUsingDB("data")
  89. _, err = o.Update(m, cols...)
  90. return
  91. }
  92. func (m *BaseFromBloombergIndex) Del() (err error) {
  93. o := orm.NewOrmUsingDB("data")
  94. sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
  95. _, err = o.Raw(sql, m.BaseFromBloombergIndexId).Exec()
  96. return
  97. }
  98. func (m *BaseFromBloombergIndex) MultiDel(menuIds []int) (err error) {
  99. if len(menuIds) == 0 {
  100. return
  101. }
  102. o := orm.NewOrmUsingDB("data")
  103. sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.PrimaryId(), utils.GetOrmInReplace(len(menuIds)))
  104. _, err = o.Raw(sql, menuIds).Exec()
  105. return
  106. }
  107. func (m *BaseFromBloombergIndex) GetItemById(id int) (item *BaseFromBloombergIndex, err error) {
  108. o := orm.NewOrmUsingDB("data")
  109. sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
  110. err = o.Raw(sql, id).QueryRow(&item)
  111. return
  112. }
  113. func (m *BaseFromBloombergIndex) GetItemByCondition(condition string, pars []interface{}, orderRule string) (item *BaseFromBloombergIndex, err error) {
  114. o := orm.NewOrmUsingDB("data")
  115. order := ``
  116. if orderRule != "" {
  117. order = ` ORDER BY ` + orderRule
  118. }
  119. sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s %s LIMIT 1`, m.TableName(), condition, order)
  120. err = o.Raw(sql, pars).QueryRow(&item)
  121. return
  122. }
  123. func (m *BaseFromBloombergIndex) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
  124. o := orm.NewOrmUsingDB("data")
  125. sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
  126. err = o.Raw(sql, pars).QueryRow(&count)
  127. return
  128. }
  129. func (m *BaseFromBloombergIndex) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromBloombergIndex, err error) {
  130. o := orm.NewOrmUsingDB("data")
  131. fields := strings.Join(fieldArr, ",")
  132. if len(fieldArr) == 0 {
  133. fields = `*`
  134. }
  135. order := `ORDER BY create_time DESC`
  136. if orderRule != "" {
  137. order = ` ORDER BY ` + orderRule
  138. }
  139. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
  140. _, err = o.Raw(sql, pars).QueryRows(&items)
  141. return
  142. }
  143. func (m *BaseFromBloombergIndex) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*BaseFromBloombergIndex, err error) {
  144. o := orm.NewOrmUsingDB("data")
  145. fields := strings.Join(fieldArr, ",")
  146. if len(fieldArr) == 0 {
  147. fields = `*`
  148. }
  149. order := `ORDER BY create_time DESC`
  150. if orderRule != "" {
  151. order = ` ORDER BY ` + orderRule
  152. }
  153. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
  154. _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
  155. return
  156. }
  157. // BaseFromBloombergIndexItem 彭博原始指标信息
  158. type BaseFromBloombergIndexItem struct {
  159. BaseFromBloombergIndexId int
  160. IndexCode string `description:"指标编码"`
  161. IndexName string `description:"指标名称"`
  162. Unit string `description:"单位"`
  163. Source int `description:"数据来源"`
  164. Frequency string `description:"频度"`
  165. StartDate string `description:"开始日期"`
  166. EndDate string `description:"结束日期"`
  167. Describe string `description:"指标描述"`
  168. Sort int `description:"排序"`
  169. IsStop int `description:"是否停更:0-否;1-停更"`
  170. EdbExist int `description:"指标库是否已添加:0-否;1-是"`
  171. CreateTime string `description:"创建时间"`
  172. ModifyTime string `description:"修改时间"`
  173. }
  174. func FormatBaseFromBloombergIndex2Item(origin *BaseFromBloombergIndex) (item *BaseFromBloombergIndexItem) {
  175. if origin == nil {
  176. return
  177. }
  178. item = new(BaseFromBloombergIndexItem)
  179. item.BaseFromBloombergIndexId = origin.BaseFromBloombergIndexId
  180. item.IndexCode = origin.IndexCode
  181. item.IndexName = origin.IndexName
  182. item.Unit = origin.Unit
  183. item.Source = origin.Source
  184. item.Frequency = origin.Frequency
  185. item.StartDate = utils.TimeTransferString(utils.FormatDate, origin.StartDate)
  186. item.EndDate = utils.TimeTransferString(utils.FormatDate, origin.EndDate)
  187. item.Describe = origin.Describe
  188. item.Sort = origin.Sort
  189. item.IsStop = origin.IsStop
  190. item.EdbExist = origin.EdbExist
  191. item.CreateTime = utils.TimeTransferString(utils.FormatDateTime, origin.CreateTime)
  192. item.ModifyTime = utils.TimeTransferString(utils.FormatDateTime, origin.ModifyTime)
  193. return
  194. }
  195. // BloombergSourceListReq 指标列表筛选
  196. type BloombergSourceListReq struct {
  197. PageSize int `form:"PageSize"`
  198. CurrentIndex int `form:"CurrentIndex"`
  199. Frequency string `form:"Frequency" description:"频度"`
  200. Keywords string `form:"Keywords" description:"指标ID/指标名称"`
  201. ListAll bool `form:"ListAll" description:"列表全选"`
  202. SortField int `form:"SortField" description:"排序字段: 0-默认; 1-开始时间; 2-最新时间; 3-更新时间"`
  203. SortRule int `form:"SortRule" description:"排序方式: 0-默认; 1-正序; 2-倒序"`
  204. }
  205. // BloombergSourceListResp 指标列表响应体
  206. type BloombergSourceListResp struct {
  207. List []*BaseFromBloombergIndexItem
  208. Paging *paging.PagingItem `description:"分页数据"`
  209. }
  210. // UpdateEdbExist 标记已添加指标库
  211. func (m *BaseFromBloombergIndex) UpdateEdbExist(indexCode string) (err error) {
  212. o := orm.NewOrmUsingDB("data")
  213. sql := fmt.Sprintf(`UPDATE %s SET %s = ? WHERE %s = ? LIMIT 1`, m.TableName(), BaseFromBloombergIndexCols.EdbExist, BaseFromBloombergIndexCols.IndexCode)
  214. _, err = o.Raw(sql, 1, indexCode).Exec()
  215. return
  216. }
  217. // --------------------------------------------- 以下为测试用 ---------------------------------------------
  218. // BaseFromBloombergData 彭博原始指标表
  219. //type BaseFromBloombergData struct {
  220. // BaseFromBloombergDataId int `orm:"column(base_from_bloomberg_data_id);pk"`
  221. // BaseFromBloombergIndexId int `description:"指标ID"`
  222. // IndexCode string `description:"指标编码"`
  223. // DataTime time.Time `description:"数据日期"`
  224. // Value float64 `description:"数据值"`
  225. // CreateTime time.Time `description:"创建时间"`
  226. // ModifyTime time.Time `description:"修改时间"`
  227. // DataTimestamp int `description:"数据日期时间戳"`
  228. //}
  229. //
  230. //func (m *BaseFromBloombergData) TableName() string {
  231. // return "base_from_bloomberg_data"
  232. //}
  233. //
  234. //func (m *BaseFromBloombergData) Create() (err error) {
  235. // o := orm.NewOrmUsingDB("data")
  236. // id, err := o.Insert(m)
  237. // if err != nil {
  238. // return
  239. // }
  240. // m.BaseFromBloombergDataId = int(id)
  241. // return
  242. //}
  243. //
  244. //func (m *BaseFromBloombergData) CreateMulti(items []*BaseFromBloombergData) (err error) {
  245. // if len(items) == 0 {
  246. // return
  247. // }
  248. // o := orm.NewOrmUsingDB("data")
  249. // _, err = o.InsertMulti(len(items), items)
  250. // return
  251. //}