فهرست منبع

优化指标加载速度

kobe6258 1 هفته پیش
والد
کامیت
77218cef1f
1فایلهای تغییر یافته به همراه47 افزوده شده و 8 حذف شده
  1. 47 8
      controllers/data_manage/edb_info.go

+ 47 - 8
controllers/data_manage/edb_info.go

@@ -5668,6 +5668,47 @@ func (this *EdbInfoController) EdbChartList() {
 					}
 				}
 			}
+			var wg sync.WaitGroup
+			wg.Add(2)
+			var relationMap map[int]*data_manage.BaseRelationEdbInfo
+			var relationList []*data_manage.BaseRelationEdbInfo
+			relationChan := make(chan RelationResult, 2)
+			var edbInfoIds []int
+			var glEdbInfoInfoIds []int
+			for _, v := range list {
+				if v.Source == utils.DATA_SOURCE_MYSTEEL_CHEMICAL {
+					glEdbInfoInfoIds = append(glEdbInfoInfoIds, v.EdbInfoId)
+				} else {
+					edbInfoIds = append(edbInfoIds, v.EdbInfoId)
+				}
+
+			}
+			// 抽象为一个函数减少重复逻辑
+			fetchRelations := func(ids []int, source int) {
+				defer wg.Done()
+				_, relList, getErr := data.GetEdbRelationListByIds(ids, source)
+				relationChan <- RelationResult{
+					List: relList,
+					Err:  getErr,
+				}
+			}
+			go fetchRelations(glEdbInfoInfoIds, utils.DATA_SOURCE_MYSTEEL_CHEMICAL)
+			go fetchRelations(edbInfoIds, -1)
+			wg.Wait()
+			close(relationChan)
+
+			for i := 0; i < 2; i++ {
+				result := <-relationChan
+				if result.Err != nil && !utils.IsErrNoRow(result.Err) {
+					br.Msg = "获取失败"
+					br.ErrMsg = "获取数据引用信息失败,Err:" + e.Error()
+					return
+				}
+				relationList = append(relationList, result.List...)
+			}
+			for _, v := range relationList {
+				relationMap[v.EdbInfoId] = v
+			}
 
 			for _, v := range list {
 				if currClassify, ok := classifyMap[v.ClassifyId]; ok {
@@ -5682,14 +5723,7 @@ func (this *EdbInfoController) EdbChartList() {
 						v.IsSupplierStop = 1
 					}
 				}
-				var relation *data_manage.BaseRelationEdbInfo
-				relation, err = data.GetEdbRelationListById(v.EdbInfoId, v.Source)
-				if err != nil && !utils.IsErrNoRow(err) {
-					br.Msg = "获取失败"
-					br.ErrMsg = "获取数据引用信息失败,Err:" + e.Error()
-					return
-				}
-				if relation != nil && relation.RelationNum > 0 {
+				if relationMap[v.EdbInfoId] != nil && relationMap[v.EdbInfoId].RelationNum > 0 {
 					v.IsRelation = true
 				}
 			}
@@ -5707,6 +5741,11 @@ func (this *EdbInfoController) EdbChartList() {
 	br.Data = resp
 }
 
+type RelationResult struct {
+	List []*data_manage.BaseRelationEdbInfo
+	Err  error
+}
+
 // Modify
 // @Title 修改指标信息接口
 // @Description 编辑指标接口