Browse Source

刷新逻辑

-优化数据库经济修复了当开始日期为空时的处理逻辑,统一采用系统默认的开始日期
- 优化了刷新所有数据时的开始日期处理逻辑
- 增加了BaseEdbRefreshStartDate常量,用于统一设置指标的基础刷新开始日期
Roc 4 months ago
parent
commit
878709074a
3 changed files with 47 additions and 42 deletions
  1. 4 5
      services/data/chart_info.go
  2. 40 37
      services/data/edb_info.go
  3. 3 0
      utils/constants.go

+ 4 - 5
services/data/chart_info.go

@@ -164,12 +164,11 @@ func refreshBaseEdbInfo(bv *data_manage.EdbInfo) (err error, errMsg string) {
 	edbCode := bv.EdbCode
 	//startDate := bv.StartDate
 	frequency := bv.Frequency
-	if bv.StartDate.IsZero() {
-		return
-	}
 	sTime := bv.EndDate
-	if err != nil {
-		return
+
+	// 如果日期是空,那么就采用系统默认的日期
+	if sTime.IsZero() {
+		sTime, _ = time.ParseInLocation(utils.FormatDate, utils.BaseEdbRefreshStartDate, time.Local)
 	}
 
 	var limitDay int

+ 40 - 37
services/data/edb_info.go

@@ -280,11 +280,15 @@ func edbInfoRefreshAll(refreshAll bool, newBaseEdbInfoArr, newBasePredictEdbInfo
 		}
 		//开始时间
 		startDate = ``
-		if refreshAll { //刷新所有数据,用开始时间作为起始日期去刷新
-			sTime := bv.StartDate
-			startDate = sTime.Format(utils.FormatDate)
+		if refreshAll { //刷新所有数据,那么就是从配置的开始时间开始刷新
+			startDate = utils.BaseEdbRefreshStartDate
 		} else {
 			sTime := bv.EndDate
+			// 如果日期是空,那么就采用系统默认的日期
+			if sTime.IsZero() {
+				sTime, _ = time.ParseInLocation(utils.FormatDate, utils.BaseEdbRefreshStartDate, time.Local)
+			}
+
 			frequency := bv.Frequency
 			var limitDay int
 			switch frequency {
@@ -532,20 +536,19 @@ func EdbInfoRefresh(edbInfo *data_manage.EdbInfoView, refreshAll bool) (err erro
 			return
 		}
 		//开始时间
-		startDate := ``
+		startDate := utils.BaseEdbRefreshStartDate // 默认成刷新开始日期
 		if edbInfo.EdbType == 1 {
 			// 基础指标
-			if refreshAll { //刷新所有数据,用开始时间作为起始日期去刷新
-				sTime, err := time.Parse(utils.FormatDate, edbInfo.StartDate)
-				if err != nil {
-					return err
+			if !refreshAll { //刷新所有数据,用开始时间作为起始日期去刷新
+				sDate := edbInfo.EndDate
+				if sDate == `` || sDate == `0000-00-00` {
+					sDate = utils.BaseEdbRefreshStartDate
 				}
-				startDate = sTime.Format(utils.FormatDate)
-			} else {
-				sTime, err := time.Parse(utils.FormatDate, edbInfo.EndDate)
+				sTime, err := time.Parse(utils.FormatDate, sDate)
 				if err != nil {
 					return err
 				}
+
 				frequency := edbInfo.Frequency
 				var limitDay int
 				switch frequency {
@@ -578,34 +581,34 @@ func EdbInfoRefresh(edbInfo *data_manage.EdbInfoView, refreshAll bool) (err erro
 		} else { //计算指标
 			//计算指标就不用开始时间了吧,因为存在说开始时间变更的情况
 			if !refreshAll { //如果不是全部更新,那么以指标的开始时间作为刷新
-				startDate = edbInfo.StartDate
 				source := edbInfo.Source
-				if startDate == "" || startDate == "0000-00-00" { //如果没有开始日期,说明还没有计算出来数据,那么就往前面推40年吧(也意味着重新计算了)
-					startDate = time.Now().AddDate(-40, 0, 0).Format(utils.FormatDate)
-				} else {
-					if source == utils.DATA_SOURCE_CALCULATE {
-						sTime, err := time.Parse(utils.FormatDate, edbInfo.EndDate)
-						if err != nil {
-							return err
-						}
-						frequency := edbInfo.Frequency
-						var limitDay int
-						switch frequency {
-						case "日度":
-							limitDay = utils.DATA_START_REFRESH_LIMIT
-						case "周度":
-							limitDay = utils.DATA_START_REFRESH_LIMIT * 7
-						case "月度":
-							limitDay = utils.DATA_START_REFRESH_LIMIT * 30
-						case "季度":
-							limitDay = utils.DATA_START_REFRESH_LIMIT * 90
-						case "年度":
-							limitDay = utils.DATA_START_REFRESH_LIMIT * 365
-						default:
-							limitDay = utils.DATA_START_REFRESH_LIMIT
-						}
-						startDate = sTime.AddDate(0, 0, -limitDay).Format(utils.FormatDate)
+				if source == utils.DATA_SOURCE_CALCULATE {
+					sDate := edbInfo.EndDate
+					if sDate == `` || sDate == `0000-00-00` {
+						sDate = utils.BaseEdbRefreshStartDate
+					}
+					sTime, err := time.Parse(utils.FormatDate, sDate)
+					if err != nil {
+						return err
+					}
+
+					frequency := edbInfo.Frequency
+					var limitDay int
+					switch frequency {
+					case "日度":
+						limitDay = utils.DATA_START_REFRESH_LIMIT
+					case "周度":
+						limitDay = utils.DATA_START_REFRESH_LIMIT * 7
+					case "月度":
+						limitDay = utils.DATA_START_REFRESH_LIMIT * 30
+					case "季度":
+						limitDay = utils.DATA_START_REFRESH_LIMIT * 90
+					case "年度":
+						limitDay = utils.DATA_START_REFRESH_LIMIT * 365
+					default:
+						limitDay = utils.DATA_START_REFRESH_LIMIT
 					}
+					startDate = sTime.AddDate(0, 0, -limitDay).Format(utils.FormatDate)
 				}
 			}
 

+ 3 - 0
utils/constants.go

@@ -496,3 +496,6 @@ const (
 const (
 	EdbPermissionSourceCalculate = 7 // 指标权限来源-计算指标
 )
+
+// BaseEdbRefreshStartDate 指标的基础刷新开始日期
+const BaseEdbRefreshStartDate = `1899-01-01