浏览代码

Merge branch 'pool/817'

Roc 1 年之前
父节点
当前提交
51a842fdc2

+ 10 - 10
controllers/data_manage/correlation/correlation_chart_info.go

@@ -696,7 +696,6 @@ func (this *CorrelationChartInfoController) Detail() {
 
 	var dataResp interface{} // 绘图数据返回(目前是滚动相关性的图)
 	var xEdbIdValue []int
-	var xDateTimeValue []string
 	var yDataList []data_manage.YData
 	switch chartInfo.Source {
 	case utils.CHART_SOURCE_CORRELATION: // 相关性图
@@ -717,10 +716,11 @@ func (this *CorrelationChartInfoController) Detail() {
 		}
 	case utils.CHART_SOURCE_ROLLING_CORRELATION: // 滚动相关性图
 		startDate, endDate := utils.GetDateByDateType(correlationChart.DateType, correlationChart.StartDate.Format(utils.FormatDate), correlationChart.EndDate.Format(utils.FormatDate))
-		xDateTimeValue, yDataList, e = correlationServ.GetRollingCorrelationChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB, correlationChart.LeadValue, correlationChart.LeadUnit, correlationChart.CalculateValue, correlationChart.CalculateUnit, startDate, endDate)
-		dataResp = data_manage.RollingCorrelationChartDataResp{
-			XDateTimeValue: xDateTimeValue,
-			YDataList:      yDataList,
+		dataResp, e = correlationServ.GetRollingCorrelationChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB, correlationChart.LeadValue, correlationChart.LeadUnit, correlationChart.CalculateValue, correlationChart.CalculateUnit, startDate, endDate, chartInfo.ChartName, chartInfo.ChartNameEn)
+		if e != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取滚动相关性图表, 图表计算值失败, Err:" + e.Error()
+			return
 		}
 	}
 
