|
@@ -1719,29 +1719,39 @@ func getRefreshEdbInfoListByIds(edbInfoIdList []int) (newBaseEdbInfoArr, newBase
|
|
|
}
|
|
|
|
|
|
// EdbInfoAdd 添加指标到指标库
|
|
|
-func EdbInfoAdd(source, subSource, classifyId int, edbCode, edbName, frequency, unit, startDate, endDate string, sysUserId int, sysUserRealName string) (edbInfo *data_manage.EdbInfo, err error, errMsg string, isSendEmail bool) {
|
|
|
+func EdbInfoAdd(source, subSource, classifyId int, edbCode, edbName, frequency, unit, startDate, endDate string, sysUserId int, sysUserRealName, lang string) (edbInfo *data_manage.EdbInfo, err error, errMsg string, isSendEmail bool) {
|
|
|
isSendEmail = true
|
|
|
+
|
|
|
//判断指标名称是否存在
|
|
|
- var condition string
|
|
|
- var pars []interface{}
|
|
|
- //condition += " AND source=? "
|
|
|
- //pars = append(pars, source)
|
|
|
+ {
|
|
|
+ var count int
|
|
|
+ var condition string
|
|
|
+ var pars []interface{}
|
|
|
|
|
|
- condition += " AND edb_name=? "
|
|
|
- pars = append(pars, edbName)
|
|
|
+ //condition += " AND source=? "
|
|
|
+ //pars = append(pars, source)
|
|
|
|
|
|
- count, err := data_manage.GetEdbInfoCountByCondition(condition, pars)
|
|
|
- if err != nil {
|
|
|
- errMsg = "判断指标名称是否存在失败"
|
|
|
- err = errors.New("判断指标名称是否存在失败,Err:" + err.Error())
|
|
|
- return
|
|
|
- }
|
|
|
+ switch lang {
|
|
|
+ case utils.EnLangVersion:
|
|
|
+ condition += " AND edb_name_en = ? "
|
|
|
+ default:
|
|
|
+ condition += " AND edb_name=? "
|
|
|
+ }
|
|
|
+ pars = append(pars, edbName)
|
|
|
|
|
|
- if count > 0 {
|
|
|
- errMsg = "指标名称已存在,请重新填写"
|
|
|
- err = errors.New(errMsg)
|
|
|
- isSendEmail = false
|
|
|
- return
|
|
|
+ count, err = data_manage.GetEdbInfoCountByCondition(condition, pars)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "判断指标名称是否存在失败"
|
|
|
+ err = errors.New("判断指标名称是否存在失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if count > 0 {
|
|
|
+ errMsg = "指标名称已存在,请重新填写"
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ isSendEmail = false
|
|
|
+ return
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
edbInfo = new(data_manage.EdbInfo)
|
|
@@ -1793,29 +1803,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)
|
|
@@ -1827,9 +1820,11 @@ func EdbInfoAdd(source, subSource, classifyId int, edbCode, edbName, frequency,
|
|
|
|
|
|
edbInfo.EdbCode = edbCode
|
|
|
edbInfo.EdbName = edbName
|
|
|
+ edbInfo.EdbNameEn = edbName
|
|
|
edbInfo.EdbNameSource = edbName
|
|
|
edbInfo.Frequency = frequency
|
|
|
edbInfo.Unit = unit
|
|
|
+ edbInfo.UnitEn = frequency
|
|
|
edbInfo.StartDate = startDate
|
|
|
edbInfo.EndDate = endDate
|
|
|
edbInfo.ClassifyId = classifyId
|
|
@@ -2725,3 +2720,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
|
|
|
+}
|