Explorar o código

处理图表上下限

xyxie hai 8 meses
pai
achega
ccd1a4fd67

+ 0 - 51
controllers/data_manage/chart_info_section.go

@@ -6,7 +6,6 @@ import (
 	"eta/eta_api/models/data_manage"
 	"eta/eta_api/services/data"
 	"eta/eta_api/utils"
-	"strconv"
 	"strings"
 )
 
@@ -119,56 +118,6 @@ func (this *ChartInfoController) PreviewSectionCombineChartInfo() {
 		br.ErrMsg = "获取图表,指标信息失败,Err:" + err.Error()
 		return
 	}
-	// 处理图表上下限
-	extraConfig := dataResp.(data_manage.ChartSectionCombineDataResp)
-	var (
-		LeftMin   float64
-		LeftMax   float64
-		RightMin  float64
-		RightMax  float64
-		Right2Min float64
-		Right2Max float64
-	)
-	for _, v := range extraConfig.SeriesList {
-		var minData, maxData float64
-		for _, d := range v.DataList {
-			if minData > d {
-				minData = d
-			}
-			if maxData < d {
-				maxData = d
-			}
-		}
-		if v.IsAxis == 1 {
-			if LeftMin > minData {
-				LeftMin = minData
-			}
-			if LeftMax < maxData {
-				LeftMax = maxData
-			}
-		} else if v.IsAxis == 0 {
-			if RightMin > minData {
-				RightMin = minData
-			}
-			if RightMax < maxData {
-				RightMax = maxData
-			}
-		} else {
-			if Right2Min > minData {
-				Right2Min = minData
-			}
-			if Right2Max < maxData {
-				Right2Max = maxData
-			}
-		}
-	}
-	chartInfo.LeftMin = strconv.FormatFloat(LeftMin, 'f', -1, 64)
-	chartInfo.LeftMax = strconv.FormatFloat(LeftMax, 'f', -1, 64)
-	chartInfo.RightMin = strconv.FormatFloat(RightMin, 'f', -1, 64)
-	chartInfo.RightMax = strconv.FormatFloat(RightMax, 'f', -1, 64)
-	chartInfo.Right2Min = strconv.FormatFloat(Right2Min, 'f', -1, 64)
-	chartInfo.Right2Max = strconv.FormatFloat(Right2Max, 'f', -1, 64)
-
 	warnEdbList := make([]string, 0)
 	for _, v := range edbList {
 		if v.IsNullData {

+ 6 - 0
models/data_manage/chart_info.go

@@ -2433,6 +2433,12 @@ type ChartSectionCombineDataResp struct {
 	BaseChartSeriesName string                   `description:"基准系列名称"`
 	SortType            int                      `description:"排序类型,0默认,1升序,2降序"`
 	SeriesList          []*ChartSectionSeriesItem
+	LeftMin             string `description:"图表左侧最小值"`
+	LeftMax             string `description:"图表左侧最大值"`
+	RightMin            string `description:"图表右侧最小值"`
+	RightMax            string `description:"图表右侧最大值"`
+	Right2Min           string `description:"图表右侧最小值"`
+	Right2Max           string `description:"图表右侧最大值"`
 }
 
 // 系列里的指标日期配置

+ 58 - 2
services/data/chart_extra_config.go

@@ -336,7 +336,7 @@ func handleChartSectionCombineData(extraConfig data_manage.ChartSectionAllExtraC
 }
 
 // GetChartSectionCombineData 截面组合图的数据处理
-func GetChartSectionCombineData(chartInfoId int, mappingList []*data_manage.ChartEdbInfoMapping, edbDataListMap map[int][]*data_manage.EdbDataList, extraConfig data_manage.ChartSectionAllExtraConf) (edbIdList []int, dataListResp data_manage.ChartSectionCombineDataResp, err error) {
+func GetChartSectionCombineData(chartInfo *data_manage.ChartInfo, mappingList []*data_manage.ChartEdbInfoMapping, edbDataListMap map[int][]*data_manage.EdbDataList, extraConfig data_manage.ChartSectionAllExtraConf) (edbIdList []int, dataListResp data_manage.ChartSectionCombineDataResp, err error) {
 	// 指标数据数组(10086:{"2022-12-02":100.01,"2022-12-01":102.3})
 	edbDataMap := make(map[int]map[string]float64)
 	for edbInfoId, edbDataList := range edbDataListMap {
@@ -365,7 +365,14 @@ func GetChartSectionCombineData(chartInfoId int, mappingList []*data_manage.Char
 	// 组装数据
 	baseSeries := new(data_manage.ChartSectionSeriesItem) //y轴的系列
 	var firstUnit, leftUnit, rightUnit, right2Unit *data_manage.XData
-
+	var (
+		LeftMin   float64
+		LeftMax   float64
+		RightMin  float64
+		RightMax  float64
+		Right2Min float64
+		Right2Max float64
+	)
 	for _, seriesItem := range extraConfig.SeriesList {
 		var maxDate time.Time
 		var minVal, maxVal float64
@@ -461,6 +468,39 @@ func GetChartSectionCombineData(chartInfoId int, mappingList []*data_manage.Char
 		} else if seriesItem.IsAxis == 2 && right2Unit == nil {
 			right2Unit = firstUnit
 		}
+
+		//处理上下限
+		var minData, maxData float64
+		for _, d := range seriesItem.DataList {
+			if minData > d {
+				minData = d
+			}
+			if maxData < d {
+				maxData = d
+			}
+		}
+		if seriesItem.IsAxis == 1 {
+			if LeftMin > minData {
+				LeftMin = minData
+			}
+			if LeftMax < maxData {
+				LeftMax = maxData
+			}
+		} else if seriesItem.IsAxis == 0 {
+			if RightMin > minData {
+				RightMin = minData
+			}
+			if RightMax < maxData {
+				RightMax = maxData
+			}
+		} else {
+			if Right2Min > minData {
+				Right2Min = minData
+			}
+			if Right2Max < maxData {
+				Right2Max = maxData
+			}
+		}
 	}
 	// 处理横轴
 	// 遍历基准系列,判断有几个横轴名称
@@ -526,6 +566,22 @@ func GetChartSectionCombineData(chartInfoId int, mappingList []*data_manage.Char
 		unitList.RightTwoNameEn = extraConfig.UnitList.RightTwoNameEn
 	}
 
+	if chartInfo != nil && chartInfo.MinMaxSave == 1 {
+		dataListResp.LeftMin = chartInfo.LeftMin
+		dataListResp.LeftMax = chartInfo.LeftMax
+		dataListResp.RightMin = chartInfo.RightMin
+		dataListResp.RightMax = chartInfo.RightMax
+		dataListResp.Right2Min = chartInfo.Right2Min
+		dataListResp.Right2Max = chartInfo.Right2Max
+	} else {
+		dataListResp.LeftMin = strconv.FormatFloat(LeftMin, 'f', -1, 64)
+		dataListResp.LeftMax = strconv.FormatFloat(LeftMax, 'f', -1, 64)
+		dataListResp.RightMin = strconv.FormatFloat(RightMin, 'f', -1, 64)
+		dataListResp.RightMax = strconv.FormatFloat(RightMax, 'f', -1, 64)
+		dataListResp.Right2Min = strconv.FormatFloat(Right2Min, 'f', -1, 64)
+		dataListResp.Right2Max = strconv.FormatFloat(Right2Max, 'f', -1, 64)
+	}
+
 	dataListResp.SeriesList = extraConfig.SeriesList
 	dataListResp.DateConfList = extraConfig.DateConfList
 	dataListResp.BaseChartSeriesName = extraConfig.BaseChartSeriesName

+ 19 - 2
services/data/chart_info.go

@@ -552,7 +552,16 @@ func GetChartEdbData(chartInfoId, chartType int, calendar, startDate, endDate st
 		}
 	case utils.CHART_TYPE_SECTION_COMBINE: // 截面组合图
 		sectionConf := extraConfig.(data_manage.ChartSectionAllExtraConf)
-		xEdbIdValue, dataResp, err = GetChartSectionCombineData(chartInfoId, mappingList, edbDataListMap, sectionConf)
+		var chartInfo *data_manage.ChartInfo
+		if chartInfoId > 0 {
+			chartInfo, err = data_manage.GetChartInfoById(chartInfoId)
+			if err != nil {
+				errMsg = "获取图表信息失败"
+				return
+			}
+		}
+
+		xEdbIdValue, dataResp, err = GetChartSectionCombineData(chartInfo, mappingList, edbDataListMap, sectionConf)
 
 		// 这个数据没有必要返回给前端
 		for _, v := range edbList {
@@ -3554,7 +3563,15 @@ func GetChartEdbDataV2(chartInfoId, chartType int, calendar, startDate, endDate
 		}
 	case utils.CHART_TYPE_SECTION_COMBINE: // 截面组合图
 		sectionConf := extraConfig.(data_manage.ChartSectionAllExtraConf)
-		xEdbIdValue, dataResp, err = GetChartSectionCombineData(chartInfoId, mappingList, edbDataListMap, sectionConf)
+		var chartInfo *data_manage.ChartInfo
+		if chartInfoId > 0 {
+			chartInfo, err = data_manage.GetChartInfoById(chartInfoId)
+			if err != nil {
+				errMsg = "获取图表信息失败"
+				return
+			}
+		}
+		xEdbIdValue, dataResp, err = GetChartSectionCombineData(chartInfo, mappingList, edbDataListMap, sectionConf)
 
 		// 这个数据没有必要返回给前端
 		for _, v := range edbList {