Selaa lähdekoodia

Merge branch 'feature/eta1.9.7_range_chart' of hongze/hongze_yb into master

xyxie 7 kuukautta sitten
vanhempi
commit
81caa21918

+ 71 - 0
controller/chart/chart_common.go

@@ -16,6 +16,7 @@ import (
 	"hongze/hongze_yb/models/tables/chart_info_future_good_profit"
 	"hongze/hongze_yb/models/tables/chart_info_log"
 	"hongze/hongze_yb/models/tables/yb_my_chart"
+	"hongze/hongze_yb/services"
 	"hongze/hongze_yb/services/alarm_msg"
 	"hongze/hongze_yb/services/chart"
 	"hongze/hongze_yb/services/chart/correlation"
@@ -114,6 +115,8 @@ func CommonChartInfoDetailFromUniqueCode(c *gin.Context) {
 		resp, isOk, msg, errMsg = getLineFeatureChartInfoDetailFromUniqueCode(chartInfo, myChartClassifyId, user.GetInfoByClaims(c))
 	case utils.CHART_SOURCE_CROSS_HEDGING:
 		resp, isOk, msg, errMsg = GetCrossVarietyChartInfoDetailFromUniqueCode(chartInfo, myChartClassifyId, user.GetInfoByClaims(c))
+	case utils.CHART_SOURCE_RANGE_ANALYSIS:
+		resp, isOk, msg, errMsg = getRangeAnalysisChartInfoDetail(chartInfo, myChartClassifyId, user.GetInfoByClaims(c))
 	default:
 		msg := "错误的图表"
 		errMsg := "错误的图表"
@@ -1210,3 +1213,71 @@ func RefreshCorrelationChartInfo(c *gin.Context) {
 	}
 	response.OkData("刷新成功", "", c)
 }
+
+func getRangeAnalysisChartInfoDetail(chartInfo *chartInfoModel.ChartInfoView, myChartClassifyId int, userInfo user.UserInfo) (resp *chart_info.ChartInfoDetailResp, isOk bool, msg, errMsg string) {
+	resp = new(chart_info.ChartInfoDetailResp)
+	chartInfoId := chartInfo.ChartInfoId
+	//调用接口
+	chartData, e := services.GetRangeChartChartDetail(chartInfo.UniqueCode)
+	if e != nil {
+		msg = "获取失败"
+		errMsg = "获取图表信息失败, Err:" + e.Error()
+		return
+	}
+	chartDataResp := new(chart_info.ChartInfoDetailResp)
+	// 兼容返回值类型
+	chartDataString, _ := json.Marshal(chartData)
+	err := json.Unmarshal(chartDataString, chartDataResp)
+	if err != nil {
+		msg = "获取失败"
+		errMsg = "图表信息解析失败, Err:" + e.Error()
+		return
+	}
+	chartInfo = chartDataResp.ChartInfo
+	chartInfo.ChartInfoId = chartInfoId
+	yDataList := chartDataResp.YDataList
+	edbList := chartDataResp.EdbInfoList
+	xEdbIdValue := chartDataResp.XEdbIdValue
+	dataResp := chartDataResp.DataResp
+	// 访问记录-仅普通用户记录
+	ok, _, _ := user.GetAdminByUserInfo(userInfo)
+	if !ok {
+		go chart.SaveChartVisitLog(userInfo, chartInfo, myChartClassifyId)
+	}
+
+	// 用户是否有收藏该图表
+	{
+		ob := new(yb_my_chart.YbMyChart)
+		cond := `user_id = ? AND chart_info_id = ?`
+		pars := make([]interface{}, 0)
+		pars = append(pars, userInfo.UserID, chartInfo.ChartInfoId)
+		exists, e := ob.FetchByCondition(cond, pars)
+		if e != nil && e != utils.ErrNoRow {
+			msg = `操作失败`
+			errMsg = "获取用户图表失败, Err: " + e.Error()
+			return
+		}
+		myChartInfo := new(responseModel.MyChartItem)
+		if exists != nil && exists.MyChartID > 0 {
+			myChartInfo.MyChartID = exists.MyChartID
+			myChartInfo.MyChartClassifyID = exists.MyChartClassifyID
+			myChartInfo.ChartInfoID = exists.ChartInfoID
+			myChartInfo.ChartName = exists.ChartName
+			myChartInfo.UniqueCode = exists.UniqueCode
+			myChartInfo.ChartImage = exists.ChartImage
+			myChartInfo.UserID = exists.UserID
+			myChartInfo.ReportID = exists.ReportID
+			myChartInfo.ReportChapterID = exists.ReportChapterID
+			myChartInfo.CreateTime = utils.TimeTransferString(utils.FormatDateTime, exists.CreateTime)
+		}
+
+		resp.MyChartInfo = myChartInfo
+	}
+	resp.ChartInfo = chartInfo
+	resp.EdbInfoList = edbList
+	resp.XEdbIdValue = xEdbIdValue
+	resp.YDataList = yDataList
+	resp.DataResp = dataResp
+	isOk = true
+	return
+}

+ 25 - 0
controller/chart/chart_info.go

@@ -106,6 +106,31 @@ func GetChartInfoDetail(c *gin.Context) {
 		sourceArr = append(sourceArr, "平衡表")
 		dataResp = chartDataResp.DataResp
 
+	} else if chartInfo.Source == utils.CHART_SOURCE_RANGE_ANALYSIS {
+		//调用接口
+		chartData, e := services.GetRangeChartChartDetail(chartInfo.UniqueCode)
+		if e != nil {
+			response.FailMsg("获取失败", "获取图表信息失败, Err:"+e.Error(), c)
+			return
+		}
+		chartDataResp := new(chart_info.ChartInfoDetailResp)
+		// 兼容返回值类型
+		chartDataString, _ := json.Marshal(chartData)
+		err = json.Unmarshal(chartDataString, chartDataResp)
+		if err != nil {
+			response.FailMsg("获取失败", "获取图表信息失败, Err:"+err.Error(), c)
+			return
+		}
+		chartInfo = chartDataResp.ChartInfo
+		chartInfo.ChartInfoId = chartInfoId
+		yDataList = chartDataResp.YDataList
+		edbList = chartDataResp.EdbInfoList
+		xEdbIdValue = chartDataResp.XEdbIdValue
+		dataResp = chartDataResp.DataResp
+		// 图表的指标来源
+		sourceNameList, sourceNameEnList := chart.GetEdbSourceByEdbInfoIdList(edbList)
+		chartInfo.ChartSource = strings.Join(sourceNameList, ",")
+		chartInfo.ChartSourceEn = strings.Join(sourceNameEnList, ",")
 	} else {
 
 		// 获取主题样式

+ 3 - 0
models/tables/chart_edb_mapping/query.go

@@ -81,6 +81,9 @@ func (ct *ChartLibEdbInfoMappingTime) UnmarshalJSON(data []byte) error {
 	if s[0] == '"' {
 		s = s[1 : len(s)-1]
 	}
+	if s == "" {
+		return nil
+	}
 	t, err := time.ParseInLocation(utils.FormatDate, s, time.Local)
 	if err != nil {
 		return err

+ 19 - 0
services/eta_chart_lib.go

@@ -54,6 +54,25 @@ func GetBalanceChartDetail(uniqueCode string) (respData *chart_info.ChartLibChar
 	return
 }
 
+// GetRangeChartChartDetail 获取区间计算图表详情接口
+func GetRangeChartChartDetail(uniqueCode string) (respData *chart_info.ChartLibChartInfoDetailResp, err error) {
+	postUrl := fmt.Sprintf("%s/chart_auth/detail?UniqueCode=%s", global.CONFIG.EtaChartLib.ServerUrl, uniqueCode)
+	result, err := httpGet(postUrl)
+	if err != nil {
+		return
+	}
+	var resp ChartCommonDetailResp
+	if err = json.Unmarshal(result, &resp); err != nil {
+		return
+	}
+	if resp.Ret != 200 {
+		err = fmt.Errorf("%s,%s", resp.Msg, resp.ErrMsg)
+		return
+	}
+	respData = resp.Data
+	return
+}
+
 // post请求
 func httpPost(url, postData string, params ...string) ([]byte, error) {
 	body := ioutil.NopCloser(strings.NewReader(postData))

+ 6 - 0
utils/constants.go

@@ -120,6 +120,8 @@ const (
 	DATA_SOURCE_CALCULATE_ZDYFX                                 // 自定义分析->74
 	DATA_SOURCE_CALCULATE_RJZ                                   // 日均值计算->75
 	DATA_SOURCE_BUSINESS                             = 84       // 来源于自有数据
+	DATA_SOURCE_CALCULATE_RANGEANLYSIS               = 87       //区间计算->87
+	DATA_SOURCE_PREDICT_CALCULATE_RANGEANLYSIS       = 90       // 预测指标区间计算->90
 )
 
 const (
@@ -266,6 +268,9 @@ var SystemSourceList = []int{
 	DATA_SOURCE_CALCULATE_PERCENTILE,                 //百分位->68
 	DATA_SOURCE_PREDICT_CALCULATE_STANDARD_DEVIATION, //预测标准差->69
 	DATA_SOURCE_PREDICT_CALCULATE_PERCENTILE,         //预测百分位->70
+	DATA_SOURCE_CALCULATE_RANGEANLYSIS,               //区间计算->87
+	DATA_SOURCE_PREDICT_CALCULATE_RANGEANLYSIS,       // 预测指标区间计算->90
+
 }
 
 const (
@@ -298,6 +303,7 @@ const (
 	CHART_SOURCE_LINE_FEATURE_FREQUENCY          = 9  // 统计特征-频率分布图表
 	CHART_SOURCE_CROSS_HEDGING                   = 10 // 跨品种分析图表
 	CHART_SOURCE_BALANCE_EXCEL                   = 11 // 平衡表图表
+	CHART_SOURCE_RANGE_ANALYSIS                  = 12 // 	区间分析图表
 )
 
 // 图表类型