@@ -1175,7 +1175,6 @@ func GetChartInfoDetailFromUniqueCode(chartInfo *data_manage.ChartInfoView, isCa
 
 	var dataResp interface{} // 绘图数据返回(目前是滚动相关性的图)
 	var xEdbIdValue []int
-	var xDateTimeValue []string
 	var yDataList []data_manage.YData
 	switch chartInfo.Source {
 	case utils.CHART_SOURCE_CORRELATION: // 相关性图
@@ -1197,10 +1196,11 @@ func GetChartInfoDetailFromUniqueCode(chartInfo *data_manage.ChartInfoView, isCa
 	case utils.CHART_SOURCE_ROLLING_CORRELATION: // 滚动相关性图
 		startDate, endDate := utils.GetDateByDateType(correlationChart.DateType, correlationChart.StartDate.Format(utils.FormatDate), correlationChart.EndDate.Format(utils.FormatDate))
 
-		xDateTimeValue, yDataList, e = correlationServ.GetRollingCorrelationChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB, correlationChart.LeadValue, correlationChart.LeadUnit, correlationChart.CalculateValue, correlationChart.CalculateUnit, startDate, endDate)
-		dataResp = data_manage.RollingCorrelationChartDataResp{
-			XDateTimeValue: xDateTimeValue,
-			YDataList:      yDataList,
+		dataResp, e = correlationServ.GetRollingCorrelationChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB, correlationChart.LeadValue, correlationChart.LeadUnit, correlationChart.CalculateValue, correlationChart.CalculateUnit, startDate, endDate, chartInfo.ChartName, chartInfo.ChartNameEn)
+		if e != nil {
+			msg = "获取失败"
+			errMsg = "获取滚动相关性图表, 图表计算值失败, Err:" + e.Error()
+			return
 		}
 	}
 

+ 12 - 11
controllers/data_manage/multiple_graph_config.go

@@ -295,6 +295,8 @@ func (this *ChartInfoController) MultipleGraphPreview() {
 		correlationConf := req.Correlation
 		// 配置了数据才有返回
 		if correlationConf.LeadValue > 0 {
+			tmpChartInfo := *chartInfo
+
 			moveUnitDays, ok := utils.FrequencyDaysMap[correlationConf.CalculateUnit]
 			if !ok {
 				br.Msg = "错误的分析周期"
@@ -310,7 +312,7 @@ func (this *ChartInfoController) MultipleGraphPreview() {
 				return
 			}
 
-			tmpChartInfo := *chartInfo
+			tmpChartInfo.ChartName += fmt.Sprint(`(`, correlationConf.CalculateValue, correlationConf.CalculateUnit, `)`)
 			tmpChartInfo.Source = utils.CHART_SOURCE_CORRELATION
 			resp.CorrelationData = response.CorrelationResp{
 				ChartInfo:   tmpChartInfo,
@@ -352,12 +354,6 @@ func (this *ChartInfoController) MultipleGraphPreview() {
 			rollingCorrelationData := make([]interface{}, 0)
 			for _, rollingCorrelationConf := range rollingCorrelationConfList {
 				if rollingCorrelationConf.CalculateValue > 0 && rollingCorrelationConf.CalculateUnit != `` {
-					xDateTimeValue, yDataList, e := correlationServ.GetRollingCorrelationChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB, rollingCorrelationConf.LeadValue, rollingCorrelationConf.LeadUnit, rollingCorrelationConf.CalculateValue, rollingCorrelationConf.CalculateUnit, startDate, endDate)
-					if e != nil {
-						br.Msg = "获取失败"
-						br.ErrMsg = "获取滚动相关性图表, 图表计算值失败, Err:" + e.Error()
-						return
-					}
 					tmpChartInfo := *chartInfo
 					tmpChartInfo.Source = utils.CHART_SOURCE_ROLLING_CORRELATION
 					// ”指标A名称“+”指标B名称“+"滚动相关性"+”滚动相关性计算窗口值“+”滚动相关性计算窗口单位“
@@ -372,11 +368,16 @@ func (this *ChartInfoController) MultipleGraphPreview() {
 					} else {
 						tmpChartInfo.ChartName = fmt.Sprintf(`%s与%s(领先%d%s)%d%s滚动相关性`, edbInfoMappingA.EdbName, edbInfoMappingB.EdbName, int(math.Abs(float64(rollingCorrelationConf.LeadValue))), rollingCorrelationConf.LeadUnit, rollingCorrelationConf.CalculateValue, rollingCorrelationConf.CalculateUnit)
 					}
+					dataResp, e := correlationServ.GetRollingCorrelationChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB, rollingCorrelationConf.LeadValue, rollingCorrelationConf.LeadUnit, rollingCorrelationConf.CalculateValue, rollingCorrelationConf.CalculateUnit, startDate, endDate, tmpChartInfo.ChartName, tmpChartInfo.ChartNameEn)
+					if e != nil {
+						br.Msg = "获取失败"
+						br.ErrMsg = "获取滚动相关性图表, 图表计算值失败, Err:" + e.Error()
+						return
+					}
 					rollingCorrelationData = append(rollingCorrelationData, response.RollingCorrelationResp{
-						ChartInfo:      tmpChartInfo,
-						EdbInfoList:    mappingList,
-						XDateTimeValue: xDateTimeValue,
-						YDataList:      yDataList,
+						ChartInfo:   tmpChartInfo,
+						EdbInfoList: mappingList,
+						DataResp:    dataResp,
 						CorrelationChartInfo: data_manage.CorrelationInfo{
 							LeadValue:       rollingCorrelationConf.LeadValue,
 							LeadUnit:        rollingCorrelationConf.LeadUnit,

+ 1 - 2
models/data_manage/response/multiple_graph_config.go

@@ -26,8 +26,7 @@ type CorrelationResp struct {
 type RollingCorrelationResp struct {
 	ChartInfo            data_manage.ChartInfoView
 	EdbInfoList          []*data_manage.ChartEdbInfoMapping
-	XDateTimeValue       []string                    `description:"柱方图的x轴数据,指标id"`
-	YDataList            []data_manage.YData         `description:"柱方图的y轴数据"`
+	DataResp             interface{}
 	CorrelationChartInfo data_manage.CorrelationInfo `description:"相关性图表信息"`
 }
 

+ 72 - 11
services/data/correlation/chart_info.go

@@ -379,10 +379,41 @@ func GetChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB *data_manage.ChartEd
 	return
 }
 
+// RollingCorrelationChartDataResp 滚动相关性图表数据
+type RollingCorrelationChartDataResp struct {
+	MaxData             float64
+	MinData             float64
+	LatestDate          string `description:"真实数据的最后日期"`
+	EdbInfoCategoryType int
+	ChartColor          string
+	ChartStyle          string
+	PredictChartColor   string
+	ChartType           int
+	ChartWidth          int
+	EdbName             string
+	EdbNameEn           string
+	Unit                string
+	UnitEn              string
+	IsAxis              int
+	DataList            []data_manage.EdbDataList
+}
+
 // GetRollingCorrelationChartDataByEdbInfo 滚动相关性计算
-func GetRollingCorrelationChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB *data_manage.ChartEdbInfoMapping, leadValue int, leadUnit string, calculateValue int, calculateUnit string, startDate, endDate string) (xDateTimeValue []string, yDataList []data_manage.YData, err error) {
-	xDateTimeValue = make([]string, 0)
-	yData := make([]float64, 0)
+func GetRollingCorrelationChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB *data_manage.ChartEdbInfoMapping, leadValue int, leadUnit string, calculateValue int, calculateUnit string, startDate, endDate, chartName, chartNameEn string) (dataResp RollingCorrelationChartDataResp, err error) {
+	dataResp = RollingCorrelationChartDataResp{
+		DataList:          make([]data_manage.EdbDataList, 0),
+		MaxData:           0,
+		MinData:           0,
+		ChartColor:        "#00f",
+		ChartStyle:        `spline`,
+		PredictChartColor: `#00f`,
+		ChartType:         0,
+		ChartWidth:        3,
+		EdbName:           chartName,
+		EdbNameEn:         chartNameEn,
+		IsAxis:            1,
+	}
+	dataList := make([]data_manage.EdbDataList, 0)
 
 	// 计算窗口,不包含第一天
 	startDateTime, _ := time.ParseInLocation(utils.FormatDate, startDate, time.Local)
@@ -457,6 +488,8 @@ func GetRollingCorrelationChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB *d
 		endDateTime, _ := time.ParseInLocation(utils.FormatDate, endDate, time.Local)
 		endDateTime = endDateTime.AddDate(0, 0, -(calculateDay - 1))
 
+		// 是否开始第一条数据
+		var isStart, isNotFirst bool
 		for currDay := startDateTime; !currDay.After(endDateTime); currDay = currDay.AddDate(0, 0, 1) {
 			yCalculateData := make([]float64, 0)
 			baseCalculateData := make([]float64, 0)
@@ -479,18 +512,46 @@ func GetRollingCorrelationChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB *d
 			var ratio float64
 			if len(baseCalculateData) > 0 {
 				ratio = utils.CalculateCorrelationByIntArr(baseCalculateData, yCalculateData)
+			} else {
+				// 没有数据的话,那就不返回
+				continue
+			}
+
+			// 过滤前面都是0的数据
+			{
+				if ratio != 0 {
+					isStart = true
+				}
+
+				if !isStart {
+					continue
+				}
+			}
+
+			dataTime := currDay.AddDate(0, 0, calculateDay-1)
+			dataList = append(dataList, data_manage.EdbDataList{
+				//EdbDataId:     0,
+				EdbInfoId:     0,
+				DataTime:      dataTime.Format(utils.FormatDate),
+				DataTimestamp: dataTime.UnixNano() / 1e6,
+				Value:         ratio,
+			})
+
+			if !isNotFirst {
+				dataResp.MinData = ratio
+				dataResp.MaxData = ratio
+				isNotFirst = true
+			}
+			if dataResp.MinData > ratio {
+				dataResp.MinData = ratio
+			}
+			if dataResp.MaxData < ratio {
+				dataResp.MaxData = ratio
 			}
-			yData = append(yData, ratio)
-			xDateTimeValue = append(xDateTimeValue, currDay.AddDate(0, 0, calculateDay-1).Format(utils.FormatDate))
 		}
+		dataResp.DataList = dataList
 	}
 
-	yDataList = make([]data_manage.YData, 0)
-	yDate := "0000-00-00"
-	yDataList = append(yDataList, data_manage.YData{
-		Date:  yDate,
-		Value: yData,
-	})
 	return
 }