chart_info.go 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  1. package cross_variety
  2. import (
  3. "encoding/json"
  4. "eta/eta_api/controllers"
  5. "eta/eta_api/models"
  6. "eta/eta_api/models/data_manage"
  7. "eta/eta_api/models/data_manage/cross_variety/request"
  8. "eta/eta_api/services/data"
  9. "eta/eta_api/services/data/cross_variety"
  10. "eta/eta_api/utils"
  11. "github.com/rdlucklib/rdluck_tools/paging"
  12. "strconv"
  13. "strings"
  14. )
  15. // ChartInfoController
  16. // @Description: 跨品种分析图表
  17. type ChartInfoController struct {
  18. controllers.BaseAuthController
  19. }
  20. // List
  21. // @Title 相关性图表列表接口
  22. // @Description 相关性图表列表接口
  23. // @Param PageSize query int true "每页数据条数"
  24. // @Param CurrentIndex query int true "当前页页码,从1开始"
  25. // @Param ChartClassifyId query int true "分类id"
  26. // @Param Keyword query string true "搜索关键词"
  27. // @Param IsShowMe query bool true "是否只看我的,true、false"
  28. // @Param Source query int true "图表类型,3:相关性,4:滚动相关性"
  29. // @Success 200 {object} data_manage.ChartListResp
  30. // @router /chart_info/list [get]
  31. func (c *ChartInfoController) List() {
  32. br := new(models.BaseResponse).Init()
  33. defer func() {
  34. c.Data["json"] = br
  35. c.ServeJSON()
  36. }()
  37. sysUser := c.SysUser
  38. if sysUser == nil {
  39. br.Msg = "请登录"
  40. br.ErrMsg = "请登录,SysUser Is Empty"
  41. br.Ret = 408
  42. return
  43. }
  44. chartClassifyId, _ := c.GetInt("ChartClassifyId")
  45. pageSize, _ := c.GetInt("PageSize")
  46. currentIndex, _ := c.GetInt("CurrentIndex")
  47. keyword := c.GetString("KeyWord")
  48. var total int
  49. page := paging.GetPaging(currentIndex, pageSize, total)
  50. var startSize int
  51. if pageSize <= 0 {
  52. pageSize = utils.PageSize20
  53. }
  54. if currentIndex <= 0 {
  55. currentIndex = 1
  56. }
  57. startSize = paging.StartIndex(currentIndex, pageSize)
  58. source, _ := c.GetInt("Source")
  59. if source <= 0 {
  60. source = utils.CHART_SOURCE_CROSS_HEDGING
  61. }
  62. var condition string
  63. var pars []interface{}
  64. // 普通图表
  65. condition += ` AND source = ? `
  66. pars = append(pars, source)
  67. if chartClassifyId > 0 {
  68. chartClassifyId, err := data_manage.GetChartClassify(chartClassifyId)
  69. if err != nil && err.Error() != utils.ErrNoRow() {
  70. br.Msg = "获取图表信息失败"
  71. br.ErrMsg = "获取信息失败,GetChartClassify,Err:" + err.Error()
  72. return
  73. }
  74. condition += " AND chart_classify_id IN(" + chartClassifyId + ") "
  75. }
  76. if keyword != "" {
  77. condition += ` AND ( chart_name LIKE '%` + keyword + `%' )`
  78. }
  79. //只看我的
  80. isShowMe, _ := c.GetBool("IsShowMe")
  81. if isShowMe {
  82. condition += ` AND sys_user_id = ? `
  83. pars = append(pars, sysUser.AdminId)
  84. }
  85. // 获取当前账号的不可见指标
  86. noPermissionChartIdList := make([]int, 0)
  87. {
  88. obj := data_manage.EdbInfoNoPermissionAdmin{}
  89. confList, err := obj.GetAllChartListByAdminId(c.SysUser.AdminId)
  90. if err != nil && err.Error() != utils.ErrNoRow() {
  91. br.Msg = "获取失败"
  92. br.ErrMsg = "获取不可见指标配置数据失败,Err:" + err.Error()
  93. return
  94. }
  95. for _, v := range confList {
  96. noPermissionChartIdList = append(noPermissionChartIdList, v.ChartInfoId)
  97. }
  98. }
  99. lenNoPermissionChartIdList := len(noPermissionChartIdList)
  100. if lenNoPermissionChartIdList > 0 {
  101. condition += ` AND chart_info_id not in (` + utils.GetOrmInReplace(lenNoPermissionChartIdList) + `) `
  102. pars = append(pars, noPermissionChartIdList)
  103. }
  104. //获取图表信息
  105. list, err := data_manage.GetChartListByCondition(condition, pars, startSize, pageSize)
  106. if err != nil && err.Error() != utils.ErrNoRow() {
  107. br.Success = true
  108. br.Msg = "获取图表信息失败"
  109. br.ErrMsg = "获取图表信息失败,Err:" + err.Error()
  110. return
  111. }
  112. myChartList, err := data_manage.GetMyChartListByAdminId(sysUser.AdminId)
  113. if err != nil && err.Error() != utils.ErrNoRow() {
  114. br.Msg = "获取图表信息失败"
  115. br.ErrMsg = "获取我的图表信息失败,Err:" + err.Error()
  116. return
  117. }
  118. myChartMap := make(map[int]*data_manage.MyChartView)
  119. for _, v := range myChartList {
  120. myChartMap[v.ChartInfoId] = v
  121. }
  122. listLen := len(list)
  123. chartEdbMap := make(map[int][]*data_manage.ChartEdbInfoMapping)
  124. if listLen > 0 {
  125. chartInfoIds := ""
  126. for _, v := range list {
  127. chartInfoIds += strconv.Itoa(v.ChartInfoId) + ","
  128. }
  129. if chartInfoIds != "" {
  130. chartInfoIds = strings.Trim(chartInfoIds, ",")
  131. //判断是否需要展示英文标识
  132. edbList, e := data_manage.GetChartEdbMappingListByChartInfoIds(chartInfoIds)
  133. if e != nil {
  134. br.Msg = "获取失败"
  135. br.ErrMsg = "获取图表,指标信息失败,Err:" + e.Error()
  136. return
  137. }
  138. for _, v := range edbList {
  139. chartEdbMap[v.ChartInfoId] = append(chartEdbMap[v.ChartInfoId], v)
  140. }
  141. }
  142. }
  143. for i := 0; i < listLen; i++ {
  144. //判断是否需要展示英文标识
  145. if edbTmpList, ok := chartEdbMap[list[i].ChartInfoId]; ok {
  146. list[i].IsEnChart = data.CheckIsEnChart(list[i].ChartNameEn, edbTmpList, list[i].Source, list[i].ChartType)
  147. }
  148. if existItem, ok := myChartMap[list[i].ChartInfoId]; ok {
  149. list[i].IsAdd = true
  150. list[i].MyChartId = existItem.MyChartId
  151. list[i].MyChartClassifyId = existItem.MyChartClassifyId
  152. }
  153. }
  154. resp := new(data_manage.ChartListResp)
  155. if list == nil || len(list) <= 0 || (err != nil && err.Error() == utils.ErrNoRow()) {
  156. items := make([]*data_manage.ChartInfoView, 0)
  157. resp.Paging = page
  158. resp.List = items
  159. br.Ret = 200
  160. br.Success = true
  161. br.Msg = "获取成功"
  162. return
  163. }
  164. dataCount, err := data_manage.GetChartListCountByCondition(condition, pars)
  165. if err != nil && err.Error() != utils.ErrNoRow() {
  166. br.Msg = "获取指标信息失败"
  167. br.ErrMsg = "获取指标数据总数失败,Err:" + err.Error()
  168. return
  169. }
  170. page = paging.GetPaging(currentIndex, pageSize, dataCount)
  171. resp.Paging = page
  172. resp.List = list
  173. br.Ret = 200
  174. br.Success = true
  175. br.Msg = "获取成功"
  176. br.Data = resp
  177. }
  178. // Preview
  179. // @Title 跨品种分析图表-预览数据
  180. // @Description 跨品种分析图表-获取预览数据
  181. // // @Param request body request.ChartConfigReq true "type json string"
  182. // @Success 200 {object} data_manage.ChartEdbInfoDetailResp
  183. // @router /chart_info/preview [post]
  184. func (c *ChartInfoController) Preview() {
  185. br := new(models.BaseResponse).Init()
  186. defer func() {
  187. c.Data["json"] = br
  188. c.ServeJSON()
  189. }()
  190. sysUser := c.SysUser
  191. if sysUser == nil {
  192. br.Msg = "请登录"
  193. br.ErrMsg = "请登录,SysUser Is Empty"
  194. br.Ret = 408
  195. return
  196. }
  197. var req request.ChartConfigReq
  198. if err := json.Unmarshal(c.Ctx.Input.RequestBody, &req); err != nil {
  199. br.Msg = "参数解析异常!"
  200. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  201. return
  202. }
  203. if req.TagX <= 0 {
  204. br.Msg = "请选择X轴坐标的标签"
  205. br.IsSendEmail = false
  206. return
  207. }
  208. if req.TagY <= 0 {
  209. br.Msg = "请选择Y轴坐标的标签"
  210. br.IsSendEmail = false
  211. return
  212. }
  213. if req.CalculateValue <= 0 {
  214. br.Msg = "请设置时间长度"
  215. br.IsSendEmail = false
  216. return
  217. }
  218. // 品种配置
  219. varietyListList := len(req.VarietyList)
  220. if varietyListList < 0 {
  221. br.Msg = "请选择品种"
  222. br.IsSendEmail = false
  223. return
  224. }
  225. // 日期配置
  226. dateConfigList := len(req.DateConfigList)
  227. if dateConfigList < 0 {
  228. br.Msg = "请选择日期"
  229. br.IsSendEmail = false
  230. return
  231. }
  232. if dateConfigList > 5 {
  233. br.Msg = "日期数量已达上限!"
  234. br.IsSendEmail = false
  235. return
  236. }
  237. chartInfo := new(data_manage.ChartInfoView)
  238. chartInfo.ChartType = 9
  239. // 获取图表x轴y轴
  240. _, dataResp, err, errMsg, isSendEmail := cross_variety.GetChartData(0, req)
  241. if err != nil {
  242. br.IsSendEmail = isSendEmail
  243. br.Msg = "获取失败"
  244. if errMsg != `` {
  245. br.Msg = errMsg
  246. }
  247. br.ErrMsg = "获取图表,指标信息失败,Err:" + err.Error()
  248. return
  249. }
  250. br.Data = dataResp
  251. br.Ret = 200
  252. br.Success = true
  253. br.Msg = "获取成功"
  254. }