base_from_business.go 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. package models
  2. import (
  3. "eta/eta_index_lib/utils"
  4. "fmt"
  5. "time"
  6. "github.com/beego/beego/v2/client/orm"
  7. )
  8. // BaseFromBusinessIndex
  9. // @Description: 外部指标(商家系统)表
  10. type BaseFromBusinessIndex struct {
  11. BaseFromBusinessIndexId int64 `orm:"column(base_from_business_index_id);pk"`
  12. IndexCode string `description:"指标编码"`
  13. IndexName string `description:"指标名称"`
  14. Unit string `description:"单位"`
  15. Frequency string `description:"频度"`
  16. Source int `description:"数据来源"`
  17. SourceName string `description:"数据来源名称"`
  18. StartDate time.Time `description:"开始日期"`
  19. EndDate time.Time `description:"结束日期"`
  20. Remark string `description:"备注字段"`
  21. BaseModifyTime time.Time `description:"基础信息(名称,单位,频度)变更时间"`
  22. DataUpdateTime time.Time `description:"最近一次数据发生变化的时间"`
  23. CreateTime time.Time `description:"创建时间"`
  24. ModifyTime time.Time `description:"修改时间"`
  25. }
  26. // EdbBusinessSource
  27. // @Description: 外部数据(商家)指标来源
  28. type EdbBusinessSource struct {
  29. EdbBusinessSourceId int64 `orm:"column(edb_business_source_id);pk"`
  30. SourceName string `description:"来源名称"` // 来源名称
  31. CreateTime time.Time `description:"创建时间"` // 创建时间
  32. }
  33. // AddBusinessIndexReq
  34. // @Description: 添加外部指标(商家)请求
  35. type AddBusinessIndexReq struct {
  36. IndexCode string `description:"指标编码"`
  37. IndexName string `description:"指标名称"`
  38. Unit string `description:"单位"`
  39. Frequency string `description:"频度"`
  40. SourceName string `description:"数据来源名称"`
  41. Remark string `description:"备注字段"`
  42. DataList []AddBusinessDataReq `description:"指标数据"`
  43. }
  44. // AddBusinessDataReq
  45. // @Description: 外部指标(商家系统)数据
  46. type AddBusinessDataReq struct {
  47. Value float64 `description:"值"`
  48. Date string `description:"日期"`
  49. }
  50. func (m *BaseFromBusinessIndex) GetIndexItem(indexCode string) (item *BaseFromBusinessIndex, err error) {
  51. o := orm.NewOrm()
  52. sql := `SELECT * FROM base_from_business_index WHERE index_code = ? `
  53. err = o.Raw(sql, indexCode).QueryRow(&item)
  54. return
  55. }
  56. func (m *BaseFromBusinessIndex) GetIndexCreate(terminalCode string) (items []*BaseFromBusinessIndex, err error) {
  57. o := orm.NewOrm()
  58. endTime := time.Now().Add(-2 * time.Minute).Format(utils.FormatDateTime)
  59. sql := `SELECT * FROM base_from_business_index WHERE index_name = '' AND create_time <= ? AND terminal_code = ? `
  60. _, err = o.Raw(sql, endTime, terminalCode).QueryRows(&items)
  61. return
  62. }
  63. // Add 新增
  64. func (m *BaseFromBusinessIndex) Add() (err error) {
  65. o := orm.NewOrm()
  66. lastId, err := o.Insert(m)
  67. if err != nil {
  68. return
  69. }
  70. m.BaseFromBusinessIndexId = lastId
  71. return
  72. }
  73. func (m *BaseFromBusinessIndex) Update(cols []string) (err error) {
  74. o := orm.NewOrm()
  75. _, err = o.Update(m, cols...)
  76. return
  77. }
  78. // GetNoMergeIndexByFrequencyCount 获取未合并的指标总数量
  79. func (m *BaseFromBusinessIndex) GetNoMergeIndexByFrequencyCount(frequency string) (total int64, err error) {
  80. o := orm.NewOrm()
  81. sql := `SELECT count(1) AS total FROM base_from_business_index WHERE frequency = ? AND merge_file_path = '' AND index_name NOT LIKE "%停%" `
  82. err = o.Raw(sql, frequency).QueryRow(&total)
  83. return
  84. }
  85. // GetIndexRefreshMethanolByTimely 获取需要及时刷新的文件
  86. func (m *BaseFromBusinessIndex) GetIndexRefreshMethanolByTimely() (items []*BaseFromBusinessIndex, err error) {
  87. o := orm.NewOrm()
  88. sql := `SELECT * FROM base_from_business_index WHERE merge_file_path <> '' AND is_refresh = 1 GROUP BY merge_file_path`
  89. _, err = o.Raw(sql).QueryRows(&items)
  90. return
  91. }
  92. func (m *BaseFromBusinessIndex) GetIndexRefreshWeek(nowWeekZn, startTime, endTime string) (items []*BaseFromBusinessIndex, err error) {
  93. where := `update_week = ? AND ((update_time >= ? AND update_time <= ?) OR (update_time2 >= ? AND update_time2 <= ?)) `
  94. o := orm.NewOrm()
  95. sql := fmt.Sprintf(`SELECT * FROM base_from_business_index WHERE %s `, where)
  96. _, err = o.Raw(sql, nowWeekZn, startTime, endTime, startTime, endTime).QueryRows(&items)
  97. return
  98. }
  99. func (m *BaseFromBusinessIndex) UpdateIndex(item *BaseFromBusinessIndex, updateCols []string) (err error) {
  100. if item == nil {
  101. return
  102. }
  103. if len(updateCols) == 0 {
  104. return
  105. }
  106. o := orm.NewOrm()
  107. _, err = o.Update(item, updateCols...)
  108. return
  109. }
  110. // GetEdbBusinessSourceItem
  111. // @Description: 根据来源名称获取来源信息
  112. // @author: Roc
  113. // @receiver m
  114. // @datetime 2024-04-25 18:09:03
  115. // @param sourceName string
  116. // @return item *EdbBusinessSource
  117. // @return err error
  118. func (m *EdbBusinessSource) GetEdbBusinessSourceItem(sourceName string) (item *EdbBusinessSource, err error) {
  119. o := orm.NewOrm()
  120. sql := `SELECT * FROM edb_business_source WHERE source_name = ? `
  121. err = o.Raw(sql, sourceName).QueryRow(&item)
  122. return
  123. }
  124. // Add 新增
  125. func (m *EdbBusinessSource) Add() (err error) {
  126. o := orm.NewOrm()
  127. lastId, err := o.Insert(m)
  128. if err != nil {
  129. return
  130. }
  131. m.EdbBusinessSourceId = lastId
  132. return
  133. }