zwxi 1 éve
szülő
commit
b0ef519089

+ 234 - 0
controllers/data_manage/chart_info.go

@@ -3234,3 +3234,237 @@ func (this *ChartInfoController) PreviewRadarChartInfo() {
 	br.Msg = "获取成功"
 	br.Data = resp
 }
+
+// ChartInfoDetail
+// @Title 获取图表详情-数据转换
+// @Description 获取图表详情接口-数据转换
+// @Param   ChartInfoId   query   int  true       "图表id"
+// @Param   DateType   query   int  true       "日期类型:1:00年至今,2:10年至今,3:15年至今,4:年初至今,5:自定义时间"
+// @Param   StartDate   query   string  true       "自定义开始日期"
+// @Param   EndDate   query   string  true       "自定义结束日期"
+// @Param   Calendar   query   string  true       "公历/农历"
+// @Param   SeasonStartDate   query   string  true       "季节性图开始日期"
+// @Param   SeasonEndDate   query   string  true       "季节性图结束日期"
+// @Param   EdbInfoId   query   string  true       "指标ID,多个用英文逗号隔开"
+// @Param   ChartType   query   int  true       "生成样式:1:曲线图,2:季节性图"
+// @Success 200 {object} data_manage.ChartInfoDetailResp
+// @router /chart_info/convert/detail [get]
+func (this *ChartInfoController) ChartInfoConvertDetail() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+	chartInfoId, _ := this.GetInt("ChartInfoId")
+
+	dateType, _ := this.GetInt("DateType")
+	fmt.Println("dateType:", dateType)
+	if dateType <= 0 {
+		dateType = 3
+	}
+
+	startDate := this.GetString("StartDate")
+	endDate := this.GetString("EndDate")
+	startYear, _ := this.GetInt("StartYear")
+
+	edbInfoId := this.GetString("EdbInfoId")
+	chartType, _ := this.GetInt("ChartType")
+
+	calendar := this.GetString("Calendar")
+	if calendar == "" {
+		calendar = "公历"
+	}
+
+	isConvert, _ := this.GetInt("IsConvert")
+	convertType, _ := this.GetInt("ConvertType")
+	convertValue, _ := this.GetFloat("ConvertValue")
+	convertUnit := this.GetString("ConvertUnit")
+	convertEnUnit := this.GetString("ConvertEnUnit")
+
+
+	var err error
+	chartInfo := new(data_manage.ChartInfoView)
+	if chartInfoId > 0 {
+		chartInfo, err = data_manage.GetChartInfoViewById(chartInfoId)
+		if err != nil {
+			if err.Error() == utils.ErrNoRow() {
+				br.Msg = "该图表已删除,自动查看下一图表"
+				br.ErrMsg = "该图表已删除,自动查看下一图表,Err:" + err.Error()
+				br.Ret = 406
+				return
+			}
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取图表信息失败,Err:" + err.Error()
+			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
+		chartInfo.ChartThemeId = chartTheme.ChartThemeId
+	}
+
+	mappingList := make([]*data_manage.ChartEdbInfoMapping, 0)
+	if chartInfoId > 0 {
+		mappingList, err = data_manage.GetChartEdbMappingList(chartInfoId)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取图表,指标信息失败,Err:" + err.Error()
+			return
+		}
+	} else {
+		if edbInfoId != "" {
+			mappingList, err = data_manage.GetChartEdbMappingListByEdbInfoId(edbInfoId)
+			if err != nil {
+				br.Msg = "获取失败"
+				br.ErrMsg = "获取图表,指标信息失败,Err:" + err.Error()
+				return
+			}
+			if isConvert == 1  && len(mappingList) > 0 {
+				for i, _ := range mappingList {
+					mappingList[i].IsConvert = 1
+					mappingList[i].ConvertType = convertType
+					mappingList[i].ConvertValue = convertValue
+					mappingList[i].ConvertUnit = convertUnit
+					mappingList[i].ConvertEnUnit = convertEnUnit
+				}
+			}
+		}
+	}
+
+	// 图表额外数据参数
+	extraConfigStr := chartInfo.ExtraConfig
+	// 柱方图的一些配置
+	var barConfig data_manage.BarChartInfoReq
+	if chartInfo != nil && chartInfo.ChartType == 7 {
+		if chartInfo.BarConfig == `` {
+			br.Msg = "柱方图未配置"
+			br.ErrMsg = "柱方图未配置"
+			return
+		}
+		err := json.Unmarshal([]byte(chartInfo.BarConfig), &barConfig)
+		if err != nil {
+			br.Msg = "柱方图配置异常"
+			br.ErrMsg = "柱方图配置异常"
+			return
+		}
+		extraConfigStr = chartInfo.BarConfig
+	}
+	yearMax := 0
+	if dateType == utils.DateTypeNYears {
+		for _, v := range mappingList {
+			if v.LatestDate != "" {
+				lastDateT, tErr := time.Parse(utils.FormatDate, v.LatestDate)
+				if tErr != nil {
+					br.Msg = "获取失败"
+					br.ErrMsg = "获取图表日期信息失败,Err:" + tErr.Error()
+					return
+				}
+				if lastDateT.Year() > yearMax {
+					yearMax = lastDateT.Year()
+				}
+			}
+		}
+	}
+	// 开始/结束日期
+	startDate, endDate = utils.GetDateByDateTypeV2(dateType, startDate, endDate, startYear, yearMax)
+
+	// 获取图表中的指标数据
+	edbList, xEdbIdValue, yDataList, dataResp, err, errMsg := data.GetChartEdbData(chartInfoId, chartType, calendar, startDate, endDate, mappingList, extraConfigStr, chartInfo.SeasonExtraConfig)
+	if err != nil {
+		br.Msg = "获取失败"
+		if errMsg != `` {
+			br.Msg = errMsg
+		}
+		br.ErrMsg = "获取图表,指标信息失败,Err:" + err.Error()
+		return
+	}
+	// 单位
+	if chartType == utils.CHART_TYPE_BAR && len(yDataList) > 0 {
+		chartInfo.Unit = yDataList[0].Unit
+		chartInfo.UnitEn = yDataList[0].UnitEn
+	}
+	warnEdbList := make([]string, 0)
+	for _, v := range edbList {
+		if v.IsNullData {
+			warnEdbList = append(warnEdbList, v.EdbName+"("+v.EdbCode+")")
+		}
+	}
+	if len(warnEdbList) > 0 {
+		chartInfo.WarnMsg = `图表引用指标异常,异常指标:` + strings.Join(warnEdbList, ",")
+	}
+	if chartInfoId > 0 && chartInfo != nil {
+		//判断是否加入我的图库
+		{
+			var myChartCondition string
+			var myChartPars []interface{}
+			myChartCondition += ` AND a.admin_id=? `
+			myChartPars = append(myChartPars, sysUser.AdminId)
+			myChartCondition += ` AND a.chart_info_id=? `
+			myChartPars = append(myChartPars, chartInfo.ChartInfoId)
+
+			myChartList, err := data_manage.GetMyChartByCondition(myChartCondition, myChartPars)
+			if err != nil && err.Error() != utils.ErrNoRow() {
+				br.Msg = "获取失败"
+				br.ErrMsg = "获取我的图表信息失败,GetMyChartByCondition,Err:" + err.Error()
+				return
+			}
+			if myChartList != nil && len(myChartList) > 0 {
+				chartInfo.IsAdd = true
+				chartInfo.MyChartId = myChartList[0].MyChartId
+				chartInfo.MyChartClassifyId = myChartList[0].MyChartClassifyId
+			}
+		}
+		if chartInfo.ChartType == 2 {
+			if chartInfo.SeasonStartDate != "" {
+				chartInfo.StartDate = chartInfo.SeasonStartDate
+				chartInfo.EndDate = chartInfo.SeasonEndDate
+				if chartInfo.DateType == 3 {
+					chartInfo.DateType = 5
+				}
+			}
+		}
+	}
+
+	// 图表的指标来源
+	sourceNameList, sourceNameEnList := data.GetEdbSourceByEdbInfoIdList(edbList)
+	chartInfo.ChartSource = strings.Join(sourceNameList, ",")
+	chartInfo.ChartSourceEn = strings.Join(sourceNameEnList, ",")
+
+	//图表操作权限
+	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId)
+	//判断是否需要展示英文标识
+	chartInfo.IsEnChart = data.CheckIsEnChart(chartInfo.ChartNameEn, edbList, chartInfo.Source, chartInfo.ChartType)
+	chartInfo.Button = data_manage.ChartViewButton{
+		IsEdit:    chartInfo.IsEdit,
+		IsEnChart: chartInfo.IsEnChart,
+		IsAdd:     chartInfo.IsAdd,
+		IsCopy:    true,
+		IsSetName: chartInfo.IsSetName,
+	}
+
+	resp := new(data_manage.ChartInfoDetailResp)
+	resp.ChartInfo = chartInfo
+	resp.EdbInfoList = edbList
+	resp.XEdbIdValue = xEdbIdValue
+	resp.YDataList = yDataList
+	resp.BarChartInfo = barConfig
+	resp.DataResp = dataResp
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}

