Browse Source

雷达图调整

xyxie 1 year ago
parent
commit
7796ea10e8

+ 17 - 5
controllers/data_manage/chart_info.go

@@ -3136,15 +3136,23 @@ func (this *ChartInfoController) PreviewRadarChartInfo() {
 	}
 
 	chartType := utils.CHART_TYPE_RADAR
-	edbInfoIdArr, err, errMsg := data.CheckChartExtraConfig(chartType, req.ExtraConfig)
-	if err != nil {
-		br.Msg = errMsg
-		br.ErrMsg = "添加失败:" + err.Error()
+	if len(req.ChartEdbInfoList) <= 0 {
+		br.Msg = "请选择指标"
 		return
 	}
 
+	edbInfoIdArr := make([]int, 0)
+	edbInfoNameMap := make(map[int]string)
+	for _, v := range req.ChartEdbInfoList {
+		edbInfoIdArr = append(edbInfoIdArr, v.EdbInfoId)
+		edbInfoNameMap[v.EdbInfoId] = v.EdbAliasName
+	}
 	mappingList, err := data_manage.GetChartEdbMappingListByEdbInfoIdList(edbInfoIdArr)
-
+	for _, v := range mappingList {
+		if name, ok := edbInfoNameMap[v.EdbInfoId]; ok {
+			v.EdbAliasName = name
+		}
+	}
 	// 获取图表中的指标数据
 	edbList, xEdbIdValue, yDataList, dataResp, err, errMsg := data.GetChartEdbData(0, chartType, "", "", "", mappingList, req.ExtraConfig, "")
 	if err != nil {
@@ -3176,6 +3184,10 @@ func (this *ChartInfoController) PreviewRadarChartInfo() {
 		IsCopy:    true,
 		IsSetName: chartInfo.IsSetName,
 	}
+	// 图表的指标来源
+	sourceNameList, sourceNameEnList := data.GetEdbSourceByEdbInfoIdList(edbList)
+	chartInfo.ChartSource = strings.Join(sourceNameList, ",")
+	chartInfo.ChartSourceEn = strings.Join(sourceNameEnList, ",")
 
 	resp := new(data_manage.ChartInfoDetailResp)
 	resp.ChartInfo = chartInfo

+ 1 - 1
controllers/data_manage/chart_theme.go

@@ -170,7 +170,7 @@ func (c *ChartThemeController) GetThemePreviewData() {
 		edbInfoIdList = []int{1, 2, 3, 4, 5}
 		chartInfo.LeftMin = "260"
 		chartInfo.LeftMax = "430"
-		extraConfigStr = `{"EdbInfoIdList":[{"EdbInfoId":1,"Name":"指标1","NameEn":"","Source":0},{"EdbInfoId":2,"Name":"指标2","NameEn":"","Source":0},{"EdbInfoId":3,"Name":"指标3","NameEn":"","Source":0},{"EdbInfoId":4,"Name":"指标4","NameEn":"","Source":0},{"EdbInfoId":5,"Name":"指标5","NameEn":"","Source":0}],"DateList":[{"Type":2,"Date":"","Value":100,"Color":"#00f","Name":""},{"Type":1,"Date":"","Value":0,"Color":"#f00","Name":""}],"Unit":"千桶","UnitEn":""}`
+		extraConfigStr = `{"DateList":[{"Type":2,"Date":"","Value":100,"Color":"#00f","Name":""},{"Type":1,"Date":"","Value":0,"Color":"#f00","Name":""}],"Unit":"千桶","UnitEn":""}`
 		chartInfo.ChartName = "雷达图"
 	default:
 		br.Msg = "暂不支持该类型"

+ 5 - 4
models/data_manage/chart_info.go

@@ -1903,13 +1903,13 @@ func EditChartInfoExtraConfig(chartId int, extraConfig string) (err error) {
 
 // PreviewRadarChartReq 预览雷达图的请求入参
 type PreviewRadarChartReq struct {
-	ExtraConfig string `description:"图表额外配置信息,json字符串"`
+	ChartEdbInfoList []*ChartSaveItem `description:"指标及配置信息"`
+	ExtraConfig      string           `description:"图表额外配置信息,json字符串"`
 }
 
 // RadarChartInfoReq 雷达图预览请求数据
 type RadarChartInfoReq struct {
-	EdbInfoIdList []RadarChartInfoEdbItemReq `description:"指标信息"`
-	DateList      []RadarChartInfoDateReq    `description:"日期配置"`
+	DateList []RadarChartInfoDateReq `description:"日期配置"`
 }
 
 // RadarChartInfoEdbItemReq 雷达图预览请求数据(指标相关)
@@ -1931,7 +1931,8 @@ type RadarChartInfoDateReq struct {
 
 // RadarChartInfoResp 雷达图数据
 type RadarChartInfoResp struct {
-	YDataList []RadarYData `description:"数据列"`
+	YDataList   []RadarYData `description:"数据列"`
+	XEdbIdValue []int
 }
 
 // RadarYData 雷达图的y轴数据

+ 26 - 54
services/data/chart_info.go

@@ -394,26 +394,7 @@ func GetChartEdbData(chartInfoId, chartType int, calendar, startDate, endDate st
 		}
 	case utils.CHART_TYPE_RADAR: //雷达图
 		radarConf := extraConfig.(data_manage.RadarChartInfoReq)
-		xEdbIdValue, dataResp, err = RadarChartData(edbDataListMap, radarConf)
-
-		// todo 中英文单位设置
-		/*
-			chartDataResp := dataResp.(data_manage.RadarChartInfoResp)
-			for k := range chartDataResp.YDataList {
-				yDataList[k].Unit = radarConf.Unit
-				yDataList[k].UnitEn = radarConf.UnitEn
-			}*/
-
-		for _, v := range edbList {
-			// 指标别名
-			if radarConf.EdbInfoIdList != nil && len(radarConf.EdbInfoIdList) > 0 {
-				for _, reqEdb := range radarConf.EdbInfoIdList {
-					if v.EdbInfoId == reqEdb.EdbInfoId {
-						v.EdbAliasName = reqEdb.Name
-					}
-				}
-			}
-		}
+		xEdbIdValue, dataResp, err = RadarChartData(mappingList, edbDataListMap, radarConf)
 	}
 	return
 }
@@ -1512,25 +1493,17 @@ func CheckChartExtraConfig(chartType int, extraConfigStr string) (edbIdList []in
 		}
 	case utils.CHART_TYPE_RADAR:
 		var extraConfig data_manage.RadarChartInfoReq
-		err = json.Unmarshal([]byte(extraConfigStr), &extraConfig)
-		if err != nil {
+		if extraConfigStr == `` {
+			errMsg = "雷达图未配置"
+			err = errors.New(errMsg)
 			return
 		}
-		// 判断是否有填写指标
-		if len(extraConfig.EdbInfoIdList) <= 0 {
-			errMsg = `请选择指标`
+		err = json.Unmarshal([]byte(extraConfigStr), &extraConfig)
+		if err != nil {
+			errMsg = "雷达图配置异常"
 			err = errors.New(errMsg)
 			return
 		}
-		// 遍历指标列表获取指标id
-		edbIdMap := make(map[int]int)
-		for _, v := range extraConfig.EdbInfoIdList {
-			// X 轴的指标id
-			if _, ok := edbIdMap[v.EdbInfoId]; !ok {
-				edbIdMap[v.EdbInfoId] = v.EdbInfoId
-				edbIdList = append(edbIdList, v.EdbInfoId)
-			}
-		}
 	}
 	return
 }
@@ -1914,7 +1887,12 @@ func AddChartInfo(req data_manage.AddChartInfoReq, sysUserId int, sysUserRealNam
 
 	chartType := req.ChartType
 	extraConfig := req.ExtraConfig
-
+	var extraConfigEdbInfoIdArr []int
+	extraConfigEdbInfoIdArr, err, errMsg = CheckChartExtraConfig(chartType, extraConfig)
+	if err != nil {
+		err = errors.New("添加失败:" + err.Error())
+		return
+	}
 	// 季节性图表额外配置信息
 	var seasonExtraConfig string
 	// 关联指标
@@ -1990,14 +1968,7 @@ func AddChartInfo(req data_manage.AddChartInfoReq, sysUserId int, sysUserRealNam
 			err = errors.New(errMsg)
 			return
 		}
-
-		tmpEdbInfoIdArr, tmpErr, tmpErrMsg := CheckChartExtraConfig(chartType, extraConfig)
-		if err != nil {
-			errMsg = tmpErrMsg
-			err = errors.New("添加失败:" + tmpErr.Error())
-			return
-		}
-		edbInfoIdArr = tmpEdbInfoIdArr
+		edbInfoIdArr = extraConfigEdbInfoIdArr
 		lenEdbInfoIdArr := len(edbInfoIdArr)
 		if lenEdbInfoIdArr > 0 {
 			tmpEdbList, tmpErr := data_manage.GetEdbInfoByIdList(edbInfoIdArr)
@@ -2272,6 +2243,13 @@ func EditChartInfo(req data_manage.EditChartInfoReq, sysUser *system.Admin) (cha
 		return
 	}
 
+	var extraConfigEdbInfoIdArr []int
+	extraConfigEdbInfoIdArr, err, errMsg = CheckChartExtraConfig(req.ChartType, req.ExtraConfig)
+	if err != nil {
+		err = errors.New("添加失败:" + err.Error())
+		return
+	}
+
 	// 季节性图表额外配置信息
 	var seasonExtraConfig string
 	// 图表关联指标id
@@ -2353,14 +2331,7 @@ func EditChartInfo(req data_manage.EditChartInfoReq, sysUser *system.Admin) (cha
 			return
 		}
 
-		// 校验配置的指标列表
-		tmpEdbInfoIdArr, tmpErr, tmpErrMsg := CheckChartExtraConfig(req.ChartType, req.ExtraConfig)
-		if tmpErr != nil {
-			errMsg = tmpErrMsg
-			err = errors.New("添加失败:" + tmpErr.Error())
-			return
-		}
-		edbInfoIdArr = tmpEdbInfoIdArr
+		edbInfoIdArr = extraConfigEdbInfoIdArr
 		lenEdbInfoIdArr := len(edbInfoIdArr)
 		if lenEdbInfoIdArr > 0 {
 			tmpEdbList, tmpErr := data_manage.GetEdbInfoByIdList(edbInfoIdArr)
@@ -2570,7 +2541,7 @@ func GetEdbSourceByEdbInfoIdList(chartEdbInfoMappingList []*data_manage.ChartEdb
 }
 
 // RadarChartData 雷达图的数据处理
-func RadarChartData(edbDataListMap map[int][]*data_manage.EdbDataList, extraConfig data_manage.RadarChartInfoReq) (edbIdList []int, chartDataResp data_manage.RadarChartInfoResp, err error) {
+func RadarChartData(mappingList []*data_manage.ChartEdbInfoMapping, edbDataListMap map[int][]*data_manage.EdbDataList, extraConfig data_manage.RadarChartInfoReq) (edbIdList []int, chartDataResp data_manage.RadarChartInfoResp, 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 {
@@ -2582,7 +2553,7 @@ func RadarChartData(edbDataListMap map[int][]*data_manage.EdbDataList, extraConf
 	}
 	// edbIdList 指标展示顺序;x轴的指标顺序
 	edbIdList = make([]int, 0)
-	for _, v := range extraConfig.EdbInfoIdList {
+	for _, v := range mappingList {
 		edbIdList = append(edbIdList, v.EdbInfoId)
 	}
 	chartDateList := extraConfig.DateList
@@ -2677,7 +2648,8 @@ func RadarChartData(edbDataListMap map[int][]*data_manage.EdbDataList, extraConf
 	}
 
 	chartDataResp = data_manage.RadarChartInfoResp{
-		YDataList: yDataList,
+		YDataList:   yDataList,
+		XEdbIdValue: edbIdList,
 	}
 	return
 }

+ 1 - 20
services/data/chart_theme.go

@@ -119,26 +119,7 @@ func GetThemePreviewChartEdbData(chartType int, calendar, startDate, endDate str
 
 	case utils.CHART_TYPE_RADAR: //雷达图
 		radarConf := extraConfig.(data_manage.RadarChartInfoReq)
-		xEdbIdValue, dataResp, err = RadarChartData(edbDataListMap, radarConf)
-
-		// todo 中英文单位设置
-		/*
-			chartDataResp := dataResp.(data_manage.RadarChartInfoResp)
-			for k := range chartDataResp.YDataList {
-				yDataList[k].Unit = radarConf.Unit
-				yDataList[k].UnitEn = radarConf.UnitEn
-			}*/
-
-		for _, v := range edbList {
-			// 指标别名
-			if radarConf.EdbInfoIdList != nil && len(radarConf.EdbInfoIdList) > 0 {
-				for _, reqEdb := range radarConf.EdbInfoIdList {
-					if v.EdbInfoId == reqEdb.EdbInfoId {
-						v.EdbAliasName = reqEdb.Name
-					}
-				}
-			}
-		}
+		xEdbIdValue, dataResp, err = RadarChartData(mappingList, edbDataListMap, radarConf)
 	}
 	return
 }