Browse Source

更新指标最大最小值调整

xyxie 5 months ago
parent
commit
45b0ff8545

+ 1 - 1
models/base_from_baiinfo.go

@@ -286,7 +286,7 @@ func GetBaiinfoIndexInfoMaxAndMinInfo(indexCode string) (item *EdbInfoMaxAndMinI
 	//o := orm.NewOrm()
 	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date,MIN(value) AS min_value,MAX(value) AS max_value FROM base_from_baiinfo_data WHERE index_code=? `
 	//err = o.Raw(sql, indexCode).QueryRow(&item)
-	err = global.DEFAULT_DmSQL.Raw(sql, indexCode).First(&item).Error
+	err = global.DEFAULT_DmSQL.Raw(sql, indexCode).Find(&item).Error
 	return
 }
 

+ 1 - 1
models/base_from_bloomberg.go

@@ -170,7 +170,7 @@ func MultiInsertOrUpdateBaseFromBloombergData(inserts, updates []*BaseFromBloomb
 func GetBaseFromBloombergIndexMinMax(indexCode string) (item *EdbInfoMaxAndMinInfo, err error) {
 	//o := orm.NewOrm()
 	sql := `SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date,MIN(value) AS min_value,MAX(value) AS max_value FROM base_from_bloomberg_data WHERE index_code = ? `
-	err = global.DEFAULT_DmSQL.Raw(sql, indexCode).First(&item).Error
+	err = global.DEFAULT_DmSQL.Raw(sql, indexCode).Find(&item).Error
 	//err = o.Raw(sql, indexCode).QueryRow(&item)
 	if err != nil {
 		return

+ 2 - 2
models/base_from_business_data.go

@@ -275,12 +275,12 @@ func (m *BaseFromBusinessData) HandleData(addDataList, updateDataList []*BaseFro
 // @param whereParams interface{}
 // @return result EdbInfoMaxAndMinInfo
 // @return err error
-func (m *BaseFromBusinessData) GetEdbInfoMaxAndMinInfo(indexCode string) (result EdbInfoMaxAndMinInfo, err error) {
+func (m *BaseFromBusinessData) GetEdbInfoMaxAndMinInfo(indexCode string) (result *EdbInfoMaxAndMinInfo, err error) {
 	//o := orm.NewOrm()
 	sql := ``
 	sql = ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date,MIN(value) AS min_value,MAX(value) AS max_value FROM base_from_business_data WHERE index_code = ? `
 	//err = o.Raw(sql, indexCode).QueryRow(&result)
-	err = global.DEFAULT_DmSQL.Raw(sql, indexCode).First(&result).Error
+	err = global.DEFAULT_DmSQL.Raw(sql, indexCode).Find(&result).Error
 	if err != nil {
 		return
 	}

+ 1 - 1
models/base_from_ccf.go

@@ -356,7 +356,7 @@ func (m *BaseFromCCFData) GetMaxAndMinDateByIndexCode(indexCode string) (item *E
 	//o := orm.NewOrm()
 	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date,MIN(value) AS min_value,MAX(value) AS max_value FROM base_from_ccf_data WHERE index_code=? `
 	//err = o.Raw(sql, indexCode).QueryRow(&item)
-	err = global.DEFAULT_DmSQL.Raw(sql, indexCode).First(&item).Error
+	err = global.DEFAULT_DmSQL.Raw(sql, indexCode).Find(&item).Error
 	return
 }
 

+ 1 - 1
models/base_from_mysteel_chemical.go

@@ -616,7 +616,7 @@ func (d *BaseFromMysteelChemicalData) GetMysteelIndexInfoMaxAndMinInfo(indexCode
 	//o := orm.NewOrm()
 	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date,MIN(value) AS min_value,MAX(value) AS max_value FROM base_from_mysteel_chemical_data WHERE index_code=? `
 	//err = o.Raw(sql, indexCode).QueryRow(&item)
-	err = global.DEFAULT_DmSQL.Raw(sql, indexCode).Scan(&item).Error
+	err = global.DEFAULT_DmSQL.Raw(sql, indexCode).Find(&item).Error
 
 	if err != nil {
 		return

+ 1 - 1
models/base_from_smm.go

@@ -307,7 +307,7 @@ func GetSmmIndexInfoMaxAndMinInfo(indexCode string) (item *EdbInfoMaxAndMinInfo,
 	//o := orm.NewOrm()
 	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date,MIN(value) AS min_value,MAX(value) AS max_value FROM base_from_smm_data WHERE index_code=? `
 	//err = o.Raw(sql, indexCode).QueryRow(&item)
-	err = global.DEFAULT_DmSQL.Raw(sql, indexCode).Scan(&item).Error
+	err = global.DEFAULT_DmSQL.Raw(sql, indexCode).Find(&item).Error
 	if err != nil {
 		return
 	}

+ 1 - 1
models/base_from_yongyi.go

@@ -280,7 +280,7 @@ func (y *BaseFromYongyiData) GetMaxAndMinDateByIndexCode(indexCode string) (item
 	//o := orm.NewOrm()
 	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date,MIN(value) AS min_value,MAX(value) AS max_value FROM base_from_yongyi_data WHERE index_code=? `
 	//err = o.Raw(sql, indexCode).QueryRow(&item)
-	err = global.DEFAULT_DmSQL.Raw(sql, indexCode).First(&item).Error
+	err = global.DEFAULT_DmSQL.Raw(sql, indexCode).Find(&item).Error
 	return
 }
 

+ 33 - 7
models/edb_info.go

@@ -414,11 +414,26 @@ type EdbInfoMaxAndMinInfo struct {
 	MaxDate     string  `description:"最大日期" bson:"max_date"`
 	MinValue    float64 `description:"最小值" bson:"min_value"`
 	MaxValue    float64 `description:"最大值" bson:"max_value"`
-	LatestValue float64 `description:"最新值" bson:"latest_value"`
-	LatestDate  string  `description:"实际数据最新日期" bson:"latest_date"`
+	LatestValue float64 `gorm:"-" description:"最新值" bson:"latest_value"`
+	LatestDate  string  `gorm:"-" description:"实际数据最新日期" bson:"latest_date"`
 	EndValue    float64 `description:"最新值" bson:"end_value"`
 }
 
+// AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
+func (m *EdbInfoMaxAndMinInfo) AfterFind(db *gorm.DB) (err error) {
+	minDateTmp, err := time.ParseInLocation(utils.FormatDateWallWithLoc, m.MinDate, time.Local)
+	if err != nil {
+		return
+	}
+	m.MinDate = minDateTmp.Format(utils.FormatDate)
+	maxDateTmp, err := time.ParseInLocation(utils.FormatDateWallWithLoc, m.MaxDate, time.Local)
+	if err != nil {
+		return
+	}
+	m.MaxDate = maxDateTmp.Format(utils.FormatDate)
+	return
+}
+
 // EdbInfoMaxAndMinInfoTmp 指标最新数据记录结构体
 type EdbInfoMaxAndMinInfoTmp struct {
 	MinDate     time.Time `description:"最小日期" bson:"min_date"`
@@ -432,14 +447,15 @@ type EdbInfoMaxAndMinInfoTmp struct {
 
 // GetEdbInfoMaxAndMinInfo 获取指标的最新数据记录信息
 func GetEdbInfoMaxAndMinInfo(source, subSource int, edbCode string) (item *EdbInfoMaxAndMinInfo, err error) {
-	itemTmp := new(EdbInfoMaxAndMinInfoTmp)
+	//itemTmp := new(EdbInfoMaxAndMinInfoTmp)
 	sql := ``
 	tableName := GetEdbDataTableName(source, subSource)
 	sql = ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date,MIN(value) AS min_value,MAX(value) AS max_value FROM %s WHERE edb_code=? `
 	sql = fmt.Sprintf(sql, tableName)
-	err = global.DEFAULT_DmSQL.Raw(sql, edbCode).First(&itemTmp).Error
+	err = global.DEFAULT_DmSQL.Raw(sql, edbCode).Find(&item).Error
+	//fmt.Println("item.MinDate", item.MinDate)
 
-	itemTmp.MinDate = itemTmp.MinDate.In(time.Local)
+	/*itemTmp.MinDate = itemTmp.MinDate.In(time.Local)
 	itemTmp.MaxDate = itemTmp.MaxDate.In(time.Local)
 
 	item = &EdbInfoMaxAndMinInfo{
@@ -450,7 +466,7 @@ func GetEdbInfoMaxAndMinInfo(source, subSource int, edbCode string) (item *EdbIn
 		LatestValue: itemTmp.LatestValue,
 		LatestDate:  itemTmp.LatestDate.Format(utils.FormatDate),
 		EndValue:    itemTmp.EndValue,
-	}
+	}*/
 
 	var latest_value float64
 	sql = ` SELECT value AS latest_value FROM %s WHERE edb_code=? ORDER BY data_time DESC LIMIT 1 `
@@ -465,6 +481,16 @@ type EdbIndoDataUpdateTime struct {
 	MinDate string `description:"本次更新,数据发生变化的最早日期"`
 }
 
+// AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
+func (m *EdbIndoDataUpdateTime) AfterFind(db *gorm.DB) (err error) {
+	minDateTmp, err := time.ParseInLocation(utils.FormatDateWallWithLoc, m.MinDate, time.Local)
+	if err != nil {
+		return
+	}
+	m.MinDate = minDateTmp.Format(utils.FormatDate)
+	return
+}
+
 // GetEdbDataUpdateTimeByModify 获取指标的刷新时间获取最早的一条记录
 func GetEdbDataUpdateTimeByModify(source, subSource int, edbCode string, dataUpdateTime string) (item *EdbIndoDataUpdateTime, err error) {
 
@@ -472,7 +498,7 @@ func GetEdbDataUpdateTimeByModify(source, subSource int, edbCode string, dataUpd
 	tableName := GetEdbDataTableName(source, subSource)
 	sql = ` SELECT MIN(data_time) AS min_date FROM %s WHERE edb_code=? and modify_time>=?`
 	sql = fmt.Sprintf(sql, tableName)
-	err = global.DEFAULT_DmSQL.Raw(sql, edbCode, dataUpdateTime).First(&item).Error
+	err = global.DEFAULT_DmSQL.Raw(sql, edbCode, dataUpdateTime).Find(&item).Error
 	return
 }
 

+ 17 - 1
models/future_good/future_good_edb_info.go

@@ -4,6 +4,7 @@ import (
 	"errors"
 	"eta_gn/eta_index_lib/global"
 	"eta_gn/eta_index_lib/utils"
+	"gorm.io/gorm"
 	"time"
 )
 
@@ -128,12 +129,27 @@ type FutureGoodEdbInfoMaxAndMinInfo struct {
 	LatestDate  string  `description:"实际数据最新日期"`
 }
 
+// AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
+func (m *FutureGoodEdbInfoMaxAndMinInfo) AfterFind(db *gorm.DB) (err error) {
+	minDateTmp, err := time.ParseInLocation(utils.FormatDateWallWithLoc, m.MinDate, time.Local)
+	if err != nil {
+		return
+	}
+	m.MinDate = minDateTmp.Format(utils.FormatDate)
+	maxDateTmp, err := time.ParseInLocation(utils.FormatDateWallWithLoc, m.MaxDate, time.Local)
+	if err != nil {
+		return
+	}
+	m.MaxDate = maxDateTmp.Format(utils.FormatDate)
+	return
+}
+
 // GetEdbInfoMaxAndMinInfo 获取指标的最新数据记录信息
 func GetEdbInfoMaxAndMinInfo(futureGoodEdbCode string) (item *FutureGoodEdbInfoMaxAndMinInfo, err error) {
 
 	sql := ``
 	sql = ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date,MIN(close) AS min_value,MAX(close) AS max_value FROM future_good_edb_data WHERE future_good_edb_code=? `
-	err = global.DEFAULT_DmSQL.Raw(sql, futureGoodEdbCode).First(&item).Error
+	err = global.DEFAULT_DmSQL.Raw(sql, futureGoodEdbCode).Find(&item).Error
 
 	var latest_value float64
 	sql = ` SELECT close AS latest_value FROM future_good_edb_data WHERE future_good_edb_code=? ORDER BY data_time DESC LIMIT 1 `

+ 2 - 1
utils/constants.go

@@ -7,6 +7,7 @@ const (
 	FormatTime                 = "15:04:05"                //时间格式
 	FormatDate                 = "2006-01-02"              //日期格式
 	FormatDateUnSpace          = "20060102"                //日期格式
+	FormatDateWallWithLoc      = "2006-01-02T15:04:05Z"    //日期格式
 	FormatDateTime             = "2006-01-02 15:04:05"     //完整时间格式
 	FormatDateTimeMinute       = "2006-01-02 15:04"        //完整时间格式
 	HlbFormatDateTime          = "2006-01-02_15:04:05.999" //完整时间格式
@@ -113,7 +114,7 @@ const (
 	DATA_SOURCE_SCI_HQ                               = 88 // 卓创红期->88
 	DATA_SOURCE_OILCHEM                              = 89 // 隆众资讯 -> 89
 	DATA_SOURCE_PREDICT_CALCULATE_RANGEANLYSIS       = 90 // 预测指标区间计算->90
-	DATA_SOURCE_LY            						 = 91 // 粮油商务网
+	DATA_SOURCE_LY                                   = 91 // 粮油商务网
 	DATA_SOURCE_TRADE_ANALYSIS                       = 92 // 持仓分析
 )