chart_info_section.go 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. package data_manage
  2. import (
  3. "encoding/json"
  4. "eta/eta_api/models"
  5. "eta/eta_api/models/data_manage"
  6. "eta/eta_api/services/data"
  7. "eta/eta_api/utils"
  8. "strconv"
  9. "strings"
  10. )
  11. // GetChartTypeList
  12. // @Title 获取所有图表类型
  13. // @Description 获取所有图表类型
  14. // @Success 200 {object} data_manage.AddChartInfoResp
  15. // @router /chart_info/type_list [get]
  16. func (this *ChartInfoController) GetChartTypeList() {
  17. br := new(models.BaseResponse).Init()
  18. defer func() {
  19. this.Data["json"] = br
  20. this.ServeJSON()
  21. }()
  22. sysUser := this.SysUser
  23. if sysUser == nil {
  24. br.Msg = "请登录"
  25. br.ErrMsg = "请登录,SysUser Is Empty"
  26. br.Ret = 408
  27. return
  28. }
  29. listTmp, err := data_manage.GetChartTypeList()
  30. if err != nil {
  31. br.Msg = "获取图表类型失败"
  32. br.ErrMsg = "获取图表类型失败,Err:" + err.Error()
  33. return
  34. }
  35. //遍历list,将id和name组成map
  36. chartTypeMap := make(map[int][]data_manage.ChartType)
  37. for _, v := range listTmp {
  38. if v.ParentId > 0 {
  39. chartTypeMap[v.ParentId] = append(chartTypeMap[v.ParentId], v)
  40. }
  41. }
  42. list := make([]data_manage.ChartTypeList, 0)
  43. for _, v := range listTmp {
  44. if v.ParentId == 0 {
  45. tmp := data_manage.ChartTypeList{
  46. ChartTypeId: v.ChartTypeId,
  47. ChartTypeName: v.ChartTypeName,
  48. ChartTypeNameEn: v.ChartTypeNameEn,
  49. ParentId: v.ParentId,
  50. }
  51. child, ok := chartTypeMap[v.ChartTypeId]
  52. if ok {
  53. tmp.Child = child
  54. }
  55. list = append(list, tmp)
  56. }
  57. }
  58. resp := data_manage.ChartTypeListResp{List: list}
  59. br.Data = resp
  60. br.Ret = 200
  61. br.Success = true
  62. br.Msg = "获取图表类型成功"
  63. }
  64. // PreviewSectionCombineChartInfo
  65. // @Title 图表-获取预览的截面组合图数据
  66. // @Description 图表-获取预览的截面组合图数据
  67. // @Param request body data_manage.PreviewSectionCombineChartReq true "type json string"
  68. // @Success 200 {object} data_manage.ChartEdbInfoDetailResp
  69. // @router /chart_info/preview/section_combine [post]
  70. func (this *ChartInfoController) PreviewSectionCombineChartInfo() {
  71. br := new(models.BaseResponse).Init()
  72. defer func() {
  73. this.Data["json"] = br
  74. this.ServeJSON()
  75. }()
  76. var req data_manage.PreviewSectionCombineChartReq
  77. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  78. if err != nil {
  79. br.Msg = "参数解析异常!"
  80. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  81. return
  82. }
  83. chartInfo := new(data_manage.ChartInfoView)
  84. sysUser := this.SysUser
  85. if sysUser == nil {
  86. br.Msg = "请登录"
  87. br.ErrMsg = "请登录,SysUser Is Empty"
  88. br.Ret = 408
  89. return
  90. }
  91. chartType := utils.CHART_TYPE_SECTION_COMBINE
  92. edbInfoIdArr, err, errMsg := data.CheckChartExtraConfig(chartType, req.ExtraConfig)
  93. if err != nil {
  94. br.Msg = errMsg
  95. br.ErrMsg = "添加失败:" + err.Error()
  96. return
  97. }
  98. chartInfo.ChartType = chartType
  99. mappingList, err := data_manage.GetChartEdbMappingListByEdbInfoIdList(edbInfoIdArr)
  100. // 获取图表中的指标数据
  101. edbList, xEdbIdValue, yDataList, dataResp, err, errMsg := data.GetChartEdbData(0, chartType, "", "", "", mappingList, req.ExtraConfig, "")
  102. if err != nil {
  103. br.Msg = "获取失败"
  104. if errMsg != `` {
  105. br.Msg = errMsg
  106. }
  107. br.ErrMsg = "获取图表,指标信息失败,Err:" + err.Error()
  108. return
  109. }
  110. // 处理图表上下限
  111. extraConfig := dataResp.(data_manage.ChartSectionCombineDataResp)
  112. var (
  113. LeftMin float64
  114. LeftMax float64
  115. RightMin float64
  116. RightMax float64
  117. Right2Min float64
  118. Right2Max float64
  119. )
  120. for _, v := range extraConfig.SeriesList {
  121. var minData, maxData float64
  122. for _, d := range v.DataList {
  123. if minData > d {
  124. minData = d
  125. }
  126. if maxData < d {
  127. maxData = d
  128. }
  129. }
  130. if v.IsAxis == 1 {
  131. if LeftMin > minData {
  132. LeftMin = minData
  133. }
  134. if LeftMax < maxData {
  135. LeftMax = maxData
  136. }
  137. } else if v.IsAxis == 0 {
  138. if RightMin > minData {
  139. RightMin = minData
  140. }
  141. if RightMax < maxData {
  142. RightMax = maxData
  143. }
  144. } else {
  145. if Right2Min > minData {
  146. Right2Min = minData
  147. }
  148. if Right2Max < maxData {
  149. Right2Max = maxData
  150. }
  151. }
  152. }
  153. chartInfo.LeftMin = strconv.FormatFloat(LeftMin, 'f', -1, 64)
  154. chartInfo.LeftMax = strconv.FormatFloat(LeftMax, 'f', -1, 64)
  155. chartInfo.RightMin = strconv.FormatFloat(RightMin, 'f', -1, 64)
  156. chartInfo.RightMax = strconv.FormatFloat(RightMax, 'f', -1, 64)
  157. chartInfo.Right2Min = strconv.FormatFloat(Right2Min, 'f', -1, 64)
  158. chartInfo.Right2Max = strconv.FormatFloat(Right2Max, 'f', -1, 64)
  159. warnEdbList := make([]string, 0)
  160. for _, v := range edbList {
  161. if v.IsNullData {
  162. warnEdbList = append(warnEdbList, v.EdbName+"("+v.EdbCode+")")
  163. }
  164. }
  165. if len(warnEdbList) > 0 {
  166. chartInfo.WarnMsg = `图表引用指标异常,异常指标:` + strings.Join(warnEdbList, ",")
  167. }
  168. // 图表的指标来源
  169. sourceNameList, sourceNameEnList := data.GetEdbSourceByEdbInfoIdList(edbList)
  170. chartInfo.ChartSource = strings.Join(sourceNameList, ",")
  171. chartInfo.ChartSourceEn = strings.Join(sourceNameEnList, ",")
  172. //图表操作权限
  173. chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, true)
  174. //判断是否需要展示英文标识
  175. chartInfo.IsEnChart = data.CheckIsEnChart(chartInfo.ChartNameEn, edbList, utils.CHART_SOURCE_DEFAULT, chartType)
  176. chartInfo.Button = data_manage.ChartViewButton{
  177. IsEdit: chartInfo.IsEdit,
  178. IsEnChart: chartInfo.IsEnChart,
  179. IsAdd: chartInfo.IsAdd,
  180. IsCopy: true,
  181. IsSetName: chartInfo.IsSetName,
  182. }
  183. resp := new(data_manage.ChartInfoDetailResp)
  184. resp.ChartInfo = chartInfo
  185. resp.EdbInfoList = edbList
  186. resp.XEdbIdValue = xEdbIdValue
  187. resp.YDataList = yDataList
  188. resp.DataResp = dataResp
  189. br.Ret = 200
  190. br.Success = true
  191. br.Msg = "获取成功"
  192. br.Data = resp
  193. }