瀏覽代碼

定时任务刷新重复刷新过滤

kobe6258 4 天之前
父節點
當前提交
5c8ef3c92b
共有 2 個文件被更改,包括 23 次插入1 次删除
  1. 7 0
      models/data_manage/edb_info.go
  2. 16 1
      services/data/edb_info.go

+ 7 - 0
models/data_manage/edb_info.go

@@ -398,6 +398,13 @@ func ModifyEdbUpdateStatus(edbIdList []int, indexCodeList []string, calculateEdb
 	}
 	return
 }
+func StopRefreshCalculateEdbIndex(edbInfoId int) (err error) {
+	o := global.DbMap[utils.DbNameIndex]
+	// 更改指标的更新状态
+	sql := ` UPDATE edb_info SET no_update = 1,set_update_time=? WHERE edb_type =2 AND edb_info_id = ? AND  no_update = 0`
+	err = o.Exec(sql, time.Now(), edbInfoId).Error
+	return
+}
 
 // GetEdbInfoByIdList 根据指标id集合 获取 指标列表
 func GetEdbInfoByIdList(edbInfoIdList []int) (items []*EdbInfo, err error) {

+ 16 - 1
services/data/edb_info.go

@@ -297,7 +297,22 @@ func RefreshDataFromCalculateAll() (err error) {
 			continue
 		}
 		fmt.Println(v.EdbInfoId, v.EdbCode, v.EdbName, v.SourceName, source)
-
+		//对依赖指标是基础指标的且基础指标停用,停用当前计算指标,因为item是按照edb_Info_id升序,所以默认层级关系是由低而上,所以不需要考虑嵌套,只要考虑当前的下一级依赖即可
+		mappings, err := data_manage.GetEdbInfoCalculateMappingListByEdbInfoId(v.EdbInfoId)
+		if err != nil {
+			utils.FileLog.Error("[获取计算指标的依赖指标失败,不刷新指标,CODE:" + v.EdbCode + "],err:" + err.Error())
+			continue
+		}
+		for _, mapping := range mappings {
+			if mapping.FromEdbInfoType == 0 && mapping.FromEdbInfoId > 0 && mapping.NoUpdate == 1 {
+				utils.FileLog.Info("基础指标停用,基础指标ID:" + mapping.FromEdbCode + ",停用当前计算指标,CODE:" + v.EdbCode)
+				stopErr := data_manage.StopRefreshCalculateEdbIndex(v.EdbInfoId)
+				if stopErr != nil {
+					utils.FileLog.Error(fmt.Sprintf("停用计算指标失败,ID:%d;指标编码:%s;err:%s", mapping.EdbInfoId, mapping.EdbCode, stopErr.Error()))
+				}
+				continue
+			}
+		}
 		fmt.Println("RefreshEdbCalculateData", v.EdbInfoId, v.EdbCode, startDate)
 		result, tmpErr := RefreshEdbCalculateData(v.EdbInfoId, v.EdbCode, startDate)
 		if tmpErr != nil {