Bläddra i källkod

获取指标的终端编码

xyxie 1 år sedan
förälder
incheckning
571bd7586f
2 ändrade filer med 63 tillägg och 38 borttagningar
  1. 9 0
      controllers/data_manage/edb_info.go
  2. 54 38
      services/data/edb_info.go

+ 9 - 0
controllers/data_manage/edb_info.go

@@ -5372,6 +5372,13 @@ func (this *EdbInfoController) EdbInfoBatchAdd() {
 			return
 		}
 
+		terminalCode, serverUrl, _, e := data.GetEdbTerminalCodeBySource(v.Source, v.EdbCode, v.StockCode)
+		if e != nil {
+			br.Msg = "获取可以使用的终端地址失败"
+			br.ErrMsg = "获取可以使用的终端地址失败,Err:" + e.Error()
+			return
+		}
+
 		edbInfoItem := new(data_manage.EdbInfo)
 		edbInfoItem.Source = v.Source
 		switch v.Source {
@@ -5392,6 +5399,8 @@ func (this *EdbInfoController) EdbInfoBatchAdd() {
 		edbInfoItem.SysUserRealName = sysUser.RealName
 		edbInfoItem.IndicatorCode = v.EdbCode
 		edbInfoItem.StockCode = v.StockCode
+		edbInfoItem.TerminalCode = terminalCode
+		edbInfoItem.ServerUrl = serverUrl
 
 		// 指标入库
 		edbInfo, err, errMsg, isSendEmail := data.EdbInfoWsdAdd(edbInfoItem)

+ 54 - 38
services/data/edb_info.go

@@ -2331,32 +2331,12 @@ func EdbInfoAdd(source, subSource, classifyId int, edbCode, edbName, frequency,
 	if source == utils.DATA_SOURCE_STOCK_PLANT {
 		edbType = 2 //计算指标
 	}
-	// todo 如果缓存中的终端信息丢了是否需要调整 从缓存中获取
-	serverUrl := ``
-	// 获取终端信息
-	terminalCodeCacheKey := utils.CACHE_EDB_TERMINAL_CODE_URL + edbCode
-	terminalCode, tE := utils.Rc.RedisString(terminalCodeCacheKey)
-	if tE != nil {
-		utils.FileLog.Info(fmt.Sprintf("从缓存中获取数据源终端信息失败, Err: %s", tE))
-	}
-	var sourceIndexName string
-	var terminalCodeOrigin string
-	terminalCodeOrigin, sourceIndexName, tE = GetTerminalFromBaseIndex(source, edbCode)
-	if tE != nil {
-		utils.FileLog.Info(fmt.Sprintf("获取数据源终端信息失败, Err: %s", tE))
-	}
-	if terminalCodeOrigin != "" {
-		terminalCode = terminalCodeOrigin
-	}
-	if edbInfo.Source == utils.DATA_SOURCE_WIND {
-		terminalInfo, e := GetEdbTerminal(utils.DATA_SOURCE_WIND, terminalCode)
-		if e != nil {
-			errMsg = "保存失败"
-			err = errors.New("获取可以使用的wind地址失败,Err:" + e.Error())
-			return
-		}
-		serverUrl = terminalInfo.ServerUrl
-		terminalCode = terminalInfo.TerminalCode
+	// 从缓存中获取
+	terminalCode, serverUrl, sourceIndexName, e := GetEdbTerminalCodeBySource(edbInfo.Source, edbInfo.EdbCode, edbInfo.StockCode)
+	if e != nil {
+		errMsg = "获取可以使用的终端地址失败"
+		err = errors.New("获取可以使用的终端地址失败,Err:" + e.Error())
+		return
 	}
 	//获取该层级下最大的排序数
 	maxSort, err := GetEdbClassifyMaxSort(classifyId, 0)
@@ -3006,17 +2986,7 @@ func EdbInfoWsdAdd(item *data_manage.EdbInfo) (edbInfo *data_manage.EdbInfo, err
 	if source == utils.DATA_SOURCE_STOCK_PLANT {
 		edbType = 2 //计算指标
 	}
-	//从缓存中获取
-	serverUrl := ``
-	if edbInfo.Source == utils.DATA_SOURCE_WIND {
-		windCacheKey := utils.CACHE_WIND_URL + ":" + item.EdbCode
-		serverUrl, _ = utils.Rc.RedisString(windCacheKey)
-		if serverUrl == `` {
-			if len(utils.Hz_Data_WIND_Url_List) >= 1 {
-				serverUrl = utils.Hz_Data_WIND_Url_List[len(utils.Hz_Data_WIND_Url_List)-1] //默认是最后一个服务器地址
-			}
-		}
-	}
+
 	//获取该层级下最大的排序数
 	maxSort, err := GetEdbClassifyMaxSort(item.ClassifyId, 0)
 	if err != nil {
@@ -3035,7 +3005,7 @@ func EdbInfoWsdAdd(item *data_manage.EdbInfo) (edbInfo *data_manage.EdbInfo, err
 	edbInfo.SysUserRealName = item.SysUserRealName
 	edbInfo.CreateTime = time.Now()
 	edbInfo.ModifyTime = time.Now()
-	edbInfo.ServerUrl = serverUrl
+	edbInfo.ServerUrl = item.ServerUrl
 	edbInfo.Sort = maxSort + 1
 	edbInfo.DataDateType = `交易日`
 	timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
@@ -3045,6 +3015,7 @@ func EdbInfoWsdAdd(item *data_manage.EdbInfo) (edbInfo *data_manage.EdbInfo, err
 	edbInfo.SubSourceName = "日期序列"
 	edbInfo.IndicatorCode = item.IndicatorCode
 	edbInfo.StockCode = item.StockCode
+	edbInfo.TerminalCode = item.TerminalCode
 	edbInfoId, err := data_manage.AddEdbInfo(edbInfo)
 	if err != nil {
 		errMsg = "保存失败"
@@ -3326,3 +3297,48 @@ func GetEdbTerminal(source int, oldTerminalCode string) (edbTerminal *data_manag
 	}*/
 	return
 }
+
+func GetEdbTerminalCodeBySource(source int, edbCode, stockCode string) (terminalCode, serverUrl, sourceIndexName string, err error) {
+	var e error
+	if stockCode != "" {
+		terminalCodeCacheKey := utils.CACHE_EDB_TERMINAL_CODE_URL + stockCode
+		terminalCode, e = utils.Rc.RedisString(terminalCodeCacheKey)
+		if e != nil {
+			utils.FileLog.Info(fmt.Sprintf("从缓存中获取数据源终端信息失败, Err: %s", e))
+		}
+		if terminalCode == "" {
+			terminalInfo, e := GetEdbTerminal(source, terminalCode)
+			if e != nil {
+				err = errors.New("获取可以使用的终端失败,Err:" + e.Error())
+				return
+			}
+			serverUrl = terminalInfo.ServerUrl
+			terminalCode = terminalInfo.TerminalCode
+		}
+		return
+	}
+	// 获取终端信息
+	terminalCodeCacheKey := utils.CACHE_EDB_TERMINAL_CODE_URL + edbCode
+	terminalCode, tE := utils.Rc.RedisString(terminalCodeCacheKey)
+	if tE != nil {
+		utils.FileLog.Info(fmt.Sprintf("从缓存中获取数据源终端信息失败, Err: %s", tE))
+	}
+	var terminalCodeOrigin string
+	terminalCodeOrigin, sourceIndexName, tE = GetTerminalFromBaseIndex(source, edbCode)
+	if tE != nil {
+		utils.FileLog.Info(fmt.Sprintf("获取数据源终端信息失败, Err: %s", tE))
+	}
+	if terminalCodeOrigin != "" {
+		terminalCode = terminalCodeOrigin
+	}
+	if source == utils.DATA_SOURCE_WIND || source == utils.DATA_SOURCE_THS {
+		terminalInfo, e := GetEdbTerminal(source, terminalCode)
+		if e != nil {
+			err = errors.New("获取可以使用的终端失败,Err:" + e.Error())
+			return
+		}
+		serverUrl = terminalInfo.ServerUrl
+		terminalCode = terminalInfo.TerminalCode
+	}
+	return
+}