base_from_kpler.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. package data
  2. import (
  3. "encoding/json"
  4. "eta/eta_api/models/data_manage"
  5. "eta/eta_api/utils"
  6. "fmt"
  7. )
  8. // KplerIndexSource2Edb 新增Kpler数据源到指标库
  9. func KplerIndexSource2Edb(req data_manage.KplerIndexSource2EdbReq, lang string) (edb *data_manage.EdbInfo, err error, errMsg string, skip bool) {
  10. if req.EdbCode == "" {
  11. err = fmt.Errorf("指标ID为空")
  12. return
  13. }
  14. defer func() {
  15. if err != nil {
  16. tips := fmt.Sprintf("KplerIndexSource2Edb新增失败, Err: %s", err.Error())
  17. fmt.Println(tips)
  18. utils.FileLog.Info(tips)
  19. }
  20. }()
  21. source := utils.DATA_SOURCE_KPLER
  22. // 是否新增过指标
  23. exist, e := data_manage.GetEdbInfoByEdbCode(source, req.EdbCode)
  24. if e != nil && !utils.IsErrNoRow(e) {
  25. err = fmt.Errorf("获取指标是否存在失败, err: %s", e.Error())
  26. return
  27. }
  28. if exist != nil && exist.EdbInfoId > 0 {
  29. skip = true
  30. return
  31. }
  32. // 开始结束时间
  33. var startDate, endDate string
  34. // 新增指标库
  35. edbInfo, e, msg, _ := EdbInfoAdd(source, utils.DATA_SUB_SOURCE_EDB, req.ClassifyId, req.EdbCode, req.EdbName, req.Frequency, req.Unit, startDate, endDate, req.AdminId, req.AdminRealName, lang)
  36. if e != nil {
  37. errMsg = msg
  38. err = fmt.Errorf("EdbInfo: 新增指标失败, err: %s", e.Error())
  39. return
  40. }
  41. edb = edbInfo
  42. return
  43. }
  44. func GetEdbDataKpler(req data_manage.KplerSearchReq, productNames string, fromZoneNames string, toZoneNames string) (indexes []*data_manage.KplerIndexItem, err error) {
  45. param := make(map[string]interface{})
  46. param["ProductNames"] = productNames
  47. param["FromZoneIds"] = req.FromZoneIds
  48. param["FromZoneNames"] = fromZoneNames
  49. param["ToZoneIds"] = req.ToZoneIds
  50. param["ToZoneNames"] = toZoneNames
  51. param["Split"] = req.Split
  52. param["FlowDirection"] = req.FlowDirection
  53. param["Granularity"] = req.Granularity
  54. param["Unit"] = req.Unit
  55. uri := `kpler/edb_data`
  56. resp, e := postKplerEdbData(param, uri)
  57. if e != nil {
  58. err = fmt.Errorf("postKplerEdbData, %v", e)
  59. return
  60. }
  61. if resp.Ret == 200 {
  62. indexes = resp.Data
  63. }
  64. return
  65. }
  66. func AddKplerIndex(req data_manage.KplerSearchReq, productNames string, fromZoneNames string, toZoneNames string) (err error) {
  67. param := make(map[string]interface{})
  68. param["ProductNames"] = productNames
  69. param["FromZoneIds"] = req.FromZoneIds
  70. param["FromZoneNames"] = fromZoneNames
  71. param["ToZoneIds"] = req.ToZoneIds
  72. param["ToZoneNames"] = toZoneNames
  73. param["Split"] = req.Split
  74. param["FlowDirection"] = req.FlowDirection
  75. param["Granularity"] = req.Granularity
  76. param["Unit"] = req.Unit
  77. uri := `kpler/index_add`
  78. resp, e := postKplerEdbData(param, uri)
  79. if e != nil {
  80. err = fmt.Errorf("postKplerEdbData, %v", e)
  81. return
  82. }
  83. if resp.Ret != 200 {
  84. err = fmt.Errorf("新增指标失败, %v", resp.ErrMsg)
  85. return
  86. }
  87. return
  88. }
  89. // postKplerEdbData 刷新指标数据
  90. func postKplerEdbData(param map[string]interface{}, urlStr string) (resp *data_manage.KplerSearchEdbLibResp, err error) {
  91. postUrl := utils.EDB_LIB_URL + urlStr
  92. postData, err := json.Marshal(param)
  93. if err != nil {
  94. return
  95. }
  96. result, err := HttpPost(postUrl, string(postData), utils.ZhLangVersion, "application/json")
  97. if err != nil {
  98. return
  99. }
  100. utils.FileLog.Info("postRefreshEdbData:" + postUrl + ";" + string(postData) + ";result:" + string(result))
  101. err = json.Unmarshal(result, &resp)
  102. if err != nil {
  103. return
  104. }
  105. return resp, nil
  106. }
  107. // GetMenuTreeRecursive 递归菜单树
  108. func GetKplerClassifyTreeRecursive(list []*data_manage.BaseFromKplerClassifyItems, parentId int) []*data_manage.BaseFromKplerClassifyItems {
  109. res := make([]*data_manage.BaseFromKplerClassifyItems, 0)
  110. for _, v := range list {
  111. if v.ParentId == parentId {
  112. v.Children = GetKplerClassifyTreeRecursive(list, v.ClassifyId)
  113. res = append(res, v)
  114. }
  115. }
  116. return res
  117. }