gl_data.go 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. package data_manage
  2. import (
  3. "eta/eta_api/global"
  4. "eta/eta_api/utils"
  5. "fmt"
  6. "github.com/rdlucklib/rdluck_tools/paging"
  7. )
  8. type GlClassify struct {
  9. BreedShortName string `orm:"column(BREED_SHORT_NAME)" description:"分类名称"`
  10. }
  11. func GetGlSurveyClassify() (items []*GlClassify, err error) {
  12. sql := `SELECT CASE WHEN BREED_SHORT_NAME IS NULL THEN '无' ELSE BREED_SHORT_NAME END BREED_SHORT_NAME
  13. FROM mb_index_main_info GROUP BY BREED_SHORT_NAME ORDER BY BREED_SHORT_NAME ASC`
  14. o := global.DbMap[utils.DbNameGL]
  15. err = o.Raw(sql).Find(&items).Error
  16. return
  17. }
  18. type GlFrequency struct {
  19. Frequency string `description:"频度:1-日度 2-周度 3-月度 4-季度 5-年度 99-无固定频率"`
  20. }
  21. func GetGlFrequencyByClassifyId(breedShortName string) (items []*GlFrequency, err error) {
  22. o := global.DbMap[utils.DbNameGL]
  23. var sql string
  24. if breedShortName == "无" {
  25. sql = `SELECT FREQUENCY_NAME AS frequency FROM mb_index_main_info
  26. WHERE BREED_SHORT_NAME IS NULL GROUP BY FREQUENCY_CODE ORDER BY FREQUENCY_CODE ASC`
  27. err = o.Raw(sql).Find(&items).Error
  28. } else {
  29. sql = `SELECT FREQUENCY_NAME AS frequency FROM mb_index_main_info
  30. WHERE BREED_SHORT_NAME=? GROUP BY FREQUENCY_CODE ORDER BY FREQUENCY_CODE ASC`
  31. err = o.Raw(sql, breedShortName).Find(&items).Error
  32. }
  33. return
  34. }
  35. type GlIndex struct {
  36. Id int `gorm:"column:id;primaryKey"`
  37. IndexCode string `description:"指标编码"`
  38. IndexName string `description:"指标名称"`
  39. UnitName string `description:"单位"`
  40. FrequencyName string `description:"频度名称"`
  41. UpdateTime string `description:"更新时间"`
  42. }
  43. func GetGlIndex(breedShortName, frequency string) (items []*GlIndex, err error) {
  44. o := global.DbMap[utils.DbNameGL]
  45. var sql string
  46. if breedShortName == "无" {
  47. sql = `SELECT * FROM mb_index_main_info
  48. WHERE BREED_SHORT_NAME IS NULL AND FREQUENCY_NAME=? ORDER BY INDEX_CODE ASC`
  49. err = o.Raw(sql, frequency).Find(&items).Error
  50. } else {
  51. sql = `SELECT * FROM mb_index_main_info
  52. WHERE BREED_SHORT_NAME=? AND FREQUENCY_NAME=? ORDER BY INDEX_CODE ASC`
  53. err = o.Raw(sql, breedShortName, frequency).Find(&items).Error
  54. }
  55. return
  56. }
  57. func GetGlFrequency(productName string) (items []*string, err error) {
  58. sql := `SELECT DISTINCT FREQUENCY_NAME FROM mb_index_main_info
  59. WHERE BREED_SHORT_NAME=? ORDER BY FIELD(FREQUENCY_NAME,'日度','周度','旬度','月度','季度','半年','年度')`
  60. o := global.DbMap[utils.DbNameGL]
  61. err = o.Raw(sql, productName).Find(&items).Error
  62. return
  63. }
  64. type GlIndexList struct {
  65. Id int `gorm:"column:ID;primaryKey"`
  66. IndexCode string `description:"指标编码"`
  67. IndexName string `description:"指标名称"`
  68. UnitName string `description:"单位"`
  69. FrequencyName string `description:"频度名称"`
  70. UpdateTime string `description:"更新时间"`
  71. Paging *paging.PagingItem `gorm:"-" description:"分页数据"`
  72. DataList []*GlIndexData `gorm:"-"`
  73. }
  74. type GlIndexData struct {
  75. InputValue string `description:"日期"`
  76. DataTime string `description:"值"`
  77. }
  78. func GetGlIndexData(indexCode string, startSize, pageSize int) (items []*GlIndexData, err error) {
  79. sql := `SELECT * FROM (
  80. SELECT DISTINCT a.INDEX_CODE,a.DATA_VALUE,a.DATA_DATE FROM mb_index_main_data AS a
  81. WHERE INDEX_CODE=? AND IS_DELETE=0
  82. ORDER BY DATA_DATE DESC,PUBLISH_TIME DESC
  83. ) AS t
  84. GROUP BY t.DATA_DATE
  85. ORDER BY t.DATA_DATE DESC LIMIT ?,?`
  86. o := global.DbMap[utils.DbNameGL]
  87. err = o.Raw(sql, indexCode, startSize, pageSize).Find(&items).Error
  88. return
  89. }
  90. func GetGlIndexByCode(indexCode string) (items *GlIndex, err error) {
  91. sql := `SELECT * FROM mb_index_main_info WHERE INDEX_CODE=?`
  92. o := global.DbMap[utils.DbNameGL]
  93. err = o.Raw(sql, indexCode).First(&items).Error
  94. return
  95. }
  96. func GetGlIndexDataCount(indexCode string) (count int, err error) {
  97. sql := `SELECT COUNT(1) AS count FROM (
  98. SELECT * FROM (
  99. SELECT DISTINCT a.INDEX_CODE,a.DATA_VALUE,a.DATA_DATE FROM mb_index_main_data AS a
  100. WHERE INDEX_CODE=? AND IS_DELETE=0
  101. ORDER BY DATA_DATE DESC,PUBLISH_TIME DESC
  102. ) AS t
  103. GROUP BY t.DATA_DATE
  104. ORDER BY t.DATA_DATE DESC
  105. ) AS n`
  106. o := global.DbMap[utils.DbNameGL]
  107. err = o.Raw(sql, indexCode).Scan(&count).Error
  108. return
  109. }
  110. type GlSearchIndex struct {
  111. Id int `orm:"column(ID)"`
  112. IndexCode string `orm:"column(INDEX_CODE)"`
  113. IndexName string `orm:"column(INDEX_NAME)"`
  114. UnitName string `orm:"column(UNIT_NAME)"`
  115. FrequencyName string `orm:"column(FREQUENCY_NAME)"`
  116. UpdateTime string `orm:"column(UPDATE_TIME)"`
  117. BreedShortName string `orm:"column(BREED_SHORT_NAME)"`
  118. StartDate string `orm:"column(BEGIN_DATE)"`
  119. EndDate string `orm:"column(END_DATE)"`
  120. LatestValue float64 `orm:"column(DATA_VALUE)"`
  121. CreateTime string `orm:"column(CREATE_TIME)"`
  122. ModifyTime string `orm:"column(UPDATE_TIME)"`
  123. Source int
  124. SourceName string
  125. SearchText string `description:"搜索结果(含高亮)"`
  126. }
  127. func GetGlItemList(keyword string) (items []*GlSearchIndex, err error) {
  128. sql := "SELECT * FROM mb_index_main_info WHERE CONCAT(INDEX_NAME,INDEX_CODE) LIKE ?"
  129. o := global.DbMap[utils.DbNameGL]
  130. err = o.Raw(sql, utils.GetLikeKeyword(keyword)).Find(&items).Error
  131. return
  132. }
  133. func GetGlDataMaxCount(classifyName string) (count int, err error) {
  134. sql := `SELECT MAX(t.num) AS count FROM (
  135. SELECT COUNT(1) AS num FROM mb_index_main_info AS a
  136. INNER JOIN mb_index_main_data AS b ON a.INDEX_CODE=b.INDEX_CODE
  137. WHERE a.BREED_SHORT_NAME=?
  138. GROUP BY a.INDEX_CODE
  139. ) AS t`
  140. o := global.DbMap[utils.DbNameGL]
  141. err = o.Raw(sql, classifyName).Scan(&count).Error
  142. return
  143. }
  144. func GetGlDataByCode(indexCode string) (items []*GlIndexData, err error) {
  145. sql := `SELECT * FROM (
  146. SELECT * FROM mb_index_main_data WHERE INDEX_CODE=?
  147. GROUP BY UPDATE_TIME DESC, DATA_DATE DESC
  148. ) a GROUP BY a.DATA_DATE DESC`
  149. o := global.DbMap[utils.DbNameGL]
  150. err = o.Raw(sql, indexCode).Find(&items).Error
  151. return
  152. }
  153. type GlDataPageListResp struct {
  154. Paging *paging.PagingItem
  155. List []*GlSearchIndex
  156. }
  157. func GetGlItemListByIds(ids []int) (items []*GlSearchIndex, err error) {
  158. if len(ids) == 0 {
  159. return
  160. }
  161. sql := fmt.Sprintf(`SELECT * FROM mb_index_main_info WHERE ID IN (%s)`, utils.GetOrmInReplace(len(ids)))
  162. o := global.DbMap[utils.DbNameGL]
  163. err = o.Raw(sql, ids).Find(&items).Error
  164. return
  165. }