Răsfoiți Sursa

feat:新增图表详情接口

Roc 1 an în urmă
părinte
comite
2b03ec3eb6

+ 152 - 178
controllers/data_manage/cross_variety/chart_info.go

@@ -432,181 +432,155 @@ func (c *ChartInfoController) Edit() {
 	br.IsAddLog = true
 }
 
-//
-//// Detail
-//// @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/detail [get]
-//func (c *ChartInfoController) Detail() {
-//	br := new(models.BaseResponse).Init()
-//	defer func() {
-//		c.Data["json"] = br
-//		c.ServeJSON()
-//	}()
-//	sysUser := c.SysUser
-//	if sysUser == nil {
-//		br.Msg = "请登录"
-//		br.ErrMsg = "请登录,SysUser Is Empty"
-//		br.Ret = 408
-//		return
-//	}
-//	chartInfoId, _ := c.GetInt("ChartInfoId")
-//	if chartInfoId <= 0 {
-//		br.Msg = "参数有误"
-//		return
-//	}
-//
-//	var err error
-//	chartInfo := new(data_manage.ChartInfoView)
-//	chartInfo, err = data_manage.GetChartInfoViewById(chartInfoId)
-//	if err != nil {
-//		if err.Error() == utils.ErrNoRow() {
-//			br.Msg = "图被删除,请刷新页面"
-//			br.ErrMsg = "图被删除,请刷新页面,Err:" + err.Error()
-//			return
-//		}
-//		br.Msg = "获取失败"
-//		br.ErrMsg = "获取图表信息失败,Err:" + err.Error()
-//		return
-//	}
-//
-//	// 相关性图表信息
-//	correlationChart := new(data_manage.ChartInfoCorrelation)
-//	if e := correlationChart.GetItemById(chartInfoId); e != nil {
-//		br.Msg = "获取失败"
-//		br.ErrMsg = "获取图表相关性信息失败, Err: " + e.Error()
-//		return
-//	}
-//
-//	// 获取指标信息
-//	edbInfoMappingA, e := data_manage.GetChartEdbMappingByEdbInfoId(correlationChart.EdbInfoIdFirst)
-//	if e != nil {
-//		br.Msg = "获取失败"
-//		br.ErrMsg = "获取相关性图表, A指标mapping信息失败, Err:" + e.Error()
-//		return
-//	}
-//	edbInfoMappingB, e := data_manage.GetChartEdbMappingByEdbInfoId(correlationChart.EdbInfoIdSecond)
-//	if e != nil {
-//		br.Msg = "获取失败"
-//		br.ErrMsg = "获取相关性图表, B指标mapping信息失败, Err:" + e.Error()
-//		return
-//	}
-//
-//
-//
-//	// 获取图表x轴y轴
-//	_, dataResp, err, errMsg, isSendEmail := cross_variety.GetChartData(0, req)
-//
-//	var dataResp interface{} // 绘图数据返回(目前是滚动相关性的图)
-//	var xEdbIdValue []int
-//	var yDataList []data_manage.YData
-//	switch chartInfo.Source {
-//	case utils.CHART_SOURCE_CORRELATION: // 相关性图
-//		moveUnitDays, ok := utils.FrequencyDaysMap[correlationChart.CalculateUnit]
-//		if !ok {
-//			br.Msg = "错误的分析周期"
-//			br.IsSendEmail = false
-//			return
-//		}
-//		startDate := time.Now().AddDate(0, 0, -correlationChart.CalculateValue*moveUnitDays).Format(utils.FormatDate)
-//		endDate := time.Now().Format(utils.FormatDate)
-//
-//		xEdbIdValue, yDataList, e = correlationServ.GetChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB, correlationChart.LeadValue, correlationChart.LeadUnit, startDate, endDate)
-//		if e != nil {
-//			br.Msg = "获取失败"
-//			br.ErrMsg = "获取相关性图表, 图表计算值失败, Err:" + e.Error()
-//			return
-//		}
-//	case utils.CHART_SOURCE_ROLLING_CORRELATION: // 滚动相关性图
-//		startDate, endDate := utils.GetDateByDateType(correlationChart.DateType, correlationChart.StartDate.Format(utils.FormatDate), correlationChart.EndDate.Format(utils.FormatDate))
-//		dataResp, e = correlationServ.GetRollingCorrelationChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB, correlationChart.LeadValue, correlationChart.LeadUnit, correlationChart.CalculateValue, correlationChart.CalculateUnit, startDate, endDate, chartInfo.ChartName, chartInfo.ChartNameEn)
-//		if e != nil {
-//			br.Msg = "获取失败"
-//			br.ErrMsg = "获取滚动相关性图表, 图表计算值失败, Err:" + e.Error()
-//			return
-//		}
-//	}
-//
-//	// 完善指标信息
-//	edbList, e := correlationServ.GetChartEdbInfoFormat(chartInfo.ChartInfoId, edbInfoMappingA, edbInfoMappingB)
-//	if e != nil {
-//		br.Msg = "获取失败"
-//		br.ErrMsg = "获取相关性图表, 完善指标信息失败, Err:" + e.Error()
-//		return
-//	}
-//	correlationInfo := new(data_manage.CorrelationInfo)
-//	correlationInfo.LeadValue = correlationChart.LeadValue
-//	correlationInfo.LeadUnit = correlationChart.LeadUnit
-//	correlationInfo.CalculateValue = correlationChart.CalculateValue
-//	correlationInfo.CalculateUnit = correlationChart.CalculateUnit
-//	correlationInfo.StartDate = correlationChart.StartDate.Format(utils.FormatDate)
-//	correlationInfo.EndDate = correlationChart.EndDate.Format(utils.FormatDate)
-//	correlationInfo.LeadValue = correlationChart.LeadValue
-//	correlationInfo.EdbInfoIdFirst = correlationChart.EdbInfoIdFirst
-//	correlationInfo.EdbInfoIdSecond = correlationChart.EdbInfoIdSecond
-//
-//	// 判断是否加入我的图库
-//	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
-//			}
-//		}
-//	}
-//
-//	//图表操作权限
-//	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId)
-//	//判断是否需要展示英文标识
-//	chartInfo.IsEnChart = data.CheckIsEnChart(chartInfo.ChartNameEn, edbList[0:1], chartInfo.Source, chartInfo.ChartType)
-//	chartInfo.UnitEn = edbInfoMappingA.UnitEn
-//
-//	isSaveAs := true
-//	if chartInfo.Source == utils.CHART_SOURCE_ROLLING_CORRELATION {
-//		isSaveAs = false
-//	}
-//	// 另存为
-//	chartInfo.Button = data_manage.ChartViewButton{
-//		IsEdit:    chartInfo.IsEdit,
-//		IsEnChart: chartInfo.IsEnChart,
-//		IsAdd:     chartInfo.IsAdd,
-//		IsCopy:    isSaveAs,
-//		IsSetName: chartInfo.IsSetName,
-//	}
-//
-//	resp := new(data_manage.ChartInfoDetailResp)
-//	resp.ChartInfo = chartInfo
-//	resp.EdbInfoList = edbList
-//	resp.XEdbIdValue = xEdbIdValue
-//	resp.YDataList = yDataList
-//	resp.CorrelationChartInfo = correlationInfo
-//	resp.DataResp = dataResp
-//	br.Ret = 200
-//	br.Success = true
-//	br.Msg = "获取成功"
-//	br.Data = resp
-//}
+// Detail
+// @Title 获取图表详情
+// @Description 获取图表详情接口
+// @Param   ChartInfoId   query   int  true       "图表id"
+// @Success 200 {object} data_manage.ChartInfoDetailResp
+// @router /chart_info/detail [get]
+func (c *ChartInfoController) Detail() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		c.Data["json"] = br
+		c.ServeJSON()
+	}()
+	sysUser := c.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+	chartInfoId, _ := c.GetInt("ChartInfoId")
+	if chartInfoId <= 0 {
+		br.Msg = "参数有误"
+		return
+	}
+
+	var err error
+	chartInfo := new(data_manage.ChartInfoView)
+	chartInfo, err = data_manage.GetChartInfoViewById(chartInfoId)
+	if err != nil {
+		if err.Error() == utils.ErrNoRow() {
+			br.Msg = "图被删除,请刷新页面"
+			br.ErrMsg = "图被删除,请刷新页面,Err:" + err.Error()
+			return
+		}
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取图表信息失败,Err:" + err.Error()
+		return
+	}
+
+	if chartInfo.ExtraConfig == `` {
+		br.Msg = "图表配置信息异常"
+		br.ErrMsg = "图表配置信息异常"
+		br.IsSendEmail = false
+		return
+	}
+	var config request.ChartConfigReq
+	err = json.Unmarshal([]byte(chartInfo.ExtraConfig), &config)
+	if err != nil {
+		br.Msg = "解析跨品种分析配置失败"
+		br.ErrMsg = "解析跨品种分析配置失败,Err:" + err.Error()
+		return
+	}
+
+	//mappingList, err := cross_varietyModel.GetChartVarietyMappingList(chartInfo.ChartInfoId)
+	//if err != nil {
+	//	br.Msg = "获取品种失败"
+	//	br.ErrMsg = "获取品种失败,Err:" + err.Error()
+	//	return
+	//}
+	// 获取跨品种分析配置
+	//chartInfoCrossVariety, err := cross_varietyModel.GetChartInfoCrossVarietyByChartInfoId(chartInfo.ChartInfoId)
+	//if err != nil {
+	//	br.Msg = "获取跨品种分析配置失败"
+	//	br.ErrMsg = "获取跨品种分析配置失败,Err:" + err.Error()
+	//	return
+	//}
+	//
+	//varietyIdList := make([]int,0)
+	//for _,v:=range mappingList{
+	//	varietyIdList = append(varietyIdList,v.ChartVarietyId)
+	//}
+	//config := request.ChartConfigReq{
+	//	TagX:           chartInfoCrossVariety.ChartXTagId,
+	//	TagY:           chartInfoCrossVariety.ChartYTagId,
+	//	CalculateValue: chartInfoCrossVariety.CalculateValue,
+	//	CalculateUnit:  chartInfoCrossVariety.CalculateUnit,
+	//	DateConfigList: config.DateConfigList,
+	//	VarietyList:    varietyIdList,
+	//}
+	//config.TagX =
+
+	// 获取图表x轴y轴
+	_, dataResp, err, errMsg, isSendEmail := cross_variety.GetChartData(0, config)
+	if err != nil {
+		br.IsSendEmail = isSendEmail
+		br.Msg = "获取失败"
+		if errMsg != `` {
+			br.Msg = errMsg
+		}
+		br.ErrMsg = "获取图表,指标信息失败,Err:" + err.Error()
+		return
+	}
+
+	// 完善指标信息
+	//edbList, e := correlationServ.GetChartEdbInfoFormat(chartInfo.ChartInfoId, edbInfoMappingA, edbInfoMappingB)
+	//if e != nil {
+	//	br.Msg = "获取失败"
+	//	br.ErrMsg = "获取相关性图表, 完善指标信息失败, Err:" + e.Error()
+	//	return
+	//}
+
+	// 判断是否加入我的图库
+	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
+			}
+		}
+	}
+
+	//图表操作权限
+	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId)
+	////判断是否需要展示英文标识
+	//chartInfo.IsEnChart = data.CheckIsEnChart(chartInfo.ChartNameEn, edbList[0:1], chartInfo.Source, chartInfo.ChartType)
+	//chartInfo.UnitEn = edbInfoMappingA.UnitEn
+
+	isSaveAs := true
+	if chartInfo.Source == utils.CHART_SOURCE_ROLLING_CORRELATION {
+		isSaveAs = false
+	}
+	// 另存为
+	chartInfo.Button = data_manage.ChartViewButton{
+		IsEdit:    chartInfo.IsEdit,
+		IsEnChart: chartInfo.IsEnChart,
+		IsAdd:     chartInfo.IsAdd,
+		IsCopy:    isSaveAs,
+		IsSetName: chartInfo.IsSetName,
+	}
+
+	resp := new(data_manage.ChartInfoDetailResp)
+	resp.ChartInfo = chartInfo
+	resp.DataResp = dataResp
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}

