Roc 4 months ago
parent
commit
8b157dc128
2 changed files with 84 additions and 0 deletions
  1. 25 0
      models/predict_edb_data_base.go
  2. 59 0
      models/predict_edb_rule_data.go

+ 25 - 0
models/predict_edb_data_base.go

@@ -332,6 +332,31 @@ func (obj PredictStandardBase) Refresh(params RefreshParams) (latestDateStr stri
 		}
 	}()
 
+	for k, v := range predictEdbConfList {
+		tmpDataList, tmpErr := GetPredictEdbRuleDataByTo(to, v.ConfigId)
+		if tmpErr != nil {
+			err = tmpErr
+			return
+		}
+
+		edbInfoSearchDataList := make([]*EdbInfoSearchData, 0)
+		for _, tmpData := range tmpDataList {
+			// 计算出来的结果集
+			tmpValueDec, tmpErr := decimal.NewFromString(tmpData.Value)
+			if tmpErr != nil {
+				err = tmpErr
+				return
+			}
+			tmpVal, _ := tmpValueDec.Float64()
+			edbInfoSearchDataList = append(edbInfoSearchDataList, &EdbInfoSearchData{
+				//EdbDataId: 0,
+				DataTime: tmpData.DataTime,
+				Value:    tmpVal,
+			})
+		}
+		predictEdbConfList[k].DataList = edbInfoSearchDataList
+	}
+
 	// 重新预测数据
 	latestDateStr, latestValue, err, errMsg = obj.refresh(to, edbInfo, predictEdbConfList, edbInfo.EdbCode, "")
 

+ 59 - 0
models/predict_edb_rule_data.go

@@ -2,6 +2,8 @@ package models
 
 import (
 	"eta_gn/eta_index_lib/global"
+	"eta_gn/eta_index_lib/utils"
+	"gorm.io/gorm"
 	"time"
 )
 
@@ -45,5 +47,62 @@ func GetPredictEdbRuleDataItemList(edbInfoId, configId int, startDate, endDate s
 	sql += ` ORDER BY data_time ASC `
 	err = global.DEFAULT_DmSQL.Raw(sql, pars...).Scan(&list).Error
 
+	if err != nil {
+		return
+	}
+
+	for _, v := range list {
+		v.ConvertDate()
+	}
+
+	return
+}
+
+// GetPredictEdbRuleDataByTo
+// @Description: 根据配置id获取数据
+// @author: Roc
+// @datetime 2024-10-31 15:17:38
+// @param to *gorm.DB
+// @param configId int
+// @return list []*PredictEdbRuleData
+// @return err error
+func GetPredictEdbRuleDataByTo(to *gorm.DB, configId int) (list []*PredictEdbRuleData, err error) {
+	sql := `SELECT * FROM predict_edb_rule_data WHERE config_id = ?`
+	err = to.Raw(sql, configId).Find(&list).Error
+	return
+}
+
+// AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
+func (m *PredictEdbRuleData) AfterFind(db *gorm.DB) (err error) {
+	if m.DataTime == "" {
+		return
+	}
+	dataDateTmp, err := time.ParseInLocation(utils.FormatDateWallWithLoc, m.DataTime, time.Local)
+	if err != nil {
+		return
+	}
+	m.DataTime = dataDateTmp.Format(utils.FormatDate)
+	return
+}
+
+// ConvertDate
+// @Description: 日期转换
+// @author: Roc
+// @receiver m
+// @datetime 2024-10-31 15:26:48
+func (m *PredictEdbRuleData) ConvertDate() {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+
+	return
+}
+
+// ConvertDate
+// @Description: 日期转换
+// @author: Roc
+// @receiver m
+// @datetime 2024-10-31 15:26:59
+func (m *PredictEdbRuleDataItem) ConvertDate() {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+
 	return
 }