gl_data.go 8.0 KB

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