+ 2 - 2
models/data_manage/cross_variety/chart_info_cross_variety.go

@@ -124,7 +124,7 @@ func EditChart(chartInfo *data_manage.ChartInfo, chartVarietyMappingList []*Char
 	// 查找现有的品种列表
 	currVarietyMappingList := make([]*ChartVarietyMapping, 0)
 	sql := `SELECT * FROM chart_variety_mapping WHERE chart_info_id = ? `
-	_, err = o.Raw(sql, chartInfo.ChartInfoId).QueryRows(&currVarietyMappingList)
+	_, err = to.Raw(sql, chartInfo.ChartInfoId).QueryRows(&currVarietyMappingList)
 	if err != nil {
 		return
 	}
@@ -165,7 +165,7 @@ func EditChart(chartInfo *data_manage.ChartInfo, chartVarietyMappingList []*Char
 		}
 		removeIdStr := strings.Join(idStrList, `,`)
 		sql = fmt.Sprintf(` DELETE FROM chart_variety_mapping WHERE id in (%s) `, removeIdStr)
-		_, err = o.Raw(sql).Exec()
+		_, err = to.Raw(sql).Exec()
 		if err != nil {
 			return
 		}

+ 18 - 1
models/data_manage/cross_variety/chart_variety_mapping.go

@@ -1,6 +1,9 @@
 package cross_variety
 
-import "time"
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
 
 // ChartVarietyMapping
 // @Description: 图表与品种的关系表
@@ -11,3 +14,17 @@ type ChartVarietyMapping struct {
 	ModifyTime     time.Time `description:"修改时间"`
 	CreateTime     time.Time `description:"创建时间"`
 }
+
+// GetChartVarietyMappingList
+// @Description: 获取图表与品种的关系列表表
+// @author: Roc
+// @datetime 2023-11-24 15:22:36
+// @param chartInfoId int
+// @return items []*ChartVarietyMapping
+// @return err error
+func GetChartVarietyMappingList(chartInfoId int) (items []*ChartVarietyMapping, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM chart_variety_mapping WHERE chart_info_id = ? `
+	_, err = o.Raw(sql, chartInfoId).QueryRows(&items)
+	return
+}

+ 9 - 0
routers/commentsRouter.go

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

+ 15 - 1
services/data/cross_variety/chart.go

@@ -1,6 +1,7 @@
 package cross_variety
 
 import (
+	"encoding/json"
 	"errors"
 	"eta/eta_api/models/data_manage"
 	cross_varietyModel "eta/eta_api/models/data_manage/cross_variety"
@@ -458,6 +459,12 @@ func AddChartInfo(req request.AddChartReq, source int, sysUser *system.Admin) (c
 		return
 	}
 
+	// 基础配置转string
+	extraConfigByte, err := json.Marshal(req)
+	if err != nil {
+		return
+	}
+
 	chartClassify, err := data_manage.GetCrossVarietyChartClassifyBySysUserId(sysUser.AdminId)
 	if err != nil {
 		if err.Error() != utils.ErrNoRow() {
@@ -527,6 +534,7 @@ func AddChartInfo(req request.AddChartReq, source int, sysUser *system.Admin) (c
 	//chartInfo.RightMax = req.RightMax
 	//chartInfo.Disabled = disableVal
 	chartInfo.Source = source
+	chartInfo.ExtraConfig = string(extraConfigByte)
 
 	// 图表品种
 	chartVarietyMappingList := make([]*cross_varietyModel.ChartVarietyMapping, 0)
@@ -642,6 +650,11 @@ func EditChartInfo(req request.EditChartReq, sysUser *system.Admin) (chartItem *
 		isSendEmail = false
 		return
 	}
+	// 基础配置转string
+	extraConfigByte, err := json.Marshal(req)
+	if err != nil {
+		return
+	}
 
 	// 图表操作权限
 	ok := data.CheckOpChartPermission(sysUser, chartItem.SysUserId)
@@ -673,8 +686,9 @@ func EditChartInfo(req request.EditChartReq, sysUser *system.Admin) (chartItem *
 	}
 
 	chartItem.ChartName = req.ChartName
+	chartItem.ExtraConfig = string(extraConfigByte)
 	chartItem.ModifyTime = time.Now()
-	chartUpdateCols := []string{"ChartName", "ModifyTime"}
+	chartUpdateCols := []string{"ChartName", "ExtraConfig", "ModifyTime"}
 
 	// 跨品种分析配置
 	chartInfoCrossVariety, err := cross_varietyModel.GetChartInfoCrossVarietyByChartInfoId(chartItem.ChartInfoId)