base_from_eia_stero.go 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. package data_manage
  2. import (
  3. "database/sql"
  4. "eta/eta_api/global"
  5. "eta/eta_api/utils"
  6. "github.com/rdlucklib/rdluck_tools/paging"
  7. "gorm.io/gorm"
  8. "time"
  9. )
  10. // BaseFromEiaSteoIndex EiaSteo指标
  11. type BaseFromEiaSteoIndex struct {
  12. BaseFromEiaSteoIndexId int `orm:"column(base_from_eia_steo_index_id);pk"`
  13. BaseFromEiaSteoClassifyId int `description:"指标分类id"`
  14. IndexCode string `description:"指标编码"`
  15. IndexName string `description:"指标名称(中文名称)"`
  16. IndexNameOriginal string `description:"指标名称(原始名称)"`
  17. Frequency string `description:"频度"`
  18. Level int `description:"指标层级(原始层级)"`
  19. Unit string `description:"单位"`
  20. Super string `description:"我也不知道是个啥,反正先存起来,万一用到了呢"`
  21. Precision int `description:"精度,我也不知道会不会用到,反正先存起来,万一用到了呢"`
  22. LastHistorical string `description:"最近的历史记录,我也不知道会不会用到,反正先存起来,万一用到了呢"`
  23. Description string `description:"备注信息,我也不知道会不会用到,反正先存起来,万一用到了呢"`
  24. IsMappable int `description:"是否可映射,我也不知道会不会用到,反正先存起来,万一用到了呢"`
  25. StartDate time.Time `description:"开始日期"`
  26. EndDate time.Time `description:"结束日期"`
  27. ModifyTime time.Time `description:"最新更新时间"`
  28. CreateTime time.Time `description:"创建时间"`
  29. }
  30. // BaseFromEiaSteoIndexItem EiaSteo指标
  31. type BaseFromEiaSteoIndexItem struct {
  32. BaseFromEiaSteoIndexId int `orm:"column(base_from_eia_steo_index_id);pk"`
  33. BaseFromEiaSteoClassifyId int `description:"指标分类id"`
  34. IndexCode string `description:"指标编码"`
  35. IndexName string `description:"指标名称"`
  36. EdbInfoId int `description:"eta指标库的id"`
  37. EdbUniqueCode string `description:"指标库唯一编码"`
  38. EdbClassifyId int `description:"指标库分类ID"`
  39. EdbExist int `description:"指标库是否已添加:0-否;1-是"`
  40. }
  41. // BaseFromEiaSteoClassify EiaSteo分类
  42. type BaseFromEiaSteoClassify struct {
  43. BaseFromEiaSteoClassifyId int `orm:"column(base_from_eia_steo_classify_id);pk"`
  44. ClassifyName string `description:"分类名称(中文名称)"`
  45. ClassifyNameOriginal string `description:"分类名称(原始名称)"`
  46. ParentId int `description:"父级id"`
  47. Level int `description:"层级"`
  48. ModifyTime time.Time `description:"最新更新时间"`
  49. CreateTime time.Time `description:"创建时间"`
  50. }
  51. type BaseFromEiaSteoClassifyView struct {
  52. BaseFromEiaSteoClassifyId int `orm:"column(base_from_eia_steo_classify_id);pk"`
  53. ClassifyName string `description:"分类名称(中文名称)"`
  54. ClassifyNameOriginal string `description:"分类名称(原始名称)"`
  55. ParentId int `description:"父级id"`
  56. Level int `description:"层级"`
  57. UniqueCode string `description:"唯一编码"`
  58. Child []*BaseFromEiaSteoClassifyView `description:"子级分类列表" gorm:"-"`
  59. }
  60. // BaseFromEiaSteoData EiaSteo数据表
  61. type BaseFromEiaSteoData struct {
  62. BaseFromEiaSteoDataId int `orm:"column(base_from_eia_steo_data_id);pk"`
  63. BaseFromEiaSteoIndexId int `description:"指标id"`
  64. IndexCode string `description:"指标编码"`
  65. DataTime time.Time `description:"数据日期"`
  66. Value float64 `description:"数据值"`
  67. ModifyTime time.Time `description:"最新更新时间"`
  68. CreateTime time.Time `description:"创建时间"`
  69. }
  70. // BaseFromEiaSteoDataItem EiaSteo数据
  71. type BaseFromEiaSteoDataItem struct {
  72. BaseFromEiaSteoDataId int `orm:"column(base_from_eia_steo_data_id);pk"`
  73. BaseFromEiaSteoIndexId int `description:"指标id"`
  74. IndexCode string `description:"指标编码"`
  75. DataTime string `description:"数据日期"`
  76. Value float64 `description:"数据值"`
  77. ModifyTime string `description:"最新更新时间"`
  78. CreateTime string `description:"创建时间"`
  79. }
  80. func (obj *BaseFromEiaSteoDataItem) AfterFind(tx *gorm.DB) (err error) {
  81. if utils.NeedDateOrTimeFormat(utils.DbDriverName) {
  82. if obj.CreateTime != "" {
  83. obj.CreateTime = utils.GormDateStrToDateTimeStr(obj.CreateTime)
  84. }
  85. if obj.ModifyTime != "" {
  86. obj.ModifyTime = utils.GormDateStrToDateTimeStr(obj.ModifyTime)
  87. }
  88. if obj.DataTime != "" {
  89. obj.DataTime = utils.GormDateStrToDateStr(obj.DataTime)
  90. }
  91. }
  92. return
  93. }
  94. // GetEiaSteoClassifyList 获取分类列表
  95. func GetEiaSteoClassifyList() (items []*BaseFromEiaSteoClassifyView, err error) {
  96. sql := ` SELECT * FROM base_from_eia_steo_classify ORDER BY base_from_eia_steo_classify_id ASC `
  97. err = global.DbMap[utils.DbNameIndex].Raw(sql).Find(&items).Error
  98. return
  99. }
  100. // GetEiaSteoClassifyById 根据分类id获取分类
  101. func GetEiaSteoClassifyById(classifyId int) (item *BaseFromEiaSteoClassify, err error) {
  102. sql := ` SELECT * FROM base_from_eia_steo_classify WHERE base_from_eia_steo_classify_id=? `
  103. err = global.DbMap[utils.DbNameIndex].Raw(sql, classifyId).First(&item).Error
  104. return
  105. }
  106. // GetChildEiaSteoClassifyById 获取子分类列表
  107. func GetChildEiaSteoClassifyById(classifyId int) (items []*BaseFromEiaSteoClassify, err error) {
  108. sql := ` SELECT * FROM base_from_eia_steo_classify WHERE parent_id=? `
  109. err = global.DbMap[utils.DbNameIndex].Raw(sql, classifyId).Find(&items).Error
  110. return
  111. }
  112. type EiaSteoIndexListResp struct {
  113. BaseFromEiaSteoIndexId int `orm:"column(base_from_eia_steo_index_id);pk"`
  114. BaseFromEiaSteoClassifyId int `description:"指标分类id"`
  115. IndexCode string `description:"指标编码"`
  116. IndexName string `description:"指标名称(中文名称)"`
  117. EdbInfoId int `description:"指标库id"`
  118. Unit string `description:"单位"`
  119. Frequency string `description:"频度"`
  120. StartDate string `description:"开始日期"`
  121. EndDate string `description:"结束日期"`
  122. ModifyTime string `description:"最新更新时间"`
  123. CreateTime string `description:"创建时间"`
  124. Paging *paging.PagingItem `description:"分页数据" gorm:"-"`
  125. DataList []*BaseFromEiaSteoDataItem `gorm:"-"`
  126. }
  127. // GetEiaSteoIndexList 获取指标列表
  128. func GetEiaSteoIndexList(condition string, pars []interface{}) (items []*BaseFromEiaSteoIndex, err error) {
  129. sql := ` SELECT * FROM base_from_eia_steo_index WHERE 1=1 `
  130. sql += condition
  131. sql += ` ORDER BY base_from_eia_steo_index_id ASC `
  132. err = global.DbMap[utils.DbNameIndex].Raw(sql, pars...).Find(&items).Error
  133. return
  134. }
  135. // GetEiaSteoIndexDataCount 获取指标数据总数
  136. func GetEiaSteoIndexDataCount(indexCode string) (count int, err error) {
  137. sqlStr := `SELECT COUNT(1) AS count FROM base_from_eia_steo_data where index_code = ? `
  138. var totalNull sql.NullInt64
  139. err = global.DbMap[utils.DbNameIndex].Raw(sqlStr, indexCode).Scan(&count).Error
  140. if !totalNull.Valid {
  141. count = 0
  142. } else {
  143. count = int(totalNull.Int64)
  144. }
  145. return
  146. }
  147. // GetEiaSteoIndexDataList 获取指标数据总数列表
  148. func GetEiaSteoIndexDataList(indexCode string, startSize, pageSize int) (items []*BaseFromEiaSteoDataItem, err error) {
  149. //sql := ` SELECT * FROM mb_index_main_data WHERE INDEX_CODE=? ORDER BY DATA_DATE DESC,PUBLISH_TIME DESC LIMIT ?,?`
  150. sql := ` SELECT * FROM base_from_eia_steo_data AS a WHERE index_code=? ORDER BY data_time DESC LIMIT ?,? `
  151. err = global.DbMap[utils.DbNameIndex].Raw(sql, indexCode, startSize, pageSize).Find(&items).Error
  152. return
  153. }
  154. // GetEiaSteoItemList 模糊查询EiaSteo数据库指标列表
  155. func GetEiaSteoItemList(keyword string) (items []*BaseFromEiaSteoIndexItem, err error) {
  156. sql := "SELECT * FROM base_from_eia_steo_index WHERE index_name LIKE ? OR index_code like ?"
  157. err = global.DbMap[utils.DbNameIndex].Raw(sql, utils.GetLikeKeyword(keyword), utils.GetLikeKeyword(keyword)).Find(&items).Error
  158. return
  159. }
  160. // GetEiaSteoDateList 根据指标code获取日期数据
  161. func GetEiaSteoDateList(indexCodeList []string) (items []*BaseFromEiaSteoDataItem, err error) {
  162. num := len(indexCodeList)
  163. if num <= 0 {
  164. return
  165. }
  166. sql := ` SELECT data_time FROM base_from_eia_steo_data WHERE index_code IN(` + utils.GetOrmInReplace(num) + `) GROUP BY data_time ORDER BY data_time DESC `
  167. err = global.DbMap[utils.DbNameIndex].Raw(sql, indexCodeList).Find(&items).Error
  168. return
  169. }
  170. // GetBaseFromEiaSteoIndexByCode 根据指标code获取指标信息
  171. func GetBaseFromEiaSteoIndexByCode(indexCode string) (item *BaseFromEiaSteoIndex, err error) {
  172. sql := `SELECT * FROM base_from_eia_steo_index WHERE index_code=? `
  173. err = global.DbMap[utils.DbNameIndex].Raw(sql, indexCode).First(&item).Error
  174. return
  175. }