Browse Source

Merge remote-tracking branch 'origin/master' into debug

Roc 1 year ago
parent
commit
b59a106956

+ 1 - 0
controllers/base_from_mysteel_chemical.go

@@ -609,6 +609,7 @@ func (this *MySteelChemicalController) AddMysteelIndex() {
 	}
 	if isAdd {
 		mysteelIndexObj.IndexCode = req.EdbCode
+		mysteelIndexObj.TerminalCode = req.TerminalCode
 		mysteelIndexObj.BaseFromMysteelChemicalClassifyId = req.BaseFromMysteelChemicalClassifyId
 		mysteelIndexObj.SysUserId = req.SysUserId
 		mysteelIndexObj.SysUserRealName = req.SysUserRealName

+ 88 - 1
controllers/base_from_smm.go

@@ -153,9 +153,96 @@ func (this *SmmController) HandleExcelData() {
 	}
 
 	// 处理excel表数据
-	services.SmmIndexHandle(req.BaseFilePath, req.RenameFilePath, req.IndexName, req.IndexCode, req.Unit, req.Frequency, req.ExcelDataMap)
+	services.SmmIndexHandle(req.BaseFilePath, req.RenameFilePath, req.IndexName, req.IndexCode, req.Unit, req.Frequency, req.Source, req.ExcelDataMap)
 
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "处理成功"
 }
+
+// AddIndexToDataSource
+// @Title 添加指标到数据源-SMM
+// @Description 添加指标到数据源-SMM
+// @Success 200 {object} models.AddSmmIndexToDataSourceResp
+// @router /add/index/to_data_source [post]
+func (this *SmmController) AddIndexToDataSource() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	var req models.AddSmmIndexToDataSourceResp
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	smmIndexObj := new(models.BaseFromSmmIndex)
+	indexItem, err := smmIndexObj.GetSmmIndexItem(req.EdbCode)
+	var isAdd bool
+	if err != nil {
+		if err.Error() == utils.ErrNoRow() {
+			isAdd = true
+		} else {
+			br.Msg = "判断指标是否存在失败"
+			br.ErrMsg = "判断指标是否存在失败,Err:" + err.Error()
+			return
+		}
+	}
+	if indexItem == nil {
+		isAdd = true
+	}
+	if isAdd {
+		smmIndexObj.IndexCode = req.EdbCode
+		smmIndexObj.ClassifyId = req.ClassifyId
+		smmIndexObj.CreateTime = time.Now()
+		smmIndexObj.ModifyTime = time.Now()
+		err = smmIndexObj.Add()
+		if err != nil {
+			br.Msg = "新增指标失败"
+			br.ErrMsg = "新增指标失败,Err:" + err.Error()
+			return
+		}
+	}
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "新增成功"
+}
+
+// GetIndexDetailByCode
+// @Title 获取指标详情
+// @Description 获取指标详情
+// @Success 200 {object} models.GetIndexDetailReq
+// @router /index_detail/from_data_source [post]
+func (this *SmmController) GetIndexDetailFromDataSourceByCode() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	var req models.GetIndexDetailReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	if req.IndexCode == "" {
+		br.Msg = "参数有误"
+		br.ErrMsg = "参数有误"
+		return
+	}
+
+	indexObj := new(models.BaseFromSmmIndex)
+	item, err := indexObj.GetIndexItem(req.IndexCode)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取指标失败, Err: " + err.Error()
+		return
+	}
+	br.Data = item
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+}

+ 64 - 0
controllers/base_from_smm_classify.go

