|
@@ -2331,29 +2331,12 @@ func EdbInfoAdd(source, subSource, classifyId int, edbCode, edbName, frequency,
|
|
|
if source == utils.DATA_SOURCE_STOCK_PLANT {
|
|
|
edbType = 2 //计算指标
|
|
|
}
|
|
|
- // todo 如果缓存中的终端信息丢了是否需要调整 从缓存中获取
|
|
|
- serverUrl := ``
|
|
|
- if edbInfo.Source == utils.DATA_SOURCE_WIND {
|
|
|
- windCacheKey := utils.CACHE_WIND_URL + ":" + 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] //默认是最后一个服务器地址
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- // 获取终端信息
|
|
|
- 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
|
|
|
- if terminalCode == "" {
|
|
|
- terminalCode, sourceIndexName, tE = GetTerminalFromBaseIndex(source, edbCode)
|
|
|
- if tE != nil {
|
|
|
- utils.FileLog.Info(fmt.Sprintf("获取数据源终端信息失败, Err: %s", tE))
|
|
|
- }
|
|
|
+ // 从缓存中获取
|
|
|
+ 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)
|
|
@@ -3003,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 {
|
|
@@ -3032,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)
|
|
@@ -3042,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 = "保存失败"
|
|
@@ -3257,3 +3231,113 @@ func EdbInfoSmmApiAdd(item *data_manage.EdbInfo) (edbInfo *data_manage.EdbInfo,
|
|
|
AddOrEditEdbInfoToEs(int(edbInfoId))
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+// GetEdbTerminal 获取终端信息
|
|
|
+func GetEdbTerminal(source int, oldTerminalCode string) (edbTerminal *data_manage.EdbTerminal, err error) {
|
|
|
+ if source == utils.DATA_SOURCE_WIND && oldTerminalCode == "" {
|
|
|
+ tmpConfig := new(data_manage.EdbConfig)
|
|
|
+ tmpConfig, err = data_manage.GetConfigDetailByCode("wind_terminal_code")
|
|
|
+ if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
+ err = errors.New("获取配置的wind地址失败,err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ err = nil
|
|
|
+ if tmpConfig != nil {
|
|
|
+ oldTerminalCode = tmpConfig.ConfigValue
|
|
|
+ //return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if oldTerminalCode != "" {
|
|
|
+ edbTerminal, err = data_manage.GetEdbTerminalByCode(oldTerminalCode)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 配置中没有的话,那么就从分组获取,
|
|
|
+ list, err := data_manage.GetEdbCountGroupByTerminal(source)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //windUrlNum := 0
|
|
|
+
|
|
|
+ //获取对应的配置url
|
|
|
+ terminalNumMap := make(map[string]int)
|
|
|
+ for _, v := range list {
|
|
|
+ terminalNumMap[v.TerminalCode] = v.Total
|
|
|
+ }
|
|
|
+
|
|
|
+ terminalList, err := data_manage.GetEdbTerminalListBySource(source)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if len(terminalList) == 0 {
|
|
|
+ err = errors.New("终端地址未配置")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ num := 0
|
|
|
+ for _, v := range terminalList {
|
|
|
+ tmpNum := terminalNumMap[v.TerminalCode]
|
|
|
+ if edbTerminal == nil {
|
|
|
+ edbTerminal = v
|
|
|
+ num = tmpNum
|
|
|
+ } else if tmpNum < num {
|
|
|
+ edbTerminal = v
|
|
|
+ num = tmpNum
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if edbTerminal == nil {
|
|
|
+ err = errors.New("获取配置的终端地址失败")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ /*if edbTerminal != nil {
|
|
|
+ windUrl = edbTerminal.ServerUrl
|
|
|
+ terminalCode = edbTerminal.TerminalCode
|
|
|
+ }*/
|
|
|
+ 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))
|
|
|
+ }
|
|
|
+
|
|
|
+ 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
|
|
|
+}
|