Przeglądaj źródła

Merge branch 'bzq1/pool/257' of eta_server/eta_api into master

baoziqiang 3 miesięcy temu
rodzic
commit
d426eccfc9

+ 12 - 6
controllers/ai/ai_summary.go

@@ -11,9 +11,10 @@ import (
 	"eta/eta_api/services/aiser"
 	"eta/eta_api/utils"
 	"fmt"
-	"github.com/rdlucklib/rdluck_tools/paging"
 	"strconv"
 	"time"
+
+	"github.com/rdlucklib/rdluck_tools/paging"
 )
 
 // AiSummaryClassifyItems
@@ -40,6 +41,13 @@ func (this *AiController) AiSummaryClassifyItems() {
 			br.ErrMsg = err.Error()
 			return
 		}
+		nodeAll, err := aiSummaryService.GetAiSummaryClassifyByIsShowMe(resp.AllNodes, aiSummaryClassifyId, this.SysUser.AdminId)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取数据失败,Err:" + err.Error()
+			return
+		}
+		resp.AllNodes = nodeAll
 
 		br.Ret = 200
 		br.Success = true
@@ -936,7 +944,7 @@ func (this *AiController) AiSummaryDetail() {
 		AiSummaryItems: detail,
 	}
 
-	if detail.SaDocId >0 {
+	if detail.SaDocId > 0 {
 		item := new(saModel.SaDoc)
 		e := item.GetItemById(detail.SaDocId)
 		if e != nil {
@@ -952,7 +960,6 @@ func (this *AiController) AiSummaryDetail() {
 		resp.SaDocClassifyId = item.ClassifyId
 	}
 
-
 	br.Data = resp
 	br.Ret = 200
 	br.Success = true
@@ -1017,7 +1024,7 @@ func (this *AiController) AddAiSummary() {
 		br.ErrMsg = "保存分类失败,Err:" + err.Error()
 		return
 	}
-	classify ,err := ai_summary.GetAiSummaryClassifyById(req.ClassifyId)
+	classify, err := ai_summary.GetAiSummaryClassifyById(req.ClassifyId)
 	if err != nil {
 		br.Msg = "获取分类信息失败"
 		br.ErrMsg = "获取分类信息失败,Err:" + err.Error()
@@ -1562,7 +1569,6 @@ func (this *AiController) GenerateAiSummary() {
 //	return
 //}
 
-
 // AiSummaryClassifyList
 // @Title 获取所有纪要分类接口-不包含沙盘
 // @Description 获取所有纪要分类接口-不包含沙盘
@@ -1604,4 +1610,4 @@ func (this *AiController) AiSummaryClassifyList() {
 	br.Success = true
 	br.Msg = "获取成功"
 	br.Data = resp
-}
+}

+ 31 - 1
controllers/data_manage/chart_classify.go

@@ -251,6 +251,7 @@ func getChartClassifyListForMe(adminInfo system.Admin, resp *data_manage.ChartCl
 // ChartClassifyItems
 // @Title 获取所有图表分类接口-不包含图表
 // @Description 获取所有图表分类接口-不包含图表
+// @Param   IsShowMe   query   bool  true       "是否只看我的,true、false"
 // @Success 200 {object} data_manage.ChartClassifyListResp
 // @router /chart_classify/items [get]
 func (this *ChartClassifyController) ChartClassifyItems() {
@@ -259,6 +260,7 @@ func (this *ChartClassifyController) ChartClassifyItems() {
 		this.Data["json"] = br
 		this.ServeJSON()
 	}()
+	isShowMe, _ := this.GetBool("IsShowMe")
 
 	level, _ := this.GetInt(`Level`)
 	rootList, err := data_manage.GetChartClassifyByParentId(0, utils.CHART_SOURCE_DEFAULT)
@@ -290,6 +292,28 @@ func (this *ChartClassifyController) ChartClassifyItems() {
 		nodeAll = append(nodeAll, rootNode)
 	}
 
+	if isShowMe {
+		// 自己拥有的分类id列表
+		chartClassifyIdList, err := data_manage.GetChartClassifyIdListByAdminId(this.SysUser.AdminId, utils.CHART_SOURCE_DEFAULT)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取已授权分类id数据失败,Err:" + err.Error()
+			return
+		}
+
+		tmpNodeAll := nodeAll
+		nodeAll = make([]*data_manage.ChartClassifyItems, 0)
+		for _, node := range tmpNodeAll {
+			if node.Children == nil || len(node.Children) <= 0 {
+				continue
+			}
+			isSelf := data.RemoveNotChartClassifyItemsMakeTree(node, chartClassifyIdList)
+			if isSelf {
+				nodeAll = append(nodeAll, node)
+			}
+		}
+	}
+
 	language := `CN`
 	// 指标显示的语言
 	{
@@ -1091,6 +1115,12 @@ func (this *ChartClassifyController) ChartClassifyChartListV3() {
 		}
 		// 移除没有权限的图表
 		allNodes := data.HandleNoPermissionChart(allChartInfo, noPermissionChartIdMap, this.SysUser.AdminId)
+		allNodes, err = data.GetChartClassifyByIsMe(sysUser.AdminId, chartClassifyId, utils.CHART_SOURCE_DEFAULT, allNodes)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取数据失败,Err:" + err.Error()
+			return
+		}
 		resp.AllNodes = allNodes
 
 		br.Ret = 200
@@ -1136,4 +1166,4 @@ func (this *ChartClassifyController) ChartClassifyChartListV3() {
 	br.Success = true
 	br.Msg = "获取成功"
 	br.Data = resp
-}
+}

+ 9 - 0
controllers/data_manage/correlation/correlation_chart_classify.go

@@ -7,6 +7,7 @@ import (
 	"eta/eta_api/models/data_manage"
 	"eta/eta_api/models/system"
 	"eta/eta_api/services/data"
+	"eta/eta_api/services/data/correlation"
 	correlationServ "eta/eta_api/services/data/correlation"
 	"eta/eta_api/services/data/data_manage_permission"
 	"eta/eta_api/utils"
@@ -135,6 +136,14 @@ func (this *CorrelationChartClassifyController) ChartClassifyList() {
 			return nodeAll[i].Sort < nodeAll[j].Sort
 		})
 	}
+	if isShowMe {
+		nodeAll, err = correlation.GetCorrelationClassifyByIsMe(this.SysUser.AdminId, parentId, source, nodeAll)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取我的分类失败,Err:" + err.Error()
+			return
+		}
+	}
 
 	resp.AllNodes = nodeAll
 	br.Ret = 200

+ 8 - 0
controllers/data_manage/edb_classify.go

@@ -1058,6 +1058,14 @@ func (this *EdbClassifyController) SimpleList() {
 		sortList = nodeAll
 		sort.Sort(sortList)
 	}
+	if isOnlyMe {
+		sortList, err = data.GetEdbClassifyByIsMe(sysUserId, parentId, 0, sortList)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取数据失败,Err:" + err.Error()
+			return
+		}
+	}
 
 	language := `CN`
 	// 指标显示的语言

+ 3 - 0
controllers/data_manage/excel/excel_classify.go

@@ -153,6 +153,9 @@ func (this *ExcelClassifyController) List() {
 			nodeAll = append(nodeAll, v)
 		}
 	}
