edb_info.go 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. package data_manage
  2. import (
  3. "eta/eta_hub/utils"
  4. "fmt"
  5. "github.com/beego/beego/v2/client/orm"
  6. "strings"
  7. "time"
  8. )
  9. type EdbInfo struct {
  10. EdbInfoId int `orm:"column(edb_info_id);pk"`
  11. EdbInfoType int `description:"指标类型,0:普通指标,1:预测指标"`
  12. SourceName string `description:"来源名称"`
  13. Source int `description:"来源ID"`
  14. EdbCode string `description:"指标编码"`
  15. EdbName string `description:"指标名称"`
  16. EdbNameEn string `description:"英文指标名称"`
  17. EdbNameSource string `description:"指标名称来源"`
  18. Frequency string `description:"频率"`
  19. Unit string `description:"单位"`
  20. UnitEn string `description:"英文单位"`
  21. StartDate string `description:"起始日期"`
  22. EndDate string `description:"终止日期"`
  23. ClassifyId int `description:"分类ID"`
  24. SysUserId int `description:"创建人ID"`
  25. SysUserRealName string `description:"创建人姓名"`
  26. UniqueCode string `description:"指标唯一编码"`
  27. CreateTime time.Time `description:"创建时间"`
  28. ModifyTime time.Time `description:"更新时间"`
  29. MinValue float64 `description:"指标最小值"`
  30. MaxValue float64 `description:"指标最大值"`
  31. CalculateFormula string `description:"计算公式"`
  32. EdbType int `description:"指标类型:1:基础指标,2:计算指标"`
  33. Sort int `description:"排序字段"`
  34. LatestDate string `description:"数据最新日期"`
  35. LatestValue float64 `description:"数据最新值"`
  36. MoveType int `description:"移动方式:1:领先(默认),2:滞后"`
  37. MoveFrequency string `description:"移动频度"`
  38. NoUpdate int8 `description:"是否停止更新,0:继续更新;1:停止更新"`
  39. ServerUrl string `description:"服务器地址"`
  40. ChartImage string `description:"图表图片"`
  41. Calendar string `description:"公历/农历" orm:"default(公历);"`
  42. DataDateType string `orm:"column(data_date_type);size(255);null;default(交易日)"`
  43. ManualSave int `description:"是否有手动保存过上下限: 0-否; 1-是"`
  44. TerminalCode string `description:"终端编码,用于配置在机器上"`
  45. DataUpdateTime string `description:"最近一次数据发生变化的时间"`
  46. ErDataUpdateDate time.Time `description:"本次更新,数据发生变化的最早日期"`
  47. SourceIndexName string `description:"数据源中的指标名称"`
  48. SubSource int `description:"子数据来源:0:经济数据库,1:日期序列"`
  49. SubSourceName string `description:"子数据来源名称"`
  50. IndicatorCode string `description:"指标代码"`
  51. StockCode string `description:"证券代码"`
  52. Extra string `description:"指标的额外配置"`
  53. }
  54. func (m *EdbInfo) GetItemsByCondition(cond string, pars []interface{}, fieldArr []string, orderRule string) (items []*EdbInfo, err error) {
  55. o := orm.NewOrmUsingDB("data")
  56. fields := strings.Join(fieldArr, ",")
  57. if len(fieldArr) == 0 {
  58. fields = `*`
  59. }
  60. order := `ORDER BY create_time DESC`
  61. if orderRule != "" {
  62. order = ` ORDER BY ` + orderRule
  63. }
  64. sql := fmt.Sprintf(`SELECT %s FROM edb_info WHERE 1=1 %s %s`, fields, cond, order)
  65. _, err = o.Raw(sql, pars).QueryRows(&items)
  66. return
  67. }
  68. func (m *EdbInfo) GetItemByUniCode(code string) (item *EdbInfo, err error) {
  69. o := orm.NewOrmUsingDB("data")
  70. sql := fmt.Sprintf(`SELECT * FROM edb_info WHERE unique_code = ? LIMIT 1`)
  71. err = o.Raw(sql, code).QueryRow(&item)
  72. return
  73. }
  74. func (m *EdbInfo) GetItemByEdbCode(code string) (item *EdbInfo, err error) {
  75. o := orm.NewOrmUsingDB("data")
  76. sql := fmt.Sprintf(`SELECT * FROM edb_info WHERE edb_code = ? LIMIT 1`)
  77. err = o.Raw(sql, code).QueryRow(&item)
  78. return
  79. }
  80. // EdbInfoItem 指标信息
  81. type EdbInfoItem struct {
  82. EdbInfoId int `description:"指标信息ID"`
  83. UniqueCode string `description:"指标唯一编码"`
  84. EdbCode string `description:"指标编码"`
  85. EdbInfoType int `description:"指标类型: 0-普通指标; 1-预测指标"`
  86. EdbType int `description:"指标类型: 1-基础指标; 2-计算指标"`
  87. EdbName string `description:"指标名称"`
  88. ClassifyId int `description:"分类ID"`
  89. Source int `description:"来源ID"`
  90. SourceName string `description:"来源名称"`
  91. Frequency string `description:"频率"`
  92. Unit string `description:"单位"`
  93. StartDate string `description:"起始日期"`
  94. EndDate string `description:"终止日期"`
  95. MinValue float64 `description:"指标最小值"`
  96. MaxValue float64 `description:"指标最大值"`
  97. LatestDate string `description:"数据最新日期"`
  98. LatestValue float64 `description:"数据最新值"`
  99. ChartImage string `description:"图表图片"`
  100. Calendar string `description:"公历/农历"`
  101. DataDateType string `description:"数据日期类型: 交易日/自然日"`
  102. Sort int `description:"排序"`
  103. NoUpdate int `description:"是否停更: 0-继续更新; 1-停止更新"`
  104. CreateTime string `description:"创建时间"`
  105. ModifyTime string `description:"更新时间"`
  106. SysUserRealName string `description:"创建人姓名"`
  107. ErDataUpdateDate string `description:"本次更新,数据发生变化的最早日期"`
  108. //EdbData []*EdbDataItem `description:"指标数据"`
  109. }
  110. func FormatEdbInfo2Item(origin *EdbInfo) (item *EdbInfoItem) {
  111. if origin == nil {
  112. return
  113. }
  114. item = new(EdbInfoItem)
  115. item.EdbInfoId = origin.EdbInfoId
  116. item.EdbInfoType = origin.EdbInfoType
  117. item.SourceName = origin.SourceName
  118. item.Source = origin.Source
  119. item.EdbCode = origin.EdbCode
  120. item.EdbName = origin.EdbName
  121. item.Frequency = origin.Frequency
  122. item.Unit = origin.Unit
  123. item.StartDate = origin.StartDate
  124. item.EndDate = origin.EndDate
  125. item.ClassifyId = origin.ClassifyId
  126. item.UniqueCode = origin.UniqueCode
  127. item.MinValue = origin.MinValue
  128. item.MaxValue = origin.MaxValue
  129. item.EdbType = origin.EdbType
  130. item.Sort = origin.Sort
  131. item.LatestDate = origin.LatestDate
  132. item.LatestValue = origin.LatestValue
  133. item.NoUpdate = int(origin.NoUpdate)
  134. item.ChartImage = origin.ChartImage
  135. item.Calendar = origin.Calendar
  136. item.DataDateType = origin.DataDateType
  137. item.SysUserRealName = origin.SysUserRealName
  138. item.ErDataUpdateDate = utils.TimeTransferString(utils.FormatDate, origin.ErDataUpdateDate)
  139. item.CreateTime = utils.TimeTransferString(utils.FormatDateTime, origin.CreateTime)
  140. item.ModifyTime = utils.TimeTransferString(utils.FormatDateTime, origin.ModifyTime)
  141. //item.EdbData = edbData
  142. return
  143. }
  144. // TraceEdbInfoResp 指标追溯数据返回
  145. type TraceEdbInfoResp struct {
  146. EdbInfoId int `description:"指标id"`
  147. EdbInfoType int `description:"指标类型: 0-普通指标; 1-预测指标"`
  148. EdbName string `description:"指标名称"`
  149. EdbType int `description:"指标类型: 1-基础指标; 2-计算指标"`
  150. RuleTitle string `description:"指标规则"`
  151. UniqueCode string `description:"唯一编码"`
  152. ClassifyId int `description:"分类ID"`
  153. Child []TraceEdbInfoResp `description:"下级来源"`
  154. EdbInfo *EdbInfo `description:"指标信息" json:"-"`
  155. }
  156. func GetEdbInfoById(edbInfoId int) (item *EdbInfo, err error) {
  157. o := orm.NewOrmUsingDB("data")
  158. sql := ` SELECT * FROM edb_info WHERE edb_info_id=? `
  159. err = o.Raw(sql, edbInfoId).QueryRow(&item)
  160. return
  161. }
  162. // GetEdbInfoByIdList 根据指标id集合 获取 指标列表
  163. func GetEdbInfoByIdList(edbInfoIdList []int) (items []*EdbInfo, err error) {
  164. num := len(edbInfoIdList)
  165. if num <= 0 {
  166. return
  167. }
  168. o := orm.NewOrmUsingDB("data")
  169. sql := ` SELECT * FROM edb_info WHERE edb_info_id in (` + utils.GetOrmInReplace(num) + `) `
  170. _, err = o.Raw(sql, edbInfoIdList).QueryRows(&items)
  171. return
  172. }