浏览代码

截面组合图

xyxie 9 月之前
父节点
当前提交
2e851db0dd
共有 3 个文件被更改,包括 176 次插入28 次删除
  1. 120 0
      models/chart_info.go
  2. 32 26
      models/chart_series.go
  3. 24 2
      services/chart_info.go

+ 120 - 0
models/chart_info.go

@@ -1895,3 +1895,123 @@ type RadarYData struct {
 	Name  string    `description:"别名"`
 	Value []float64 `description:"每个指标的值"`
 }
+
+// 截面组合图额外配置
+type ChartSectionExtraConf struct {
+	DateConfList        []*ChartSectionDateConfItem
+	IsHeap              int                      `description:"是否堆积(1.堆积,0不堆积)"`
+	XDataList           []XData                  `description:"横轴名称设置"`
+	UnitList            *ChartSectionCombineUnit `description:"纵轴单位设置"`
+	BaseChartSeriesName string                   `description:"基准系列名称"`
+	SortType            int                      `description:"排序类型,0默认,1升序,2降序"`
+}
+
+// 截面组合图额外配置
+type ChartSectionAllExtraConf struct {
+	ChartSectionExtraConf
+	SeriesList []*ChartSectionSeriesItem
+}
+
+type ChartSectionDateConfItem struct {
+	MoveForward    int    `description:"前移的期数"`
+	EdbInfoId      int    `description:"指标ID"`
+	EdbName        string `description:"指标名称"`
+	EdbNameEn      string `description:"指标名称英文"`
+	EdbInfoType    int    `description:"指标类型"`
+	Frequency      string `description:"频度"`
+	EndDate        string `description:"最新日期"`
+	DateType       int    `description:"日期类型:0 指标日期,1系统日期"`
+	DateConfName   string `description:"引用日期名称"` // 引用日期名称不能重复
+	DateConfNameEn string `description:"引用日期英文名称"`
+	DateChange     []*ChartSectionDateChange
+}
+
+// 截面组合图引用日期配置
+type ChartSectionDateChange struct {
+	Year         int
+	Month        int
+	Day          int
+	Frequency    string `description:"频度变换"`
+	FrequencyDay string `description:"频度的固定日期"`
+	ChangeType   int    `description:"日期变换类型1日期位移,2指定频率"`
+}
+
+// 截面组合图系列配置
+type ChartSectionSeriesItem struct {
+	ChartSeriesId int     `description:"系列ID"`
+	SeriesName    string  `description:"系列名称"` //系列名称不可同名
+	SeriesNameEn  string  `description:"系列英文名称"`
+	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:逆序"`
+	EdbInfoList    []*ChartSectionSeriesEdbConf
+	DataList       []float64
+	NoDataEdbIndex []int
+}
+type ChartSectionSeriesEdbConf struct {
+	ChartSeriesEdbMappingId int `description:"映射ID"`
+	ChartSeriesId           int `description:"系列ID"`
+	//ChartInfoId             int `description:"图表ID"`
+	EdbInfoId    int `description:"指标id"`
+	DateConf     *ChartSectionSeriesDateConfItem
+	EdbName      string `description:"中文别名"`
+	EdbNameEn    string `description:"英文别名"`
+	EdbInfoType  int    `description:"指标类型"`
+	Unit         string `description:"单位"`
+	UnitEn       string `description:"英文单位"`
+	DateConfName string `description:"引用日期名称"`
+	DateConfType int    `description:"日期类型,0指标最新日期, 1引用日期"`
+}
+
+type ChartSectionCombineDataResp struct {
+	DateConfList        []*ChartSectionDateConfItem
+	IsHeap              int                      `description:"是否堆积(1.堆积,0不堆积)"`
+	XDataList           []XData                  `description:"横轴名称设置"`
+	UnitList            *ChartSectionCombineUnit `description:"纵轴单位设置"`
+	BaseChartSeriesName string                   `description:"基准系列名称"`
+	SortType            int                      `description:"排序类型,0默认,1升序,2降序"`
+	SeriesList          []*ChartSectionSeriesItem
+	LeftMin             string `description:"图表左侧最小值"`
+	LeftMax             string `description:"图表左侧最大值"`
+	RightMin            string `description:"图表右侧最小值"`
+	RightMax            string `description:"图表右侧最大值"`
+	Right2Min           string `description:"图表右侧最小值"`
+	Right2Max           string `description:"图表右侧最大值"`
+}
+
+// 系列里的指标日期配置
+type ChartSectionSeriesDateConfItem struct {
+	MoveForward int `description:"前移的期数"`
+	DateChange  []*ChartSectionDateChange
+}
+
+// PreviewSectionCombineChartReq 预览截面组合图的请求
+type PreviewSectionCombineChartReq struct {
+	ChartName       string `description:"图表名称"`
+	ChartClassifyId int    `description:"分类id"`
+	ExtraConfig     string `description:"图表额外配置信息,json字符串"`
+}
+
+type ChartSectionCombineUnit struct {
+	LeftName       string `description:"左轴单位"`
+	LeftNameEn     string `description:"左轴英文单位"`
+	RightName      string `description:"右轴单位"`
+	RightNameEn    string `description:"右轴英文单位"`
+	RightTwoName   string `description:"右2轴单位"`
+	RightTwoNameEn string `description:"右2轴英文单位"`
+}
+
+// 时序组合图额外配置
+type ChartTimeCombineExtraConf struct {
+	IsHeap int `description:"是否堆积(1.堆积,0不堆积)"`
+}
+
+type ChartTimeCombineDataResp struct {
+	IsHeap int `description:"是否堆积(1.堆积,0不堆积)"`
+}

