瀏覽代碼

fix;新增、编辑主题时,返回图表详情时,返回对应的主题样式

Roc 1 年之前
父節點
當前提交
380c7fd85d

+ 19 - 0
controllers/data_manage/chart_info.go

@@ -786,6 +786,15 @@ func (this *ChartInfoController) ChartInfoDetail() {
 			return
 		}
 		chartType = chartInfo.ChartType
+
+		// 获取主题样式
+		chartTheme, err := data.GetChartThemeConfig(chartInfo.ChartThemeId, chartInfo.Source, chartInfo.ChartType)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取主题信息失败,Err:" + err.Error()
+			return
+		}
+		chartInfo.ChartThemeStyle = chartTheme.Config
 	}
 
 	mappingList := make([]*data_manage.ChartEdbInfoMapping, 0)
@@ -2009,6 +2018,16 @@ func GetChartInfoDetailFromUniqueCode(chartInfo *data_manage.ChartInfoView, isCa
 		}
 	}
 
+	// 获取主题样式
+	chartTheme, err := data.GetChartThemeConfig(chartInfo.ChartThemeId, chartInfo.Source, chartInfo.ChartType)
+	if err != nil {
+		msg = "获取失败"
+		errMsg = "获取主题信息失败,Err:" + err.Error()
+		return
+	}
+	
+	chartInfo.ChartThemeStyle = chartTheme.Config
+
 	chartInfoId := chartInfo.ChartInfoId
 
 	dateType := chartInfo.DateType

+ 1 - 1
controllers/data_manage/chart_theme.go

@@ -262,7 +262,7 @@ func (c *ChartThemeController) Add() {
 	}
 
 	// 获取系统默认配置
