|
@@ -48,6 +48,8 @@ type EdbInfo struct {
|
|
|
DataDateType string `orm:"column(data_date_type);size(255);null;default(交易日)"`
|
|
|
ManualSave int `description:"是否有手动保存过上下限: 0-否; 1-是"`
|
|
|
TerminalCode string `description:"终端编码,用于配置在机器上"`
|
|
|
+ DataUpdateTime string `description:"最近一次数据发生变化的时间"`
|
|
|
+ ErDataUpdateDate string `description:"本次更新,数据发生变化的最早日期"`
|
|
|
}
|
|
|
|
|
|
func (e *EdbInfo) Add() (err error) {
|
|
@@ -231,6 +233,21 @@ func GetEdbInfoMaxAndMinInfo(source int, edbCode string) (item *EdbInfoMaxAndMin
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+type EdbIndoDataUpdateTime struct {
|
|
|
+ MinDate string `description:"本次更新,数据发生变化的最早日期"`
|
|
|
+}
|
|
|
+
|
|
|
+// GetEdbDataUpdateTimeByModify 获取指标的刷新时间获取最早的一条记录
|
|
|
+func GetEdbDataUpdateTimeByModify(source int, edbCode string, dataUpdateTime string) (item *EdbIndoDataUpdateTime, err error) {
|
|
|
+ o := orm.NewOrm()
|
|
|
+ sql := ``
|
|
|
+ tableName := GetEdbDataTableName(source)
|
|
|
+ sql = ` SELECT MIN(data_time) AS min_date FROM %s WHERE edb_code=? and modify_time>=?`
|
|
|
+ sql = fmt.Sprintf(sql, tableName)
|
|
|
+ err = o.Raw(sql, edbCode, dataUpdateTime).QueryRow(&item)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
// ModifyEdbInfoMaxAndMinInfo 修改指标的最新数据信息
|
|
|
func ModifyEdbInfoMaxAndMinInfo(edbInfoId int, item *EdbInfoMaxAndMinInfo) (err error) {
|
|
|
o := orm.NewOrm()
|
|
@@ -247,6 +264,14 @@ func ModifyEdbTimeAndLastInfo(edbInfoId int, item *EdbInfoMaxAndMinInfo) (err er
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+// ModifyEdbDataUpdateTime 修改指标刷新,本次数据刷新的最早日期
|
|
|
+func ModifyEdbDataUpdateTime(edbInfoId int, dataUpdateTime, erDataUpdateDate string) (err error) {
|
|
|
+ o := orm.NewOrm()
|
|
|
+ sql := `UPDATE edb_info SET data_update_time = ?, er_data_update_date = ?, modify_time = NOW() WHERE edb_info_id = ?`
|
|
|
+ _, err = o.Raw(sql, dataUpdateTime, erDataUpdateDate, edbInfoId).Exec()
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
// GetEdbDataCount 获取edb指标数据的数量; order:1升序,其余值为降序
|
|
|
func GetEdbDataCount(condition string, pars []interface{}, source int) (count int, err error) {
|
|
|
o := orm.NewOrm()
|
|
@@ -413,6 +438,78 @@ func UnifiedModifyEdbInfoMaxAndMinInfo(edbInfo *EdbInfo) (err error, errMsg stri
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ var dataUpdateTime string
|
|
|
+ // 获取本次刷新,指标数据更新的最早日期
|
|
|
+ erDataUpdateTime, tErr := GetEdbDataUpdateTimeByModify(edbInfo.Source, edbInfo.EdbCode, dataUpdateTime)
|
|
|
+ if tErr != nil {
|
|
|
+ if tErr.Error() != utils.ErrNoRow() { //本次刷新指标数据无变化
|
|
|
+ errMsg = "刷新指标失败!"
|
|
|
+ err = errors.New("查询指标刷新,数据更新的最早日期失败,err:" + tErr.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ } else if erDataUpdateTime.MinDate != "" {
|
|
|
+ err = ModifyEdbDataUpdateTime(edbInfo.EdbInfoId, dataUpdateTime, erDataUpdateTime.MinDate)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "刷新指标失败!"
|
|
|
+ err = errors.New("修改指标数据更新的最早日期失败,err:" + tErr.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 修改关联的预测指标
|
|
|
+ go ModifyPredictEdbInfoMaxAndMinInfoBySourceEdbInfoId(edbInfo.EdbInfoId, maxAndMinItem)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// UnifiedModifyEdbInfoMaxAndMinInfo 统一修改指标的最大最小值
|
|
|
+func UnifiedModifyEdbInfoMaxAndMinInfoTmp(edbInfo *EdbInfo, dataUpdateTime string) (err error, errMsg string) {
|
|
|
+ // 修改最大最小值
|
|
|
+ maxAndMinItem, err := GetEdbInfoMaxAndMinInfo(edbInfo.Source, edbInfo.EdbCode)
|
|
|
+ if err != nil {
|
|
|
+ if err.Error() == utils.ErrNoRow() {
|
|
|
+ err = nil
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ errMsg = "刷新指标失败!"
|
|
|
+ err = errors.New("获取指标最大最小值失败,err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if maxAndMinItem != nil {
|
|
|
+ // ETA1.0.3改-如果指标有手动保存过, 那么就不更新指标的最大最小值
|
|
|
+ if edbInfo.ManualSave == 1 {
|
|
|
+ err = ModifyEdbTimeAndLastInfo(edbInfo.EdbInfoId, maxAndMinItem)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "刷新指标失败!"
|
|
|
+ err = errors.New("修改指标最新日期和数据失败,err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ err = ModifyEdbInfoMaxAndMinInfo(edbInfo.EdbInfoId, maxAndMinItem)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "刷新指标失败!"
|
|
|
+ err = errors.New("修改指标最大最小值失败,err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取本次刷新,指标数据更新的最早日期
|
|
|
+ erDataUpdateTime, tErr := GetEdbDataUpdateTimeByModify(edbInfo.Source, edbInfo.EdbCode, dataUpdateTime)
|
|
|
+ if tErr != nil {
|
|
|
+ if tErr.Error() != utils.ErrNoRow() { //本次刷新指标数据无变化
|
|
|
+ errMsg = "刷新指标失败!"
|
|
|
+ err = errors.New("查询指标刷新,数据更新的最早日期失败,err:" + tErr.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ } else if erDataUpdateTime.MinDate != "" {
|
|
|
+ err = ModifyEdbDataUpdateTime(edbInfo.EdbInfoId, dataUpdateTime, erDataUpdateTime.MinDate)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "刷新指标失败!"
|
|
|
+ err = errors.New("修改指标数据更新的最早日期失败,err:" + tErr.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
// 修改关联的预测指标
|
|
|
go ModifyPredictEdbInfoMaxAndMinInfoBySourceEdbInfoId(edbInfo.EdbInfoId, maxAndMinItem)
|
|
|
return
|