+ 32 - 26
models/chart_series.go

@@ -37,7 +37,7 @@ func GetChartSeriesByChartInfoId(chartInfoId int) (items []*ChartSeries, err err
 }
 
 // EditChartSeriesAndEdbMapping
-func EditChartSeriesAndEdbMapping(seriesList []*ChartSeries, seriesEdbInfoList []*ChartSeriesEdbMapping, chartInfoId int) (err error) {
+func EditChartSeriesAndEdbMapping(seriesList []*ChartSeries, seriesEdbInfoList []*ChartSeriesEdbMapping, chartInfoId int, newEdbInfoMap map[int]int) (err error) {
 	o := orm.NewOrm()
 	to, err := o.Begin()
 	if err != nil {
@@ -114,19 +114,22 @@ func EditChartSeriesAndEdbMapping(seriesList []*ChartSeries, seriesEdbInfoList [
 		mappingList, ok := seriesEdbMap[v.ChartSeriesId]
 		if ok {
 			for _, edbItem := range mappingList {
-				edbTmp := &ChartSeriesEdbMapping{
-					ChartSeriesId: seriesId,    //todo 系列ID
-					ChartInfoId:   chartInfoId, //todo 表图ID
-					EdbInfoId:     edbItem.EdbInfoId,
-					//EdbAliasName:            "",
-					//EdbAliasNameEn:          "",
-					DateConfName: edbItem.DateConfName,
-					DateConf:     edbItem.DateConf,
-					DateConfType: edbItem.DateConfType,
-					CreateTime:   time.Now(),
-					ModifyTime:   time.Now(),
+				newEdbInfoId, ok1 := newEdbInfoMap[edbItem.EdbInfoId]
+				if ok1 {
+					edbTmp := &ChartSeriesEdbMapping{
+						ChartSeriesId: seriesId,    //todo 系列ID
+						ChartInfoId:   chartInfoId, //todo 表图ID
+						EdbInfoId:     newEdbInfoId,
+						//EdbAliasName:            "",
+						//EdbAliasNameEn:          "",
+						DateConfName: edbItem.DateConfName,
+						DateConf:     edbItem.DateConf,
+						DateConfType: edbItem.DateConfType,
+						CreateTime:   time.Now(),
+						ModifyTime:   time.Now(),
+					}
+					addSeriesEdbList = append(addSeriesEdbList, edbTmp)
 				}
-				addSeriesEdbList = append(addSeriesEdbList, edbTmp)
 			}
 			if len(addSeriesEdbList) > 0 {
 				_, err = to.InsertMulti(len(addSeriesEdbList), addSeriesEdbList)
@@ -154,7 +157,7 @@ func EditChartSeriesAndEdbMapping(seriesList []*ChartSeries, seriesEdbInfoList [
 	return
 }
 
-func AddChartSeriesAndEdbMapping(seriesList []*ChartSeries, seriesEdbInfoList []*ChartSeriesEdbMapping, chartInfoId int) (err error) {
+func AddChartSeriesAndEdbMapping(seriesList []*ChartSeries, seriesEdbInfoList []*ChartSeriesEdbMapping, chartInfoId int, newEdbInfoMap map[int]int) (err error) {
 	o := orm.NewOrm()
 	to, err := o.Begin()
 	if err != nil {
@@ -197,19 +200,22 @@ func AddChartSeriesAndEdbMapping(seriesList []*ChartSeries, seriesEdbInfoList []
 		mappingList, ok := seriesEdbMap[v.ChartSeriesId]
 		if ok {
 			for _, edbItem := range mappingList {
-				edbTmp := &ChartSeriesEdbMapping{
-					ChartSeriesId: seriesId,    //todo 系列ID
-					ChartInfoId:   chartInfoId, //todo 表图ID
-					EdbInfoId:     edbItem.EdbInfoId,
-					//EdbAliasName:            "",
-					//EdbAliasNameEn:          "",
-					DateConfName: edbItem.DateConfName,
-					DateConfType: edbItem.DateConfType,
-					DateConf:     edbItem.DateConf,
-					CreateTime:   time.Now(),
-					ModifyTime:   time.Now(),
+				newEdbInfoId, ok1 := newEdbInfoMap[edbItem.EdbInfoId]
+				if ok1 {
+					edbTmp := &ChartSeriesEdbMapping{
+						ChartSeriesId: seriesId,    //todo 系列ID
+						ChartInfoId:   chartInfoId, //todo 表图ID
+						EdbInfoId:     newEdbInfoId,
+						//EdbAliasName:            "",
+						//EdbAliasNameEn:          "",
+						DateConfName: edbItem.DateConfName,
+						DateConfType: edbItem.DateConfType,
+						DateConf:     edbItem.DateConf,
+						CreateTime:   time.Now(),
+						ModifyTime:   time.Now(),
+					}
+					addSeriesEdbList = append(addSeriesEdbList, edbTmp)
 				}
-				addSeriesEdbList = append(addSeriesEdbList, edbTmp)
 			}
 			if len(addSeriesEdbList) > 0 {
 				_, e = to.InsertMulti(len(addSeriesEdbList), addSeriesEdbList)

+ 24 - 2
services/chart_info.go

@@ -243,7 +243,7 @@ func AddChartInfo(req *models.AddChartReq, sysUserId int, sysUserRealName string
 		return
 	}
 	if chartInfo.ChartType == utils.CHART_TYPE_SECTION_COMBINE {
-		err = models.AddChartSeriesAndEdbMapping(req.ChartSeries, req.ChartSeriesEdbMapping, chartInfo.ChartInfoId)
+		err = models.AddChartSeriesAndEdbMapping(req.ChartSeries, req.ChartSeriesEdbMapping, chartInfo.ChartInfoId, newEdbInfoIdMap)
 		if err != nil {
 			errMsg = `保存失败`
 			err = errors.New("保存失败,Err:" + err.Error())
@@ -539,7 +539,7 @@ func UpdateChartInfoAndEdbInfo(req *models.AddChartReq, sysUserId int, sysUserRe
 		return
 	}
 	if chartInfo.ChartType == utils.CHART_TYPE_SECTION_COMBINE {
-		err = models.EditChartSeriesAndEdbMapping(req.ChartSeries, req.ChartSeriesEdbMapping, chartInfo.ChartInfoId)
+		err = models.EditChartSeriesAndEdbMapping(req.ChartSeries, req.ChartSeriesEdbMapping, chartInfo.ChartInfoId, newEdbInfoIdMap)
 		if err != nil {
 			errMsg = "保存失败"
 			err = errors.New("保存失败,Err:" + err.Error())
@@ -712,6 +712,28 @@ func transferChartConfigEdbInfoId(chartInfo *models.ChartInfo, newEdbInfoIdMap m
 		}
 		chartInfo.ExtraConfig = string(configStr)
 		return
+	case utils.CHART_TYPE_SECTION_COMBINE:
+		// 预览和详情都走这个接口
+		var sectionExtraConfig models.ChartSectionAllExtraConf
+		err = json.Unmarshal([]byte(chartInfo.ExtraConfig), &sectionExtraConfig)
+		if err != nil {
+			errMsg = "截面组合图配置异常"
+			err = errors.New(errMsg)
+			return
+		}
+		//替换里面的edbInfoId
+		for i := 0; i < len(sectionExtraConfig.DateConfList); i++ {
+			if newId, ok := newEdbInfoIdMap[sectionExtraConfig.DateConfList[i].EdbInfoId]; ok {
+				sectionExtraConfig.DateConfList[i].EdbInfoId = newId
+			}
+		}
+		configStr, e := json.Marshal(sectionExtraConfig)
+		if e != nil {
+			errMsg = "截面组合图配置异常"
+			err = errors.New(errMsg + "json.Marshal 失败" + e.Error())
+			return
+		}
+		chartInfo.ExtraConfig = string(configStr)
 	}
 	return
 }