-	systemChartTheme, err := chart_theme.GetSystemChartThemeItem(req.ChartThemeTypeId)
+	systemChartTheme, err := chart_theme.GetSystemChartTheme(req.ChartThemeTypeId)
 	if err != nil {
 		br.Msg = "添加失败"
 		br.ErrMsg = "添加失败,查询系统默认配置异常,Err:" + err.Error()

+ 32 - 1
models/data_manage/chart_info.go

@@ -42,6 +42,11 @@ type ChartInfo struct {
 	ExtraConfig       string `description:"图表额外配置,json数据"`
 	SeasonExtraConfig string `description:"季节性图表中的配置,json数据"`
 	StartYear         int    `description:"当选择的日期类型为最近N年类型时,即date_type=20, 用start_year表示N"`
+	ChartThemeId      int    `description:"图表应用主题ID"`
+	SourcesFrom       string `description:"图表来源"`
+	Instructions      string `description:"图表说明"`
+	MarkersLines      string `description:"标识线"`
+	MarkersAreas      string `description:"标识区"`
 }
 
 type ChartInfoMore struct {
@@ -224,6 +229,11 @@ type EditChartInfoReq struct {
 	ExtraConfig          string                  `description:"图表额外配置信息,json字符串"`
 	SeasonExtraConfig    SeasonExtraItem         `description:"季节性图表中的配置,json数据"`
 	StartYear            int                     `description:"当选择的日期类型为最近N年类型时,即date_type=20, 用start_year表示N"`
+	ChartThemeId         int                     `description:"图表应用主题ID"`
+	SourcesFrom          string                  `description:"图表来源"`
+	Instructions         string                  `description:"图表说明"`
+	MarkersLines         string                  `description:"标识线"`
+	MarkersAreas         string                  `description:"标识区"`
 }
 
 type EditChartEnInfoReq struct {
@@ -685,6 +695,11 @@ func EditChartInfoAndMapping(req *EditChartInfoReq, edbInfoIdStr string, calenda
 	pars = append(pars, req.ExtraConfig)
 	pars = append(pars, seasonExtra)
 	pars = append(pars, req.StartYear)
+	pars = append(pars, req.ChartThemeId)
+	pars = append(pars, req.SourcesFrom)
+	pars = append(pars, req.Instructions)
+	pars = append(pars, req.MarkersLines)
+	pars = append(pars, req.MarkersAreas)
 
 	sql := ` UPDATE  chart_info
 			SET
@@ -697,7 +712,12 @@ func EditChartInfoAndMapping(req *EditChartInfoReq, edbInfoIdStr string, calenda
               bar_config = ?,
               extra_config = ?, 
               season_extra_config = ?,
- 			  start_year = ?
+ 			  start_year = ?,
+ 			  chart_theme_id = ?,
+ 			  sources_from = ?,
+ 			  instructions = ?,
+ 			  markers_lines = ?,
+ 			  markers_areas = ?
 			`
 	if calendar != "" {
 		sql += `,calendar = ? `
@@ -1041,6 +1061,11 @@ type AddChartInfoReq struct {
 	ChartImage           string                  `description:"封面图" json:"-"`
 	SeasonExtraConfig    SeasonExtraItem         `description:"季节性图表中的配置,json数据"`
 	StartYear            int                     `description:"当选择的日期类型为最近N年类型时,即date_type=20, 用start_year表示N"`
+	ChartThemeId         int                     `description:"图表应用主题ID"`
+	SourcesFrom          string                  `description:"图表来源"`
+	Instructions         string                  `description:"图表说明"`
+	MarkersLines         string                  `description:"标识线"`
+	MarkersAreas         string                  `description:"标识区"`
 }
 
 type PreviewChartInfoReq struct {
@@ -1345,6 +1370,12 @@ type ChartInfoView struct {
 	Button            ChartViewButton `description:"操作按钮"`
 	SeasonExtraConfig string          `description:"季节性图表中的配置,json数据"`
 	StartYear         int             `description:"当选择的日期类型为最近N年类型时,即date_type=20, 用start_year表示N"`
+	ChartThemeId      int             `description:"图表应用主题ID"`
+	ChartThemeStyle   string          `description:"图表应用主题样式"`
+	SourcesFrom       string          `description:"图表来源"`
+	Instructions      string          `description:"图表说明"`
+	MarkersLines      string          `description:"标识线"`
+	MarkersAreas      string          `description:"标识区"`
 }
 
 type ChartViewButton struct {

+ 3 - 3
models/data_manage/chart_theme/chart_theme.go

@@ -134,14 +134,14 @@ func GetChartThemeItemList(chartThemeTypeId int) (list []*ChartThemeItem, err er
 	return
 }
 
-// GetSystemChartThemeItem
+// GetSystemChartTheme
 // @Description: 根据图表类型id获取系统配置
 // @author: Roc
 // @datetime 2023-12-14 14:26:35
 // @param chartThemeTypeId int
-// @return list []*ChartThemeConfig
+// @return item *ChartTheme
 // @return err error
-func GetSystemChartThemeItem(chartThemeTypeId int) (item *ChartThemeItem, err error) {
+func GetSystemChartTheme(chartThemeTypeId int) (item *ChartTheme, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := `SELECT a.* FROM chart_theme a
          WHERE a.chart_theme_type_id = ? AND a.is_system_theme=1 ORDER BY a.chart_theme_id ASC `

+ 42 - 0
services/data/chart_info.go

@@ -5,6 +5,7 @@ import (
 	"errors"
 	"eta/eta_api/models/company"
 	"eta/eta_api/models/data_manage"
+	"eta/eta_api/models/data_manage/chart_theme"
 	"eta/eta_api/models/system"
 	"eta/eta_api/services/alarm_msg"
 	"eta/eta_api/utils"
@@ -1821,6 +1822,24 @@ func AddChartInfo(req data_manage.AddChartInfoReq, sysUserId int, sysUserRealNam
 		isSendEmail = false
 		return
 	}
+	if req.ChartThemeId <= 0 {
+		errMsg = "请选择主题"
+		err = errors.New(errMsg)
+		isSendEmail = false
+		return
+	}
+
+	// 判断主题是否存在
+	_, err = chart_theme.GetChartThemeId(req.ChartThemeId)
+	if err != nil {
+		if err.Error() == utils.ErrNoRow() {
+			errMsg = "主题不存在"
+			err = errors.New(errMsg)
+			return
+		}
+		errMsg = "获取主题信息失败"
+		return
+	}
 
 	chartClassify, err := data_manage.GetChartClassifyById(req.ChartClassifyId)
 	if err != nil {
@@ -2083,6 +2102,11 @@ func AddChartInfo(req data_manage.AddChartInfoReq, sysUserId int, sysUserRealNam
 	chartInfo.SeasonExtraConfig = seasonExtraConfig
 	chartInfo.StartYear = req.StartYear
 	chartInfo.Source = utils.CHART_SOURCE_DEFAULT
+	chartInfo.ChartThemeId = req.ChartThemeId
+	chartInfo.SourcesFrom = req.SourcesFrom
+	chartInfo.Instructions = req.Instructions
+	chartInfo.MarkersLines = req.MarkersLines
+	chartInfo.MarkersAreas = req.MarkersAreas
 	newId, err := data_manage.AddChartInfo(chartInfo)
 	if err != nil {
 		errMsg = `保存失败`
@@ -2144,6 +2168,24 @@ func EditChartInfo(req data_manage.EditChartInfoReq, sysUser *system.Admin) (cha
 		isSendEmail = false
 		return
 	}
+	if req.ChartThemeId <= 0 {
+		errMsg = "请选择主题!"
+		err = errors.New(errMsg)
+		isSendEmail = false
+		return
+	}
+
+	// 判断主题是否存在
+	_, err = chart_theme.GetChartThemeId(req.ChartThemeId)
+	if err != nil {
+		if err.Error() == utils.ErrNoRow() {
+			errMsg = "主题不存在"
+			err = errors.New(errMsg)
+			return
+		}
+		errMsg = "获取主题信息失败"
+		return
+	}
 
 	chartClassify, err := data_manage.GetChartClassifyById(req.ChartClassifyId)
 	if err != nil {

+ 34 - 0
services/data/chart_theme.go

@@ -544,3 +544,37 @@ func getThemePreviewSectionScatterChartData(mappingList []*data_manage.ChartEdbI
 	}
 	return
 }
+
+// GetChartThemeConfig
+// @Description: 根据主题id获取主题信息,如果获取不到的话,那么就获取默认的主题
+// @author: Roc
+// @datetime 2023-12-19 14:31:17
+// @param chartThemeId int
+// @param chartType int
+// @param source int
+// @return chartTheme *chart_theme.ChartTheme
+// @return err error
+func GetChartThemeConfig(chartThemeId, source, chartType int) (chartTheme *chart_theme.ChartTheme, err error) {
+	chartTheme, err = chart_theme.GetChartThemeId(chartThemeId)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		return
+	}
+
+	err = nil
+
+	// 如果找到了,那么就返回
+	if chartTheme != nil {
+		return
+	}
+
+	// 没有找到的话,那么就找默认的主题
+
+	// 查找主题类型id
+	chartThemeType, err := chart_theme.GetChartThemeTypeByChartTypeAndSource(chartType, source)
+	if err != nil {
+		return
+	}
+	chartTheme, err = chart_theme.GetSystemChartTheme(chartThemeType.ChartThemeTypeId)
+
+	return
+}