@@ -0,0 +1,64 @@
+package controllers
+
+import (
+	"encoding/json"
+	"eta/eta_index_lib/models"
+	"eta/eta_index_lib/utils"
+	"strconv"
+)
+
+// @Title 查询/新增分类
+// @Description 查询/新增分类接口
+// @Param	request	body models.AddSmmClassifyReq true "type json string"
+// @Success 200 {object} models.EdbClassify
+// @router /smm_classify/get_or_add [post]
+func (this *SmmController) SmmGetOrAdd() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	var req models.AddSmmClassifyReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	if req.ClassifyName == "" {
+		br.Msg = "请输入分类名称"
+		br.IsSendEmail = false
+		return
+	}
+	if req.ParentId < 0 {
+		br.Msg = "参数错误"
+		br.IsSendEmail = false
+		return
+	}
+
+	sysUserId := utils.InitAdminId
+	sysUserName := utils.InitAdminName
+	if req.SysUserId > 0 {
+		sysUserId = strconv.Itoa(req.SysUserId)
+	}
+	if req.SysUserRealName != `` {
+		sysUserName = req.SysUserRealName
+	}
+
+	//添加指标
+	edbClassify, err, errMsg := models.SaveSmmClassify(req.ClassifyName, req.ParentId, req.Level, sysUserId, sysUserName)
+	if errMsg != `` {
+		br.Msg = errMsg
+		br.ErrMsg = errMsg
+		if err != nil {
+			br.ErrMsg = errMsg + ";Err:" + err.Error()
+		} else {
+			br.IsSendEmail = false
+		}
+		return
+	}
+	br.Ret = 200
+	br.Msg = "保存成功"
+	br.Success = true
+	br.Data = edbClassify
+}

+ 1 - 0
models/base_from_mysteel_chemical.go

