Browse Source

截面组合图

xyxie 9 months ago
parent
commit
b89aadd889

+ 5 - 5
models/data_manage/chart_info.go

@@ -2357,11 +2357,11 @@ type RadarYData struct {
 // 截面组合图额外配置
 type ChartSectionExtraConf struct {
 	DateConfList        []*ChartSectionDateConfItem
-	IsHeap              int     `description:"是否堆积(1.堆积,0不堆积)"`
-	XDataList           []XData `description:"横轴名称设置"`
-	UnitList            []YData `description:"纵轴单位设置"`
-	BaseChartSeriesName int     `description:"基准系列名称"`
-	SortType            int     `description:"排序类型,0默认,1升序,2降序"`
+	IsHeap              int      `description:"是否堆积(1.堆积,0不堆积)"`
+	XDataList           []XData  `description:"横轴名称设置"`
+	UnitList            []*XData `description:"纵轴单位设置"`
+	BaseChartSeriesName string   `description:"基准系列名称"`
+	SortType            int      `description:"排序类型,0默认,1升序,2降序"`
 }
 
 // 截面组合图额外配置

+ 214 - 15
models/data_manage/chart_series.go

@@ -1,23 +1,222 @@
 package data_manage
 
+import (
+	"encoding/json"
+	"fmt"
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
 type ChartSeries struct {
-	ChartSeriesId int     `description:"column(chart_series_id);pk"`
-	SeriesName    string  `description:"系列名称"`
-	SeriesNameEn  string  `description:"系列英文名称"`
-	ChartInfoId   int     `description:"图表ID"`
-	ChartStyle    string  `description:"图表类型"`
-	ChartColor    string  `description:"颜色"`
-	ChartWidth    int     `description:"线条大小"`
-	IsPoint       int     `description:"是否用数据点展示(0 否,1是)"`
-	IsNumber      int     `description:"是否用数值展示(0 否,1是)"`
-	IsAxis        int     `description:"1:左轴,0:右轴"`
-	MaxData       float64 `description:"上限"`
-	MinData       float64 `description:"下限"`
-	IsOrder       bool    `description:"true:正序,false:逆序"`
-	CreateTime    string  `description:"创建时间"`
-	ModifyTime    string  `description:"修改时间"`
+	ChartSeriesId int       `orm:"column(chart_series_id);pk"`
+	SeriesName    string    `description:"系列名称"`
+	SeriesNameEn  string    `description:"系列英文名称"`
+	ChartInfoId   int       `description:"图表ID"`
+	ChartStyle    string    `description:"图表类型"`
+	ChartColor    string    `description:"颜色"`
+	ChartWidth    int       `description:"线条大小"`
+	IsPoint       int       `description:"是否用数据点展示(0 否,1是)"`
+	IsNumber      int       `description:"是否用数值展示(0 否,1是)"`
+	IsAxis        int       `description:"1:左轴,0:右轴"`
+	MaxData       float64   `description:"上限"`
+	MinData       float64   `description:"下限"`
+	IsOrder       bool      `description:"true:正序,false:逆序"`
+	CreateTime    time.Time `description:"创建时间"`
+	ModifyTime    time.Time `description:"修改时间"`
 }
 
 func (c *ChartSeries) TableName() string {
 	return "chart_series"
 }
+
+func GetChartSeriesByChartInfoId(chartInfoId int) (items []*ChartSeries, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := "SELECT * FROM chart_series WHERE chart_info_id = ?"
+	_, err = o.Raw(sql, chartInfoId).QueryRows(&items)
+	return
+}
+
+// EditChartSeriesAndEdbMapping
+func EditChartSeriesAndEdbMapping(extraConfigStr string, chartInfoId int) (err error) {
+	o := orm.NewOrmUsingDB("data")
+	to, err := o.Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err != nil {
+			_ = to.Rollback()
+		} else {
+			_ = to.Commit()
+		}
+	}()
+
+	// 获取已经存在的系列
+	series, err := GetChartSeriesByChartInfoId(chartInfoId)
+	if err != nil {
+		return
+	}
+	//整理成系列map
+	seriesMap := make(map[int]struct{})
+	seriesDeleteMap := make(map[int]struct{})
+	for _, v := range series {
+		seriesMap[v.ChartSeriesId] = struct{}{}
+		seriesDeleteMap[v.ChartSeriesId] = struct{}{}
+	}
+	var sectionExtraConfig ChartSectionAllExtraConf
+	err = json.Unmarshal([]byte(extraConfigStr), &sectionExtraConfig)
+	if err != nil {
+		err = fmt.Errorf("截面组合图配置异常")
+		return
+	}
+
+	// 删除所有的指标映射
+	_, err = o.Raw("DELETE FROM chart_series_edb_mapping WHERE chart_info_id = ?", chartInfoId).Exec()
+	if err != nil {
+		return
+	}
+
+	seriesList := sectionExtraConfig.SeriesList
+	for _, v := range seriesList {
+		seriesId := v.ChartSeriesId
+		tmp := &ChartSeries{
+			ChartSeriesId: v.ChartSeriesId,
+			SeriesName:    v.SeriesName,
+			SeriesNameEn:  v.SeriesNameEn,
+			ChartInfoId:   chartInfoId,
+			ChartStyle:    v.ChartStyle,
+			ChartColor:    v.ChartColor,
+			ChartWidth:    v.ChartWidth,
+			IsPoint:       v.IsPoint,
+			IsNumber:      v.IsNumber,
+			IsAxis:        v.IsAxis,
+			MaxData:       v.MaxData,
+			MinData:       v.MinData,
+			ModifyTime:    time.Now(),
+		}
+		if _, ok := seriesMap[v.ChartSeriesId]; !ok {
+			//新增
+			delete(seriesDeleteMap, v.ChartSeriesId)
+			tmp.CreateTime = time.Now()
+			seriesIdTmp, e := to.Insert(tmp)
+			if e != nil {
+				err = fmt.Errorf("AddChartSeries Err:" + e.Error())
+				return
+			}
+			seriesId = int(seriesIdTmp)
+
+		} else {
+			_, e := to.Update(tmp)
+			if e != nil {
+				err = fmt.Errorf("UpdateChartSeries Err:" + e.Error())
+				return
+			}
+		}
+
+		addSeriesEdbList := make([]*ChartSeriesEdbMapping, 0)
+		for _, edbItem := range v.EdbInfoList {
+			dateConfStrByte, e := json.Marshal(edbItem.DateConf)
+			if e != nil {
+				err = e
+				return
+			}
+			dateConfStr := string(dateConfStrByte)
+			edbTmp := &ChartSeriesEdbMapping{
+				ChartSeriesId: seriesId,    //todo 系列ID
+				ChartInfoId:   chartInfoId, //todo 表图ID
+				EdbInfoId:     edbItem.EdbInfoId,
+				//EdbAliasName:            "",
+				//EdbAliasNameEn:          "",
+				DateConfName: edbItem.DateConfName,
+				DateConf:     dateConfStr,
+				CreateTime:   time.Now(),
+				ModifyTime:   time.Now(),
+			}
+			addSeriesEdbList = append(addSeriesEdbList, edbTmp)
+		}
+		if len(addSeriesEdbList) > 0 {
+			_, err = to.InsertMulti(len(addSeriesEdbList), addSeriesEdbList)
+			if err != nil {
+				err = fmt.Errorf("AddChartSeries Err:" + err.Error())
+				return
+			}
+		}
+	}
+	return
+}
+
+func AddChartSeriesAndEdbMapping(extraConfigStr string, chartInfoId int) (err error) {
+	o := orm.NewOrmUsingDB("data")
+	to, err := o.Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err != nil {
+			_ = to.Rollback()
+		} else {
+			_ = to.Commit()
+		}
+	}()
+
+	var sectionExtraConfig ChartSectionAllExtraConf
+	err = json.Unmarshal([]byte(extraConfigStr), &sectionExtraConfig)
+	if err != nil {
+		err = fmt.Errorf("截面组合图配置异常")
+		return
+	}
+	seriesList := sectionExtraConfig.SeriesList
+	for _, v := range seriesList {
+		tmp := &ChartSeries{
+			SeriesName:   v.SeriesName,
+			SeriesNameEn: v.SeriesNameEn,
+			ChartInfoId:  chartInfoId,
+			ChartStyle:   v.ChartStyle,
+			ChartColor:   v.ChartColor,
+			ChartWidth:   v.ChartWidth,
+			IsPoint:      v.IsPoint,
+			IsNumber:     v.IsNumber,
+			IsAxis:       v.IsAxis,
+			MaxData:      v.MaxData,
+			MinData:      v.MinData,
+			IsOrder:      false, //todo 是否排序
+			CreateTime:   time.Now(),
+			ModifyTime:   time.Now(),
+		}
+		seriesIdTmp, e := to.Insert(tmp)
+		if e != nil {
+			err = fmt.Errorf("AddChartSeries Err:" + e.Error())
+			return
+		}
+		seriesId := int(seriesIdTmp)
+		addSeriesEdbList := make([]*ChartSeriesEdbMapping, 0)
+		for _, edbItem := range v.EdbInfoList {
+			dateConfStrByte, e := json.Marshal(edbItem.DateConf)
+			if e != nil {
+				err = e
+				return
+			}
+			dateConfStr := string(dateConfStrByte)
+			edbTmp := &ChartSeriesEdbMapping{
+				ChartSeriesId: seriesId,    //todo 系列ID
+				ChartInfoId:   chartInfoId, //todo 表图ID
+				EdbInfoId:     edbItem.EdbInfoId,
+				//EdbAliasName:            "",
+				//EdbAliasNameEn:          "",
+				DateConfName: edbItem.DateConfName,
+				DateConf:     dateConfStr,
+				CreateTime:   time.Now(),
+				ModifyTime:   time.Now(),
+			}
+			addSeriesEdbList = append(addSeriesEdbList, edbTmp)
+		}
+		if len(addSeriesEdbList) > 0 {
+			_, e = to.InsertMulti(len(addSeriesEdbList), addSeriesEdbList)
+			if e != nil {
+				err = fmt.Errorf("AddChartSeries Err:" + e.Error())
+				return
+			}
+		}
+	}
+	return
+}