+	if isShowMe {
+		nodeAll = excel2.GetClassifyListRemoveNoExcel(nodeAll)
+	}
 
 	resp := response2.ExcelClassifyListResp{
 		AllNodes: nodeAll,

+ 6 - 3
controllers/data_manage/future_good/future_good_chart_classify.go

@@ -124,16 +124,19 @@ func getChartClassifyListForMe(adminInfo system.Admin, resp *data_manage.ChartCl
 		chartInfoMap[v.ChartClassifyId] = append(chartInfoMap[v.ChartClassifyId], v)
 	}
 	rootChildMap := make(map[int][]*data_manage.ChartClassifyItems)
+	res := make([]*data_manage.ChartClassifyItems, 0)
 	for _, v := range rootList {
 		rootChildMap[v.ParentId] = append(rootChildMap[v.ParentId], v)
 		if existItems, ok := chartInfoMap[v.ChartClassifyId]; ok {
 			v.Children = existItems
 		} else {
-			items := make([]*data_manage.ChartClassifyItems, 0)
-			v.Children = items
+			// items := make([]*data_manage.ChartClassifyItems, 0)
+			// v.Children = items
+			continue
 		}
+		res = append(res, v)
 	}
-	resp.AllNodes = rootList
+	resp.AllNodes = res
 
 	return
 }

+ 8 - 5
controllers/data_manage/line_equation/line_chart_classify.go

