Просмотр исходного кода

fix:商品价格/利润曲线,新增基础图表信息接口,便于前端调用时,不需要返回特殊的数据

Roc 1 год назад
Родитель
Сommit
6a30cd319e

+ 114 - 11
controllers/data_manage/future_good/future_good_chart_info.go

@@ -1345,7 +1345,6 @@ func getFutureGoodChartInfo(chartInfo *data_manage.ChartInfoView, startDate, end
 	// 商品价格曲线图的一些配置
 	var barConfig data_manage.BarChartInfoReq
 	barChartInfoDateList := make([]data_manage.BarChartInfoDateReq, 0)
-	barChartInfoSort := data_manage.BarChartInfoSortReq{}
 
 	if chartInfo.BarConfig == `` {
 		br.Msg = "商品价格曲线图未配置"
@@ -1360,10 +1359,9 @@ func getFutureGoodChartInfo(chartInfo *data_manage.ChartInfoView, startDate, end
 	}
 
 	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()
@@ -1581,7 +1579,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 = "商品价格曲线图未配置"
@@ -1596,10 +1593,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()
@@ -2034,6 +2030,7 @@ func (this *FutureGoodChartInfoController) BaseChartInfoDetailFromUniqueCode() {
 
 	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 = "获取失败"
@@ -2043,11 +2040,117 @@ func (this *FutureGoodChartInfoController) BaseChartInfoDetailFromUniqueCode() {
 		edbList := []*data_manage.ChartEdbInfoMapping{
 			edbInfoMapping,
 		}
-		resp := data_manage.ChartInfoDetailFromUniqueCodeResp{
-			ChartInfo:   chartInfo,
-			Status:      true,
-			EdbInfoList: edbList,
+
+		// 期货指标
+		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
@@ -2781,7 +2884,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()

+ 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{