فهرست منبع

fix:调整报告发布逻辑,图表刷新中就不让发布

Roc 1 سال پیش
والد
کامیت
90b77ff8b8
3فایلهای تغییر یافته به همراه98 افزوده شده و 50 حذف شده
  1. 10 15
      controllers/data_manage/chart_info.go
  2. 51 17
      services/data/chart_info.go
  3. 37 18
      services/data/edb_info.go

+ 10 - 15
controllers/data_manage/chart_info.go

@@ -2300,22 +2300,17 @@ func (this *EdbInfoController) BatchChartInfoRefresh() {
 
 	redisKey := data.GetBatchChartRefreshKey(req.Source, req.ReportId, req.ReportChapterId)
 
-	if redisKey != `` {
-		go data.BatchChartInfoRefreshV2(chartInfoList, redisKey)
-		br.Msg = "正在后台刷新图表"
-	} else {
-		err, isAsync := data.BatchChartInfoRefreshV2(chartInfoList, redisKey)
-		if err != nil {
-			br.Msg = "刷新失败"
-			br.ErrMsg = "刷新图表关联指标信息失败,Err:" + err.Error()
-			return
-		}
-		br.Msg = "刷新成功"
-		if isAsync {
-			br.Msg = "图表关联指标较多,请10分钟后刷新页面查看最新数据"
-		}
+	// 图表中的指标刷新
+	err, isAsync := data.BatchChartInfoRefreshV2(chartInfoList, redisKey)
+	if err != nil {
+		br.Msg = "刷新失败"
+		br.ErrMsg = "刷新图表关联指标信息失败,Err:" + err.Error()
+		return
+	}
+	br.Msg = "刷新成功"
+	if isAsync {
+		br.Msg = "研报中图表关联指标较多,请10分钟后刷新页面查看最新数据"
 	}
-
 	br.Ret = 200
 	br.Success = true
 

+ 51 - 17
services/data/chart_info.go

@@ -1434,6 +1434,7 @@ func ChartInfoRefreshV2(chartInfoId int) (err error, isAsync bool) {
 
 	// 批量刷新
 	err, isAsync = EdbInfoRefreshAllFromBaseV3(edbIdList, false, false)
+
 	if err != nil {
 		return
 	}
@@ -1461,28 +1462,21 @@ func BatchChartInfoRefreshV2(chartInfoList []*data_manage.ChartInfo, redisKey st
 			//go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "ChartInfoRefresh:"+errmsg, utils.EmailSendToUsers)
 			fmt.Println("ChartInfoRefresh Err:" + errMsg)
 		}
-
-		//清除图表缓存
-		for _, v := range chartInfoList {
-			key := utils.HZ_CHART_LIB_DETAIL + v.UniqueCode
-			_ = utils.Rc.Delete(key)
-		}
 	}()
 
-	// 是否要求同步刷新指标
-	isSync := false
-
-	// 如果是有插入redisKey,那么需要写入redis和清除redis
+	// 是否删除缓存
+	isDeleteCache := true
 	if redisKey != `` {
-		isSync = true
 		//设置最多10分钟缓存
 		utils.Rc.SetNX(redisKey, 1, time.Minute*10)
-		// 刷新结束后就清除缓存
 		defer func() {
-			utils.Rc.Delete(redisKey)
+			if isDeleteCache {
+				utils.Rc.Delete(redisKey)
+			}
 		}()
 	}
 
+	// 获取需要刷新的指标信息
 	edbIdList := make([]int, 0)
 	edbInfoIdMap := make(map[int]int)
 	edbMappingList, err := data_manage.GetChartEdbMappingListByIdList(chartInfoIdSlice)
@@ -1493,15 +1487,55 @@ func BatchChartInfoRefreshV2(chartInfoList []*data_manage.ChartInfo, redisKey st
 		}
 	}
 
-	// 批量刷新
-	err, isAsync = EdbInfoRefreshAllFromBaseV3(edbIdList, false, isSync)
-	if err != nil {
-		return
+	// 获取需要刷新的指标列表
+	newBaseEdbInfoArr, newBasePredictEdbInfoArr, newCalculateMap, newPredictCalculateMap, calculateArr, predictCalculateArr := getEdbInfoIdList(edbIdList)
+
+	// 需要刷新的指标数量
+	totalEdbInfo := len(newBaseEdbInfoArr) + len(calculateArr) + len(predictCalculateArr)
+
+	if totalEdbInfo > 20 { // 关联指标过多的时候,异步刷新
+		isAsync = true
+		isDeleteCache = false // 不删除缓存
+		go refreshChartEdbInfo(chartInfoList, redisKey, newBaseEdbInfoArr, newBasePredictEdbInfoArr, newCalculateMap, newPredictCalculateMap, calculateArr, predictCalculateArr)
+	} else {
+		err = edbInfoRefreshAll(false, newBaseEdbInfoArr, newBasePredictEdbInfoArr, newCalculateMap, newPredictCalculateMap, calculateArr, predictCalculateArr)
+
+		//清除图表缓存
+		for _, v := range chartInfoList {
+			key := utils.HZ_CHART_LIB_DETAIL + v.UniqueCode
+			_ = utils.Rc.Delete(key)
+		}
 	}
 
 	return
 }
 
+// refreshChartEdbInfo
+// @Description: 刷新图表中的质保列表
+// @author: Roc
+// @datetime 2023-12-01 16:05:39
+// @param chartInfoList []*data_manage.ChartInfo
+// @param redisKey string
+// @param newBaseEdbInfoArr []*data_manage.EdbInfo
+// @param newBasePredictEdbInfoArr []*data_manage.EdbInfo
+// @param newCalculateMap map[int]*data_manage.EdbInfo
+// @param newPredictCalculateMap map[int]*data_manage.EdbInfo
+// @param calculateArr []int
+// @param predictCalculateArr []int
+func refreshChartEdbInfo(chartInfoList []*data_manage.ChartInfo, redisKey string, newBaseEdbInfoArr, newBasePredictEdbInfoArr []*data_manage.EdbInfo, newCalculateMap, newPredictCalculateMap map[int]*data_manage.EdbInfo, calculateArr, predictCalculateArr []int) {
+	edbInfoRefreshAll(false, newBaseEdbInfoArr, newBasePredictEdbInfoArr, newCalculateMap, newPredictCalculateMap, calculateArr, predictCalculateArr)
+
+	//清除图表缓存
+	for _, v := range chartInfoList {
+		key := utils.HZ_CHART_LIB_DETAIL + v.UniqueCode
+		_ = utils.Rc.Delete(key)
+	}
+	// 如果是有插入redisKey,那么刷新结束后就清除缓存
+	if redisKey != `` {
+		utils.Rc.Delete(redisKey)
+	}
+}
+
 // GetBatchChartRefreshKey
 // @Description: 获取批量刷新key
 // @author: Roc

+ 37 - 18
services/data/edb_info.go

@@ -73,9 +73,9 @@ func EdbInfoRefreshAllFromBaseV3Bak(edbInfoIdList []int, refreshAll, isSync bool
 //	@datetime2023-10-23 09:57:55
 //	@param edbInfoIdList []int
 //	@param refreshAll bool
-//	@param isSync bool
+//	@param isSync bool 是否同步执行
 //	@return err error
-//	@return isAsync bool
+//	@return isAsync bool 是否异步刷新
 func EdbInfoRefreshAllFromBaseV3(edbInfoIdList []int, refreshAll, isSync bool) (err error, isAsync bool) {
 	var errmsg string
 	defer func() {
@@ -84,6 +84,35 @@ func EdbInfoRefreshAllFromBaseV3(edbInfoIdList []int, refreshAll, isSync bool) (
 			go alarm_msg.SendAlarmMsg("EdbInfoRefreshAllFromBaseV3,Err"+err.Error()+";errMsg:"+errmsg, 3)
 		}
 	}()
+
+	// 获取需要刷新的指标列表
+	newBaseEdbInfoArr, newBasePredictEdbInfoArr, newCalculateMap, newPredictCalculateMap, calculateArr, predictCalculateArr := getEdbInfoIdList(edbInfoIdList)
+
+	// 需要刷新的指标数量
+	totalEdbInfo := len(newBaseEdbInfoArr) + len(calculateArr) + len(predictCalculateArr)
+
+	if totalEdbInfo <= 20 || isSync {
+		err = edbInfoRefreshAll(refreshAll, newBaseEdbInfoArr, newBasePredictEdbInfoArr, newCalculateMap, newPredictCalculateMap, calculateArr, predictCalculateArr)
+	} else {
+		isAsync = true
+		go edbInfoRefreshAll(refreshAll, newBaseEdbInfoArr, newBasePredictEdbInfoArr, newCalculateMap, newPredictCalculateMap, calculateArr, predictCalculateArr)
+	}
+
+	return
+}
+
+// getEdbInfoIdList
+// @Description: 获取待更新的指标列表
+// @author: Roc
+// @datetime 2023-12-01 16:19:42
+// @param edbInfoIdList []int
+// @return newBaseEdbInfoArr []*data_manage.EdbInfo
+// @return newBasePredictEdbInfoArr []*data_manage.EdbInfo
+// @return newCalculateMap map[int]*data_manage.EdbInfo
+// @return newPredictCalculateMap map[int]*data_manage.EdbInfo
+// @return calculateArr []int
+// @return predictCalculateArr []int
+func getEdbInfoIdList(edbInfoIdList []int) (newBaseEdbInfoArr, newBasePredictEdbInfoArr []*data_manage.EdbInfo, newCalculateMap, newPredictCalculateMap map[int]*data_manage.EdbInfo, calculateArr, predictCalculateArr []int) {
 	traceEdbInfoList, err := TraceEdbInfoByEdbInfoIdList(edbInfoIdList)
 	if err != nil {
 		return
@@ -92,16 +121,16 @@ func EdbInfoRefreshAllFromBaseV3(edbInfoIdList []int, refreshAll, isSync bool) (
 	existEdbInfoIdMap := make(map[int]int)
 
 	// 基础指标
-	newBaseEdbInfoArr := make([]*data_manage.EdbInfo, 0)
-	newBasePredictEdbInfoArr := make([]*data_manage.EdbInfo, 0)
+	newBaseEdbInfoArr = make([]*data_manage.EdbInfo, 0)
+	newBasePredictEdbInfoArr = make([]*data_manage.EdbInfo, 0)
 	newBaseMap := make(map[int]*data_manage.EdbInfo)
 	newPredictBaseMap := make(map[int]*data_manage.EdbInfo)
 
 	// 计算指标
-	newCalculateMap := make(map[int]*data_manage.EdbInfo)
-	newPredictCalculateMap := make(map[int]*data_manage.EdbInfo)
-	calculateArr := make([]int, 0)
-	predictCalculateArr := make([]int, 0)
+	newCalculateMap = make(map[int]*data_manage.EdbInfo)
+	newPredictCalculateMap = make(map[int]*data_manage.EdbInfo)
+	calculateArr = make([]int, 0)
+	predictCalculateArr = make([]int, 0)
 
 	// 获取关联指标
 	for _, traceEdbInfo := range traceEdbInfoList {
@@ -145,16 +174,6 @@ func EdbInfoRefreshAllFromBaseV3(edbInfoIdList []int, refreshAll, isSync bool) (
 	// 预测计算指标的id
 	sort.Ints(predictCalculateArr)
 
-	// 需要刷新的指标数量
-	totalEdbInfo := len(newBaseEdbInfoArr) + len(calculateArr) + len(predictCalculateArr)
-
-	if totalEdbInfo <= 20 || isSync {
-		err = edbInfoRefreshAll(refreshAll, newBaseEdbInfoArr, newBasePredictEdbInfoArr, newCalculateMap, newPredictCalculateMap, calculateArr, predictCalculateArr)
-	} else {
-		isAsync = true
-		go edbInfoRefreshAll(refreshAll, newBaseEdbInfoArr, newBasePredictEdbInfoArr, newCalculateMap, newPredictCalculateMap, calculateArr, predictCalculateArr)
-	}
-
 	return
 }