|
@@ -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
|
|
|
}
|
|
|
|