Browse Source

格式化EdbInfo模型及其相关日期字段

- 在EdbInfo模型中添加AfterFind钩子函数,用于将日期字段从特定格式转换为通用格式
- 实现ConvertDate方法,用于格式化EdbInfo和EdbInfoList模型中的日期字段
- 在获取EdbInfo数据的查询函数中调用ConvertDate方法,确保返回的日期格式一致
- 优化日期处理逻辑,提高代码可维护性和可读性
Roc 5 months ago
parent
commit
4a30ab9ab1
2 changed files with 89 additions and 2 deletions
  1. 88 1
      models/edb_info.go
  2. 1 1
      models/predict_edb_conf.go

+ 88 - 1
models/edb_info.go

@@ -74,6 +74,56 @@ func (e *EdbInfo) Add() (err error) {
 	return
 }
 
+// AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
+func (m *EdbInfo) AfterFind(db *gorm.DB) (err error) {
+	if m.StartDate != "" {
+		minDateTmp, e := time.ParseInLocation(utils.FormatDateWallWithLoc, m.StartDate, time.Local)
+		if e != nil {
+			err = e
+			return
+		}
+		m.StartDate = minDateTmp.Format(utils.FormatDate)
+	}
+	if m.EndDate != "" {
+		maxDateTmp, e := time.ParseInLocation(utils.FormatDateWallWithLoc, m.EndDate, time.Local)
+		if e != nil {
+			err = e
+			return
+		}
+		m.EndDate = maxDateTmp.Format(utils.FormatDate)
+	}
+	if m.LatestDate != "" {
+		maxDateTmp, e := time.ParseInLocation(utils.FormatDateWallWithLoc, m.LatestDate, time.Local)
+		if e != nil {
+			err = e
+			return
+		}
+		m.LatestDate = maxDateTmp.Format(utils.FormatDate)
+	}
+	if m.DataUpdateTime != "" {
+		maxDateTmp, e := time.ParseInLocation(utils.FormatDateWallWithLoc, m.DataUpdateTime, time.Local)
+		if e != nil {
+			err = e
+			return
+		}
+		m.DataUpdateTime = maxDateTmp.Format(utils.FormatDate)
+	}
+
+	return
+}
+
+// ConvertDate
+// @Description: 格式化EdbInfo的日期
+// @receiver e
+func (e *EdbInfo) ConvertDate() {
+	e.StartDate = utils.GormDateStrToDateStr(e.StartDate)
+	e.EndDate = utils.GormDateStrToDateStr(e.EndDate)
+	e.LatestDate = utils.GormDateStrToDateStr(e.LatestDate)
+	e.DataUpdateTime = utils.GormDateStrToDateStr(e.DataUpdateTime)
+
+	return
+}
+
 // AddEdbInfo 添加指标
 func AddEdbInfo(item *EdbInfo) (lastId int64, err error) {
 
@@ -142,6 +192,17 @@ type EdbInfoList struct {
 	//Extra            string    `gorm:"column:extra" description:"指标的额外配置"`
 }
 
+// ConvertDate
+// @Description: 格式化EdbInfoList的日期
+// @receiver e
+func (e *EdbInfoList) ConvertDate() {
+	e.StartDate = utils.GormDateStrToDateStr(e.StartDate)
+	e.EndDate = utils.GormDateStrToDateStr(e.EndDate)
+	e.LatestDate = utils.GormDateStrToDateStr(e.LatestDate)
+
+	return
+}
+
 // EdbClassifyItemsButton 操作按钮
 type EdbClassifyItemsButton struct {
 	AddButton         bool `description:"是否可添加"`
@@ -170,9 +231,15 @@ func ModifyEdbInfoNameSource(edbNameSource string, edbInfoId int) (err error) {
 
 // GetEdbInfoById 根据指标id获取指标信息
 func GetEdbInfoById(edbInfoId int) (item *EdbInfo, err error) {
-
 	sql := ` SELECT * FROM edb_info WHERE edb_info_id=? `
 	err = global.DEFAULT_DmSQL.Raw(sql, edbInfoId).First(&item).Error
+	if err != nil {
+		return
+	}
+
+	// 格式化日期
+	item.ConvertDate()
+
 	return
 }
 
@@ -181,6 +248,12 @@ func GetEdbInfoByUniqueCode(uniqueCode string) (item *EdbInfo, err error) {
 
 	sql := ` SELECT * FROM edb_info WHERE unique_code=? `
 	err = global.DEFAULT_DmSQL.Raw(sql, uniqueCode).First(&item).Error
+	if err != nil {
+		return
+	}
+
+	// 格式化日期
+	item.ConvertDate()
 	return
 }
 
@@ -646,6 +719,9 @@ func GetEdbInfoByEdbCode(source int, edbCode string) (item *EdbInfo, err error)
 
 	if errors.Is(err, orm.ErrNoRows) {
 		err = nil
+	} else {
+		// 格式化日期
+		item.ConvertDate()
 	}
 
 	return
@@ -656,6 +732,12 @@ func GetEdbInfoOnlyByEdbCode(edbCode string) (item *EdbInfo, err error) {
 
 	sql := ` SELECT * FROM edb_info WHERE edb_code=? `
 	err = global.DEFAULT_DmSQL.Raw(sql, edbCode).First(&item).Error
+	if err != nil {
+		return
+	}
+
+	// 格式化日期
+	item.ConvertDate()
 	return
 }
 
@@ -1350,6 +1432,11 @@ func GetEdbInfoItemByCondition(condition string, pars []interface{}) (item *EdbI
 		sql += condition
 	}
 	err = global.DEFAULT_DmSQL.Raw(sql, pars...).First(&item).Error
+	if err != nil {
+		return
+	}
+	item.ConvertDate()
+
 	return
 }
 

+ 1 - 1
models/predict_edb_conf.go

@@ -65,7 +65,7 @@ type PredictEdbConfAndData struct {
 	EndDate          time.Time            `description:"截止日期"`
 	ModifyTime       time.Time            `description:"修改时间"`
 	CreateTime       time.Time            `description:"添加时间"`
-	DataList         []*EdbInfoSearchData `description:"动态数据"`
+	DataList         []*EdbInfoSearchData `description:"动态数据" gorm:"-"`
 }
 
 // GetPredictEdbConfById 根据预测指标id获取预测指标配置信息