base_from_sci99.go 7.0 KB

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