gl_data.go 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. package data_manage
  2. import (
  3. "eta_gn/eta_api/global"
  4. "eta_gn/eta_api/utils"
  5. "github.com/rdlucklib/rdluck_tools/paging"
  6. )
  7. type GlClassify struct {
  8. BreedShortName string `orm:"column(BREED_SHORT_NAME)" description:"分类名称"`
  9. }
  10. func GetGlSurveyClassify() (items []*GlClassify, err error) {
  11. sql := ` SELECT CASE WHEN BREED_SHORT_NAME IS NULL THEN '无' ELSE BREED_SHORT_NAME END BREED_SHORT_NAME FROM mb_index_main_info GROUP BY BREED_SHORT_NAME ORDER BY BREED_SHORT_NAME ASC `
  12. err = global.DmSQL["gl"].Raw(sql).Find(&items).Error
  13. return
  14. }
  15. type GlFrequency struct {
  16. Frequency string `description:"频度:1-日度 2-周度 3-月度 4-季度 5-年度 99-无固定频率"`
  17. }
  18. func GetGlFrequencyByClassifyId(breedShortName string) (items []*GlFrequency, err error) {
  19. if breedShortName == "无" {
  20. sql := ` SELECT FREQUENCY_NAME AS frequency FROM mb_index_main_info WHERE BREED_SHORT_NAME IS NULL GROUP BY FREQUENCY_CODE ORDER BY FREQUENCY_CODE ASC `
  21. err = global.DmSQL["gl"].Raw(sql).Find(&items).Error
  22. return
  23. } else {
  24. sql := ` SELECT FREQUENCY_NAME AS frequency FROM mb_index_main_info WHERE BREED_SHORT_NAME=? GROUP BY FREQUENCY_CODE ORDER BY FREQUENCY_CODE ASC `
  25. err = global.DmSQL["gl"].Raw(sql, breedShortName).Find(&items).Error
  26. return
  27. }
  28. }
  29. type GlIndex struct {
  30. Id int `orm:"column(ID)"`
  31. IndexCode string `orm:"column(INDEX_CODE)"`
  32. IndexName string `orm:"column(INDEX_NAME)"`
  33. UnitName string `orm:"column(UNIT_NAME)"`
  34. FrequencyName string `orm:"column(FREQUENCY_NAME)"`
  35. UpdateTime string `orm:"column(UPDATE_TIME)"`
  36. }
  37. func GetGlIndex(breedShortName, frequency string) (items []*GlIndex, err error) {
  38. if breedShortName == "无" {
  39. sql := ` SELECT * FROM mb_index_main_info WHERE BREED_SHORT_NAME IS NULL AND FREQUENCY_NAME=? ORDER BY INDEX_CODE ASC `
  40. err = global.DmSQL["gl"].Raw(sql, frequency).Find(&items).Error
  41. return
  42. } else {
  43. sql := ` SELECT * FROM mb_index_main_info WHERE BREED_SHORT_NAME=? AND FREQUENCY_NAME=? ORDER BY INDEX_CODE ASC `
  44. err = global.DmSQL["gl"].Raw(sql, breedShortName, frequency).Find(&items).Error
  45. return
  46. }
  47. }
  48. func GetGlFrequency(productName string) (items []*string, err error) {
  49. sql := `SELECT DISTINCT FREQUENCY_NAME FROM mb_index_main_info WHERE BREED_SHORT_NAME=? ORDER BY FIELD(FREQUENCY_NAME,'日度','周度','旬度','月度','季度','半年','年度') `
  50. err = global.DmSQL["gl"].Raw(sql, productName).Find(&items).Error
  51. return
  52. }
  53. type GlIndexList struct {
  54. Id int `orm:"column(ID)"`
  55. IndexCode string `orm:"column(INDEX_CODE)"`
  56. IndexName string `orm:"column(INDEX_NAME)"`
  57. UnitName string `orm:"column(UNIT_NAME)"`
  58. FrequencyName string `orm:"column(FREQUENCY_NAME)"`
  59. UpdateTime string `orm:"column(UPDATE_TIME)"`
  60. Paging *paging.PagingItem `description:"分页数据"`
  61. DataList []*GlIndexData
  62. }
  63. type GlIndexData struct {
  64. InputValue string `orm:"column(DATA_VALUE)" description:"日期"`
  65. DataTime string `orm:"column(DATA_DATE)" description:"值"`
  66. }
  67. func GetGlIndexData(indexCode string, startSize, pageSize int) (items []*GlIndexData, err error) {
  68. sql := ` SELECT * FROM (
  69. SELECT DISTINCT a.INDEX_CODE,a.DATA_VALUE,a.DATA_DATE FROM mb_index_main_data AS a WHERE INDEX_CODE=? AND IS_DELETE=0
  70. ORDER BY DATA_DATE DESC,PUBLISH_TIME DESC
  71. )AS t
  72. GROUP BY t.DATA_DATE
  73. ORDER BY t.DATA_DATE DESC LIMIT ?,? `
  74. err = global.DmSQL["gl"].Raw(sql, indexCode, startSize, pageSize).Find(&items).Error
  75. return
  76. }
  77. func GetGlIndexByCode(indexCode string) (items *GlIndex, err error) {
  78. sql := ` SELECT * FROM mb_index_main_info WHERE INDEX_CODE=? `
  79. err = global.DmSQL["gl"].Raw(sql, indexCode).First(&items).Error
  80. return
  81. }
  82. func GetGlIndexDataCount(indexCode string) (count int, err error) {
  83. sql := `SELECT COUNT(1) AS count FROM (
  84. SELECT * FROM (
  85. SELECT DISTINCT a.INDEX_CODE,a.DATA_VALUE,a.DATA_DATE FROM mb_index_main_data AS a WHERE INDEX_CODE=? AND IS_DELETE=0
  86. ORDER BY DATA_DATE DESC,PUBLISH_TIME DESC
  87. )AS t
  88. GROUP BY t.DATA_DATE
  89. ORDER BY t.DATA_DATE DESC
  90. )AS n `
  91. err = global.DmSQL["gl"].Raw(sql, indexCode).Scan(&count).Error
  92. return
  93. }
  94. type GlSearchIndex struct {
  95. Id int `orm:"column(ID)"`
  96. IndexCode string `orm:"column(INDEX_CODE)"`
  97. IndexName string `orm:"column(INDEX_NAME)"`
  98. UnitName string `orm:"column(UNIT_NAME)"`
  99. FrequencyName string `orm:"column(FREQUENCY_NAME)"`
  100. UpdateTime string `orm:"column(UPDATE_TIME)"`
  101. BreedShortName string `orm:"column(BREED_SHORT_NAME)"`
  102. }
  103. // GetGlItemList 模糊查询隆众数据库指标列表
  104. func GetGlItemList(keyword string) (items []*GlSearchIndex, err error) {
  105. sql := "SELECT * FROM mb_index_main_info WHERE CONCAT(INDEX_NAME,INDEX_CODE) LIKE ? "
  106. err = global.DmSQL["gl"].Raw(sql, utils.GetLikeKeyword(keyword)).Find(&items).Error
  107. return
  108. }
  109. func GetGlDataMaxCount(classifyName string) (count int, err error) {
  110. sql := `SELECT MAX(t.num) AS count FROM (
  111. SELECT COUNT(1) AS num FROM mb_index_main_info AS a
  112. INNER JOIN mb_index_main_data AS b ON a.INDEX_CODE=b.INDEX_CODE
  113. WHERE a.BREED_SHORT_NAME=?
  114. GROUP BY a.INDEX_CODE
  115. )AS t `
  116. err = global.DmSQL["gl"].Raw(sql, classifyName).Scan(&count).Error
  117. return
  118. }
  119. func GetGlDataByCode(indexCode string) (items []*GlIndexData, err error) {
  120. sql := `SELECT
  121. *
  122. FROM
  123. ( SELECT * FROM mb_index_main_data WHERE INDEX_CODE = ? GROUP BY UPDATE_TIME DESC, DATA_DATE DESC ) a
  124. GROUP BY
  125. a.DATA_DATE DESC `
  126. err = global.DmSQL["gl"].Raw(sql, indexCode).Find(&items).Error
  127. return
  128. }