@@ -129,16 +129,19 @@ func getChartClassifyListForMe(adminInfo system.Admin, resp *data_manage.ChartCl
 	for _, v := range allChartInfo {
 		chartInfoMap[v.ChartClassifyId] = append(chartInfoMap[v.ChartClassifyId], v)
 	}
-	for k, v := range rootList {
+	res := make([]*data_manage.ChartClassifyItems, 0)
+	for _, v := range rootList {
 		if existItems, ok := chartInfoMap[v.ChartClassifyId]; ok {
 			v.Children = existItems
 		} else {
-			items := make([]*data_manage.ChartClassifyItems, 0)
-			v.Children = items
+			// items := make([]*data_manage.ChartClassifyItems, 0)
+			// v.Children = items
+			continue
 		}
-		rootList[k] = v
+		res = append(res, v)
+		// rootList[k] = v
 	}
-	resp.AllNodes = rootList
+	resp.AllNodes = res
 
 	return
 }

+ 8 - 5
controllers/data_manage/line_feature/classify.go

@@ -129,16 +129,19 @@ func getChartClassifyListForMe(adminInfo system.Admin, resp *data_manage.ChartCl
 	for _, v := range allChartInfo {
 		chartInfoMap[v.ChartClassifyId] = append(chartInfoMap[v.ChartClassifyId], v)
 	}
-	for k, v := range rootList {
+	res := make([]*data_manage.ChartClassifyItems, 0)
+	for _, v := range rootList {
 		if existItems, ok := chartInfoMap[v.ChartClassifyId]; ok {
 			v.Children = existItems
 		} else {
-			items := make([]*data_manage.ChartClassifyItems, 0)
-			v.Children = items
+			// items := make([]*data_manage.ChartClassifyItems, 0)
+			// v.Children = items
+			continue
 		}
-		rootList[k] = v
+		res = append(res, v)
+		// rootList[k] = v
 	}
-	resp.AllNodes = rootList
+	resp.AllNodes = res
 
 	return
 }

+ 9 - 0
controllers/data_manage/predict_edb_classify.go

@@ -792,6 +792,15 @@ func (this *PredictEdbClassifyController) SimpleList() {
 		sort.Sort(sortList)
 	}
 
+	if isOnlyMe {
+		sortList, err = data.GetEdbClassifyByIsMe(sysUserId, parentId, 1, sortList)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取只看我的分类列表失败,err:" + err.Error()
+			return
+		}
+	}
+
 	// 是否允许添加一级分类
 	canOpClassify := true
 	button := data.GetPredictEdbClassifyOpButton(this.SysUser, 0, true)

+ 9 - 0
controllers/data_manage/range_analysis/chart_classify.go

@@ -8,6 +8,7 @@ import (
 	"eta/eta_api/models/system"
 	"eta/eta_api/services/data"
 	"eta/eta_api/services/data/data_manage_permission"
+	"eta/eta_api/services/data/range_analysis"
 	"eta/eta_api/utils"
 	"fmt"
 	"sort"
@@ -127,6 +128,14 @@ func (this *RangeChartClassifyController) ChartClassifyList() {
 			nodeAll = append(nodeAll, v)
 		}
 	}
+	if isShowMe {
+		nodeAll, err = range_analysis.GetClassifyListByIsShowMe(this.SysUser.AdminId, parentId, source, nodeAll)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取数据失败,Err:" + err.Error()
+			return
+		}
+	}
 
 	// 整体排序
 	if len(nodeAll) > 0 {

+ 10 - 1
controllers/sandbox/sandbox.go

@@ -12,8 +12,9 @@ import (
 	sandboxService "eta/eta_api/services/sandbox"
 	"eta/eta_api/utils"
 	"fmt"
-	"github.com/rdlucklib/rdluck_tools/paging"
 	"time"
+
+	"github.com/rdlucklib/rdluck_tools/paging"
 )
 
 // versionSize 版本列表第一页数据约定是:3条
@@ -847,6 +848,14 @@ func (this *SandboxController) SandboxClassifyItems() {
 		//allNodes := sandboxService.HandleNoPermissionSandbox(resp.AllNodes, nil)
 		//resp.AllNodes = allNodes
 
+		nodeAll, err := sandboxService.GetSandboxClassifyByIsShowMe(resp.AllNodes, sandboxClassifyId, this.SysUser.AdminId)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取数据失败,Err:" + err.Error()
+			return
+		}
+		resp.AllNodes = nodeAll
+
 		br.Ret = 200
 		br.Success = true
 		br.Msg = "获取成功"

+ 9 - 2
models/ai_summary/ai_summary_classify.go

@@ -2,9 +2,10 @@ package ai_summary
 
 import (
 	"fmt"
+	"time"
+
 	"github.com/beego/beego/v2/client/orm"
 	"github.com/rdlucklib/rdluck_tools/paging"
-	"time"
 )
 
 type AiSummaryClassify struct {
@@ -29,6 +30,7 @@ func AddAiSummaryClassify(item *AiSummaryClassify) (lastId int64, err error) {
 
 type AiSummaryClassifyItems struct {
 	AiSummaryClassifyId int
+	Title               string    `description:"标题" json:"-"`
 	ClassifyName        string    `description:"分类名称"`
 	ParentId            int       `description:"父级id"`
 	HasData             int       `description:"是否含有指标数据"`
@@ -328,4 +330,9 @@ func GetAiSummaryClassifyAll() (items []*AiSummaryClassifyItems, err error) {
 	return
 }
 
-
+func GetAiSummaryClassifyAllIncludeParent() (items []*AiSummaryClassifyItems, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT * FROM ai_summary_classify order by sort asc,ai_summary_classify_id asc`
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}

+ 24 - 4
models/data_manage/chart_classify.go

@@ -3,8 +3,9 @@ package data_manage
 import (
 	"eta/eta_api/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"time"
+
+	"github.com/beego/beego/v2/client/orm"
 )
 
 type ChartClassify struct {
@@ -466,6 +467,25 @@ func GetChartClassifyAllBySource(source int) (items []*ChartClassifyItems, err e
 	return
 }
 
+// GetChartClassifyIdListByAdminId
+// @Description: 根据用户id和指标类型获取其关联的所有指标分类id列表
+// @author: Roc
+// @datetime 2024-09-11 15:52:48
+// @param adminId int
+// @param source int
+// @return chartClassifyIdList []int
+// @return err error
+func GetChartClassifyIdListByAdminId(adminId, source int) (chartClassifyIdList []int, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT chart_classify_id FROM chart_info WHERE sys_user_id = ? AND source = ?`
+
+	pars := []interface{}{adminId, source}
+	sql += ` group by chart_classify_id `
+	_, err = o.Raw(sql, pars).QueryRows(&chartClassifyIdList)
+
+	return
+}
+
 // GetChartClassifyAndInfoByParentId
 func GetChartClassifyAndInfoByParentId(parentId int) (items []*ChartClassifyItems, err error) {
 	o := orm.NewOrmUsingDB("data")
@@ -562,7 +582,7 @@ SELECT
 FROM
 	chart_info 
 WHERE
-	chart_classify_id = ? AND chart_type = 1 AND sys_user_id = ?
+	chart_classify_id = ? AND sys_user_id = ?
 ORDER BY
 	sort ASC,
 	chart_classify_id ASC`
@@ -582,6 +602,6 @@ func GetChartClassifiesById(chartClassifyId int) (items []*ChartClassifyItems, e
         FROM chart_classify
         WHERE parent_id = ?
     );`
-	_,err = o.Raw(sql, chartClassifyId, chartClassifyId, chartClassifyId).QueryRows(&items)
+	_, err = o.Raw(sql, chartClassifyId, chartClassifyId, chartClassifyId).QueryRows(&items)
 	return
-}
+}

+ 13 - 3
models/data_manage/chart_info.go

@@ -5,12 +5,13 @@ import (
 	"eta/eta_api/models/mgo"
 	"eta/eta_api/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
-	"github.com/rdlucklib/rdluck_tools/paging"
-	"go.mongodb.org/mongo-driver/bson"
 	"strconv"
 	"strings"
 	"time"
+
+	"github.com/beego/beego/v2/client/orm"
+	"github.com/rdlucklib/rdluck_tools/paging"
+	"go.mongodb.org/mongo-driver/bson"
 )
 
 type ChartInfo struct {
@@ -2790,6 +2791,15 @@ func GetChartInfoBySourceAndParentId(source, parentId, adminId int) (items []*Ch
 	return
 }
 
+func GetChartInfoBySourceAndAdminId(source, adminId int) (items []*ChartClassifyItems, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT chart_info_id,chart_classify_id,chart_name AS chart_classify_name,chart_name_en AS chart_classify_name_en,
+             unique_code,sys_user_id,sys_user_real_name,date_type,start_date,end_date,chart_type,calendar,season_start_date,season_end_date,source
+            FROM chart_info WHERE source = ? AND sys_user_id = ? ORDER BY sort asc,chart_info_id ASC `
+	_, err = o.Raw(sql, source, adminId).QueryRows(&items)
+	return
+}
+
 // PreviewSeasonChartReq 预览季节性图的请求入参
 type PreviewSeasonChartReq struct {
 	ChartEdbInfoList  []*ChartSaveItem `description:"指标及配置信息"`

+ 9 - 1
models/sandbox/sandbox_classify.go

@@ -2,8 +2,9 @@ package sandbox
 
 import (
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"time"
+
+	"github.com/beego/beego/v2/client/orm"
 )
 
 type SandboxClassify struct {
@@ -43,6 +44,13 @@ func GetSandboxClassifyAll() (items []*SandboxClassifyItems, err error) {
 	return
 }
 
+func GetSandboxClassifyAllIncludeParent() (items []*SandboxClassifyItems, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT * FROM sandbox_classify order by sort asc,sandbox_classify_id asc`
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
 type SandboxClassifyItems struct {
 	SandboxClassifyId   int       `orm:"column(sandbox_classify_id);pk"`
 	SandboxClassifyName string    `description:"分类名称"`

+ 53 - 0
services/ai_summary/ai_summary.go

@@ -182,3 +182,56 @@ func SharePrompt(promptId int, adminId int) (err error) {
 	}
 	return
 }
+func GetAiSummaryClassifyByIsShowMe(classifyList []*ai_summary.AiSummaryClassifyItems, classifyId, adminId int) (list []*ai_summary.AiSummaryClassifyItems, err error) {
+	aiSummaryList, err := ai_summary.GetAiSummaryInfoByAdminId(adminId)
+	if err != nil {
+		return
+	}
+	existClassify := make(map[int]struct{})
+	for _, v := range aiSummaryList {
+		existClassify[v.AiSummaryClassifyId] = struct{}{}
+	}
+	for _, v := range classifyList {
+		if v.AiSummaryId > 0 {
+			v.ClassifyName = v.Title
+			list = append(list, v)
+		}
+	}
+
+	classifyAll, err := ai_summary.GetAiSummaryClassifyAllIncludeParent()
+	if err != nil {
+		return
+	}
+	classifyTree := aiSummaryClassifyTree(classifyAll, classifyId)
+	list = append(list, GetClassifyListRemoveNoAiSummary(classifyTree, existClassify)...)
+	return
+
+}
+
+func aiSummaryClassifyTree(classifyList []*ai_summary.AiSummaryClassifyItems, classifyId int) (list []*ai_summary.AiSummaryClassifyItems) {
+	for _, v := range classifyList {
+		if v.ParentId == classifyId {
+			list = append(list, v)
+			v.Children = aiSummaryClassifyTree(classifyList, v.AiSummaryClassifyId)
+		}
+	}
+	return
+}
+
+// GetClassifyListRemoveNoAiSummary 去除没有表格的分类
+func GetClassifyListRemoveNoAiSummary(classifyList []*ai_summary.AiSummaryClassifyItems, aiSummaryExistClassifyId map[int]struct{}) []*ai_summary.AiSummaryClassifyItems {
+	res := make([]*ai_summary.AiSummaryClassifyItems, 0)
+	for _, classify := range classifyList {
+		if _, ok := aiSummaryExistClassifyId[classify.AiSummaryClassifyId]; ok {
+			classify.Children = []*ai_summary.AiSummaryClassifyItems{}
+			res = append(res, classify)
+			continue
+		}
+		classify.Children = append([]*ai_summary.AiSummaryClassifyItems{}, GetClassifyListRemoveNoAiSummary(classify.Children, aiSummaryExistClassifyId)...)
+		if len(classify.Children) > 0 {
+			classify.Children = []*ai_summary.AiSummaryClassifyItems{}
+			res = append(res, classify)
+		}
+	}
+	return res
+}

+ 56 - 3
services/data/chart_classify.go

@@ -995,7 +995,7 @@ func EditChartClassifyV2(chartClassifyId, praentId, source int, chartClassifyNam
 			err = e
 			return
 		}
-		if classifyInfo.Level != parentClassifyInfo.Level - 1 {
+		if classifyInfo.Level != parentClassifyInfo.Level-1 {
 			err = errors.New("父级分类层级异常")
 		}
 	}
@@ -1008,7 +1008,6 @@ func EditChartClassifyV2(chartClassifyId, praentId, source int, chartClassifyNam
 		return
 	}
 
-
 	// 需要变更的字段
 	updateCols := make([]string, 0)
 
@@ -1127,4 +1126,58 @@ func GetChartClassifyChildrenRecursiveByParentIds(list []*data_manage.ChartClass
 		}
 	}
 	return res
-}
+}
+
+func GetChartClassifyByIsMe(adminId, parentId, source int, classifyList []*data_manage.ChartClassifyItems) (list []*data_manage.ChartClassifyItems, err error) {
+	chartInfoList, err := data_manage.GetChartInfoByAdminId([]int{source}, adminId)
+	if err != nil {
+		return
+	}
+	classifyIdList := make([]int, 0)
+	for _, chartInfo := range chartInfoList {
+		if chartInfo.ChartClassifyId > 0 {
+			classifyIdList = append(classifyIdList, chartInfo.ChartClassifyId)
+		}
+	}
+	if parentId > 0 {
+		for _, v := range classifyList {
+			if v.ChartClassifyId > 0 && v.ChartInfoId == 0 {
+				classifyItems, er, _ := GetChildChartClassifyByClassifyId(v.ChartClassifyId)
+				if er != nil {
+					err = er
+					return
+				}
+				existClassifyMap := make(map[int]struct{})
+				for _, classify := range classifyItems {
+					existClassifyMap[classify.ChartClassifyId] = struct{}{}
+				}
+				for _, chart := range chartInfoList {
+					if _, ok := existClassifyMap[chart.ChartClassifyId]; ok {
+						list = append(list, v)
+						break
+					}
+				}
+			} else {
+				list = append(list, v)
+			}
+		}
+	} else {
+		chartClassifyList, er := data_manage.GetChartClassifyByIdList(classifyIdList)
+		if er != nil {
+			err = er
+			return
+		}
+
+		existClassifyIdMap := make(map[int]struct{})
+		for _, classify := range chartClassifyList {
+			existClassifyIdMap[classify.RootId] = struct{}{}
+		}
+
+		for _, classify := range classifyList {
+			if _, ok := existClassifyIdMap[classify.ChartClassifyId]; ok {
+				list = append(list, classify)
+			}
+		}
+	}
+	return
+}

+ 110 - 0
services/data/correlation/correlation_chart_classify.go

@@ -0,0 +1,110 @@
+package correlation
+
+import (
+	"errors"
+	"eta/eta_api/models/data_manage"
+	"eta/eta_api/utils"
+)
+
+func GetCorrelationClassifyByIsMe(adminId, parentId, source int, classifyList []*data_manage.ChartClassifyItems) (list []*data_manage.ChartClassifyItems, err error) {
+	chartInfoList, err := data_manage.GetChartInfoByAdminId([]int{source}, adminId)
+	if err != nil {
+		return
+	}
+	classifyIdList := make([]int, 0)
+	for _, chartInfo := range chartInfoList {
+		if chartInfo.ChartClassifyId > 0 {
+			classifyIdList = append(classifyIdList, chartInfo.ChartClassifyId)
+		}
+	}
+	if parentId > 0 {
+		for _, v := range classifyList {
+			if v.ChartClassifyId > 0 && v.ChartInfoId == 0 {
+				classifyItems, _, er := GetChildClassifyByClassifyId(v.ChartClassifyId)
+				if er != nil {
+					err = er
+					return
+				}
+				existClassifyMap := make(map[int]struct{})
+				for _, classify := range classifyItems {
+					existClassifyMap[classify.ChartClassifyId] = struct{}{}
+				}
+				for _, chart := range chartInfoList {
+					if _, ok := existClassifyMap[chart.ChartClassifyId]; ok {
+						list = append(list, v)
+						break
+					}
+				}
+			} else {
+				list = append(list, v)
+			}
+		}
+	} else {
+		chartClassifyList, er := data_manage.GetChartClassifyByIdList(classifyIdList)
+		if er != nil {
+			err = er
+			return
+		}
+
+		existClassifyIdMap := make(map[int]struct{})
+		for _, classify := range chartClassifyList {
+			existClassifyIdMap[classify.RootId] = struct{}{}
+		}
+
+		for _, classify := range classifyList {
+			if _, ok := existClassifyIdMap[classify.ChartClassifyId]; ok {
+				list = append(list, classify)
+			}
+		}
+	}
+	return
+}
+
+func GetChildClassifyByClassifyId(targetClassifyId int) (targetList []*data_manage.ChartClassifyItems, errMsg string, err error) {
+	//判断是否是挂在顶级目录下
+	targetClassify, err := data_manage.GetChartClassifyById(targetClassifyId)
+	if err != nil {
+		if err.Error() == utils.ErrNoRow() {
+			errMsg = "当前分类不存在"
+			err = errors.New(errMsg)
+			return
+		}
+		errMsg = "获取失败"
+		err = errors.New("获取分类信息失败,Err:" + err.Error())
+		return
+	}
+	orderStr := ` order by level asc, sort asc, classify_id asc`
+	tmpList, err := data_manage.GetChartClassifyByRootIdLevel(targetClassify.RootId, targetClassify.Source, orderStr)
+	if err != nil {
+		errMsg = "获取失败"
+		err = errors.New("获取数据失败,Err:" + err.Error())
+		return
+	}
+	idMap := make(map[int]struct{})
+	if len(tmpList) > 0 {
+		for _, v := range tmpList {
+			if v.ChartClassifyId == targetClassify.ChartClassifyId {
+				idMap[v.ChartClassifyId] = struct{}{}
+			}
+		}
+		for _, v := range tmpList {
+			if _, ok := idMap[v.ParentId]; ok {
+				idMap[v.ChartClassifyId] = struct{}{}
+			}
+		}
+		for _, v := range tmpList {
+			if _, ok := idMap[v.ChartClassifyId]; ok {
+				targetItem := new(data_manage.ChartClassifyItems)
+				targetItem.ChartClassifyId = v.ChartClassifyId
+				targetItem.ParentId = v.ParentId
+				targetItem.UniqueCode = v.UniqueCode
+				targetItem.Level = v.Level
+				targetItem.ChartClassifyName = v.ChartClassifyName
+				targetItem.IsJoinPermission = v.IsJoinPermission
+				targetList = append(targetList, targetItem)
+			}
+		}
+	}
+
+	return
+}

+ 54 - 0
services/data/edb_classify.go

@@ -1570,3 +1570,57 @@ func GetEdbClassifyMaxSort(parentId int, classifyType uint8) (maxSort int, err e
 	}
 	return
 }
+
+func GetEdbClassifyByIsMe(adminId, parentId, edbInfoType int, classifyList []*data_manage.EdbClassifyItems) (list []*data_manage.EdbClassifyItems, err error) {
+	edbInfoList, err := data_manage.GetEdbInfoListByUserId([]int{adminId}, edbInfoType)
+	if err != nil {
+		return
+	}
+	classifyIdList := make([]int, 0)
+	for _, edbInfo := range edbInfoList {
+		if edbInfo.ClassifyId > 0 {
+			classifyIdList = append(classifyIdList, edbInfo.ClassifyId)
+		}
+	}
+	if parentId > 0 {
+		for _, v := range classifyList {
+			if v.ClassifyId > 0 && v.EdbInfoId == 0 {
+				classifyItems, er, _ := GetChildClassifyByClassifyId(v.ClassifyId)
+				if er != nil {
+					err = er
+					return
+				}
+				existClassifyMap := make(map[int]struct{})
+				for _, classify := range classifyItems {
+					existClassifyMap[classify.ClassifyId] = struct{}{}
+				}
+				for _, edb := range edbInfoList {
+					if _, ok := existClassifyMap[edb.ClassifyId]; ok {
+						list = append(list, v)
+						break
+					}
+				}
+			} else {
+				list = append(list, v)
+			}
+		}
+	} else {
+		edbInfoClassifyList, er := data_manage.GetEdbClassifyByIdList(classifyIdList)
+		if er != nil {
+			err = er
+			return
+		}
+
+		existClassifyIdMap := make(map[int]struct{})
+		for _, classify := range edbInfoClassifyList {
+			existClassifyIdMap[classify.RootId] = struct{}{}
+		}
+
+		for _, classify := range classifyList {
+			if _, ok := existClassifyIdMap[classify.ClassifyId]; ok {
+				list = append(list, classify)
+			}
+		}
+	}
+	return
+}

+ 16 - 0
services/data/excel/excel_classify.go

@@ -472,3 +472,19 @@ func GetChildClassifyByClassifyId(targetClassifyId int, source int) (targetList
 
 	return
 }
+
+// GetClassifyListRemoveNoExcel 去除没有表格的分类
+func GetClassifyListRemoveNoExcel(classifyList []*excel.ExcelClassifyItems) []*excel.ExcelClassifyItems {
+	res := make([]*excel.ExcelClassifyItems, 0)
+	for _, classify := range classifyList {
+		if classify.ExcelInfoId > 0 {
+			res = append(res, classify)
+			continue
+		}
+		classify.Children = append([]*excel.ExcelClassifyItems{}, GetClassifyListRemoveNoExcel(classify.Children)...)
+		if len(classify.Children) > 0 {
+			res = append(res, classify)
+		}
+	}
+	return res
+}

+ 58 - 0
services/data/range_analysis/range_analysis_classify.go

@@ -0,0 +1,58 @@
+package range_analysis
+
+import (
+	"eta/eta_api/models/data_manage"
+	"eta/eta_api/services/data"
+)
+
+func GetClassifyListByIsShowMe(adminId, parentId, source int, classifyList []*data_manage.ChartClassifyItems) (items []*data_manage.ChartClassifyItems, err error) {
+	chartItems, err := data_manage.GetChartInfoBySourceAndAdminId(source, adminId)
+	if err != nil {
+		return
+	}
+	classifyIdList := make([]int, 0)
+	for _, chart := range chartItems {
+		if chart.ChartClassifyId > 0 {
+			classifyIdList = append(classifyIdList, chart.ChartClassifyId)
+		}
+	}
+	if parentId > 0 {
+		for _, v := range classifyList {
+			if v.ChartClassifyId > 0 && v.ChartInfoId == 0 {
+				classifyItems, er, _ := data.GetChildChartClassifyByClassifyId(v.ChartClassifyId)
+				if er != nil {
+					err = er
+					return
+				}
+				existClassifyMap := make(map[int]struct{})
+				for _, classify := range classifyItems {
+					existClassifyMap[classify.ChartClassifyId] = struct{}{}
+				}
+				for _, edb := range chartItems {
+					if _, ok := existClassifyMap[edb.ChartClassifyId]; ok {
+						items = append(items, v)
+						break
+					}
+				}
+			} else {
+				items = append(items, v)
+			}
+		}
+	} else {
+		tmpClassify, er := data_manage.GetChartClassifyByIdList(classifyIdList)
+		if er != nil {
+			err = er
+			return
+		}
+		existClassifyIdMap := make(map[int]struct{})
+		for _, classify := range tmpClassify {
+			existClassifyIdMap[classify.RootId] = struct{}{}
+		}
+		for _, classify := range classifyList {
+			if _, ok := existClassifyIdMap[classify.ChartClassifyId]; ok {
+				items = append(items, classify)
+			}
+		}
+	}
+	return
+}

+ 51 - 0
services/sandbox/sandbox.go

@@ -958,3 +958,54 @@ func ReplaceEdbInSandbox(oldEdbInfoId, newEdbInfoId int) (err error) {
 
 	return
 }
+
+func GetSandboxClassifyByIsShowMe(classifyList []*sandbox.SandboxClassifyItems, classifyId, adminId int) (list []*sandbox.SandboxClassifyItems, err error) {
+	sanboxList, err := sandbox.GetSandboxInfoByAdminId(adminId)
+	if err != nil {
+		return
+	}
+	existClassify := make(map[int]struct{})
+	for _, v := range sanboxList {
+		existClassify[v.SandboxClassifyId] = struct{}{}
+	}
+	for _, v := range classifyList {
+		if v.SandboxId > 0 {
+			list = append(list, v)
+		}
+	}
+	classifyAll, err := sandbox.GetSandboxClassifyAllIncludeParent()
+	if err != nil {
+		return
+	}
+	classifyTree := sandbodClassifyTree(classifyAll, classifyId)
+	list = append(list, GetClassifyListRemoveNoSandbox(classifyTree, existClassify)...)
+	return
+}
+
+func sandbodClassifyTree(classifyList []*sandbox.SandboxClassifyItems, classifyId int) (list []*sandbox.SandboxClassifyItems) {
+	for _, v := range classifyList {
+		if v.ParentId == classifyId {
+			list = append(list, v)
+			v.Children = sandbodClassifyTree(classifyList, v.SandboxClassifyId)
+		}
+	}
+	return
+}
+
+// GetClassifyListRemoveNoSandbox 去除没有表格的分类
+func GetClassifyListRemoveNoSandbox(classifyList []*sandbox.SandboxClassifyItems, sanboxExistClassifyId map[int]struct{}) []*sandbox.SandboxClassifyItems {
+	res := make([]*sandbox.SandboxClassifyItems, 0)
+	for _, classify := range classifyList {
+		if _, ok := sanboxExistClassifyId[classify.SandboxClassifyId]; ok {
+			classify.Children = []*sandbox.SandboxClassifyItems{}
+			res = append(res, classify)
+			continue
+		}
+		classify.Children = append([]*sandbox.SandboxClassifyItems{}, GetClassifyListRemoveNoSandbox(classify.Children, sanboxExistClassifyId)...)
+		if len(classify.Children) > 0 {
+			classify.Children = []*sandbox.SandboxClassifyItems{}
+			res = append(res, classify)
+		}
+	}
+	return res
+}