Jelajahi Sumber

Merge branch 'bug/3181'

Roc 1 tahun lalu
induk
melakukan
f75cbe4389

+ 195 - 7
controllers/data_manage/future_good/future_good_chart_info.go

@@ -1316,7 +1316,6 @@ func getFutureGoodChartInfo(chartInfo *data_manage.ChartInfoView, chartType, dat
 	// 商品价格曲线图的一些配置
 	var barConfig data_manage.BarChartInfoReq
 	barChartInfoDateList := make([]data_manage.BarChartInfoDateReq, 0)
-	barChartInfoSort := data_manage.BarChartInfoSortReq{}
 
 	if chartInfo.BarConfig == `` {
 		br.Msg = "商品价格曲线图未配置"
@@ -1331,10 +1330,9 @@ func getFutureGoodChartInfo(chartInfo *data_manage.ChartInfoView, chartType, dat
 	}
 
 	barChartInfoDateList = barConfig.DateList
-	barChartInfoSort = barConfig.Sort
 
 	// 获取图表中的指标数据
-	barConfigEdbInfoIdList, edbList, xEdbIdValue, xDataList, yDataList, err := future_goodServ.GetChartEdbData(chartInfoId, startDate, endDate, edbInfoMapping, futureGoodEdbInfoMapping, barChartInfoDateList, barChartInfoSort)
+	barConfigEdbInfoIdList, edbList, xEdbIdValue, xDataList, yDataList, err := future_goodServ.GetChartEdbData(chartInfoId, startDate, endDate, edbInfoMapping, futureGoodEdbInfoMapping, barChartInfoDateList, true)
 	if err != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取图表,指标信息失败,Err:" + err.Error()
@@ -1552,7 +1550,6 @@ func GetChartInfoDetailFromUniqueCode(chartInfo *data_manage.ChartInfoView, isCa
 	// 商品价格曲线图的一些配置
 	var barConfig data_manage.BarChartInfoReq
 	barChartInfoDateList := make([]data_manage.BarChartInfoDateReq, 0)
-	barChartInfoSort := data_manage.BarChartInfoSortReq{}
 
 	if chartInfo.BarConfig == `` {
 		msg = "商品价格曲线图未配置"
@@ -1567,10 +1564,9 @@ func GetChartInfoDetailFromUniqueCode(chartInfo *data_manage.ChartInfoView, isCa
 	}
 
 	barChartInfoDateList = barConfig.DateList
-	barChartInfoSort = barConfig.Sort
 
 	// 获取图表中的指标数据
-	barConfigEdbInfoIdList, edbList, xEdbIdValue, xDataList, yDataList, err := future_goodServ.GetChartEdbData(chartInfoId, startDate, endDate, edbInfoMapping, futureGoodEdbInfoMapping, barChartInfoDateList, barChartInfoSort)
+	barConfigEdbInfoIdList, edbList, xEdbIdValue, xDataList, yDataList, err := future_goodServ.GetChartEdbData(chartInfoId, startDate, endDate, edbInfoMapping, futureGoodEdbInfoMapping, barChartInfoDateList, true)
 	if err != nil {
 		msg = "获取失败"
 		errMsg = "获取图表,指标信息失败,Err:" + err.Error()
@@ -1909,6 +1905,198 @@ func (this *FutureGoodChartInfoController) ChartInfoEdbInfoDetail() {
 	br.Data = resp
 }
 
+// BaseChartInfoDetailFromUniqueCode
+// @Title 根据编码获取图表详情(基础信息,没有数据)
+// @Description 根据编码获取图表详情(基础信息,没有数据)
+// @Param   UniqueCode   query   int  true       "图表唯一编码,如果是管理后台访问,传固定字符串:7c69b590249049942070ae9dcd5bf6dc"
+// @Success 200 {object} data_manage.ChartInfoDetailFromUniqueCodeResp
+// @router /chart_info/base_detail/from_unique_code [get]
+func (this *FutureGoodChartInfoController) BaseChartInfoDetailFromUniqueCode() {
+	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
+	}
+	uniqueCode := this.GetString("UniqueCode")
+	if uniqueCode == "" {
+		br.Msg = "参数错误"
+		br.ErrMsg = "参数错误,uniqueCode is empty"
+		return
+	}
+
+	status := true
+	chartInfo, err := data_manage.GetChartInfoViewByUniqueCode(uniqueCode)
+	if err != nil {
+		if err.Error() == utils.ErrNoRow() {
+			status = false
+		} else {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取图表信息失败,Err:" + err.Error()
+			return
+		}
+	}
+
+	if chartInfo == nil {
+		status = false
+	}
+
+	if !status {
+		resp := new(data_manage.ChartInfoDetailFromUniqueCodeResp)
+		endInfoList := make([]*data_manage.ChartEdbInfoMapping, 0)
+		resp.EdbInfoList = endInfoList
+		resp.ChartInfo = chartInfo
+		resp.Status = false
+
+		br.Data = resp
+		br.Ret = 200
+		br.Success = true
+		br.Msg = "获取成功"
+		return
+	}
+
+	switch chartInfo.Source {
+	case utils.CHART_SOURCE_FUTURE_GOOD, utils.CHART_SOURCE_FUTURE_GOOD_PROFIT:
+		// 现货指标
+		edbInfoMapping, err := data_manage.GetEtaEdbChartEdbMapping(chartInfo.ChartInfoId)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取图表,现货指标信息失败,Err:" + err.Error()
+			return
+		}
+		edbList := []*data_manage.ChartEdbInfoMapping{
+			edbInfoMapping,
+		}
+
+		// 期货指标
+		futureGoodEdbInfoMapping, err := data_manage.GetFutureGoodEdbChartEdbMapping(chartInfo.ChartInfoId)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取图表的期货商品指标信息失败,Err:" + err.Error()
+			return
+		}
+		edbList = append(edbList, futureGoodEdbInfoMapping)
+
+		// 商品价格曲线图的一些配置
+		var barConfig data_manage.BarChartInfoReq
+		barChartInfoDateList := make([]data_manage.BarChartInfoDateReq, 0)
+
+		if chartInfo.BarConfig == `` {
+			br.Msg = "商品价格曲线图未配置"
+			br.ErrMsg = "商品价格曲线图未配置"
+			return
+		}
+		err = json.Unmarshal([]byte(chartInfo.BarConfig), &barConfig)
+		if err != nil {
+			br.Msg = "商品价格曲线图配置异常"
+			br.ErrMsg = "商品价格曲线图配置异常"
+			return
+		}
+
+		barChartInfoDateList = barConfig.DateList
+
+		startDate := chartInfo.StartDate
+		endDate := chartInfo.EndDate
+
+		// 兼容日期错误
+		{
+			if strings.Count(startDate, "-") == 1 {
+				startDate = startDate + "-01"
+			}
+			if strings.Count(endDate, "-") == 1 {
+				endDate = endDate + "-01"
+			}
+		}
+
+		// 获取图表中的指标数据
+		barConfigEdbInfoIdList, edbList, xEdbIdValue, xDataList, yDataList, err := future_goodServ.GetChartEdbData(chartInfo.ChartInfoId, startDate, endDate, edbInfoMapping, futureGoodEdbInfoMapping, barChartInfoDateList, false)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取图表,指标信息失败,Err:" + err.Error()
+			return
+		}
+		warnEdbList := make([]string, 0)
+		if len(edbList) <= 0 {
+			br.Msg = "商品价格曲线图表指标异常"
+			br.ErrMsg = "商品价格曲线图表异常"
+			return
+		}
+		baseEdbInfo := edbList[0] //现货指标
+
+		for _, v := range edbList {
+			if v.IsNullData {
+				warnEdbList = append(warnEdbList, v.EdbName+"("+v.EdbCode+")")
+			}
+			// 指标别名
+			if barConfigEdbInfoIdList != nil && len(barConfigEdbInfoIdList) > 0 {
+				for _, reqEdb := range barConfigEdbInfoIdList {
+					if v.EdbInfoId == reqEdb.EdbInfoId {
+						v.EdbAliasName = reqEdb.Name
+						v.EdbAliasNameEn = reqEdb.NameEn
+					}
+				}
+			}
+		}
+		if len(warnEdbList) > 0 {
+			chartInfo.WarnMsg = `图表引用指标异常,异常指标:` + strings.Join(warnEdbList, ",")
+		}
+		//判断是否加入我的图库
+		{
+			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.Button.IsEdit = chartInfo.IsEdit
+		chartInfo.Button.IsCopy = true
+		//判断是否需要展示英文标识
+		chartInfo.IsEnChart = data.CheckIsEnChart(chartInfo.ChartNameEn, edbList[0:1], chartInfo.Source, chartInfo.ChartType)
+		chartInfo.UnitEn = baseEdbInfo.UnitEn
+
+		resp := data_manage.ChartInfoDetailFromUniqueCodeResp{}
+		resp.ChartInfo = chartInfo
+		resp.EdbInfoList = edbList
+		resp.XEdbIdValue = xEdbIdValue
+		resp.YDataList = yDataList
+		resp.XDataList = xDataList
+		resp.BarChartInfo = barConfig
+		resp.Status = true
+
+		br.Ret = 200
+		br.Success = true
+		br.Msg = "获取成功"
+		br.Data = resp
+	default:
+		br.Msg = "暂未实现"
+		br.ErrMsg = "暂未实现"
+		return
+	}
+}
+
 // ChartInfoSearchByEs
 // @Title 图表模糊搜索(从es获取)
 // @Description  图表模糊搜索(从es获取)
@@ -2644,7 +2832,7 @@ func (this *FutureGoodChartInfoController) PreviewBarChartInfo() {
 	}
 
 	// 获取图表中的指标数据
-	barConfigEdbInfoIdList, edbList, xEdbIdValue, xDataList, yDataList, err := future_goodServ.GetChartEdbData(0, "", "", edbInfoMapping, futureGoodEdbInfoMapping, req.DateList, req.Sort)
+	barConfigEdbInfoIdList, edbList, xEdbIdValue, xDataList, yDataList, err := future_goodServ.GetChartEdbData(0, "", "", edbInfoMapping, futureGoodEdbInfoMapping, req.DateList, true)
 	if err != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取图表,指标信息失败,Err:" + err.Error()

+ 9 - 0
routers/commentsRouter.go

@@ -259,6 +259,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/future_good:FutureGoodChartInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/future_good:FutureGoodChartInfoController"],
+        beego.ControllerComments{
+            Method: "BaseChartInfoDetailFromUniqueCode",
+            Router: `/chart_info/base_detail/from_unique_code`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/future_good:FutureGoodChartInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/future_good:FutureGoodChartInfoController"],
         beego.ControllerComments{
             Method: "CopyChartInfo",

+ 39 - 28
services/data/future_good/chart_info.go

@@ -15,7 +15,7 @@ import (
 )
 
 // GetChartEdbData 获取图表的指标数据
-func GetChartEdbData(chartInfoId int, startDate, endDate string, edbInfoMapping, futureGoodEdbInfoMapping *data_manage.ChartEdbInfoMapping, barChartInfoDateList []data_manage.BarChartInfoDateReq, barChartInfoSort data_manage.BarChartInfoSortReq) (barConfigEdbInfoIdList []data_manage.BarChartInfoEdbItemReq, edbList []*data_manage.ChartEdbInfoMapping, xEdbIdValue []int, xDataList []data_manage.XData, yDataList []data_manage.YData, err error) {
+func GetChartEdbData(chartInfoId int, startDate, endDate string, edbInfoMapping, futureGoodEdbInfoMapping *data_manage.ChartEdbInfoMapping, barChartInfoDateList []data_manage.BarChartInfoDateReq, needData bool) (barConfigEdbInfoIdList []data_manage.BarChartInfoEdbItemReq, edbList []*data_manage.ChartEdbInfoMapping, xEdbIdValue []int, xDataList []data_manage.XData, yDataList []data_manage.YData, err error) {
 	edbList = make([]*data_manage.ChartEdbInfoMapping, 0)
 
 	if futureGoodEdbInfoMapping == nil {
@@ -68,12 +68,6 @@ func GetChartEdbData(chartInfoId int, startDate, endDate string, edbInfoMapping,
 
 	// 普通的指标数据
 	{
-		dataList := make([]*data_manage.EdbDataList, 0)
-
-		dataList, err = data_manage.GetEdbDataList(edbInfoMapping.Source, edbInfoMapping.EdbInfoId, startDate, endDate)
-		edbDataListMap[edbInfoMapping.EdbInfoId] = dataList
-		item.DataList = dataList
-
 		edbList = append(edbList, edbInfoMapping)
 
 		barConfigEdbInfoIdList = append(barConfigEdbInfoIdList, data_manage.BarChartInfoEdbItemReq{
@@ -180,27 +174,6 @@ func GetChartEdbData(chartInfoId int, startDate, endDate string, edbInfoMapping,
 		})
 	}
 
-	// 获取数据
-	for _, v := range futureGoodMappingList {
-		dataList := make([]*data_manage.EdbDataList, 0)
-
-		tmpDataList, tmpErr := future_good2.GetFutureGoodEdbDataListByDate(v.EdbInfoId, startDate, endDate)
-		if tmpErr != nil {
-			return
-		}
-		for _, tmpData := range tmpDataList {
-			dataList = append(dataList, &data_manage.EdbDataList{
-				EdbDataId:     tmpData.FutureGoodEdbDataId,
-				EdbInfoId:     tmpData.FutureGoodEdbInfoId,
-				DataTime:      tmpData.DataTime.Format(utils.FormatDate),
-				DataTimestamp: tmpData.DataTimestamp,
-				Value:         tmpData.Close,
-			})
-		}
-		edbDataListMap[v.EdbInfoId] = dataList
-		v.DataList = dataList
-	}
-
 	if regionType == `海外` {
 		zlFutureGoodEdbMapping := &data_manage.ChartEdbInfoMapping{
 			EdbInfoId:           zlFutureGoodEdbInfo.FutureGoodEdbInfoId,
@@ -248,6 +221,44 @@ func GetChartEdbData(chartInfoId int, startDate, endDate string, edbInfoMapping,
 		edbList = append(edbList, futureGoodMappingList...)
 	}
 
+	if !needData {
+		return
+	}
+
+	// 获取数据
+
+	// 现货数据
+	{
+		dataList := make([]*data_manage.EdbDataList, 0)
+		dataList, err = data_manage.GetEdbDataList(edbInfoMapping.Source, edbInfoMapping.EdbInfoId, startDate, endDate)
+		if err != nil {
+			return
+		}
+		edbDataListMap[edbInfoMapping.EdbInfoId] = dataList
+		item.DataList = dataList
+	}
+
+	// 期货数据
+	for _, v := range futureGoodMappingList {
+		dataList := make([]*data_manage.EdbDataList, 0)
+
+		tmpDataList, tmpErr := future_good2.GetFutureGoodEdbDataListByDate(v.EdbInfoId, startDate, endDate)
+		if tmpErr != nil {
+			return
+		}
+		for _, tmpData := range tmpDataList {
+			dataList = append(dataList, &data_manage.EdbDataList{
+				EdbDataId:     tmpData.FutureGoodEdbDataId,
+				EdbInfoId:     tmpData.FutureGoodEdbInfoId,
+				DataTime:      tmpData.DataTime.Format(utils.FormatDate),
+				DataTimestamp: tmpData.DataTimestamp,
+				Value:         tmpData.Close,
+			})
+		}
+		edbDataListMap[v.EdbInfoId] = dataList
+		v.DataList = dataList
+	}
+
 	xEdbIdValue, yDataList, err = BarChartData(edbList[0], futureGoodEdbInfoList, edbDataListMap, barChartInfoDateList, regionType, latestDate)
 
 	xDataList = []data_manage.XData{