base_from_bloomberg_index.go 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. package data_manage
  2. import (
  3. "eta_gn/eta_api/global"
  4. "eta_gn/eta_api/utils"
  5. "fmt"
  6. "github.com/rdlucklib/rdluck_tools/paging"
  7. "strings"
  8. "time"
  9. )
  10. type BaseFromBloombergIndex struct {
  11. BaseFromBloombergIndexId int `orm:"column(base_from_bloomberg_index_id);pk" gorm:"primaryKey" `
  12. IndexCode string `description:"指标编码"`
  13. IndexName string `description:"指标名称"`
  14. Unit string `description:"单位"`
  15. Source int `description:"数据来源"`
  16. Frequency string `description:"频度"`
  17. StartDate time.Time `description:"开始日期"`
  18. EndDate time.Time `description:"结束日期"`
  19. Describe string `description:"指标描述"`
  20. Sort int `description:"排序"`
  21. IsStop int `description:"是否停更:0-否;1-停更"`
  22. EdbExist int `description:"指标库是否已添加:0-否;1-是"`
  23. TerminalCode string `description:"所属终端编码"`
  24. FilePath string `description:"文件存储路径"`
  25. CreateTime time.Time `description:"创建时间"`
  26. ModifyTime time.Time `description:"修改时间"`
  27. }
  28. var BaseFromBloombergIndexCols = struct {
  29. BaseFromBloombergIndexId string
  30. IndexCode string
  31. IndexName string
  32. Unit string
  33. Source string
  34. Frequency string
  35. StartDate string
  36. EndDate string
  37. Describe string
  38. Sort string
  39. IsStop string
  40. EdbExist string
  41. TerminalCode string
  42. FilePath string
  43. CreateTime string
  44. ModifyTime string
  45. }{
  46. BaseFromBloombergIndexId: "base_from_bloomberg_index_id",
  47. IndexCode: "index_code",
  48. IndexName: "index_name",
  49. Unit: "unit",
  50. Source: "source",
  51. Frequency: "frequency",
  52. StartDate: "start_date",
  53. EndDate: "end_date",
  54. Describe: "describe",
  55. Sort: "sort",
  56. IsStop: "is_stop",
  57. EdbExist: "edb_exist",
  58. TerminalCode: "terminal_code",
  59. FilePath: "file_path",
  60. CreateTime: "create_time",
  61. ModifyTime: "modify_time",
  62. }
  63. func (m *BaseFromBloombergIndex) TableName() string {
  64. return "base_from_bloomberg_index"
  65. }
  66. func (m *BaseFromBloombergIndex) PrimaryId() string {
  67. return BaseFromBloombergIndexCols.BaseFromBloombergIndexId
  68. }
  69. func (m *BaseFromBloombergIndex) Create() (err error) {
  70. err = global.DmSQL["data"].Create(m).Error
  71. return
  72. }
  73. func (m *BaseFromBloombergIndex) CreateMulti(items []*BaseFromBloombergIndex) (err error) {
  74. if len(items) == 0 {
  75. return
  76. }
  77. err = global.DmSQL["data"].CreateInBatches(items, utils.MultiAddNum).Error
  78. return
  79. }
  80. func (m *BaseFromBloombergIndex) Update(cols []string) (err error) {
  81. o := global.DmSQL["data"]
  82. err = o.Select(cols).Updates(m).Error
  83. return
  84. }
  85. func (m *BaseFromBloombergIndex) Del() (err error) {
  86. o := global.DmSQL["data"]
  87. sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
  88. err = o.Exec(sql, m.BaseFromBloombergIndexId).Error
  89. return
  90. }
  91. func (m *BaseFromBloombergIndex) MultiDel(menuIds []int) (err error) {
  92. if len(menuIds) == 0 {
  93. return
  94. }
  95. o := global.DmSQL["data"]
  96. sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.PrimaryId(), utils.GetOrmInReplace(len(menuIds)))
  97. err = o.Exec(sql, menuIds).Error
  98. return
  99. }
  100. func (m *BaseFromBloombergIndex) GetItemById(id int) (item *BaseFromBloombergIndex, err error) {
  101. o := global.DmSQL["data"]
  102. sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
  103. err = o.Raw(sql, id).First(&item).Error
  104. return
  105. }
  106. func (m *BaseFromBloombergIndex) GetItemByCondition(condition string, pars []interface{}, orderRule string) (item *BaseFromBloombergIndex, err error) {
  107. o := global.DmSQL["data"]
  108. order := ``
  109. if orderRule != "" {
  110. order = ` ORDER BY ` + orderRule
  111. }
  112. sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s %s LIMIT 1`, m.TableName(), condition, order)
  113. err = o.Raw(sql, pars...).First(&item).Error
  114. return
  115. }
  116. func (m *BaseFromBloombergIndex) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
  117. o := global.DmSQL["data"]
  118. sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
  119. err = o.Raw(sql, pars...).Scan(&count).Error
  120. return
  121. }
  122. func (m *BaseFromBloombergIndex) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, limit int) (items []*BaseFromBloombergIndex, err error) {
  123. o := global.DmSQL["data"]
  124. fields := strings.Join(fieldArr, ",")
  125. if len(fieldArr) == 0 {
  126. fields = `*`
  127. }
  128. order := `ORDER BY create_time DESC`
  129. if orderRule != "" {
  130. order = ` ORDER BY ` + orderRule
  131. }
  132. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
  133. if limit > 0 {
  134. sql += fmt.Sprintf(` LIMIT %d`, limit)
  135. }
  136. err = o.Raw(sql, pars...).Scan(&items).Error
  137. return
  138. }
  139. func (m *BaseFromBloombergIndex) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*BaseFromBloombergIndex, err error) {
  140. o := global.DmSQL["data"]
  141. fields := strings.Join(fieldArr, ",")
  142. if len(fieldArr) == 0 {
  143. fields = `*`
  144. }
  145. order := `ORDER BY create_time DESC`
  146. if orderRule != "" {
  147. order = ` ORDER BY ` + orderRule
  148. }
  149. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
  150. pars = append(pars, startSize)
  151. pars = append(pars, pageSize)
  152. err = o.Raw(sql, pars...).Scan(&items).Error
  153. return
  154. }
  155. type BaseFromBloombergIndexItem struct {
  156. BaseFromBloombergIndexId int
  157. IndexCode string `description:"指标编码"`
  158. IndexName string `description:"指标名称"`
  159. Unit string `description:"单位"`
  160. Source int `description:"数据来源"`
  161. Frequency string `description:"频度"`
  162. StartDate string `description:"开始日期"`
  163. EndDate string `description:"结束日期"`
  164. Describe string `description:"指标描述"`
  165. Sort int `description:"排序"`
  166. IsStop int `description:"是否停更:0-否;1-停更"`
  167. EdbExist int `description:"指标库是否已添加:0-否;1-是"`
  168. CreateTime string `description:"创建时间"`
  169. ModifyTime string `description:"修改时间"`
  170. EdbInfoId int `description:"指标库ID"`
  171. EdbUniqueCode string `description:"指标库唯一编码"`
  172. EdbClassifyId int `description:"指标库分类ID"`
  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.CreateTime = utils.TimeTransferString(utils.FormatDateTime, origin.CreateTime)
  191. item.ModifyTime = utils.TimeTransferString(utils.FormatDateTime, origin.ModifyTime)
  192. return
  193. }
  194. type BloombergSourceListReq struct {
  195. PageSize int `form:"PageSize"`
  196. CurrentIndex int `form:"CurrentIndex"`
  197. Frequency string `form:"Frequency" description:"频度"`
  198. Keywords string `form:"Keywords" description:"指标ID/指标名称"`
  199. ListAll bool `form:"ListAll" description:"列表全选"`
  200. SortField int `form:"SortField" description:"排序字段: 0-默认; 1-开始时间; 2-最新时间; 3-更新时间"`
  201. SortRule int `form:"SortRule" description:"排序方式: 0-默认; 1-正序; 2-倒序"`
  202. }
  203. type BloombergSourceListResp struct {
  204. List []*BaseFromBloombergIndexItem
  205. Paging *paging.PagingItem `description:"分页数据"`
  206. }
  207. func (m *BaseFromBloombergIndex) UpdateEdbExist(indexCode string) (err error) {
  208. o := global.DmSQL["data"]
  209. sql := fmt.Sprintf(`UPDATE %s SET %s = ? WHERE %s = ? LIMIT 1`, m.TableName(), BaseFromBloombergIndexCols.EdbExist, BaseFromBloombergIndexCols.IndexCode)
  210. err = o.Exec(sql, 1, indexCode).Error
  211. return
  212. }
  213. type BloombergSourceBatchAddCheckReq struct {
  214. BloombergSourceListReq
  215. IndexCodes []string `form:"IndexCodes" description:"全选为false时, 该数组为选中; 全选为true时, 该数组为不选的指标"`
  216. }