Prechádzať zdrojové kódy

截面组合图排序

xyxie 6 mesiacov pred
rodič
commit
d4a255f212
1 zmenil súbory, kde vykonal 29 pridanie a 14 odobranie
  1. 29 14
      services/data/chart_extra_config.go

+ 29 - 14
services/data/chart_extra_config.go

@@ -508,9 +508,26 @@ func GetChartSectionCombineData(chartInfo *data_manage.ChartInfo, mappingList []
 		err = fmt.Errorf("基准系列不存在")
 		return
 	}
+	defaultIndexXDataList := make([]int, 0)            //默认排序时的横轴
+	defaultXDataMap := make(map[int]data_manage.XData) //默认排序时的横轴单位
+	for index, item := range baseSeries.EdbInfoList {
+		if index == 0 {
+			firstUnit = &data_manage.XData{
+				Name:   item.Unit,
+				NameEn: item.UnitEn,
+			}
+		}
+
+		tmp := data_manage.XData{
+			Name:   item.EdbName,
+			NameEn: item.EdbNameEn,
+		}
+		defaultXDataMap[index] = tmp
+		defaultIndexXDataList = append(defaultIndexXDataList, index)
+	}
 	// 处理系列排序
 	if extraConfig.SortType > 0 {
-		newSeriesDataListMap, newSeriesNoDataIndexMap := SortChartSeriesDataSet(baseSeries.SeriesName, baseSeries.DataList, baseSeries.NoDataEdbIndex, seriesDataListMap, seriesNoDataIndexMap, extraConfig.SortType)
+		newSeriesDataListMap, newSeriesNoDataIndexMap, newIndexXDataList := SortChartSeriesDataSet(baseSeries.SeriesName, baseSeries.DataList, baseSeries.NoDataEdbIndex, seriesDataListMap, seriesNoDataIndexMap, extraConfig.SortType)
 		for k, item := range extraConfig.SeriesList {
 			dataList, ok := newSeriesDataListMap[item.SeriesName]
 			if ok {
@@ -521,28 +538,24 @@ func GetChartSectionCombineData(chartInfo *data_manage.ChartInfo, mappingList []
 				extraConfig.SeriesList[k].NoDataEdbIndex = noIndex
 			}
 		}
+		defaultIndexXDataList = newIndexXDataList
 	}
 
 	xDataList := make([]data_manage.XData, 0)
-	for index, item := range baseSeries.EdbInfoList {
-		if index == 0 {
-			firstUnit = &data_manage.XData{
-				Name:   item.Unit,
-				NameEn: item.UnitEn,
-			}
-		}
-		tmp := data_manage.XData{
-			Name:   item.EdbName,
-			NameEn: item.EdbNameEn,
+	for index, itemIndex := range defaultIndexXDataList {
+		nameItem, ok := defaultXDataMap[itemIndex]
+		if !ok {
+			err = fmt.Errorf("单位不存在")
+			return
 		}
 		// 如果已经设置了横轴名称,则用设置的名称替换
 		if len(extraConfig.XDataList) > index {
 			newItem := extraConfig.XDataList[index]
 			if newItem.Name != "" {
-				tmp = newItem
+				nameItem = newItem
 			}
 		}
-		xDataList = append(xDataList, tmp)
+		xDataList = append(xDataList, nameItem)
 	}
 	dataListResp.XDataList = xDataList
 
@@ -829,7 +842,7 @@ func handleSystemAppointDateT(currDate time.Time, appointDay, frequency string)
 }
 
 // sortTripleDataSet 以第一组数据为基准,排序之后,空数组的位置也要同步变更
-func SortChartSeriesDataSet(baseName string, baseDataList []float64, baseSeriesNoDataIndexList []int, dataListMap map[string][]float64, noDataListIndexMap map[string][]int, asc int) (newDataListMap map[string][]float64, newNoDataListIndexMap map[string][]int) {
+func SortChartSeriesDataSet(baseName string, baseDataList []float64, baseSeriesNoDataIndexList []int, dataListMap map[string][]float64, noDataListIndexMap map[string][]int, asc int) (newDataListMap map[string][]float64, newNoDataListIndexMap map[string][]int, newIndexXDataList []int) {
 	newDataListMap = make(map[string][]float64)
 	newNoDataListIndexMap = make(map[string][]int)
 
@@ -868,6 +881,7 @@ func SortChartSeriesDataSet(baseName string, baseDataList []float64, baseSeriesN
 				newDataListMap[k][i] = dataListMap[k][idx]
 			}
 		}
+
 		dataListMap = newDataListMap
 		noDataListIndexMap = newNoDataListIndexMap
 		newDataListMap = make(map[string][]float64)
@@ -919,5 +933,6 @@ func SortChartSeriesDataSet(baseName string, baseDataList []float64, baseSeriesN
 			newDataListMap[k][i] = dataListMap[k][idx]
 		}
 	}
+	newIndexXDataList = newIndices
 	return
 }