base_from_sci99.go 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. package data_source
  2. import (
  3. "eta/eta_api/global"
  4. "eta/eta_api/utils"
  5. "github.com/rdlucklib/rdluck_tools/paging"
  6. "gorm.io/gorm"
  7. "time"
  8. )
  9. // BaseFromSci99Index 代表卓创资讯-原始指标表的结构
  10. type BaseFromSci99Index struct {
  11. BaseFromSciIndexId int `orm:"column(base_from_sci_index_id);pk" gorm:"primaryKey"` // 主键,自动递增
  12. IndexCode string // 指标编码
  13. IndexName string // 指标名称
  14. ClassifyId int // 分类Id
  15. Unit string // 单位
  16. Frequency string // 频度
  17. Describe string // 指标描述
  18. CreateTime time.Time // 创建时间
  19. ModifyTime time.Time // 修改时间
  20. StartDate time.Time `description:"开始日期"`
  21. EndDate time.Time `description:"结束日期"`
  22. LatestValue float64 `description:"最新值"`
  23. }
  24. // BaseFromSci99Data 代表卓创资讯-原始指标数据表的结构
  25. type BaseFromSci99Data struct {
  26. BaseFromSciDataId int `orm:"column(base_from_sci_data_id);pk" gorm:"primaryKey"` // 主键,自动递增
  27. BaseFromSciIndexId int // 指标id
  28. IndexCode string // 指标编码
  29. DataTime string // 数据日期
  30. Value float64 // 数据值
  31. CreateTime time.Time // 创建时间
  32. ModifyTime time.Time // 修改时间
  33. }
  34. // BaseFromSci99Classify 代表卓创资讯-原始指标分类表的结构
  35. type BaseFromSci99Classify struct {
  36. BaseFromSciClassifyId int `orm:"column(base_from_sci_classify_id);pk" gorm:"primaryKey"` // 主键,自动递增
  37. ClassifyName string // 分类名称
  38. Sort int // 排序
  39. CreateTime time.Time // 创建时间
  40. ModifyTime time.Time // 修改时间
  41. }
  42. type BaseFromSci99DataItem struct {
  43. BaseFromSciDataId int `orm:"column(base_from_sci_data_id);pk" gorm:"primaryKey"` // 主键,自动递增
  44. BaseFromSciIndexId int // 指标id
  45. IndexCode string // 指标编码
  46. DataTime string // 数据日期
  47. Value float64 // 数据值
  48. CreateTime string // 创建时间
  49. ModifyTime string // 修改时间
  50. }
  51. func (obj *BaseFromSci99DataItem) AfterFind(tx *gorm.DB) (err error) {
  52. if utils.NeedDateOrTimeFormat(utils.DbDriverName) {
  53. if obj.CreateTime != "" {
  54. obj.CreateTime = utils.GormDateStrToDateTimeStr(obj.CreateTime)
  55. }
  56. if obj.ModifyTime != "" {
  57. obj.ModifyTime = utils.GormDateStrToDateTimeStr(obj.ModifyTime)
  58. }
  59. if obj.DataTime != "" {
  60. obj.DataTime = utils.GormDateStrToDateStr(obj.DataTime)
  61. }
  62. }
  63. return
  64. }
  65. type BaseFromSci99IndexList struct {
  66. BaseFromSciIndexId int `orm:"column(base_from_sci_index_id);pk" gorm:"primaryKey"` // 主键,自动递增
  67. IndexCode string // 指标编码
  68. IndexName string // 指标名称
  69. ClassifyId int // 分类Id
  70. Unit string // 单位
  71. Frequency string // 频度
  72. Describe string // 指标描述
  73. CreateTime string // 创建时间
  74. ModifyTime string // 修改时间
  75. DataList []*BaseFromSci99DataItem `gorm:"-"`
  76. Paging *paging.PagingItem `description:"分页数据" gorm:"-"`
  77. }
  78. func (obj *BaseFromSci99IndexList) AfterFind(tx *gorm.DB) (err error) {
  79. if utils.NeedDateOrTimeFormat(utils.DbDriverName) {
  80. if obj.CreateTime != "" {
  81. obj.CreateTime = utils.GormDateStrToDateTimeStr(obj.CreateTime)
  82. }
  83. if obj.ModifyTime != "" {
  84. obj.ModifyTime = utils.GormDateStrToDateTimeStr(obj.ModifyTime)
  85. }
  86. }
  87. return
  88. }
  89. // 添加数据
  90. func AddBaseFromSci99Index(item *BaseFromSci99Index) (lastId int64, err error) {
  91. o := global.DbMap[utils.DbNameIndex]
  92. err = o.Create(item).Error
  93. if err != nil {
  94. return
  95. }
  96. lastId = int64(item.BaseFromSciIndexId)
  97. return
  98. }
  99. func AddBaseFromSci99Classify(item *BaseFromSci99Classify) (lastId int64, err error) {
  100. o := global.DbMap[utils.DbNameIndex]
  101. err = o.Create(item).Error
  102. if err != nil {
  103. return
  104. }
  105. lastId = int64(item.BaseFromSciClassifyId)
  106. return
  107. }
  108. func AddBaseFromSci99DataMulti(item []*BaseFromSci99Data) (err error) {
  109. o := global.DbMap[utils.DbNameIndex]
  110. err = o.CreateInBatches(item, utils.MultiAddNum).Error
  111. return
  112. }
  113. func GetBaseFromSci99Classify() (list []*BaseFromSci99Classify, err error) {
  114. o := global.DbMap[utils.DbNameIndex]
  115. sql := `SELECT * FROM base_from_sci99_classify `
  116. err = o.Raw(sql).Find(&list).Error
  117. return
  118. }
  119. func GetSci99Index(condition string, pars []interface{}) (items []*BaseFromSci99IndexList, err error) {
  120. o := global.DbMap[utils.DbNameIndex]
  121. sql := ` SELECT * FROM base_from_sci99_index WHERE 1=1 `
  122. if condition != "" {
  123. sql += condition
  124. }
  125. sql += `ORDER BY base_from_sci_index_id ASC `
  126. err = o.Raw(sql, pars...).Find(&items).Error
  127. return
  128. }
  129. func GetSci99IndexDataCount(indexCode string) (count int, err error) {
  130. o := global.DbMap[utils.DbNameIndex]
  131. sql := ` SELECT COUNT(1) AS count FROM base_from_sci99_data WHERE index_code=? `
  132. err = o.Raw(sql, indexCode).Scan(&count).Error
  133. return
  134. }
  135. func GetSci99IndexData(indexCode string, startSize, pageSize int) (items []*BaseFromSci99DataItem, err error) {
  136. o := global.DbMap[utils.DbNameIndex]
  137. sql := ` SELECT * FROM base_from_sci99_data WHERE index_code=? ORDER BY data_time DESC LIMIT ?,? `
  138. err = o.Raw(sql, indexCode, startSize, pageSize).Find(&items).Error
  139. return
  140. }
  141. func GetSci99DataMaxCount(classifyId int) (count int, err error) {
  142. o := global.DbMap[utils.DbNameIndex]
  143. sql := `SELECT MAX(t.num) AS count FROM (
  144. SELECT COUNT(1) AS num FROM base_from_icpi_index AS a
  145. INNER JOIN base_from_icpi_data AS b ON a.base_from_icpi_index_id=b.base_from_icpi_index_id
  146. WHERE a.base_from_icpi_classify_id=?
  147. GROUP BY a.base_from_icpi_index_id
  148. )AS t `
  149. err = o.Raw(sql, classifyId).Scan(&count).Error
  150. return
  151. }
  152. func GetSci99IndexDataByCode(indexCode string) (items []*BaseFromSci99DataItem, err error) {
  153. o := global.DbMap[utils.DbNameIndex]
  154. sql := ` SELECT * FROM base_from_sci99_data WHERE index_code=? ORDER BY data_time DESC `
  155. err = o.Raw(sql, indexCode).Find(&items).Error
  156. return
  157. }
  158. func GetSci99IndexLatestDate(indexCode string) (ModifyTime string, err error) {
  159. o := global.DbMap[utils.DbNameIndex]
  160. sql := ` SELECT modify_time FROM base_from_sci99_data WHERE index_code=? ORDER BY modify_time DESC limit 1 `
  161. err = o.Raw(sql, indexCode).Scan(&ModifyTime).Error
  162. if err != nil {
  163. return
  164. }
  165. ModifyTime = utils.GormDateStrToDateTimeStr(ModifyTime)
  166. return
  167. }