浏览代码

Merge branch 'bug/5604' into debug

# Conflicts:
#	services/data/chart_info.go
Roc 1 周之前
父节点
当前提交
77bc5afbd7
共有 2 个文件被更改,包括 64 次插入41 次删除
  1. 12 40
      controllers/data_manage/chart_info.go
  2. 52 1
      services/data/chart_info.go

+ 12 - 40
controllers/data_manage/chart_info.go

@@ -1501,47 +1501,19 @@ func (this *ChartInfoController) PreviewChartInfoDetail() {
 			br.ErrMsg = "标识线配置异常" + err.Error()
 			return
 		}
-		for i := range markerLines {
-			if markerLines[i].EdbType == 0 && markerLines[i].TimeIntervalType == 0 && markerLines[i].Axis != 3 {
-				// 图上第一个指标且时间区间跟随图表
-				if markerLines[i].MarkLineType == 2 {
-					if edbList[0].IsAxis == 1 {
-						value, err := data.MarkerLineCalculate(markerLines[i], edbList[0].DataList, chartInfo)
-						if err != nil {
-							br.Msg = "标识线配置异常"
-							br.ErrMsg = "标识线配置异常" + err.Error()
-							return
-						}
-						markerLines[i].Value = value
-					} else {
-						// 其他的都走指标计算
-						edbInfo, err := data_manage.GetEdbInfoById(markerLines[i].EdbInfoId)
-						if err != nil {
-							br.Msg = "指标计算标识线获取指标信息异常"
-							br.ErrMsg = "指标计算标识线获取指标信息异常" + err.Error()
-							return
-						}
-						// 判断时间区间不为跟随图表的情况
-						if markerLines[i].TimeIntervalType != 0 {
-							startDate = markerLines[i].StartDate.Date
-							endDate = markerLines[i].EndDate.Date
-						}
-						dataList, err := data_manage.GetEdbDataList(edbInfo.Source, edbInfo.SubSource, edbInfo.EdbInfoId, startDate, endDate)
-						if err != nil {
-							br.Msg = "指标计算标识线获取指标数据异常"
-							br.ErrMsg = "指标计算标识线获取指标数据异常" + err.Error()
-							return
-						}
-						value, err := data.MarkerLineCalculate(markerLines[i], dataList, chartInfo)
-						if err != nil {
-							br.Msg = "标识线配置异常"
-							br.ErrMsg = "标识线配置异常" + err.Error()
-							return
-						}
-						markerLines[i].Value = value
-					}
+		for i, markerLine := range markerLines {
+			switch markerLine.MarkLineType { //1:固定 2:指标计算
+			case 2:
+				tmpMarkerLine, tmpErr := data.GetMarkerLine(markerLine, edbList, chartInfo, startDate, endDate)
+				if tmpErr != nil {
+					br.Msg = "标识线配置异常"
+					br.ErrMsg = "标识线配置异常," + tmpErr.Error()
+					return
 				}
+				markerLine = tmpMarkerLine
 			}
+
+			markerLines[i] = markerLine
 		}
 
 		markerLineStr, err := json.Marshal(markerLines)
@@ -3626,7 +3598,7 @@ func (this *ChartInfoController) PreviewBarChartInfo() {
 						value, err := data.MarkerLineCalculate(markerLines[i], edbList[0].DataList, chartInfo)
 						if err != nil {
 							br.Msg = "标识线配置异常"
-							br.ErrMsg = "标识线配置异常" + err.Error()
+							br.ErrMsg = "标识线配置异常," + err.Error()
 							return
 						}
 						markerLines[i].Value = value

+ 52 - 1
services/data/chart_info.go

@@ -4672,7 +4672,6 @@ func MarkerLineCalculate(markerLine data_manage.MarkersLine, dataList interface{
 				}
 			}
 			averge = averge / float64(length)
-
 			if len(floatList) <= 0 {
 				err = errors.New(`数据为空`)
 				return
@@ -5365,3 +5364,55 @@ func getEdbDataMapListForSeason(chartInfoId, chartType int, calendar, startDate,
 
 	return
 }
+
+func GetMarkerLine(markerLine data_manage.MarkersLine, edbList []*data_manage.ChartEdbInfoMapping, chartInfo *data_manage.ChartInfoView, startDate, endDate string) (newMarkerLine data_manage.MarkersLine, err error) {
+	newMarkerLine = markerLine
+
+	// 如果是横轴,那么直接返回
+	if markerLine.Axis == 3 {
+		return
+	}
+
+	var dataList interface{}
+	switch markerLine.EdbType {
+	case 0: // 图中第一个指标
+		dataList = edbList[0].DataList
+
+	case 1: // 其他指标
+		edbInfo, tmpErr := data_manage.GetEdbInfoById(markerLine.EdbInfoId)
+		if tmpErr != nil {
+			err = fmt.Errorf("指标计算标识线获取指标信息异常" + tmpErr.Error())
+			return
+		}
+		// 判断时间区间不为跟随图表的情况
+		if markerLine.TimeIntervalType != 0 {
+			startDate = markerLine.StartDate.Date
+			endDate = markerLine.EndDate.Date
+		}
+		dataList, err = data_manage.GetEdbDataList(edbInfo.Source, edbInfo.SubSource, edbInfo.EdbInfoId, startDate, endDate)
+		if err != nil {
+			err = fmt.Errorf("指标计算标识线获取指标数据异常" + err.Error())
+			return
+		}
+	}
+
+	switch markerLine.TimeIntervalType {
+	// 0跟随图表 1自定义
+	case 0: // 0跟随图表
+		value, tmpErr := MarkerLineCalculate(markerLine, dataList, chartInfo)
+		if tmpErr != nil {
+			err = tmpErr
+			return
+		}
+		newMarkerLine.Value = value
+	case 1: // 自定义
+		value, tmpErr := MarkerLineCalculate(markerLine, dataList, chartInfo)
+		if tmpErr != nil {
+			err = fmt.Errorf("标识线配置异常" + err.Error())
+			return
+		}
+		newMarkerLine.Value = value
+	}
+
+	return
+}