Procházet zdrojové kódy

指标表新增终端code信息

xyxie před 1 rokem
rodič
revize
682d4095b4

+ 2 - 0
models/data_manage/edb_info.go

@@ -46,7 +46,9 @@ type EdbInfo struct {
 	Calendar         string  `description:"公历/农历" orm:"default(公历);"`
 	DataDateType     string  `orm:"column(data_date_type);size(255);null;default(交易日)"`
 	ManualSave       int     `description:"是否有手动保存过上下限: 0-否; 1-是"`
+	TerminalCode     string  `description:"终端编码,用于配置在机器上"`
 }
+
 type EdbInfoFullClassify struct {
 	*EdbInfo
 	CorrelationStr string `description:"相关性系数字符串"`

+ 16 - 1
models/data_manage/edb_terminal.go

@@ -1,6 +1,7 @@
 package data_manage
 
 import (
+	"fmt"
 	"github.com/beego/beego/v2/client/orm"
 	"time"
 )
@@ -13,6 +14,8 @@ type EdbTerminal struct {
 	TerminalCode string    `description:"终端编码,用于配置在机器上"`
 	ServerUrl    string    `description:"终端地址"`
 	Num          int       `description:"终端最大指标数"`
+	Status       int       `description:"状态,1启用,2禁用"`
+	Value        string    `description:"终端相关的token"`
 	ModifyTime   time.Time `description:"修改时间"`
 	CreateTime   time.Time `description:"创建时间"`
 }
@@ -20,7 +23,19 @@ type EdbTerminal struct {
 // GetEdbTerminalListBySource 根据指标来源类型获取所有的终端列表
 func GetEdbTerminalListBySource(source int) (items []*EdbTerminal, err error) {
 	o := orm.NewOrmUsingDB("data")
-	sql := ` SELECT *  FROM edb_terminal WHERE source = ? ORDER BY terminal_id ASC `
+	sql := ` SELECT *  FROM edb_terminal WHERE source = ? and status=1 ORDER BY terminal_id ASC `
 	_, err = o.Raw(sql, source).QueryRows(&items)
 	return
 }
+
+type BaseIndexTerminalCode struct {
+	TerminalCode string `description:"终端编码,用于配置在机器上"`
+}
+
+// GetBaseIndexTerminalCode 获取数据源的终端code
+func GetBaseIndexTerminalCode(edbCode, tableName string) (item BaseIndexTerminalCode, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := fmt.Sprintf(`select terminal_code from %s where index_code = ? `, tableName)
+	err = o.Raw(sql, edbCode).QueryRow(&item)
+	return
+}

+ 43 - 1
services/data/edb_info.go

@@ -2582,7 +2582,7 @@ func EdbInfoAdd(source, classifyId int, edbCode, edbName, frequency, unit, start
 	if source == utils.DATA_SOURCE_STOCK_PLANT {
 		edbType = 2 //计算指标
 	}
-	//从缓存中获取
+	// todo 如果缓存中的终端信息丢了是否需要调整 从缓存中获取
 	serverUrl := ``
 	if edbInfo.Source == utils.DATA_SOURCE_WIND {
 		windCacheKey := utils.CACHE_WIND_URL + ":" + edbCode
@@ -2593,6 +2593,18 @@ func EdbInfoAdd(source, classifyId int, edbCode, edbName, frequency, unit, start
 			}
 		}
 	}
+	// 获取终端信息
+	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))
+	}
+	if terminalCode == "" {
+		terminalCode, tE = GetTerminalFromBaseIndex(source, edbCode)
+		if tE != nil {
+			utils.FileLog.Info(fmt.Sprintf("获取数据源终端信息失败, Err: %s", tE))
+		}
+	}
 	//获取该层级下最大的排序数
 	maxSort, err := GetEdbClassifyMaxSort(classifyId, 0)
 	if err != nil {
@@ -2616,6 +2628,7 @@ func EdbInfoAdd(source, classifyId int, edbCode, edbName, frequency, unit, start
 	edbInfo.ServerUrl = serverUrl
 	edbInfo.Sort = maxSort + 1
 	edbInfo.DataDateType = `交易日`
+	edbInfo.TerminalCode = terminalCode
 	timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
 	edbInfo.UniqueCode = utils.MD5(utils.DATA_PREFIX + "_" + timestamp)
 	itemVal, err := data_manage.GetEdbInfoMaxAndMinInfo(source, edbCode)
@@ -3070,3 +3083,32 @@ func GetChartMenuTreeRecursive(list []*data_manage.ChartClassifyItems, parentId
 	}
 	return res
 }
+
+func GetTerminalFromBaseIndex(source int, edbCode string) (terminalCode string, err error) {
+	tbName := GetBaseIndexTableName(source)
+	if tbName != "" {
+		var item data_manage.BaseIndexTerminalCode
+		item, err = data_manage.GetBaseIndexTerminalCode(edbCode, tbName)
+		if err != nil {
+			err = fmt.Errorf("查询数据源指标信息失败, Err: %s", err)
+			return
+		}
+		terminalCode = item.TerminalCode
+	}
+	return
+}
+
+func GetBaseIndexTableName(source int) (tableName string) {
+	switch source {
+	case utils.DATA_SOURCE_YS:
+		tableName = "base_from_smm_index"
+	case utils.DATA_SOURCE_MYSTEEL_CHEMICAL:
+		tableName = "base_from_mysteel_chemical_index"
+	case utils.DATA_SOURCE_SCI:
+		tableName = "base_from_sci_index"
+	case utils.DATA_SOURCE_BAIINFO:
+		tableName = "base_from_baiinfo_index"
+	default:
+	}
+	return
+}

+ 6 - 5
utils/constants.go

@@ -214,11 +214,12 @@ const (
 	CACHE_KEY_DAYNEW_TRANSLATE        = "admin:day_new:translate"             //每日资讯中翻英
 	CACHE_KEY_ADMIN_OPERATE_RECORD    = "HZ_ADMIN_CACHE_ADMIN_OPERATE_RECORD" //系统用户操作日志队列
 
-	CACHE_SYNC_ADMIN        = "hz_crm_eta:sync_admin"        // 同步用户的缓存队列key
-	CACHE_SYNC_ROLE         = "hz_crm_eta:sync_role"         // 同步角色的缓存队列key
-	CACHE_SYNC_DEPARTMENT   = "hz_crm_eta:sync_department"   // 同步部门的缓存队列key
-	CACHE_SYNC_GROUP        = "hz_crm_eta:sync_group"        // 同步分组的缓存队列key
-	CACHE_SYNC_USER_EN_ROLE = "hz_crm_eta:sync_user_en_role" // 同步用户英文权限角色缓存队列key
+	CACHE_SYNC_ADMIN            = "hz_crm_eta:sync_admin"        // 同步用户的缓存队列key
+	CACHE_SYNC_ROLE             = "hz_crm_eta:sync_role"         // 同步角色的缓存队列key
+	CACHE_SYNC_DEPARTMENT       = "hz_crm_eta:sync_department"   // 同步部门的缓存队列key
+	CACHE_SYNC_GROUP            = "hz_crm_eta:sync_group"        // 同步分组的缓存队列key
+	CACHE_SYNC_USER_EN_ROLE     = "hz_crm_eta:sync_user_en_role" // 同步用户英文权限角色缓存队列key
+	CACHE_EDB_TERMINAL_CODE_URL = "edb:terminal_code:edb_code:"  // 指标与终端关系的缓存
 )
 
 // 模板消息推送类型