ソースを参照

fix:预测指标刷新

Roc 2 年 前
コミット
a84c8cdc41
4 ファイル変更66 行追加0 行削除
  1. 1 0
      models/db.go
  2. 2 0
      models/edb_info.go
  3. 54 0
      models/predict_edb_conf.go
  4. 9 0
      utils/common.go

+ 1 - 0
models/db.go

@@ -41,5 +41,6 @@ func init() {
 		new(EdbPythonCode),
 		new(EdbDataPython),
 		new(ChartEdbMapping),
+		new(PredictEdbConf),
 	)
 }

+ 2 - 0
models/edb_info.go

@@ -293,5 +293,7 @@ func UnifiedModifyEdbInfoMaxAndMinInfo(edbInfo *EdbInfo) (err error, errMsg stri
 			return
 		}
 	}
+	// 修改关联的预测指标
+	go ModifyPredictEdbInfoMaxAndMinInfoBySourceEdbInfoId(edbInfo.EdbInfoId, maxAndMinItem)
 	return
 }

+ 54 - 0
models/predict_edb_conf.go

@@ -0,0 +1,54 @@
+package models
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"hongze/hongze_edb_lib/utils"
+	"time"
+)
+
+type PredictEdbConf struct {
+	PredictEdbInfoId int       `orm:"column(predict_edb_info_id);pk" description:"预测指标id"`
+	SourceEdbInfoId  int       `description:"来源指标id"`
+	RuleType         int       `description:"预测规则,1:最新,2:固定值"`
+	FixedValue       float64   `description:"固定值"`
+	ModifyTime       time.Time `description:"修改时间"`
+	CreateTime       time.Time `description:"添加时间"`
+}
+
+// GetPredictEdbConfById 根据预测指标id获取预测指标配置信息
+func GetPredictEdbConfById(edbInfoId int) (item *PredictEdbConf, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT * FROM predict_edb_conf WHERE predict_edb_info_id=? `
+	err = o.Raw(sql, edbInfoId).QueryRow(&item)
+	return
+}
+
+// GetPredictEdbConfCount 根据来源指标id获取被引用的次数
+func GetPredictEdbConfCount(sourceEdbInfoId int) (count int, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT COUNT(1) AS count FROM predict_edb_conf WHERE source_edb_info_id=? `
+	err = o.Raw(sql, sourceEdbInfoId).QueryRow(&count)
+	return
+}
+
+// ModifyPredictEdbInfoMaxAndMinInfoBySourceEdbInfoId 根据来源指标修改预测指标的最新数据信息
+func ModifyPredictEdbInfoMaxAndMinInfoBySourceEdbInfoId(sourceEdbInfoId int, item *EdbInfoMaxAndMinInfo) (err error) {
+	o := orm.NewOrm()
+	var list []*PredictEdbConf
+	sql := ` SELECT * FROM predict_edb_conf WHERE source_edb_info_id=? `
+	total, err := o.Raw(sql, sourceEdbInfoId).QueryRows(&list)
+	if err != nil {
+		return
+	}
+
+	if total > 0 {
+		idList := make([]int, 0)
+		for _, v := range list {
+			idList = append(idList, v.PredictEdbInfoId)
+		}
+
+		sql := ` UPDATE edb_info SET start_date=?,min_value=?,max_value=?,is_update=2,latest_date=?,latest_value=?,modify_time=NOW() WHERE edb_info_id in (` + utils.GetOrmInReplace(int(total)) + `) `
+		_, err = o.Raw(sql, item.MinDate, item.MinValue, item.MaxValue, item.MaxDate, item.LatestValue, idList).Exec()
+	}
+	return
+}

+ 9 - 0
utils/common.go

@@ -1075,3 +1075,12 @@ func InArrayByStr(idStrList []string, searchId string) (has bool) {
 	}
 	return
 }
+
+// GetOrmInReplace 获取orm的in查询替换?的方法
+func GetOrmInReplace(num int) string {
+	template := make([]string, num)
+	for i := 0; i < num; i++ {
+		template[i] = "?"
+	}
+	return strings.Join(template, ",")
+}