base_from_eia_steo.go 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288
  1. package data_manage
  2. import (
  3. sql2 "database/sql"
  4. "eta/eta_task/global"
  5. "eta/eta_task/utils"
  6. "time"
  7. "github.com/rdlucklib/rdluck_tools/paging"
  8. )
  9. // BaseFromEiaSteoIndex EiaSteo指标
  10. type BaseFromEiaSteoIndex struct {
  11. BaseFromEiaSteoIndexId int `gorm:"column:base_from_eia_steo_index_id;primaryKey;autoIncrement"`
  12. BaseFromEiaSteoClassifyId int `description:"指标分类id"`
  13. IndexCode string `description:"指标编码"`
  14. IndexName string `description:"指标名称(中文名称)"`
  15. IndexNameOriginal string `description:"指标名称(原始名称)"`
  16. Frequency string `description:"频度"`
  17. Level int `description:"指标层级(原始层级)"`
  18. Unit string `description:"单位"`
  19. Super string `description:"我也不知道是个啥,反正先存起来,万一用到了呢"`
  20. Precision int `description:"精度,我也不知道会不会用到,反正先存起来,万一用到了呢"`
  21. LastHistorical string `description:"最近的历史记录,我也不知道会不会用到,反正先存起来,万一用到了呢"`
  22. Description string `description:"备注信息,我也不知道会不会用到,反正先存起来,万一用到了呢"`
  23. IsMappable int `description:"是否可映射,我也不知道会不会用到,反正先存起来,万一用到了呢"`
  24. StartDate string `description:"开始日期"`
  25. EndDate string `description:"结束日期"`
  26. ModifyTime string `description:"最新更新时间"`
  27. CreateTime string `description:"创建时间"`
  28. LatestValue float64 `description:"最新值"`
  29. }
  30. func AddBaseFromEiaSteoIndex(item *BaseFromEiaSteoIndex) (lastId int64, err error) {
  31. err = global.DbMap[utils.DbNameIndex].Create(item).Error
  32. if err != nil {
  33. return
  34. }
  35. lastId = int64(item.BaseFromEiaSteoIndexId)
  36. return
  37. }
  38. func InsertOrUpdateBaseFromEiaSteoIndex(item *BaseFromEiaSteoIndex) (lastId int64, err error) {
  39. saveItem := *item
  40. o := global.DbMap[utils.DbNameIndex]
  41. result := o.FirstOrCreate(item, "base_from_eia_steo_index_id = ?", item.BaseFromEiaSteoIndexId)
  42. if result.Error != nil {
  43. err = result.Error
  44. return
  45. }
  46. if result.RowsAffected == 0 {
  47. saveItem.BaseFromEiaSteoIndexId = 0
  48. result = o.Model(item).Where("base_from_eia_steo_index_id = ?", item.BaseFromEiaSteoIndexId).Updates(saveItem)
  49. if result.Error != nil {
  50. err = result.Error
  51. return
  52. }
  53. }
  54. return int64(item.BaseFromEiaSteoIndexId), nil
  55. }
  56. // Add 新增指标
  57. func (item *BaseFromEiaSteoIndex) Add() (err error) {
  58. err = global.DbMap[utils.DbNameIndex].Create(item).Error
  59. return
  60. }
  61. func GetBaseFromEiaSteoIndexAll(dateStr string) (list []*BaseFromEiaSteoIndex, err error) {
  62. o := global.DbMap[utils.DbNameIndex]
  63. sql := `SELECT * FROM base_from_eia_steo_index WHERE create_time>=?`
  64. err = o.Raw(sql, dateStr).Find(&list).Error
  65. return
  66. }
  67. func GetBaseFromEiaSteoIndexCodeListByDate(dateStr string) (list []string, err error) {
  68. o := global.DbMap[utils.DbNameIndex]
  69. sql := `SELECT index_code FROM base_from_eia_steo_index WHERE modify_time>=?`
  70. err = o.Raw(sql, dateStr).Find(&list).Error
  71. return
  72. }
  73. // Update 更新作者基础信息
  74. func (item *BaseFromEiaSteoIndex) Update(cols []string) (err error) {
  75. err = global.DbMap[utils.DbNameIndex].Select(cols).Updates(item).Error
  76. return
  77. }
  78. // BaseFromEiaSteoClassify EiaSteo分类
  79. type BaseFromEiaSteoClassify struct {
  80. BaseFromEiaSteoClassifyId int `gorm:"column:base_from_eia_steo_classify_id;primaryKey;autoIncrement"`
  81. ClassifyName string `description:"分类名称(中文名称)"`
  82. ClassifyNameOriginal string `description:"分类名称(原始名称)"`
  83. ParentId int `description:"父级id"`
  84. Level int `description:"层级"`
  85. ModifyTime time.Time `description:"最新更新时间"`
  86. CreateTime time.Time `description:"创建时间"`
  87. }
  88. func (item *BaseFromEiaSteoClassify) AddBaseFromEiaSteoClassify() (err error) {
  89. err = global.DbMap[utils.DbNameIndex].Create(item).Error
  90. return
  91. }
  92. // BaseFromEiaSteoData EiaSteo数据表
  93. type BaseFromEiaSteoData struct {
  94. BaseFromEiaSteoDataId int `gorm:"column:base_from_eia_steo_data_id;primaryKey;autoIncrement"`
  95. BaseFromEiaSteoIndexId int `description:"指标id"`
  96. IndexCode string `description:"指标编码"`
  97. DataTime time.Time `description:"数据日期"`
  98. Value float64 `description:"数据值"`
  99. ModifyTime time.Time `description:"最新更新时间"`
  100. CreateTime time.Time `description:"创建时间"`
  101. }
  102. func (b *BaseFromEiaSteoData) Update(cols []string) (err error) {
  103. err = global.DbMap[utils.DbNameIndex].Select(cols).Updates(b).Error
  104. return
  105. }
  106. func AddBaseFromEiaSteoData(item *BaseFromEiaSteoData) (lastId int64, err error) {
  107. err = global.DbMap[utils.DbNameIndex].Create(item).Error
  108. if err != nil {
  109. return
  110. }
  111. lastId = int64(item.BaseFromEiaSteoDataId)
  112. return
  113. }
  114. // GetBaseFromEiaSteoClassifyAll 获取所有的分类
  115. func GetBaseFromEiaSteoClassifyAll() (list []*BaseFromEiaSteoClassify, err error) {
  116. o := global.DbMap[utils.DbNameIndex]
  117. sql := `SELECT * FROM base_from_eia_steo_classify`
  118. err = o.Raw(sql).Find(&list).Error
  119. return
  120. }
  121. func AddBaseEiaSteoClassify(item *BaseFromEiaSteoClassify) (lastId int64, err error) {
  122. err = global.DbMap[utils.DbNameIndex].Create(item).Error
  123. if err != nil {
  124. return
  125. }
  126. lastId = int64(item.BaseFromEiaSteoClassifyId)
  127. return
  128. }
  129. func (item *BaseFromEiaSteoClassify) Update(cols []string) (err error) {
  130. err = global.DbMap[utils.DbNameIndex].Select(cols).Updates(item).Error
  131. return
  132. }
  133. func BatchDeleteBaseFromEiaSteoClassify(id []int) (err error) {
  134. if len(id) == 0 {
  135. return
  136. }
  137. o := global.DbMap[utils.DbNameIndex]
  138. sql := `DELETE FROM base_from_eia_steo_classify WHERE base_from_eia_steo_classify_id IN (` + utils.GetOrmInReplace(len(id)) + `)`
  139. err = o.Exec(sql, id).Error
  140. return
  141. }
  142. type EiaSteoIndexResp struct {
  143. Ret int
  144. Msg string
  145. ErrMsg string
  146. ErrCode string
  147. Data []*BaseFromEiaSteoIndex
  148. }
  149. type EiaSteoIndexDataResp struct {
  150. Ret int
  151. Msg string
  152. ErrMsg string
  153. ErrCode string
  154. Data []*BaseFromEiaSteoData
  155. }
  156. type EiaSteoClassifyDataResp struct {
  157. Ret int
  158. Msg string
  159. ErrMsg string
  160. ErrCode string
  161. Data []*BaseFromEiaSteoClassify
  162. }
  163. func GetBaseFromEiaSteoIndexDataAll(dateStr string) (list []*BaseFromEiaSteoData, err error) {
  164. o := global.DbMap[utils.DbNameIndex]
  165. sql := `SELECT * FROM base_from_eia_steo_data WHERE create_time>=?`
  166. err = o.Raw(sql, dateStr).Find(&list).Error
  167. return
  168. }
  169. func GetBaseFromEiaSteoIndexDataByIndexCode(indexCode, dateStr string) (list []*BaseFromEiaSteoData, err error) {
  170. o := global.DbMap[utils.DbNameIndex]
  171. sql := `SELECT * FROM base_from_eia_steo_data WHERE index_code=? AND modify_time>=?`
  172. err = o.Raw(sql, indexCode, dateStr).Find(&list).Error
  173. return
  174. }
  175. func GetBaseFromEiaSteoIndexDataByDate(dateStr string) (list []*BaseFromEiaSteoData, err error) {
  176. o := global.DbMap[utils.DbNameIndex]
  177. sql := `SELECT * FROM base_from_eia_steo_data WHERE modify_time>=?`
  178. err = o.Raw(sql, dateStr).Find(&list).Error
  179. return
  180. }
  181. func GetBaseFromEiaSteoIndexMaxDate() (maxDate time.Time, err error) {
  182. o := global.DbMap[utils.DbNameIndex]
  183. sql := ` SELECT MAX(a.data_time) AS max_date FROM base_from_eia_steo_data AS a `
  184. var timeNull sql2.NullTime
  185. err = o.Raw(sql).Scan(&timeNull).Error
  186. if err != nil {
  187. return
  188. }
  189. if timeNull.Valid {
  190. maxDate = timeNull.Time
  191. }
  192. return
  193. }
  194. func GetBaseFromEiaSteoIndexMaxCreateDate() (maxDate time.Time, err error) {
  195. o := global.DbMap[utils.DbNameIndex]
  196. sql := ` SELECT MAX(a.modify_time) AS max_date FROM base_from_eia_steo_index AS a `
  197. var timeNull sql2.NullTime
  198. err = o.Raw(sql).Scan(&timeNull).Error
  199. if err != nil {
  200. return
  201. }
  202. if timeNull.Valid {
  203. maxDate = timeNull.Time
  204. }
  205. return
  206. }
  207. func GetBaseFromEiaSteoDataMaxModifyDate() (maxDate time.Time, err error) {
  208. o := global.DbMap[utils.DbNameIndex]
  209. sql := ` SELECT MAX(a.modify_time) AS max_date FROM base_from_eia_steo_data AS a `
  210. var timeNull sql2.NullTime
  211. err = o.Raw(sql).Scan(&timeNull).Error
  212. if err != nil {
  213. return
  214. }
  215. if timeNull.Valid {
  216. maxDate = timeNull.Time
  217. }
  218. return
  219. }
  220. // GetAllBaseFromEiaSteoDataList 获取EiaSteo数据
  221. func GetAllBaseFromEiaSteoDataList(startDate string) (list []*BaseFromEiaSteoData, err error) {
  222. o := global.DbMap[utils.DbNameIndex]
  223. sql := `SELECT * FROM base_from_eia_steo_data WHERE modify_time>=? ORDER BY base_from_eia_steo_data_id ASC `
  224. err = o.Raw(sql, startDate).Find(&list).Error
  225. return
  226. }
  227. type BaseFromEiaSteoDataResp struct {
  228. Ret int
  229. Msg string
  230. ErrMsg string
  231. ErrCode string
  232. Data BaseFromEiaSteoDataIndexAndDataResp
  233. }
  234. // BaseFromEiaSteoDataIndexAndDataResp 分页列表响应体
  235. type BaseFromEiaSteoDataIndexAndDataResp struct {
  236. List []*BaseFromEiaSteoData
  237. Paging *paging.PagingItem `description:"分页数据"`
  238. }
  239. // MultiAddBaseFromEiaSteoDataIndex 批量添加数据
  240. func MultiAddBaseFromEiaSteoDataIndex(items []*BaseFromEiaSteoData) (lastId int64, err error) {
  241. num := len(items)
  242. if num <= 0 {
  243. return
  244. }
  245. o := global.DbMap[utils.DbNameIndex]
  246. err = o.CreateInBatches(items, utils.MultiAddNum).Error
  247. return
  248. }
  249. func UpdateBaseFromEiaSteoData(item *BaseFromEiaSteoData) (err error) {
  250. o := global.DbMap[utils.DbNameIndex]
  251. err = o.Model(item).Where("base_from_eia_steo_data_id = ?", item.BaseFromEiaSteoDataId).Updates(item).Error
  252. return
  253. }