@@ -446,6 +446,7 @@ func (r *BaseFromMysteelChemicalData) Add(list []BaseFromMysteelChemicalData) (e
 
 type AddMysteelIndexResp struct {
 	EdbCode                           string `description:"指标编码"`
+	TerminalCode                      string `description:"指标终端编码"`
 	BaseFromMysteelChemicalClassifyId int    `description:"指标分类"`
 	SysUserId                         int    `description:"操作人id"`
 	SysUserRealName                   string `description:"操作人真实名称"`

+ 36 - 0
models/base_from_smm.go

@@ -191,6 +191,7 @@ func RefreshEdbDataFromSmm(edbInfoId int, edbCode, startDate string) (err error)
 
 type BaseFromSmmIndex struct {
 	BaseFromSmmIndexId int64 `orm:"column(base_from_smm_index_id);pk"`
+	ClassifyId         int
 	Interface          string
 	Name               string
 	IndexCode          string
@@ -227,6 +228,13 @@ func (d *BaseFromSmmIndex) GetSmmIndexItem(indexCode string) (item *BaseFromSmmI
 	return
 }
 
+// Add 新增
+func (m *BaseFromSmmIndex) Add() (err error) {
+	o := orm.NewOrm()
+	_, err = o.Insert(m)
+	return
+}
+
 func GetBaseFromSmmDataBySmmCode(smmCode string) (list []*BaseFromSmmData, err error) {
 	o := orm.NewOrm()
 	sql := ` SELECT * FROM base_from_smm_data WHERE index_code=? `
@@ -260,6 +268,7 @@ type HandleSmmExcelDataReq struct {
 	BaseFilePath   string
 	RenameFilePath string
 	IndexName      string
+	Source         string
 	IndexCode      string
 	Unit           string
 	Frequency      string
@@ -292,3 +301,30 @@ func MultiUpdateBaseFromSmmDataValue(items []*BaseFromSmmData) (err error) {
 	}
 	return
 }
+
+type AddSmmIndexToDataSourceResp struct {
+	EdbCode         string `description:"指标编码"`
+	ClassifyId      int    `description:"指标分类"`
+	SysUserId       int    `description:"操作人id"`
+	SysUserRealName string `description:"操作人真实名称"`
+}
+
+func (m *BaseFromSmmIndex) GetIndexItem(indexCode string) (item *BaseFromSmmIndex, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM base_from_smm_index WHERE index_code = ? `
+	err = o.Raw(sql, indexCode).QueryRow(&item)
+	return
+}
+
+// 修改
+func (m *BaseFromSmmIndex) Update(updateParams, whereParam map[string]interface{}) (err error) {
+	to := orm.NewOrm()
+	ptrStructOrTableName := "base_from_smm_index"
+
+	qs := to.QueryTable(ptrStructOrTableName)
+	for expr, exprV := range whereParam {
+		qs = qs.Filter(expr, exprV)
+	}
+	_, err = qs.Update(updateParams)
+	return
+}

+ 85 - 0
models/base_from_smm_classify.go

@@ -0,0 +1,85 @@
+package models
+
+import (
+	"eta/eta_index_lib/utils"
+	"github.com/beego/beego/v2/client/orm"
+	"strconv"
+	"time"
+)
+
+type BaseFromSmmClassify struct {
+	ClassifyId      int       `orm:"column(classify_id);pk"`
+	ClassifyName    string    `description:"分类名称"`
+	ParentId        int       `description:"父级id"`
+	SysUserId       int       `description:"创建人id"`
+	SysUserRealName string    `description:"创建人姓名"`
+	Level           int       `description:"层级"`
+	Sort            int       `description:"排序字段,越小越靠前,默认值:10"`
+	ModifyTime      time.Time `description:"修改时间"`
+	CreateTime      time.Time `description:"创建时间"`
+}
+
+func AddSmmClassify(item *BaseFromSmmClassify) (lastId int64, err error) {
+	o := orm.NewOrm()
+	lastId, err = o.Insert(item)
+	return
+}
+
+type AddSmmClassifyReq struct {
+	ClassifyName    string `description:"分类名称"`
+	ParentId        int    `description:"父级id,第一级传0"`
+	Level           int    `description:"层级,第一级传0,其余传上一级的层级"`
+	SysUserId       int    `description:"操作人id"`
+	SysUserRealName string `description:"操作人真实名称"`
+}
+
+// 判断分类名称是否存在
+func GetSmmClassify(classifyName string, parentId int) (item *BaseFromSmmClassify, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM base_from_smm_classify WHERE parent_id=? AND classify_name=? `
+	err = o.Raw(sql, parentId, classifyName).QueryRow(&item)
+	return
+}
+
+// 添加指标分类
+func SaveSmmClassify(classifyName string, parentId, level int, sysUserId, sysUserName string) (classifyInfo *BaseFromSmmClassify, err error, errMsg string) {
+	edbClassify, err := GetSmmClassify(classifyName, parentId)
+
+	var isAdd bool
+	if err != nil {
+		if err.Error() == utils.ErrNoRow() {
+			isAdd = true
+		} else {
+			errMsg = `判断名称是否已存在失败`
+			return
+		}
+	}
+
+	if edbClassify != nil && edbClassify.ClassifyId > 0 {
+		classifyInfo = edbClassify
+		return edbClassify, nil, ""
+	} else {
+		isAdd = true
+	}
+	if isAdd {
+		sysUserIdInt, _ := strconv.Atoi(sysUserId)
+		//获取该层级下最大的排序数
+		maxSort, err := GetMysteelClassifyMaxSort(parentId)
+		classifyInfo = &BaseFromSmmClassify{
+			ClassifyName:    classifyName,
+			ParentId:        parentId,
+			CreateTime:      time.Now(),
+			ModifyTime:      time.Now(),
+			SysUserId:       sysUserIdInt,
+			SysUserRealName: sysUserName,
+			Level:           level + 1,
+			Sort:            maxSort,
+		}
+		classifyId, err := AddSmmClassify(classifyInfo)
+		if err != nil {
+			errMsg = "保存分类失败"
+		}
+		classifyInfo.ClassifyId = int(classifyId)
+	}
+	return
+}

+ 1 - 0
models/db.go

@@ -101,5 +101,6 @@ func initBaseIndex() {
 		new(BaseFromMysteelChemicalData),
 		new(BaseFromTradeShanghaiIndex),
 		new(BaseFromTradeIneIndex),
+		new(BaseFromSmmClassify),
 	)
 }

+ 15 - 1
models/edb_info.go

@@ -1081,6 +1081,20 @@ func EdbInfoAdd(req *AddEdbInfoParams, serverUrl string, sysUserId int, sysUserR
 		edbType = 2 //计算指标
 	}
 
+	// 钢联化工需要校验下信息是否完整
+	if source == utils.DATA_SOURCE_MYSTEEL_CHEMICAL {
+		indexObj := new(BaseFromMysteelChemicalIndex)
+		tmpItem, tmpErr := indexObj.GetIndexItem(req.EdbCode)
+		if tmpErr != nil {
+			err = tmpErr
+			return
+		}
+		if tmpItem == nil || tmpItem.IndexName == `` {
+			err = errors.New("指标信息不全")
+			return
+		}
+	}
+
 	edbInfo.EdbCode = req.EdbCode
 	edbInfo.EdbName = req.EdbName
 	edbInfo.EdbNameSource = req.EdbName
@@ -1094,7 +1108,7 @@ func EdbInfoAdd(req *AddEdbInfoParams, serverUrl string, sysUserId int, sysUserR
 	edbInfo.ModifyTime = time.Now()
 	edbInfo.ServerUrl = serverUrl
 	timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
-	edbInfo.UniqueCode = utils.MD5(utils.DATA_PREFIX + "_" + timestamp)
+	edbInfo.UniqueCode = utils.MD5(utils.DATA_PREFIX + "_" + req.EdbCode + timestamp)
 	itemVal, err := GetEdbInfoMaxAndMinInfo(source, req.EdbCode)
 	if itemVal != nil && err == nil {
 		edbInfo.MaxValue = itemVal.MaxValue

+ 27 - 0
routers/commentsRouter.go

@@ -826,6 +826,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_index_lib/controllers:SmmController"] = append(beego.GlobalControllerRouter["eta/eta_index_lib/controllers:SmmController"],
+        beego.ControllerComments{
+            Method: "AddIndexToDataSource",
+            Router: `/add/index/to_data_source`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_index_lib/controllers:SmmController"] = append(beego.GlobalControllerRouter["eta/eta_index_lib/controllers:SmmController"],
         beego.ControllerComments{
             Method: "HandleExcelData",
@@ -835,6 +844,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_index_lib/controllers:SmmController"] = append(beego.GlobalControllerRouter["eta/eta_index_lib/controllers:SmmController"],
+        beego.ControllerComments{
+            Method: "GetIndexDetailFromDataSourceByCode",
+            Router: `/index_detail/from_data_source`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_index_lib/controllers:SmmController"] = append(beego.GlobalControllerRouter["eta/eta_index_lib/controllers:SmmController"],
         beego.ControllerComments{
             Method: "Refresh",
@@ -844,6 +862,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_index_lib/controllers:SmmController"] = append(beego.GlobalControllerRouter["eta/eta_index_lib/controllers:SmmController"],
+        beego.ControllerComments{
+            Method: "SmmGetOrAdd",
+            Router: `/smm_classify/get_or_add`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_index_lib/controllers:StockPlantController"] = append(beego.GlobalControllerRouter["eta/eta_index_lib/controllers:StockPlantController"],
         beego.ControllerComments{
             Method: "Calculate",

+ 20 - 1
services/base_from_smm.go

@@ -1,6 +1,7 @@
 package services
 
 import (
+	"errors"
 	"eta/eta_index_lib/logic"
 	"eta/eta_index_lib/models"
 	"eta/eta_index_lib/services/alarm_msg"
@@ -10,7 +11,7 @@ import (
 	"time"
 )
 
-func SmmIndexHandle(baseFilePath, renameFilePath, indexName, indexCode, unit, frequency string, excelDataMap map[string]string) {
+func SmmIndexHandle(baseFilePath, renameFilePath, indexName, indexCode, unit, frequency, source string, excelDataMap map[string]string) {
 	var err error
 
 	errMsgList := make([]string, 0)
@@ -63,6 +64,7 @@ func SmmIndexHandle(baseFilePath, renameFilePath, indexName, indexCode, unit, fr
 		indexObj.IndexName = indexName
 		indexObj.Unit = unit
 		indexObj.Frequency = frequency
+		indexObj.Interface = source
 		indexObj.ModifyTime = time.Now()
 		indexObj.CreateTime = time.Now()
 		indexObj.BaseFileName = baseFilePath
@@ -87,6 +89,23 @@ func SmmIndexHandle(baseFilePath, renameFilePath, indexName, indexCode, unit, fr
 			exitDataMap[v.DataTime] = v
 		}
 		indexId = item.BaseFromSmmIndexId
+		//修改指标信息
+		updateParams := make(map[string]interface{})
+		updateParams["index_name"] = indexName
+		updateParams["frequency"] = frequency
+		updateParams["unit"] = unit
+		updateParams["interface"] = source
+		updateParams["modify_time"] = time.Now()
+
+		whereParam := make(map[string]interface{})
+		whereParam["index_code"] = indexCode
+
+		smmIndexObj := new(models.BaseFromSmmIndex)
+		err = smmIndexObj.Update(updateParams, whereParam)
+		if err != nil {
+			err = errors.New("smm index update err:" + err.Error())
+			return
+		}
 	}
 
 	// 遍历excel数据,然后跟现有的数据做校验,不存在则入库