xyxie 1 year ago
parent
commit
b30645ed9f
5 changed files with 102 additions and 8 deletions
  1. 13 3
      controllers/edb_info.go
  2. 2 2
      models/edb_classify.go
  3. 72 2
      models/edb_info.go
  4. 14 0
      models/edb_terminal.go
  5. 1 1
      services/base_from_jiayue.go

+ 13 - 3
controllers/edb_info.go

@@ -4,6 +4,7 @@ import (
 	"encoding/json"
 	"eta/eta_index_lib/logic"
 	"eta/eta_index_lib/models"
+	"eta/eta_index_lib/services"
 	"eta/eta_index_lib/utils"
 	"fmt"
 	"strconv"
@@ -95,19 +96,28 @@ func (this *EdbInfoController) Add() {
 		isAdd = true
 	}
 	var windUrl string
+	var terminalCode string
 	if isAdd {
 		if req.Source == utils.DATA_SOURCE_WIND {
-			// todo 这个接口不确定是否在使用
-			windUrl, _, err = GetServerUrl()
+			// todo 改成从终端表中获取终端信息
+			/*windUrl, _, err = GetServerUrl()
 			if err != nil {
 				br.Msg = "判断失败!"
 				br.ErrMsg = "判断失败,Err:" + err.Error()
 				return
+			}*/
+			terminalInfo, err := services.GetTerminal(utils.DATA_SOURCE_WIND, "")
+			if err != nil {
+				br.Msg = "获取可以使用的wind地址失败!"
+				br.ErrMsg = "获取可以使用的wind地址失败,err:" + err.Error()
+				return
 			}
+			windUrl = terminalInfo.ServerUrl
+			terminalCode = terminalInfo.TerminalCode
 		}
 	}
 	admnId, _ := strconv.Atoi(utils.InitAdminId)
-	edbInfo, err := models.EdbInfoAdd(&req, windUrl, admnId, utils.InitAdminName)
+	edbInfo, err := models.EdbInfoAdd(&req, windUrl, admnId, utils.InitAdminName, terminalCode)
 	if err != nil {
 		br.Msg = "新增指标失败!"
 		br.ErrMsg = "新增指标失败,Err:" + err.Error()

+ 2 - 2
models/edb_classify.go

@@ -107,7 +107,7 @@ func SaveEdbClassify(classifyName string, parentId, level int, classifyType uint
 	if isAdd {
 		sysUserIdInt, _ := strconv.Atoi(sysUserId)
 		//获取该层级下最大的排序数
-		maxSort, err := GetEdbClassifyMaxSort(parentId, classifyType)
+		maxSort, err := GetEdbAndClassifyMaxSort(parentId, classifyType)
 
 		timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
 		classifyInfo = &EdbClassify{
@@ -122,7 +122,7 @@ func SaveEdbClassify(classifyName string, parentId, level int, classifyType uint
 			SysUserRealName: sysUserName,
 			Level:           level + 1,
 			UniqueCode:      utils.MD5(utils.DATA_PREFIX + "_" + timestamp),
-			Sort:            maxSort,
+			Sort:            maxSort + 1,
 		}
 		classifyId, err := AddEdbClassify(classifyInfo)
 		if err != nil {

+ 72 - 2
models/edb_info.go

@@ -1063,7 +1063,7 @@ type AddEdbInfoParams struct {
 }
 
 // EdbInfoAdd 添加指标到指标库
-func EdbInfoAdd(req *AddEdbInfoParams, serverUrl string, sysUserId int, sysUserRealName string) (edbInfo *EdbInfo, err error) {
+func EdbInfoAdd(req *AddEdbInfoParams, serverUrl string, sysUserId int, sysUserRealName string, terminalCode string) (edbInfo *EdbInfo, err error) {
 	source := req.Source
 	//判断指标名称是否存在
 	var condition string
@@ -1141,6 +1141,7 @@ func EdbInfoAdd(req *AddEdbInfoParams, serverUrl string, sysUserId int, sysUserR
 	}
 
 	var sourceIndexName string
+
 	// 钢联化工需要校验下信息是否完整
 	if source == utils.DATA_SOURCE_MYSTEEL_CHEMICAL {
 		indexObj := new(BaseFromMysteelChemicalIndex)
@@ -1153,7 +1154,19 @@ func EdbInfoAdd(req *AddEdbInfoParams, serverUrl string, sysUserId int, sysUserR
 			err = errors.New("指标信息不全")
 			return
 		}
-		sourceIndexName = tmpItem.IndexName
+	}
+	if terminalCode == "" {
+		var tE error
+		terminalCode, sourceIndexName, tE = GetTerminalFromBaseIndex(source, req.EdbCode)
+		if tE != nil {
+			utils.FileLog.Info(fmt.Sprintf("获取数据源终端信息失败, Err: %s", tE))
+		}
+	}
+	//获取该层级下最大的排序数
+	maxSort, err := GetEdbAndClassifyMaxSort(req.ClassifyId, 0)
+	if err != nil {
+		err = errors.New("查询排序信息失败,Err:" + err.Error())
+		return
 	}
 
 	edbInfo.EdbCode = req.EdbCode
@@ -1168,6 +1181,8 @@ func EdbInfoAdd(req *AddEdbInfoParams, serverUrl string, sysUserId int, sysUserR
 	edbInfo.CreateTime = time.Now()
 	edbInfo.ModifyTime = time.Now()
 	edbInfo.ServerUrl = serverUrl
+	edbInfo.TerminalCode = terminalCode
+	edbInfo.Sort = maxSort + 1
 	timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
 	edbInfo.UniqueCode = utils.MD5(utils.DATA_PREFIX + "_" + req.EdbCode + timestamp)
 	itemVal, err := GetEdbInfoMaxAndMinInfo(source, req.EdbCode)
@@ -1206,3 +1221,58 @@ type ResetEdbClassifyReq struct {
 	ClassifySecond string `description:"二级分类名称"`
 	ClassifyThird  string `description:"三级分类名称"`
 }
+
+// GetEdbInfoMaxSortByClassifyId 获取分类下指标的最大的排序数
+func GetEdbInfoMaxSortByClassifyId(classifyId int) (sort int, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT Max(sort) AS sort FROM edb_info WHERE classify_id=? `
+	err = o.Raw(sql, classifyId).QueryRow(&sort)
+	return
+}
+
+func GetEdbAndClassifyMaxSort(parentId int, classifyType uint8) (maxSort int, err error) {
+	//获取该层级下最大的排序数
+	classifyMaxSort, err := GetEdbClassifyMaxSort(parentId, classifyType)
+	if err != nil {
+		return
+	}
+	maxSort = classifyMaxSort
+	edbMaxSort, err := GetEdbInfoMaxSortByClassifyId(parentId)
+	if err != nil {
+		return
+	}
+	if maxSort < edbMaxSort {
+		maxSort = edbMaxSort
+	}
+	return
+}
+
+func GetTerminalFromBaseIndex(source int, edbCode string) (terminalCode string, sourceIndexName string, err error) {
+	tbName := GetBaseIndexTableName(source)
+	if tbName != "" {
+		var item BaseIndexTerminalCode
+		item, err = GetBaseIndexTerminalCode(edbCode, tbName)
+		if err != nil {
+			err = fmt.Errorf("查询数据源指标信息失败, Err: %s", err)
+			return
+		}
+		terminalCode = item.TerminalCode
+		sourceIndexName = item.IndexName
+	}
+	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
+}

+ 14 - 0
models/edb_terminal.go

@@ -1,6 +1,7 @@
 package models
 
 import (
+	"fmt"
 	"github.com/beego/beego/v2/client/orm"
 	"time"
 )
@@ -55,3 +56,16 @@ func GetEdbCountGroupByTerminal(source int) (list []TerminalCodeCountGroup, err
 	_, err = o.Raw(sql, source).QueryRows(&list)
 	return
 }
+
+type BaseIndexTerminalCode struct {
+	TerminalCode string `description:"终端编码,用于配置在机器上"`
+	IndexName    string
+}
+
+// GetBaseIndexTerminalCode 获取数据源的终端code
+func GetBaseIndexTerminalCode(edbCode, tableName string) (item BaseIndexTerminalCode, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := fmt.Sprintf(`select terminal_code, index_name from %s where index_code = ? `, tableName)
+	err = o.Raw(sql, edbCode).QueryRow(&item)
+	return
+}

+ 1 - 1
services/base_from_jiayue.go

@@ -303,7 +303,7 @@ func SyncJiaYueNewIndex(item models.BridgeJiaYueIndexAndData, menus []models.Bri
 	addParams.Unit = item.Unit
 	addParams.ClassifyId = classify.ClassifyId
 	addParams.Source = sourceId
-	edbInfo, e := models.EdbInfoAdd(addParams, "", 0, "")
+	edbInfo, e := models.EdbInfoAdd(addParams, "", 0, "", "")
 	if e != nil {
 		err = fmt.Errorf("EdbInfoAdd err: %s", e.Error())
 		return