瀏覽代碼

feat:钢联化工新增绑定终端

Roc 1 年之前
父節點
當前提交
35162097d6

+ 0 - 8
controllers/data_manage/mysteel_chemical_data.go

@@ -811,14 +811,6 @@ func (this *EdbClassifyController) AddMysteelChemical() {
 	req.IndexCode = utils.TrimStr(req.IndexCode)
 	req.IndexCode = strings.Replace(req.IndexCode, "\t", "", -1)
 
-	// 因为excel获取数据是界面化的,所以同一时间只能存在一个指标添加
-	key := `mysteel_chemical:add`
-	res := utils.Rc.SetNX(key, 1, 30*time.Second)
-	if !res {
-		br.Msg = "当前已存在添加中的指标,请在30秒后添加"
-		br.IsSendEmail = false
-		return
-	}
 	//添加指标
 	mysteelChemicalIndexInfo, err, errMsg := data.AddMysteelChemicalIndex(req.BaseFromMysteelChemicalClassifyId, strings.ToUpper(req.IndexCode), req.UpdateWeek, req.UpdateTime, this.SysUser.AdminId, this.SysUser.RealName)
 	if errMsg != `` {

+ 26 - 0
models/data_manage/edb_terminal.go

@@ -0,0 +1,26 @@
+package data_manage
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+// EdbTerminal 指标终端
+type EdbTerminal struct {
+	TerminalId   int       `orm:"column(terminal_id);pk"`
+	Source       int       `orm:"column(source)" description:"指标来源类型"`
+	Name         string    `description:"终端别名"`
+	TerminalCode string    `description:"终端编码,用于配置在机器上"`
+	ServerUrl    string    `description:"终端地址"`
+	Num          int       `description:"终端最大指标数"`
+	ModifyTime   time.Time `description:"修改时间"`
+	CreateTime   time.Time `description:"创建时间"`
+}
+
+// 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 `
+	_, err = o.Raw(sql, source).QueryRows(&items)
+	return
+}

+ 21 - 2
models/data_manage/mysteel_chemical_index.go

@@ -1,10 +1,10 @@
 package data_manage
 
 import (
+	"eta/eta_api/utils"
 	"fmt"
 	"github.com/beego/beego/v2/client/orm"
 	"github.com/rdlucklib/rdluck_tools/paging"
-	"eta/eta_api/utils"
 	"time"
 )
 
@@ -29,6 +29,7 @@ type BaseFromMysteelChemicalIndex struct {
 	CreateTime                        time.Time `description:"创建时间"`
 	Sort                              int       `description:"排序字段"`
 	MergeFilePath                     string    `description:"合并文件"`
+	TerminalCode                      string    `description:"终端编码"`
 }
 
 // Update 更新钢联化工指标基础信息
@@ -42,6 +43,11 @@ func (item *BaseFromMysteelChemicalIndex) Update(cols []string) (err error) {
 func AddBaseFromMysteelChemicalIndex(item *BaseFromMysteelChemicalIndex) (lastId int64, err error) {
 	o := orm.NewOrmUsingDB("data")
 	lastId, err = o.Insert(item)
+	if err != nil {
+		return
+	}
+	item.BaseFromMysteelChemicalIndexId = int(lastId)
+
 	return
 }
 
@@ -316,4 +322,17 @@ func GetMysteelChemicalIndexAdminList() (list []int, err error) {
 
 	_, err = o.Raw(sql).QueryRows(&list)
 	return
-}
+}
+
+type TerminalNum struct {
+	TerminalCode string `description:"terminal_code"`
+	Num          int    `description:"num"`
+}
+
+// GetMysteelChemicalGroupTerminalNum 获取钢联化工指标的终端分布
+func GetMysteelChemicalGroupTerminalNum() (items []*TerminalNum, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT terminal_code,count(1) num FROM base_from_mysteel_chemical_index GROUP BY terminal_code ORDER BY num ASC `
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}

+ 1 - 0
models/db.go

@@ -286,6 +286,7 @@ func initEdbData() {
 		new(data_manage.BaseFromBaiinfoClassify),
 		new(data_manage.EdbDataInsertConfig),      // 指标数据插入配置表
 		new(data_manage.EdbInfoNoPermissionAdmin), //指标不可见用户配置表
+		new(data_manage.EdbTerminal),              //指标终端
 	)
 }
 

+ 46 - 41
services/data/mysteel_chemical.go

@@ -3,11 +3,11 @@ package data
 import (
 	"encoding/json"
 	"errors"
-	"fmt"
-	"github.com/rdlucklib/rdluck_tools/http"
 	"eta/eta_api/models/data_manage"
 	"eta/eta_api/models/system"
 	"eta/eta_api/utils"
+	"fmt"
+	"github.com/rdlucklib/rdluck_tools/http"
 	"strings"
 	"time"
 )
@@ -282,6 +282,13 @@ func AddMysteelChemicalIndex(classifyId int, indexCode, updateWeek, updateTimeSt
 		}
 	}
 
+	edbTerminal := getEdbTerminal(utils.DATA_SOURCE_MYSTEEL_CHEMICAL)
+	if edbTerminal == nil {
+		errMsg = `钢联终端信息未配置`
+		err = errors.New(errMsg)
+		return
+	}
+
 	baseFromMysteelChemicalIndex = &data_manage.BaseFromMysteelChemicalIndex{
 		//BaseFromMysteelChemicalIndexId:    0,
 		BaseFromMysteelChemicalClassifyId: classifyId,
@@ -300,14 +307,13 @@ func AddMysteelChemicalIndex(classifyId int, indexCode, updateWeek, updateTimeSt
 		SysUserRealName:                   sysUserName,
 		ModifyTime:                        time.Now(),
 		CreateTime:                        time.Now(),
+		TerminalCode:                      edbTerminal.TerminalCode, // 终端编码
 	}
 	_, err = data_manage.AddBaseFromMysteelChemicalIndex(baseFromMysteelChemicalIndex)
 	if err != nil {
 		errMsg = "保存分类失败"
 	}
 
-	// 调用指标服务生成excel并拉取数据
-	go CurlAddMysteelChemicalData(indexCode, updateWeek)
 	return
 }
 
@@ -355,8 +361,6 @@ func EditMysteelChemicalIndex(indexId, classifyId int, updateWeek, updateTimeStr
 	go func(oldUpdateWeek string, indexInfo *data_manage.BaseFromMysteelChemicalIndex) {
 		// 先删除excel表
 		CurlDelMysteelChemicalData(indexInfo.IndexCode, oldUpdateWeek)
-		// 再创建excel表
-		CurlAddMysteelChemicalData(indexInfo.IndexCode, indexInfo.UpdateWeek)
 	}(oldUpdateWeek, baseFromMysteelChemicalIndex)
 
 	return
@@ -537,38 +541,6 @@ func GetMysteelChemicalOpButton(sysUser *system.Admin, belongUserId int) (button
 	return
 }
 
-// CurlAddMysteelChemicalData 请求钢联服务器添加指标
-func CurlAddMysteelChemicalData(indexCode, updateWeek string) {
-	postUrl := utils.MySteelPostUrl + `/api/index/create`
-	//type IndexAddReq struct {
-	//	IndexCode  string `json:"IndexCode" binding:"required"`    //指标编码
-	//	UpdateWeek string `json:"UpdateWeek"`                      //更新周期
-	//	RunMode    string `description:"运行环境:debug:测试(默认),release:生产" json:"UpdateWeek"` //更新周期
-	//}
-	paramsMap := make(map[string]interface{})
-
-	updateWeek = WeekMap[updateWeek]
-	paramsMap["IndexCode"] = indexCode
-	paramsMap["UpdateWeek"] = updateWeek
-	paramsMap["RunMode"] = utils.RunMode
-
-	paramJson, err := json.Marshal(paramsMap)
-	if err != nil {
-		fmt.Println("param json.Marshal Err:" + err.Error())
-		err = errors.New("param json.Marshal Err:" + err.Error())
-		return
-	}
-
-	utils.FileLog.Info(fmt.Sprintf("CurlAddMysteelChemicalData parms:%s", string(paramJson)))
-	result, err := http.Post(postUrl, string(paramJson), "application/json")
-	if err != nil {
-		fmt.Println("post err:" + err.Error())
-		err = errors.New("post Err:" + err.Error())
-		return
-	}
-	utils.FileLog.Info("CurlAddMysteelChemicalData Result:%s", string(result))
-}
-
 // CurlDelMysteelChemicalData 请求钢联服务器删除指标
 func CurlDelMysteelChemicalData(indexCode, updateWeek string) {
 	postUrl := utils.MySteelPostUrl + `/api/index/delete`
@@ -613,7 +585,7 @@ var WeekMap = map[string]string{
 	"周日": "sunday",
 }
 
-// CurlAddMysteelChemicalData 请求钢联服务器添加指标
+// CurlRefreshMysteelChemicalData 请求钢联服务器添加指标
 func CurlRefreshMysteelChemicalData(mergeFilePath string) {
 	postUrl := utils.MySteelPostUrl + `/api/index/refresh`
 	//type IndexAddReq struct {
@@ -630,12 +602,45 @@ func CurlRefreshMysteelChemicalData(mergeFilePath string) {
 		return
 	}
 
-	utils.FileLog.Info(fmt.Sprintf("CurlAddMysteelChemicalData parms:%s", string(paramJson)))
+	utils.FileLog.Info(fmt.Sprintf("CurlRefreshMysteelChemicalData parms:%s", string(paramJson)))
 	result, err := http.Post(postUrl, string(paramJson), "application/json")
 	if err != nil {
 		fmt.Println("post err:" + err.Error())
 		err = errors.New("post Err:" + err.Error())
 		return
 	}
-	utils.FileLog.Info("CurlAddMysteelChemicalData Result:%s", string(result))
+	utils.FileLog.Info("CurlRefreshMysteelChemicalData Result:%s", string(result))
+}
+
+// getEdbTerminal 根据指标来源获取可用指标终端信息
+func getEdbTerminal(source int) (edbTerminal *data_manage.EdbTerminal) {
+	terminalNumList, err := data_manage.GetMysteelChemicalGroupTerminalNum()
+	if err != nil {
+		return
+	}
+
+	terminalNumMap := make(map[string]int)
+	for _, v := range terminalNumList {
+		terminalNumMap[v.TerminalCode] = v.Num
+	}
+
+	terminalList, err := data_manage.GetEdbTerminalListBySource(source)
+	if err != nil {
+		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
+		}
+	}
+
+	return
 }