+ 21 - 10
models/data_manage/chart_info.go

@@ -177,6 +177,11 @@ type ChartSaveItem struct {
 	ChartWidth        float64 `description:"线条大小"`
 	Source            int     `description:"1:ETA图库;2:商品价格曲线"`
 	EdbAliasName      string  `description:"中文别名"`
+	IsConvert         int     `description:"是否数据转换 0不转 1转"`
+	ConvertType       int     `description:"数据转换类型 1乘 2除 3对数"`
+	ConvertValue      float64 `description:"数据转换值"`
+	ConvertUnit       string  `description:"数据转换单位"`
+	ConvertEnUnit     string  `description:"数据转换单位"`
 }
 
 func DeleteChartInfoAndData(chartInfoId int) (err error) {
@@ -472,15 +477,15 @@ type ChartEdbInfoMapping struct {
 	MinValue            float64 `json:"-" description:"最小值"`
 	MaxValue            float64 `json:"-" description:"最大值"`
 	DataList            interface{}
-	IsNullData          bool   `json:"-" description:"是否空数据"`
-	MappingSource       int    `description:"1:ETA图库;2:商品价格曲线"`
-	RegionType          string `description:"交易所来源,海外还是国内" json:"-"`
-	ClassifyId          int    `description:"分类id"`
-	IsConvert           int    `description:"是否数据转换 0不转 1转"`
-	ConvertType         int    `description:"数据转换类型 1乘 2除 3对数"`
-	ConvertValue        float64    `description:"数据转换值"`
-	ConvertUnit         string `description:"数据转换单位"`
-	ConvertEnUnit       string `description:"数据转换单位"`
+	IsNullData          bool    `json:"-" description:"是否空数据"`
+	MappingSource       int     `description:"1:ETA图库;2:商品价格曲线"`
+	RegionType          string  `description:"交易所来源,海外还是国内" json:"-"`
+	ClassifyId          int     `description:"分类id"`
+	IsConvert           int     `description:"是否数据转换 0不转 1转"`
+	ConvertType         int     `description:"数据转换类型 1乘 2除 3对数"`
+	ConvertValue        float64 `description:"数据转换值"`
+	ConvertUnit         string  `description:"数据转换单位"`
+	ConvertEnUnit       string  `description:"数据转换单位"`
 }
 
 type QuarterData struct {
@@ -800,7 +805,13 @@ func EditChartInfoAndMapping(req *EditChartInfoReq, edbInfoIdStr string, calenda
 			tmpChartEdbMapping.PredictChartColor = v.PredictChartColor
 			tmpChartEdbMapping.ChartWidth = v.ChartWidth
 			tmpChartEdbMapping.EdbAliasName = v.EdbAliasName
-			_, err = to.Update(tmpChartEdbMapping, "ModifyTime", "MaxData", "MinData", "IsOrder", "IsAxis", "EdbInfoType", "LeadValue", "LeadUnit", "ChartStyle", "ChartColor", "PredictChartColor", "ChartWidth", "EdbAliasName")
+			tmpChartEdbMapping.IsConvert = v.IsConvert
+			tmpChartEdbMapping.ConvertType = v.ConvertType
+			tmpChartEdbMapping.ConvertValue = v.ConvertValue
+			tmpChartEdbMapping.ConvertUnit = v.ConvertUnit
+			tmpChartEdbMapping.ConvertEnUnit = v.ConvertEnUnit
+			_, err = to.Update(tmpChartEdbMapping, "ModifyTime", "MaxData", "MinData", "IsOrder", "IsAxis", "EdbInfoType", "LeadValue", "LeadUnit", "ChartStyle", "ChartColor", "PredictChartColor", "ChartWidth", "EdbAliasName",
+				"IsConvert", "ConvertType", "ConvertValue", "ConvertUnit", "ConvertEnUnit")
 			if err != nil {
 				fmt.Println("chart_edb_mapping Err:" + err.Error())
 				return err

+ 9 - 0
routers/commentsRouter.go

@@ -1897,6 +1897,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ChartInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ChartInfoController"],
+        beego.ControllerComments{
+            Method: "ChartInfoConvertDetail",
+            Router: `/chart_info/convert/detail`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ChartInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ChartInfoController"],
         beego.ControllerComments{
             Method: "CopyChartInfo",