Browse Source

单因子图例

hsun 8 months ago
parent
commit
7b52f66772

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

@@ -91,7 +91,7 @@ func (this *CorrelationChartInfoController) Preview() {
 
 	//chartInfo.CorrelationLeadUnit = req.LeadUnit
 	// 获取图表x轴y轴
-	xEdbIdValue, yDataList, e := correlationServ.GetChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB, req.LeadValue, req.LeadUnit, req.StartDate, req.EndDate)
+	xEdbIdValue, yDataList, e := correlationServ.GetChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB, req.LeadValue, req.LeadUnit, req.StartDate, req.EndDate, "")
 	if e != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取相关性图表, 图表计算值失败, Err:" + e.Error()
@@ -725,7 +725,7 @@ func (this *CorrelationChartInfoController) Detail() {
 			startDate := time.Now().AddDate(0, 0, -correlationChart.CalculateValue*moveUnitDays).Format(utils.FormatDate)
 			endDate := time.Now().Format(utils.FormatDate)
 
-			xEdbIdValue, yDataList, e = correlationServ.GetChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB, correlationChart.LeadValue, correlationChart.LeadUnit, startDate, endDate)
+			xEdbIdValue, yDataList, e = correlationServ.GetChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB, correlationChart.LeadValue, correlationChart.LeadUnit, startDate, endDate, chartInfo.ExtraConfig)
 			if e != nil {
 				br.Msg = "获取失败"
 				br.ErrMsg = "获取相关性图表, 图表计算值失败, Err:" + e.Error()
@@ -1380,7 +1380,7 @@ func GetChartInfoDetailFromUniqueCode(chartInfo *data_manage.ChartInfoView, isCa
 			startDate := time.Now().AddDate(0, 0, -correlationChart.CalculateValue*moveUnitDays).Format(utils.FormatDate)
 			endDate := time.Now().Format(utils.FormatDate)
 
-			xEdbIdValue, yDataList, e = correlationServ.GetChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB, correlationChart.LeadValue, correlationChart.LeadUnit, startDate, endDate)
+			xEdbIdValue, yDataList, e = correlationServ.GetChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB, correlationChart.LeadValue, correlationChart.LeadUnit, startDate, endDate, chartInfo.ExtraConfig)
 			if e != nil {
 				msg = "获取失败"
 				errMsg = "获取相关性图表, 图表计算值失败, Err:" + e.Error()

+ 15 - 1
controllers/data_manage/multiple_graph_config.go

@@ -318,7 +318,7 @@ func (this *ChartInfoController) MultipleGraphPreview() {
 			}
 			startDate := time.Now().AddDate(0, 0, -correlationConf.CalculateValue*moveUnitDays).Format(utils.FormatDate)
 			endDate := time.Now().Format(utils.FormatDate)
-			xEdbIdValue, yDataList, e := correlationServ.GetChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB, correlationConf.LeadValue, correlationConf.LeadUnit, startDate, endDate)
+			xEdbIdValue, yDataList, e := correlationServ.GetChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB, correlationConf.LeadValue, correlationConf.LeadUnit, startDate, endDate, "")
 			if e != nil {
 				br.Msg = "获取失败"
 				br.ErrMsg = "获取相关性图表, 图表计算值失败, Err:" + e.Error()
@@ -828,6 +828,18 @@ func (this *ChartInfoController) MultipleGraphConfigSaveChart() {
 				startDate, endDate = utils.GetDateByDateType(req.Curve.DateType, req.Curve.StartDate, req.Curve.EndDate)
 			}
 
+			// 图例
+			var extraConfig string
+			if req.CorrelationExtraConfig != nil {
+				b, e := json.Marshal(req.CorrelationExtraConfig)
+				if e != nil {
+					br.Msg = "保存失败"
+					br.ErrMsg = fmt.Sprintf("相关性图表图例信息JSON格式化失败, Err: %v", e)
+					return
+				}
+				extraConfig = string(b)
+			}
+
 			correlationChartInfoReq := data_manage.CorrelationChartInfoReq{
 				LeadValue:          leadValue,
 				LeadUnit:           leadUnit,
@@ -858,6 +870,7 @@ func (this *ChartInfoController) MultipleGraphConfigSaveChart() {
 					ChartType:            utils.CHART_TYPE_CURVE,
 					Calendar:             "公历",
 					CorrelationChartInfo: correlationChartInfoReq,
+					ExtraConfig:          extraConfig,
 				}
 				chartInfo, err, errMsg, isSendEmail = correlationServ.AddChartInfo(addChartReq, chartSource, sysUser, this.Lang)
 			} else {
@@ -868,6 +881,7 @@ func (this *ChartInfoController) MultipleGraphConfigSaveChart() {
 					ChartType:            utils.CHART_TYPE_CURVE,
 					Calendar:             "公历",
 					CorrelationChartInfo: correlationChartInfoReq,
+					ExtraConfig:          extraConfig,
 				}
 				chartInfo, err, errMsg, isSendEmail = correlationServ.EditChartInfo(editChartReq, sysUser, this.Lang)
 				if err != nil {

+ 3 - 1
models/data_manage/chart_info.go

@@ -2006,6 +2006,7 @@ func EditCorrelationChartInfoAndMapping(req *EditChartInfoReq, edbInfoIdStr stri
 	pars = append(pars, req.ChartClassifyId)
 	pars = append(pars, disabled)
 	pars = append(pars, barChartConf)
+	pars = append(pars, req.ExtraConfig)
 
 	sql := ` UPDATE  chart_info
 			SET
@@ -2015,7 +2016,8 @@ func EditCorrelationChartInfoAndMapping(req *EditChartInfoReq, edbInfoIdStr stri
 			  chart_classify_id = ?,
 			  modify_time = NOW(),
               disabled = ?,
-              bar_config = ?
+              bar_config = ?,
+			  extra_config = ?
 			`
 	if calendar != "" {
 		sql += `,calendar = ? `

+ 11 - 10
models/data_manage/request/multiple_graph_config.go

@@ -14,16 +14,17 @@ type SaveMultipleGraphConfigReq struct {
 
 // SaveMultipleGraphChartReq 多图配置的单图保存请求
 type SaveMultipleGraphChartReq struct {
-	Source                int                                    `description:"来源,1:曲线图,2:相关性图;3:滚动相关性图1;4:滚动相关性图2;"`
-	ChartName             string                                 `description:"图表名称"`
-	ClassifyId            int                                    `description:"分类id"`
-	MultipleGraphConfigId int                                    `description:"配置id"`
-	EdbInfoIdA            int                                    `description:"指标A"`
-	EdbInfoIdB            int                                    `description:"指标B"`
-	Curve                 data_manage.CurveConfig                `description:"曲线图配置"`
-	Correlation           data_manage.CorrelationConfig          `description:"相关性配置"`
-	RollingCorrelation    []data_manage.RollingCorrelationConfig `description:"滚动相关性配置"`
-	IsSaveAs              bool                                   `description:"是否另存为,true的话,就是另存为,不会建立与配置的关系"`
+	Source                 int                                          `description:"来源,1:曲线图,2:相关性图;3:滚动相关性图1;4:滚动相关性图2;"`
+	ChartName              string                                       `description:"图表名称"`
+	ClassifyId             int                                          `description:"分类id"`
+	MultipleGraphConfigId  int                                          `description:"配置id"`
+	EdbInfoIdA             int                                          `description:"指标A"`
+	EdbInfoIdB             int                                          `description:"指标B"`
+	Curve                  data_manage.CurveConfig                      `description:"曲线图配置"`
+	Correlation            data_manage.CorrelationConfig                `description:"相关性配置"`
+	RollingCorrelation     []data_manage.RollingCorrelationConfig       `description:"滚动相关性配置"`
+	IsSaveAs               bool                                         `description:"是否另存为,true的话,就是另存为,不会建立与配置的关系"`
+	CorrelationExtraConfig *data_manage.CorrelationChartInfoExtraConfig `description:"普通相关性图表额外设置(含图例)"`
 }
 
 // SaveMultipleGraphEdbReq 多图配置的单指标保存请求

+ 27 - 6
services/data/correlation/chart_info.go

@@ -200,7 +200,7 @@ func GetChartEdbInfoFormat(chartInfoId int, edbInfoMappingA, edbInfoMappingB *da
 }
 
 // GetChartDataByEdbInfo 相关性图表-根据指标信息获取x轴和y轴
-func GetChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB *data_manage.ChartEdbInfoMapping, leadValue int, leadUnit, startDate, endDate string) (xEdbIdValue []int, yDataList []data_manage.YData, err error) {
+func GetChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB *data_manage.ChartEdbInfoMapping, leadValue int, leadUnit, startDate, endDate, extraConfig string) (xEdbIdValue []int, yDataList []data_manage.YData, err error) {
 	xData := make([]int, 0)
 	yData := make([]float64, 0)
 	if leadValue == 0 {
@@ -377,13 +377,30 @@ func GetChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB *data_manage.ChartEd
 		}
 	}
 
+	// 图例
+	var extra data_manage.CorrelationChartInfoExtraConfig
+	legend := new(data_manage.CorrelationChartLegend)
+	if extraConfig != "" {
+		if e := json.Unmarshal([]byte(extraConfig), &extra); e != nil {
+			err = fmt.Errorf("图例解析异常, err: %v", e)
+			return
+		}
+		if len(extra.LegendConfig) > 0 {
+			legend = extra.LegendConfig[0]
+		}
+	}
+
 	xEdbIdValue = xData
 	yDataList = make([]data_manage.YData, 0)
 	yDate := "0000-00-00"
-	yDataList = append(yDataList, data_manage.YData{
-		Date:  yDate,
-		Value: yData,
-	})
+	var y data_manage.YData
+	y.Date = yDate
+	y.Value = yData
+	if legend != nil {
+		y.Name = legend.LegendName
+		y.Color = legend.Color
+	}
+	yDataList = append(yDataList, y)
 	return
 }
 
@@ -589,12 +606,13 @@ func ChartInfoRefresh(chartInfoId int) (err error) {
 		errMsg = "获取相关性图表, A指标mapping信息失败, Err:" + err.Error()
 		return
 	}
+	// TODO:多因子刷新
 	edbInfoMappingB, err := data_manage.GetChartEdbMappingByEdbInfoId(correlationChart.EdbInfoIdSecond)
 	if err != nil {
 		errMsg = "获取相关性图表, B指标mapping信息失败, Err:" + err.Error()
 		return
 	}
-	periodData, correlationData, err := GetChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB, correlationChart.LeadValue, correlationChart.LeadUnit, correlationChart.StartDate.Format(utils.FormatDate), correlationChart.EndDate.Format(utils.FormatDate))
+	periodData, correlationData, err := GetChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB, correlationChart.LeadValue, correlationChart.LeadUnit, correlationChart.StartDate.Format(utils.FormatDate), correlationChart.EndDate.Format(utils.FormatDate), "")
 	if err != nil {
 		errMsg = "获取相关性图表, 图表计算值失败, Err:" + err.Error()
 		return
@@ -821,6 +839,9 @@ func AddChartInfo(req data_manage.AddChartInfoReq, source int, sysUser *system.A
 	chartInfo.Instructions = req.Instructions
 	chartInfo.MarkersLines = req.MarkersLines
 	chartInfo.MarkersAreas = req.MarkersAreas
+	if req.ExtraConfig != "" {
+		chartInfo.ExtraConfig = req.ExtraConfig
+	}
 
 	// 指标信息
 	mapList := make([]*data_manage.ChartEdbMapping, 0)