base_from_kpler.go 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "eta/eta_index_lib/logic"
  5. "eta/eta_index_lib/models"
  6. "eta/eta_index_lib/services"
  7. "eta/eta_index_lib/utils"
  8. "fmt"
  9. "strconv"
  10. "strings"
  11. "time"
  12. )
  13. // KplerController Kpler数据
  14. type KplerController struct {
  15. BaseAuthController
  16. }
  17. // GetData
  18. // @Title 开普勒数据-获取数据
  19. // @Description 开普勒数据-获取数据
  20. // @Success 200 {object} models.ThsHfSearchEdbReq
  21. // @router /edb_data [post]
  22. func (this *KplerController) GetData() {
  23. br := new(models.BaseResponse).Init()
  24. defer func() {
  25. if br.ErrMsg == "" {
  26. br.IsSendEmail = false
  27. }
  28. this.Data["json"] = br
  29. this.ServeJSON()
  30. }()
  31. var params models.KplerSearchEdbReq
  32. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &params); e != nil {
  33. br.Msg = "参数解析异常"
  34. br.ErrMsg = fmt.Sprintf("参数解析失败, %v", e)
  35. return
  36. }
  37. params.Granularity = strings.TrimSpace(params.Granularity)
  38. if params.Granularity == "" {
  39. br.Msg = "请选择频度"
  40. return
  41. }
  42. split := strings.TrimSpace(params.Split)
  43. if split == "" {
  44. split = "Total"
  45. }
  46. unit := strings.TrimSpace(params.Unit)
  47. if unit == "" {
  48. unit = "Kbd"
  49. }
  50. flowDirection := strings.TrimSpace(params.FlowDirection)
  51. if flowDirection == "" {
  52. br.Msg = "请选择流向"
  53. return
  54. }
  55. // 根据配置获取指标数据
  56. indexes, _, e := services.GetKplerDataByApi(params, "")
  57. if e != nil {
  58. br.Msg = "获取失败"
  59. br.ErrMsg = fmt.Sprintf("获取开普勒高频指标失败, %v", e)
  60. return
  61. }
  62. br.Data = indexes
  63. br.Ret = 200
  64. br.Success = true
  65. br.Msg = "获取成功"
  66. }
  67. // 批量新增指标
  68. // @Title 批量新增指标
  69. // @Description 批量新增指标
  70. // @Success 200 {object} models.KplerSearchEdbReq
  71. // @router /index_add [post]
  72. func (this *KplerController) IndexAdd() {
  73. br := new(models.BaseResponse).Init()
  74. defer func() {
  75. this.Data["json"] = br
  76. this.ServeJSON()
  77. }()
  78. var params models.KplerSearchEdbReq
  79. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &params); e != nil {
  80. br.Msg = "参数解析异常"
  81. br.ErrMsg = fmt.Sprintf("参数解析失败, %v", e)
  82. return
  83. }
  84. params.Granularity = strings.TrimSpace(params.Granularity)
  85. if params.Granularity == "" {
  86. br.Msg = "请选择频度"
  87. return
  88. }
  89. split := strings.TrimSpace(params.Split)
  90. if split == "" {
  91. split = "Total"
  92. }
  93. unit := strings.TrimSpace(params.Unit)
  94. if unit == "" {
  95. unit = "Kbd"
  96. }
  97. flowDirection := strings.TrimSpace(params.FlowDirection)
  98. if flowDirection == "" {
  99. br.Msg = "请选择流向"
  100. return
  101. }
  102. // 根据配置获取指标数据
  103. indexes, terminalInfo, e := services.GetKplerDataByApi(params, "")
  104. if e != nil {
  105. br.Msg = "获取失败"
  106. br.ErrMsg = fmt.Sprintf("获取开普勒高频指标失败, %v", e)
  107. return
  108. }
  109. // 批量新增指标
  110. err := services.AddKplerIndexByApi(indexes, &params, 0, terminalInfo.TerminalCode)
  111. if err != nil {
  112. br.Msg = "新增失败"
  113. br.ErrMsg = fmt.Sprintf("新增失败, %v", err)
  114. return
  115. }
  116. br.Ret = 200
  117. br.Success = true
  118. br.Msg = "新增成功"
  119. }
  120. // Add
  121. // @Title 新增Kpler指标接口
  122. // @Description 新增Kpler指标接口
  123. // @Success 200 {object} models.AddEdbInfoReq
  124. // @router /add [post]
  125. func (this *KplerController) Add() {
  126. br := new(models.BaseResponse).Init()
  127. var cacheKey string
  128. defer func() {
  129. this.Data["json"] = br
  130. this.ServeJSON()
  131. }()
  132. kpler := new(models.BaseFromKpler)
  133. source := kpler.GetSource()
  134. var req models.AddEdbInfoReq
  135. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  136. if err != nil {
  137. br.Msg = "参数解析异常!"
  138. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  139. return
  140. }
  141. if req.EdbCode == "" {
  142. br.Msg = "请输入指标编码!"
  143. br.ErrMsg = "请输入指标编码,指标编码为空"
  144. return
  145. }
  146. cacheKey = utils.CACHE_EDB_DATA_ADD + strconv.Itoa(source) + "_" + req.EdbCode
  147. if utils.Rc.IsExist(cacheKey) {
  148. br.Ret = 501
  149. br.Success = true
  150. br.Msg = "系统处理中,请稍后重试"
  151. return
  152. }
  153. utils.Rc.SetNX(cacheKey, 1, 1*time.Minute)
  154. defer func() {
  155. utils.Rc.Delete(cacheKey)
  156. }()
  157. err = kpler.Add(req.EdbCode)
  158. if err != nil {
  159. br.Msg = "获取指标信息失败!"
  160. br.ErrMsg = "获取指标信息失败 AddEdbDataFromKpler,Err:" + err.Error()
  161. return
  162. }
  163. br.Ret = 200
  164. br.Success = true
  165. br.Msg = "获取成功"
  166. return
  167. }
  168. // Refresh
  169. // @Title 刷新Kpler指标接口
  170. // @Description 刷新Kpler指标接口
  171. // @Success 200 {object} models.RefreshEdbInfoReq
  172. // @router /refresh [post]
  173. func (this *KplerController) Refresh() {
  174. br := new(models.BaseResponse).Init()
  175. var cacheKey string
  176. defer func() {
  177. this.Data["json"] = br
  178. this.ServeJSON()
  179. }()
  180. kpler := new(models.BaseFromKpler)
  181. source := kpler.GetSource()
  182. var req models.RefreshEdbInfoReq
  183. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  184. if err != nil {
  185. br.Msg = "参数解析异常!"
  186. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  187. return
  188. }
  189. if req.EdbCode == "" {
  190. br.Msg = "请输入指标编码!"
  191. br.ErrMsg = "请输入指标编码,指标编码为空"
  192. return
  193. }
  194. if req.EdbInfoId < 0 {
  195. br.Msg = "请输入指标ID!"
  196. br.ErrMsg = "请输入指标ID"
  197. return
  198. }
  199. // 获取指标详情
  200. edbInfo, err := models.GetEdbInfoByEdbCode(source, req.EdbCode)
  201. if err != nil {
  202. br.Msg = "指标不存在!"
  203. br.ErrMsg = "指标不存在"
  204. return
  205. }
  206. cacheKey = utils.CACHE_EDB_DATA_REFRESH + strconv.Itoa(source) + "_" + req.EdbCode
  207. if utils.Rc.IsExist(cacheKey) {
  208. br.Ret = 501
  209. br.Success = true
  210. br.Msg = "系统处理中,请稍后重试"
  211. return
  212. }
  213. utils.Rc.SetNX(cacheKey, 1, 1*time.Minute)
  214. defer func() {
  215. utils.Rc.Delete(cacheKey)
  216. }()
  217. if req.EdbInfoId <= 0 {
  218. req.EdbInfoId = edbInfo.EdbInfoId
  219. }
  220. err = kpler.Refresh(req.EdbInfoId, req.EdbCode, req.StartDate)
  221. if err != nil && !utils.IsErrNoRow(err) {
  222. br.Msg = "刷新指标信息失败!"
  223. br.ErrMsg = "刷新指标信息失败 RefreshEdbDataFromKpler,Err:" + err.Error()
  224. return
  225. }
  226. // 更新指标最大最小值
  227. err, errMsg := models.UnifiedModifyEdbInfoMaxAndMinInfo(edbInfo)
  228. if err != nil {
  229. br.Msg = errMsg
  230. br.ErrMsg = err.Error()
  231. return
  232. }
  233. // 更新ES
  234. go logic.UpdateEs(edbInfo.EdbInfoId)
  235. br.Ret = 200
  236. br.Success = true
  237. br.Msg = "获取成功"
  238. }
  239. // HandleExcelData
  240. // @Title 处理Kpler指标的接口
  241. // @Description 处理Kpler指标的接口
  242. // @Success 200 {object} models.HandleKplerExcelDataReq
  243. // @router /handle/excel_data [post]
  244. func (this *KplerController) HandleExcelData() {
  245. br := new(models.BaseResponse).Init()
  246. defer func() {
  247. this.Data["json"] = br
  248. this.ServeJSON()
  249. }()
  250. var req models.HandleKplerExcelDataReq
  251. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  252. if err != nil {
  253. br.Msg = "参数解析异常!"
  254. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  255. return
  256. }
  257. // 处理excel表数据
  258. err = services.HandleKplerIndex(&req)
  259. if err != nil {
  260. fmt.Println("HandleKplerIndex Err:" + err.Error())
  261. br.Msg = "处理失败"
  262. br.ErrMsg = "处理失败,Err:" + err.Error()
  263. return
  264. }
  265. br.Ret = 200
  266. br.Success = true
  267. br.Msg = "处理成功"
  268. }