Browse Source

fix;公共图库,指标刷新,避免死循环

Roc 1 year ago
parent
commit
1af0ad114d
3 changed files with 3 additions and 187 deletions
  1. 0 55
      models/data_manage/chart_info.go
  2. 3 0
      models/data_manage/edb_info.go
  3. 0 132
      services/data/chart_info.go

+ 0 - 55
models/data_manage/chart_info.go

@@ -1,64 +1,9 @@
 package data_manage
 
 import (
-	"fmt"
 	"github.com/beego/beego/v2/client/orm"
-	"hongze/hongze_chart_lib/utils"
 )
 
-// GetChartInfoRefreshData 获取图表关联的指标信息
-func GetChartInfoRefreshData(chartInfoId int) (baseEdbInfoArr, calculateInfoArr []*EdbInfo, err error) {
-	o := orm.NewOrmUsingDB("data")
-
-	sql := ` SELECT b.* FROM  chart_edb_mapping AS a
-		   INNER JOIN edb_info AS b ON a.edb_info_id=b.edb_info_id 
-		   WHERE a.chart_info_id=? `
-	edbInfoList := make([]*EdbInfo, 0)
-
-	_, err = o.Raw(sql, chartInfoId).QueryRows(&edbInfoList)
-	if err != nil {
-		return
-	}
-	for _, v := range edbInfoList {
-		fmt.Println(v.EdbInfoId, v.EdbType)
-		if v.EdbType == 1 {
-			baseEdbInfoArr = append(baseEdbInfoArr, v)
-		} else {
-			calculateInfoArr = append(calculateInfoArr, v)
-			newBaseEdbInfoArr, newCalculateInfoArr, err := GetChartRefreshEdbInfo(v.EdbInfoId, v.Source, 0)
-			if err != nil {
-				return baseEdbInfoArr, calculateInfoArr, err
-			}
-			baseEdbInfoArr = append(baseEdbInfoArr, newBaseEdbInfoArr...)
-			calculateInfoArr = append(calculateInfoArr, newCalculateInfoArr...)
-		}
-	}
-	return
-}
-
-func GetChartRefreshEdbInfo(edbInfoId, source, n int) (baseEdbInfoArr, calculateInfoArr []*EdbInfo, err error) {
-	calculateList, err := GetEdbInfoCalculateMap(edbInfoId, source)
-	if err != nil && err.Error() != utils.ErrNoRow() {
-		return
-	}
-	n++
-	for _, item := range calculateList {
-		fmt.Println(item.EdbInfoId)
-		if item.EdbType == 1 {
-			baseEdbInfoArr = append(baseEdbInfoArr, item)
-		} else {
-			calculateInfoArr = append(calculateInfoArr, item)
-			if n > 10 {
-				return
-			}
-			newBaseEdbInfoArr, newCalculateInfoArr, _ := GetChartRefreshEdbInfo(item.EdbInfoId, item.Source, n)
-			baseEdbInfoArr = append(baseEdbInfoArr, newBaseEdbInfoArr...)
-			calculateInfoArr = append(calculateInfoArr, newCalculateInfoArr...)
-		}
-	}
-	return
-}
-
 type ChartEdbInfoMapping struct {
 	EdbInfoId           int     `description:"指标id"`
 	SourceName          string  `description:"来源名称"`

+ 3 - 0
models/data_manage/edb_info.go

@@ -92,6 +92,9 @@ func GetRefreshEdbInfoFromBase(edbInfoId, source int) (baseEdbInfoArr, calculate
 		return
 	}
 	for _, item := range calculateList {
+		if item.EdbInfoId == edbInfoId { //	如果查出来关联的指标就是自己的话,那么就过滤
+			continue
+		}
 		if item.EdbType == 1 {
 			baseEdbInfoArr = append(baseEdbInfoArr, item)
 		} else {

+ 0 - 132
services/data/chart_info.go

@@ -14,138 +14,6 @@ import (
 	"time"
 )
 
-// ChartInfoRefreshV1 图表刷新
-func ChartInfoRefreshV1(chartInfoId int) (err error) {
-	var errmsg string
-	defer func() {
-		if err != nil {
-			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "ChartInfoRefresh:"+errmsg, utils.EmailSendToUsers)
-			fmt.Println("ChartInfoRefresh Err:" + errmsg)
-		}
-	}()
-	baseEdbInfoArr, calculateInfoArr, err := data_manage.GetChartInfoRefreshData(chartInfoId)
-	if err != nil {
-		errmsg = "获取需要刷新的指标失败:Err:" + err.Error()
-		return
-	}
-	var startDate string
-
-	newBaseEdbInfoArr := make([]*data_manage.EdbInfo, 0)
-	baseMap := make(map[int]*data_manage.EdbInfo)
-	for _, bv := range baseEdbInfoArr {
-		// 如果不是普通指标,那么过滤
-		if bv.EdbInfoType != 0 {
-			continue
-		}
-		if _, ok := baseMap[bv.EdbInfoId]; !ok {
-			newBaseEdbInfoArr = append(newBaseEdbInfoArr, bv)
-		}
-		baseMap[bv.EdbInfoId] = bv
-	}
-
-	fmt.Println("calculateInfoArr:", len(calculateInfoArr))
-
-	newCalculateInfoArr := make([]*data_manage.EdbInfo, 0)
-	calculateMap := make(map[int]*data_manage.EdbInfo)
-	var calculateArr []int
-	for _, bv := range calculateInfoArr {
-		if _, ok := calculateMap[bv.EdbInfoId]; !ok {
-			newCalculateInfoArr = append(newCalculateInfoArr, bv)
-			calculateArr = append(calculateArr, bv.EdbInfoId)
-		}
-		calculateMap[bv.EdbInfoId] = bv
-	}
-	sort.Ints(calculateArr)
-	for _, bv := range newBaseEdbInfoArr {
-		source := bv.Source
-		edbInfoId := bv.EdbInfoId
-		edbCode := bv.EdbCode
-		startDate = bv.StartDate
-		frequency := bv.Frequency
-		if bv.StartDate == "0000-00-00" {
-			continue
-		}
-		sTime, err := time.Parse(utils.FormatDate, bv.EndDate)
-		if err != nil {
-			return err
-		}
-
-		var limitDay int
-		startDate := ""
-		switch frequency {
-		case "日度":
-			limitDay = utils.DATA_REFRESH
-		case "周度":
-			limitDay = utils.DATA_REFRESH * 7
-		case "月度":
-			limitDay = utils.DATA_REFRESH * 30
-		case "季度":
-			limitDay = utils.DATA_REFRESH * 90
-		case "年度":
-			limitDay = utils.DATA_REFRESH * 365
-		default:
-			limitDay = utils.DATA_REFRESH
-		}
-		startDate = sTime.AddDate(0, 0, -limitDay).Format(utils.FormatDate)
-
-		fmt.Println("source:", source)
-		respItem, err := RefreshEdbData(edbInfoId, source, edbCode, startDate)
-		if err != nil {
-			errmsg = errors.New("RefreshEdbData Err:" + err.Error()).Error()
-			return err
-		}
-		if respItem.Ret != 200 {
-			errmsg = errors.New(respItem.ErrMsg + ";EdbCode:" + edbCode).Error()
-			return err
-		}
-
-		//maxAndMinItem, err := data_manage.GetEdbInfoMaxAndMinInfo(source, edbCode)
-		//if err != nil {
-		//	return err
-		//}
-		//if maxAndMinItem != nil {
-		//	err = data_manage.ModifyEdbInfoMaxAndMinInfo(edbInfoId, maxAndMinItem)
-		//	if err != nil {
-		//		return err
-		//	}
-		//}
-	}
-
-	//刷新相关计算指标
-	for _, v := range calculateArr {
-		edbInfo := calculateMap[v]
-		if edbInfo == nil {
-			return err
-		}
-		startDate = edbInfo.StartDate
-		source := edbInfo.Source
-
-		if source == utils.DATA_SOURCE_CALCULATE {
-			startDate = edbInfo.StartDate
-			sTime, err := time.Parse(utils.FormatDate, edbInfo.EndDate)
-			if err != nil {
-				return err
-			}
-			startDate = sTime.Format(utils.FormatDate)
-		}
-
-		result, err := RefreshEdbCalculateData(edbInfo.EdbInfoId, edbInfo.EdbCode, startDate)
-		if err != nil {
-			fmt.Println(v, "RefreshEdbCalculateData err", time.Now())
-			errmsg = "RefreshEdbCalculateData Err:" + err.Error()
-			return err
-		}
-		if result.Ret != 200 {
-			fmt.Println(v, "RefreshEdbCalculateData err;msg:", result.Msg, ";errMsg:", result.ErrMsg)
-			errmsg = fmt.Sprint(v, "RefreshEdbCalculateData err;msg:", result.Msg, ";errMsg:", result.ErrMsg)
-			return fmt.Errorf("刷新失败" + errmsg)
-		}
-		fmt.Println("end calculateArr:", v, time.Now())
-	}
-
-	return err
-}
-
 // GetFrequencyEn 获取频度的英文版
 func GetFrequencyEn(frequency string) (frequencyEn string) {
 	switch frequency {