Roc пре 1 недеља
родитељ
комит
efcf5f3ef4
2 измењених фајлова са 102 додато и 68 уклоњено
  1. 38 67
      controllers/data_manage/chart_info.go
  2. 64 1
      services/data/chart_info.go

+ 38 - 67
controllers/data_manage/chart_info.go

@@ -876,18 +876,18 @@ func (this *ChartInfoController) ChartInfoMove() {
 		go data.EsAddOrEditChartInfo(chartInfo.ChartInfoId)
 
 		// 判断是否为精选目录
-			// 如果该目录不是精选目录,且该图表已经上架,则需撤回该图表
-			if oldClassifyId != req.ChartClassifyId {
-				parentChartClassifyInfo, err := data_manage.GetChartClassifyById(req.ChartClassifyId)
-				if err != nil {
-					br.Msg = "移动失败"
-					br.ErrMsg = "获取上级分类信息失败,Err:" + err.Error()
-					return
-				}
-				if parentChartClassifyInfo.IsSelected == 0 && chartInfo.ForumChartInfoId > 0 {
-					go eta_forum.DeleteChart(chartInfo.ChartInfoId)
-				}
+		// 如果该目录不是精选目录,且该图表已经上架,则需撤回该图表
+		if oldClassifyId != req.ChartClassifyId {
+			parentChartClassifyInfo, err := data_manage.GetChartClassifyById(req.ChartClassifyId)
+			if err != nil {
+				br.Msg = "移动失败"
+				br.ErrMsg = "获取上级分类信息失败,Err:" + err.Error()
+				return
 			}
+			if parentChartClassifyInfo.IsSelected == 0 && chartInfo.ForumChartInfoId > 0 {
+				go eta_forum.DeleteChart(chartInfo.ChartInfoId)
+			}
+		}
 	}
 
 	if err != nil {
@@ -1455,47 +1455,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)
@@ -1833,7 +1805,7 @@ func (this *ChartInfoController) ChartInfoDetailV2() {
 	}
 
 	// 图表当前分类的分类树
-	
+
 	classifyLevels := make([]string, 0)
 	{
 		list, e := data_manage.GetChartClassifyAllBySource(utils.CHART_SOURCE_DEFAULT)
@@ -3560,7 +3532,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
@@ -4474,7 +4446,7 @@ func (this *ChartInfoController) UpdateToForum() {
 
 	// 更新指标数据
 	utils.Rc.LPush(utils.CACHE_KEY_EDB_DATA_UPDATE_LOG, []byte("1"))
-	
+
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "保存成功"
@@ -5141,7 +5113,7 @@ func (this *ChartInfoController) ModifyChartList() {
 		br.ErrMsg = "更新图表分类失败,Err:" + err.Error()
 		return
 	}
-	
+
 	go eta_forum.ChartInfoDeleteBatchByChartInfoIds(chartIds, req.ChartClassifyId)
 
 	br.Ret = 200
@@ -5186,12 +5158,12 @@ func (this *ChartInfoController) GetChartDescriptionList() {
 	response := new(data_manage.ChartDescriptionListResponse)
 	for _, v := range chartDescriptionList {
 		list = append(list, &data_manage.ChartDescriptionList{
-			Id:               v.Id,
-			Description:      v.Description,
-			ChartInfoId:      v.ChartInfoId,
-			SysUserId:        v.SysUserId,
-			SysUserRealName:  v.SysUserRealName,
-			CreateTime:       v.CreateTime.Format(utils.FormatDateTime),
+			Id:              v.Id,
+			Description:     v.Description,
+			ChartInfoId:     v.ChartInfoId,
+			SysUserId:       v.SysUserId,
+			SysUserRealName: v.SysUserRealName,
+			CreateTime:      v.CreateTime.Format(utils.FormatDateTime),
 		})
 	}
 	response.List = list
@@ -5220,7 +5192,7 @@ func (this *ChartInfoController) AddChartDescription() {
 		br.ErrMsg = "请登录,SysUser Is Empty"
 		br.Ret = 408
 		return
-	}	
+	}
 
 	var req data_manage.ChartDescriptionAddReq
 	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
@@ -5249,12 +5221,12 @@ func (this *ChartInfoController) AddChartDescription() {
 		return
 	}
 	item := &data_manage.ChartDescription{
-		ChartInfoId: req.ChartInfoId,
-		Description: req.Description,
-		SysUserId: sysUser.AdminId,
+		ChartInfoId:     req.ChartInfoId,
+		Description:     req.Description,
+		SysUserId:       sysUser.AdminId,
 		SysUserRealName: sysUser.RealName,
-		ModifyTime: time.Now(),
-		CreateTime: time.Now(),
+		ModifyTime:      time.Now(),
+		CreateTime:      time.Now(),
 	}
 	err = data_manage.AddChartDescription(item)
 	if err != nil {
@@ -5267,4 +5239,3 @@ func (this *ChartInfoController) AddChartDescription() {
 	br.Success = true
 	br.Msg = "添加成功"
 }
-

+ 64 - 1
services/data/chart_info.go

@@ -4388,6 +4388,10 @@ func SeasonChartData(dataList []*data_manage.ChartEdbInfoMapping, seasonExtraCon
 
 			for _, v := range dataTimeMap {
 				valueList := dataTimeValueMap[v]
+				if len(valueList) <= 0 {
+					err = errors.New(`数据为空`)
+					return
+				}
 				stdev := utils.CalculateStandardDeviation(valueList)
 				stdev, _ = decimal.NewFromFloat(stdev).Round(4).Float64()
 
@@ -4615,6 +4619,10 @@ func MarkerLineCalculate(markerLine data_manage.MarkersLine, dataList interface{
 					}
 				}
 				averge = averge / float64(length)
+				if len(faloatList) <= 0 {
+					err = errors.New(`数据为空`)
+					return
+				}
 				stdev := utils.CalculateStandardDeviation(faloatList)
 				stdev, _ = decimal.NewFromFloat(stdev).Round(4).Float64()
 
@@ -4665,7 +4673,10 @@ func MarkerLineCalculate(markerLine data_manage.MarkersLine, dataList interface{
 				}
 			}
 			averge = averge / float64(length)
-
+			if len(floatList) <= 0 {
+				err = errors.New(`数据为空`)
+				return
+			}
 			stdev := utils.CalculateStandardDeviation(floatList)
 			stdev, _ = decimal.NewFromFloat(stdev).Round(4).Float64()
 
@@ -5354,3 +5365,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
+}