chart_info.go 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. package cross_variety
  2. import (
  3. "eta/eta_api/controllers"
  4. "eta/eta_api/models"
  5. "eta/eta_api/models/data_manage"
  6. "eta/eta_api/services/data"
  7. "eta/eta_api/utils"
  8. "github.com/rdlucklib/rdluck_tools/paging"
  9. "strconv"
  10. "strings"
  11. )
  12. // ChartInfoController
  13. // @Description: 跨品种分析图表
  14. type ChartInfoController struct {
  15. controllers.BaseAuthController
  16. }
  17. // List
  18. // @Title 相关性图表列表接口
  19. // @Description 相关性图表列表接口
  20. // @Param PageSize query int true "每页数据条数"
  21. // @Param CurrentIndex query int true "当前页页码,从1开始"
  22. // @Param ChartClassifyId query int true "分类id"
  23. // @Param Keyword query string true "搜索关键词"
  24. // @Param IsShowMe query bool true "是否只看我的,true、false"
  25. // @Param Source query int true "图表类型,3:相关性,4:滚动相关性"
  26. // @Success 200 {object} data_manage.ChartListResp
  27. // @router /chart_info/list [get]
  28. func (c *ChartInfoController) List() {
  29. br := new(models.BaseResponse).Init()
  30. defer func() {
  31. c.Data["json"] = br
  32. c.ServeJSON()
  33. }()
  34. sysUser := c.SysUser
  35. if sysUser == nil {
  36. br.Msg = "请登录"
  37. br.ErrMsg = "请登录,SysUser Is Empty"
  38. br.Ret = 408
  39. return
  40. }
  41. chartClassifyId, _ := c.GetInt("ChartClassifyId")
  42. pageSize, _ := c.GetInt("PageSize")
  43. currentIndex, _ := c.GetInt("CurrentIndex")
  44. keyword := c.GetString("KeyWord")
  45. var total int
  46. page := paging.GetPaging(currentIndex, pageSize, total)
  47. var startSize int
  48. if pageSize <= 0 {
  49. pageSize = utils.PageSize20
  50. }
  51. if currentIndex <= 0 {
  52. currentIndex = 1
  53. }
  54. startSize = paging.StartIndex(currentIndex, pageSize)
  55. source, _ := c.GetInt("Source")
  56. if source <= 0 {
  57. source = utils.CHART_SOURCE_CORRELATION
  58. }
  59. var condition string
  60. var pars []interface{}
  61. // 普通图表
  62. condition += ` AND source = ? `
  63. pars = append(pars, source)
  64. if chartClassifyId > 0 {
  65. chartClassifyId, err := data_manage.GetChartClassify(chartClassifyId)
  66. if err != nil && err.Error() != utils.ErrNoRow() {
  67. br.Msg = "获取图表信息失败"
  68. br.ErrMsg = "获取信息失败,GetChartClassify,Err:" + err.Error()
  69. return
  70. }
  71. condition += " AND chart_classify_id IN(" + chartClassifyId + ") "
  72. }
  73. if keyword != "" {
  74. condition += ` AND ( chart_name LIKE '%` + keyword + `%' )`
  75. }
  76. //只看我的
  77. isShowMe, _ := c.GetBool("IsShowMe")
  78. if isShowMe {
  79. condition += ` AND sys_user_id = ? `
  80. pars = append(pars, sysUser.AdminId)
  81. }
  82. // 获取当前账号的不可见指标
  83. noPermissionChartIdList := make([]int, 0)
  84. {
  85. obj := data_manage.EdbInfoNoPermissionAdmin{}
  86. confList, err := obj.GetAllChartListByAdminId(c.SysUser.AdminId)
  87. if err != nil && err.Error() != utils.ErrNoRow() {
  88. br.Msg = "获取失败"
  89. br.ErrMsg = "获取不可见指标配置数据失败,Err:" + err.Error()
  90. return
  91. }
  92. for _, v := range confList {
  93. noPermissionChartIdList = append(noPermissionChartIdList, v.ChartInfoId)
  94. }
  95. }
  96. lenNoPermissionChartIdList := len(noPermissionChartIdList)
  97. if lenNoPermissionChartIdList > 0 {
  98. condition += ` AND chart_info_id not in (` + utils.GetOrmInReplace(lenNoPermissionChartIdList) + `) `
  99. pars = append(pars, noPermissionChartIdList)
  100. }
  101. //获取图表信息
  102. list, err := data_manage.GetChartListByCondition(condition, pars, startSize, pageSize)
  103. if err != nil && err.Error() != utils.ErrNoRow() {
  104. br.Success = true
  105. br.Msg = "获取图表信息失败"
  106. br.ErrMsg = "获取图表信息失败,Err:" + err.Error()
  107. return
  108. }
  109. myChartList, err := data_manage.GetMyChartListByAdminId(sysUser.AdminId)
  110. if err != nil && err.Error() != utils.ErrNoRow() {
  111. br.Msg = "获取图表信息失败"
  112. br.ErrMsg = "获取我的图表信息失败,Err:" + err.Error()
  113. return
  114. }
  115. myChartMap := make(map[int]*data_manage.MyChartView)
  116. for _, v := range myChartList {
  117. myChartMap[v.ChartInfoId] = v
  118. }
  119. listLen := len(list)
  120. chartEdbMap := make(map[int][]*data_manage.ChartEdbInfoMapping)
  121. if listLen > 0 {
  122. chartInfoIds := ""
  123. for _, v := range list {
  124. chartInfoIds += strconv.Itoa(v.ChartInfoId) + ","
  125. }
  126. if chartInfoIds != "" {
  127. chartInfoIds = strings.Trim(chartInfoIds, ",")
  128. //判断是否需要展示英文标识
  129. edbList, e := data_manage.GetChartEdbMappingListByChartInfoIds(chartInfoIds)
  130. if e != nil {
  131. br.Msg = "获取失败"
  132. br.ErrMsg = "获取图表,指标信息失败,Err:" + e.Error()
  133. return
  134. }
  135. for _, v := range edbList {
  136. chartEdbMap[v.ChartInfoId] = append(chartEdbMap[v.ChartInfoId], v)
  137. }
  138. }
  139. }
  140. for i := 0; i < listLen; i++ {
  141. //判断是否需要展示英文标识
  142. if edbTmpList, ok := chartEdbMap[list[i].ChartInfoId]; ok {
  143. list[i].IsEnChart = data.CheckIsEnChart(list[i].ChartNameEn, edbTmpList, list[i].Source, list[i].ChartType)
  144. }
  145. if existItem, ok := myChartMap[list[i].ChartInfoId]; ok {
  146. list[i].IsAdd = true
  147. list[i].MyChartId = existItem.MyChartId
  148. list[i].MyChartClassifyId = existItem.MyChartClassifyId
  149. }
  150. }
  151. resp := new(data_manage.ChartListResp)
  152. if list == nil || len(list) <= 0 || (err != nil && err.Error() == utils.ErrNoRow()) {
  153. items := make([]*data_manage.ChartInfoView, 0)
  154. resp.Paging = page
  155. resp.List = items
  156. br.Ret = 200
  157. br.Success = true
  158. br.Msg = "获取成功"
  159. return
  160. }
  161. dataCount, err := data_manage.GetChartListCountByCondition(condition, pars)
  162. if err != nil && err.Error() != utils.ErrNoRow() {
  163. br.Msg = "获取指标信息失败"
  164. br.ErrMsg = "获取指标数据总数失败,Err:" + err.Error()
  165. return
  166. }
  167. page = paging.GetPaging(currentIndex, pageSize, dataCount)
  168. resp.Paging = page
  169. resp.List = list
  170. br.Ret = 200
  171. br.Success = true
  172. br.Msg = "获取成功"
  173. br.Data = resp
  174. }