+ 9 - 2
models/data_manage/chart_series_edb_mapping.go

@@ -1,15 +1,15 @@
 package data_manage
 
 import (
+	"github.com/beego/beego/v2/client/orm"
 	"time"
 )
 
 type ChartSeriesEdbMapping struct {
-	ChartSeriesEdbMappingId int       `description:"column(chart_series_edb_mapping_id);pk"`
+	ChartSeriesEdbMappingId int       `orm:"column(chart_series_edb_mapping_id);pk"`
 	ChartSeriesId           int       `description:"系列ID"`
 	ChartInfoId             int       `description:"图表ID"`
 	EdbInfoId               int       `description:"指标id"`
-	IsOrder                 int       `description:"1:正序,0:逆序"`
 	EdbAliasName            string    `description:"中文别名"`
 	EdbAliasNameEn          string    `description:"英文别名"`
 	DateConfName            string    `description:"引用日期配置名称"`
@@ -21,3 +21,10 @@ type ChartSeriesEdbMapping struct {
 func (c *ChartSeriesEdbMapping) TableName() string {
 	return "chart_series_edb_mapping"
 }
+
+func GetChartSeriesEdbByChartInfoId(chartInfoId int) (items []*ChartSeriesEdbMapping, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := "SELECT * FROM chart_series_edb_mapping WHERE chart_info_id = ?"
+	_, err = o.Raw(sql, chartInfoId).QueryRows(&items)
+	return
+}

+ 2 - 0
models/db.go

@@ -351,6 +351,8 @@ func initChart() {
 		new(data_manage.MyChartClassifyMapping),
 		new(data_manage.ChartInfoLog),
 		new(data_manage.ChartInfoCorrelation),
+		new(data_manage.ChartSeries),
+		new(data_manage.ChartSeriesEdbMapping),
 	)
 }
 

+ 120 - 2
services/data/chart_extra_config.go

@@ -12,9 +12,8 @@ import (
 	"time"
 )
 
-func HandleExtraConfig(chartType int, extraConfigStr string) (newExtraConfigStr string, err error, errMsg string) {
+func HandleExtraConfig(chartType int, extraConfigStr string) (newExtraConfigStr string, newAllExtraConfigStr string, err error, errMsg string) {
 	newExtraConfigStr = extraConfigStr
-
 	switch chartType {
 	case 10: // 截面散点图
 		var tmpExtraConfig data_manage.SectionScatterReq
@@ -31,6 +30,48 @@ func HandleExtraConfig(chartType int, extraConfigStr string) (newExtraConfigStr
 		}
 
 		newExtraConfigStr, err, errMsg = handleSectionScatterChartData(tmpExtraConfig)
+	case utils.CHART_TYPE_SECTION_COMBINE:
+		//整理组合图的配置信息,将部分信息存入其他表
+		// 预览和详情都走这个接口
+		var sectionExtraConfig data_manage.ChartSectionAllExtraConf
+		if extraConfigStr == `` {
+			errMsg = "截面组合图未配置"
+			err = errors.New(errMsg)
+			return
+		}
+		err = json.Unmarshal([]byte(extraConfigStr), &sectionExtraConfig)
+		if err != nil {
+			errMsg = "截面组合图配置异常"
+			err = errors.New(errMsg)
+			return
+		}
+		newAllExtraConfig, e, msg := handleChartSectionCombineData(sectionExtraConfig)
+		if e != nil {
+			err = e
+			errMsg = msg
+			return
+		}
+		newAllExtraConfigByte, e := json.Marshal(newAllExtraConfig)
+		if e != nil {
+			err = e
+			return
+		}
+		newAllExtraConfigStr = string(newAllExtraConfigByte)
+
+		newExtraConfig := &data_manage.ChartSectionExtraConf{
+			DateConfList:        newAllExtraConfig.DateConfList,
+			IsHeap:              newAllExtraConfig.IsHeap,
+			XDataList:           newAllExtraConfig.XDataList,
+			UnitList:            newAllExtraConfig.UnitList,
+			BaseChartSeriesName: newAllExtraConfig.BaseChartSeriesName,
+			SortType:            newAllExtraConfig.SortType,
+		}
+		extraConfigByte, e := json.Marshal(newExtraConfig)
+		if e != nil {
+			err = e
+			return
+		}
+		extraConfigStr = string(extraConfigByte)
 	}
 	return
 }
@@ -201,6 +242,83 @@ func GetEnNameMapByCnNameList(cnNameList []string) (contentEnMap map[string]stri
 	return
 }
 
+// handleSectionScatterChartData 截面组合图的数据处理
+func handleChartSectionCombineData(extraConfig data_manage.ChartSectionAllExtraConf) (newExtraConfig data_manage.ChartSectionAllExtraConf, err error, errMsg string) {
+	translateNameList := make([]string, 0)
+	translateNameMap := make(map[string]bool, 0)
+	for _, v := range extraConfig.DateConfList {
+		if _, ok := translateNameMap[v.DateConfName]; !ok && v.DateConfNameEn == "" {
+			translateNameMap[v.DateConfName] = true
+			tmpName := strings.TrimSuffix(v.DateConfName, " ")
+			tmpName = strings.TrimPrefix(tmpName, " ")
+			translateNameList = append(translateNameList, tmpName)
+		}
+	}
+
+	for _, v := range extraConfig.UnitList {
+		if _, ok := translateNameMap[v.Name]; !ok && v.NameEn == "" {
+			translateNameMap[v.Name] = true
+			tmpName := strings.TrimSuffix(v.Name, " ")
+			tmpName = strings.TrimPrefix(tmpName, " ")
+			translateNameList = append(translateNameList, tmpName)
+		}
+	}
+	for _, v := range extraConfig.XDataList {
+		if _, ok := translateNameMap[v.Name]; !ok && v.NameEn == "" {
+			translateNameMap[v.Name] = true
+			tmpName := strings.TrimSuffix(v.Name, " ")
+			tmpName = strings.TrimPrefix(tmpName, " ")
+			translateNameList = append(translateNameList, tmpName)
+		}
+	}
+	for _, v := range extraConfig.SeriesList {
+		if v.SeriesNameEn == `` {
+			if _, ok := translateNameMap[v.SeriesName]; !ok {
+				translateNameMap[v.SeriesName] = true
+				tmpName := strings.TrimSuffix(v.SeriesName, " ")
+				tmpName = strings.TrimPrefix(tmpName, " ")
+				translateNameList = append(translateNameList, tmpName)
+			}
+		}
+	}
+
+	// 获取英文名称map
+	enNameMap, _, _ := GetEnNameMapByCnNameList(translateNameList)
+
+	for k, seriesItem := range extraConfig.SeriesList {
+		if len(seriesItem.EdbInfoList) <= 0 {
+			errMsg = "指标不能为空"
+			err = errors.New(errMsg)
+			return
+		}
+		if seriesItem.SeriesNameEn == `` { //系列英文名称
+			if tmpNameEn, ok := enNameMap[seriesItem.SeriesName]; ok {
+				seriesItem.SeriesNameEn = tmpNameEn
+			}
+		}
+		extraConfig.SeriesList[k] = seriesItem
+	}
+
+	for k, v := range extraConfig.XDataList {
+		if tmpNameEn, ok := enNameMap[v.Name]; ok && v.NameEn == "" {
+			extraConfig.XDataList[k].NameEn = tmpNameEn
+		}
+	}
+	for k, v := range extraConfig.UnitList {
+		if tmpNameEn, ok := enNameMap[v.Name]; ok && v.NameEn == "" {
+			extraConfig.UnitList[k].NameEn = tmpNameEn
+		}
+	}
+	for k, v := range extraConfig.DateConfList {
+		if tmpNameEn, ok := enNameMap[v.DateConfName]; ok && v.DateConfNameEn == "" {
+			extraConfig.DateConfList[k].DateConfNameEn = tmpNameEn
+		}
+	}
+
+	newExtraConfig = extraConfig
+	return
+}
+
 // GetChartSectionCombineData 截面组合图的数据处理
 func GetChartSectionCombineData(chartInfoId int, mappingList []*data_manage.ChartEdbInfoMapping, edbDataListMap map[int][]*data_manage.EdbDataList, extraConfig data_manage.ChartSectionAllExtraConf) (edbIdList []int, dataListResp data_manage.ChartSectionCombineDataResp, err error) {
 	// 指标数据数组(10086:{"2022-12-02":100.01,"2022-12-01":102.3})

+ 139 - 11
services/data/chart_info.go

@@ -352,12 +352,92 @@ func GetChartEdbData(chartInfoId, chartType int, calendar, startDate, endDate st
 			err = errors.New(errMsg)
 			return
 		}
-		err = json.Unmarshal([]byte(extraConfigStr), &sectionExtraConfig)
-		if err != nil {
-			errMsg = "截面组合图配置异常"
-			err = errors.New(errMsg)
-			return
+		if chartInfoId > 0 {
+			var sectionExtraConfigTmp data_manage.ChartSectionExtraConf
+			err = json.Unmarshal([]byte(extraConfigStr), &sectionExtraConfigTmp)
+			if err != nil {
+				errMsg = "截面组合图配置异常"
+				err = errors.New(errMsg)
+				return
+			}
+			// 查询所有的seriesEdb
+			seriesEdbList, e := data_manage.GetChartSeriesEdbByChartInfoId(chartInfoId)
+			if e != nil {
+				errMsg = "查询seriesEdb失败"
+				err = errors.New(errMsg + e.Error())
+				return
+			}
+			// todo 是否有必要返回单位信息
+			// 组装成map
+			seriesEdbMap := make(map[int][]*data_manage.ChartSectionSeriesEdbConf)
+			for _, v := range seriesEdbList {
+				var dateConf *data_manage.ChartSectionSeriesDateConfItem
+				if v.DateConf != "" {
+					err = json.Unmarshal([]byte(v.DateConf), &dateConf)
+					if err != nil {
+						errMsg = "截面组合图配置异常"
+						err = errors.New(errMsg + e.Error())
+						return
+					}
+				}
+				tmp := &data_manage.ChartSectionSeriesEdbConf{
+					ChartSeriesEdbMappingId: v.ChartSeriesEdbMappingId,
+					ChartSeriesId:           v.ChartSeriesId,
+					ChartInfoId:             v.ChartInfoId,
+					EdbInfoId:               v.EdbInfoId,
+					DateConf:                dateConf,
+					EdbName:                 "",
+					EdbNameEn:               "",
+					Unit:                    "",
+					UnitEn:                  "",
+					DateConfName:            v.DateConfName,
+				}
+				seriesEdbMap[v.ChartSeriesId] = append(seriesEdbMap[v.ChartSeriesId], tmp)
+			}
+			//查询series
+			seriesListTmp, e := data_manage.GetChartSeriesByChartInfoId(chartInfoId)
+			if e != nil {
+				errMsg = "查询series失败"
+				err = errors.New(errMsg + e.Error())
+				return
+			}
+			seriesList := make([]*data_manage.ChartSectionSeriesItem, 0)
+			for _, v := range seriesListTmp {
+
+				tmpSeries := &data_manage.ChartSectionSeriesItem{
+					ChartSeriesId:   v.ChartSeriesId,
+					SeriesName:      v.SeriesName,
+					SeriesNameEn:    v.SeriesNameEn,
+					ChartStyle:      v.ChartStyle,
+					ChartColor:      v.ChartColor,
+					ChartWidth:      v.ChartWidth,
+					IsPoint:         v.IsPoint,
+					IsNumber:        v.IsNumber,
+					IsAxis:          v.IsAxis,
+					MaxData:         v.MaxData,
+					MinData:         v.MinData,
+					IsOrder:         false,
+					EdbInfoList:     nil,
+					DataList:        nil,
+					NoDataEdbIdList: nil,
+				}
+				edbInfoList, ok := seriesEdbMap[v.ChartSeriesId]
+				if ok {
+					tmpSeries.EdbInfoList = edbInfoList
+				}
+				seriesList = append(seriesList, tmpSeries)
+			}
+			sectionExtraConfig.SeriesList = seriesList
+
+		} else {
+			err = json.Unmarshal([]byte(extraConfigStr), &sectionExtraConfig)
+			if err != nil {
+				errMsg = "截面组合图配置异常"
+				err = errors.New(errMsg)
+				return
+			}
 		}
+
 		//校验引用日期名称是否重复
 		dateNameMap := make(map[string]int)
 		dateNameEnMap := make(map[string]int)
@@ -392,7 +472,12 @@ func GetChartEdbData(chartInfoId, chartType int, calendar, startDate, endDate st
 			}
 		}
 
-		//todo 检查基准系列是否设置
+		// 检查基准系列是否设置
+		if sectionExtraConfig.BaseChartSeriesName == "" {
+			errMsg = "截面组合图基准系列名称未设置"
+			err = errors.New(errMsg)
+			return
+		}
 		//todo 如果是详情接口,应该要从其他表里查询配置
 		extraConfig = sectionExtraConfig
 	default:
@@ -1667,7 +1752,29 @@ func CheckChartExtraConfig(chartType int, extraConfigStr string) (edbIdList []in
 			dateNameEnMap[v.DateConfNameEn] = 1
 		}
 
-		// todo 校验系列名称
+		//检查系列名称是否重复
+		seriesNameMap := make(map[string]int)
+		seriesNameEnMap := make(map[string]int)
+		for _, v := range extraConfig.SeriesList {
+			if _, ok := seriesNameMap[v.SeriesName]; ok {
+				errMsg = "截面组合图系列名称设置重复"
+				err = errors.New(errMsg + v.SeriesName)
+				return
+			}
+			if _, ok := seriesNameEnMap[v.SeriesNameEn]; ok {
+				errMsg = "截面组合图系列名称设置重复"
+				err = errors.New(errMsg + v.SeriesNameEn)
+				return
+			}
+		}
+
+		// 检查基准系列是否设置
+		if extraConfig.BaseChartSeriesName == "" {
+			errMsg = "截面组合图基准系列名称未设置"
+			err = errors.New(errMsg)
+			return
+		}
+		//todo 如果是详情接口,应该要从其他表里查询配置
 
 		// 遍历指标列表获取指标id
 		edbIdMap := make(map[int]int)
@@ -2191,7 +2298,8 @@ func AddChartInfo(req data_manage.AddChartInfoReq, sysUserId int, sysUserRealNam
 	}
 
 	// 图表额外配置
-	extraConfig, err, errMsg = HandleExtraConfig(chartType, extraConfig)
+	var allExtraConfig string
+	extraConfig, allExtraConfig, err, errMsg = HandleExtraConfig(chartType, extraConfig)
 	if err != nil {
 		if errMsg == `` {
 			errMsg = "指标异常!"
@@ -2373,7 +2481,14 @@ func AddChartInfo(req data_manage.AddChartInfoReq, sysUserId int, sysUserRealNam
 		err = errors.New("保存失败,Err:" + err.Error())
 		return
 	}
-
+	if chartType == utils.CHART_TYPE_SECTION_COMBINE {
+		err = data_manage.AddChartSeriesAndEdbMapping(allExtraConfig, int(newId))
+		if err != nil {
+			errMsg = `保存失败`
+			err = errors.New("保存失败,Err:" + err.Error())
+			return
+		}
+	}
 	//添加es数据
 	go EsAddOrEditChartInfo(chartInfo.ChartInfoId)
 
@@ -2575,7 +2690,7 @@ func EditChartInfo(req data_manage.EditChartInfoReq, sysUser *system.Admin, lang
 	}
 
 	// 图表额外配置
-	extraConfig, err, errMsg := HandleExtraConfig(req.ChartType, req.ExtraConfig)
+	extraConfig, allExtraConfig, err, errMsg := HandleExtraConfig(req.ChartType, req.ExtraConfig)
 	if err != nil {
 		if errMsg == `` {
 			errMsg = "指标异常!"
@@ -2725,6 +2840,14 @@ func EditChartInfo(req data_manage.EditChartInfoReq, sysUser *system.Admin, lang
 	resp.UniqueCode = chartItem.UniqueCode
 	resp.ChartType = req.ChartType
 
+	if chartItem.ChartType == utils.CHART_TYPE_SECTION_COMBINE {
+		err = data_manage.EditChartSeriesAndEdbMapping(allExtraConfig, chartItem.ChartInfoId)
+		if err != nil {
+			errMsg = "保存失败"
+			err = errors.New("保存失败,Err:" + err.Error())
+			return
+		}
+	}
 	//添加es数据
 	go EsAddOrEditChartInfo(chartItem.ChartInfoId)
 	//修改my eta es数据
@@ -3323,7 +3446,12 @@ func GetChartEdbDataV2(chartInfoId, chartType int, calendar, startDate, endDate
 			}
 		}
 
-		//todo 检查基准系列是否设置
+		// 检查基准系列是否设置
+		if sectionExtraConfig.BaseChartSeriesName == "" {
+			errMsg = "截面组合图基准系列名称未设置"
+			err = errors.New(errMsg)
+			return
+		}
 		//todo 如果是详情接口,应该要从其他表里查询配置
 	default:
 		xEdbIdValue = make([]int, 0)

+ 2 - 2
services/data/chart_info_excel_balance.go

@@ -180,7 +180,7 @@ func addBalanceExcelChart(req request.AddBalanceTableChartReq, sysUserId int, sy
 	}
 
 	// 图表额外配置
-	extraConfig, err, errMsg = HandleExtraConfig(chartType, extraConfig)
+	extraConfig, _, err, errMsg = HandleExtraConfig(chartType, extraConfig)
 	if err != nil {
 		if errMsg == `` {
 			errMsg = "指标异常!"
@@ -482,7 +482,7 @@ func editBalanceExcelChart(req request.AddBalanceTableChartReq) (chartInfo *data
 	}*/
 
 	// 图表额外配置
-	extraConfig, err, errMsg = HandleExtraConfig(chartType, extraConfig)
+	extraConfig, _, err, errMsg = HandleExtraConfig(chartType, extraConfig)
 	if err != nil {
 		if errMsg == `` {
 			errMsg = "指标异常!"