package data_manage import ( "fmt" "github.com/beego/beego/v2/client/orm" "hongze/hongze_chart_lib/utils" ) 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 }