浏览代码

Merge remote-tracking branch 'origin/eta/2.3' into debug

Roc 3 月之前
父节点
当前提交
bd5b09e381

+ 28 - 11
controllers/data_manage/edb_info.go

@@ -1833,18 +1833,35 @@ func (this *EdbInfoController) EdbInfoFilterByEs() {
 
 	// 筛选分类id列表
 	searchClassifyIdList := make([]int, 0)
+	searchPublicClassifyIdList := make([]int, 0)
 	// 父级分类id
 	classifyId, _ := this.GetInt("ClassifyId")
 	if classifyId > 0 {
-		allChildClassifyItemList, err, _ := data.GetAllChildClassifyByParentId(classifyId)
-		if err != nil {
-			br.Msg = "获取失败"
-			br.ErrMsg = "获取指标分类信息失败,Err:" + err.Error()
-			return
-		}
-		searchClassifyIdList = append(searchClassifyIdList, classifyId)
-		for _, v := range allChildClassifyItemList {
-			searchClassifyIdList = append(searchClassifyIdList, v.ClassifyId)
+		switch edbAuth {
+		case 1: // 1-我的;2-公共
+			allChildClassifyItemList, err, _ := data.GetAllChildClassifyByParentId(classifyId)
+			if err != nil {
+				br.Msg = "获取失败"
+				br.ErrMsg = "获取指标分类信息失败,Err:" + err.Error()
+				return
+			}
+			searchClassifyIdList = append(searchClassifyIdList, classifyId)
+			for _, v := range allChildClassifyItemList {
+				searchClassifyIdList = append(searchClassifyIdList, v.ClassifyId)
+			}
+		case 2: // 1-我的;2-公共
+			obj := data_manage.EdbPublicClassify{}
+			allChildClassifyItemList, err, _ := obj.GetAllChildClassifyByParentId(classifyId)
+			if err != nil {
+				br.Msg = "获取失败"
+				br.ErrMsg = "获取指标分类信息失败,Err:" + err.Error()
+				return
+			}
+			searchPublicClassifyIdList = append(searchPublicClassifyIdList, classifyId)
+			for _, v := range allChildClassifyItemList {
+				searchPublicClassifyIdList = append(searchPublicClassifyIdList, v.EdbPublicClassifyId)
+			}
+
 		}
 	}
 
@@ -1883,7 +1900,7 @@ func (this *EdbInfoController) EdbInfoFilterByEs() {
 	}
 
 	// 普通的搜索
-	total, edbInfoList, err = elastic.SearchEdbInfoData(keyWord, startSize, pageSize, filterSource, source, frequency, noPermissionEdbInfoIdList, noPermissionEdbClassifyIdList, collectEdbInfoIdList, searchClassifyIdList, edbTypeList, edbInfoType, edbAuth, searchUserId, sortMap)
+	total, edbInfoList, err = elastic.SearchEdbInfoData(keyWord, startSize, pageSize, filterSource, source, frequency, noPermissionEdbInfoIdList, noPermissionEdbClassifyIdList, collectEdbInfoIdList, searchClassifyIdList, searchPublicClassifyIdList, edbTypeList, edbInfoType, edbAuth, searchUserId, sortMap)
 
 	if err != nil {
 		edbInfoList = make([]*data_manage.EdbInfoList, 0)
@@ -3272,7 +3289,7 @@ func (this *EdbInfoController) AllEdbInfoByEs() {
 		keyWordArr = append(keyWordArr, newKeyWord...)
 
 		// 普通的搜索
-		total, edbInfoList, err = elastic.SearchEdbInfoData(keyWord, startSize, pageSize, filterSource, source, frequency, noPermissionEdbInfoIdList, noPermissionEdbClassifyIdList, []int{}, []int{}, []int{1, 2}, -1, 0, this.SysUser.AdminId, map[string]string{})
+		total, edbInfoList, err = elastic.SearchEdbInfoData(keyWord, startSize, pageSize, filterSource, source, frequency, noPermissionEdbInfoIdList, noPermissionEdbClassifyIdList, []int{}, []int{}, []int{}, []int{1, 2}, -1, 0, this.SysUser.AdminId, map[string]string{})
 		isEs = true
 	} else {
 		var condition string

+ 1 - 1
controllers/data_manage/predict_edb_info.go

@@ -1101,7 +1101,7 @@ func (this *PredictEdbInfoController) FilterByEs() {
 		newKeyWord := strings.Split(keyWord, " ")
 		keyWordArr = append(keyWordArr, newKeyWord...)
 
-		total, edbInfoList, err = elastic.SearchEdbInfoData(keyWord, startSize, pageSize, filterSource, source, frequency, noPermissionEdbInfoIdList, noPermissionEdbClassifyIdList, []int{}, []int{}, []int{1, 2}, 1, 0, this.SysUser.AdminId, map[string]string{})
+		total, edbInfoList, err = elastic.SearchEdbInfoData(keyWord, startSize, pageSize, filterSource, source, frequency, noPermissionEdbInfoIdList, noPermissionEdbClassifyIdList, []int{}, []int{}, []int{}, []int{1, 2}, 1, 0, this.SysUser.AdminId, map[string]string{})
 
 		isEs = true
 	} else {

+ 1 - 1
controllers/data_manage/public_chart.go

@@ -336,7 +336,7 @@ func (c *ChartPublicController) ListByEs() {
 			}
 
 			// 普通分类
-			if classifyItem, ok := classifyMap[v.ChartInfoId]; ok {
+			if classifyItem, ok := classifyMap[v.ChartClassifyId]; ok {
 				v.ClassifyNamePath = classifyItem.ChartClassifyNamePath
 			}
 

+ 1 - 1
controllers/data_manage/public_edb.go

@@ -512,7 +512,7 @@ func (c *EdbPublicController) ListByEs() {
 			}
 
 			// 普通分类
-			if classifyItem, ok := classifyMap[v.EdbInfoId]; ok {
+			if classifyItem, ok := classifyMap[v.ClassifyId]; ok {
 				v.ClassifyNamePath = classifyItem.ClassifyNamePath
 			}
 

+ 44 - 0
models/data_manage/public_chart_classify.go

@@ -1,7 +1,9 @@
 package data_manage
 
 import (
+	"errors"
 	"eta_gn/eta_api/global"
+	"eta_gn/eta_api/utils"
 	"fmt"
 	"time"
 )
@@ -276,6 +278,48 @@ func (m *ChartPublicClassify) BatchesDel(classifyIdList []int) (err error) {
 	return
 }
 
+func (m *ChartPublicClassify) GetChildClassifyListByParentId(classifyIdPath, orderStr string) (items []*EdbPublicClassify, err error) {
+	o := global.DmSQL["data"]
+	sql := ` SELECT * FROM chart_public_classify WHERE chart_public_classify_id_path like ? `
+	if orderStr != "" {
+		sql += orderStr
+	} else {
+		sql += ` order by level asc, sort asc, chart_public_classify_id_path asc`
+	}
+
+	err = o.Raw(sql, classifyIdPath).Scan(&items).Error
+
+	return
+}
+
+// GetAllChildClassifyByParentId
+// @Description: 根据上级id获取所有的下级id
+// @author: Roc
+// @datetime 2024-12-02 15:14:13
+// @param parentId int
+// @return targetList []*data_manage.EdbClassifyItems
+// @return err error
+// @return errMsg string
+func (m *ChartPublicClassify) GetAllChildClassifyByParentId(parentId int) (targetList []*EdbPublicClassify, err error, errMsg string) {
+	//判断是否是挂在顶级目录下
+	parentClassify, err := m.GetChartClassifyById(parentId)
+	if err != nil {
+		if utils.IsErrNoRow(err) {
+			errMsg = "当前分类不存在"
+			err = errors.New(errMsg)
+			return
+		}
+		errMsg = "获取失败"
+		err = errors.New("获取分类信息失败,Err:" + err.Error())
+		return
+	}
+	orderStr := ` order by level asc, sort asc, chart_public_classify_id_path asc`
+
+	targetList, err = m.GetChildClassifyListByParentId(fmt.Sprint(parentClassify.ChartPublicClassifyIdPath, ",%"), orderStr)
+
+	return
+}
+
 // GetChartPublicClassifyByParentIdAndName 根据父级ID和名称获取分类
 func GetChartPublicClassifyByParentIdAndName(source, parentId int, classifyName string, classifyId int) (item *ChartClassify, err error) {
 	o := global.DmSQL["data"]

+ 44 - 0
models/data_manage/public_edb_classify.go

@@ -1,7 +1,9 @@
 package data_manage
 
 import (
+	"errors"
 	"eta_gn/eta_api/global"
+	"eta_gn/eta_api/utils"
 	"fmt"
 	"time"
 )
@@ -274,6 +276,48 @@ func (m *EdbPublicClassify) BatchesDel(classifyIdList []int) (err error) {
 	return
 }
 
+func (m *EdbPublicClassify) GetChildEdbClassifyListByParentId(classifyIdPath, orderStr string) (items []*EdbPublicClassify, err error) {
+	o := global.DmSQL["data"]
+	sql := ` SELECT * FROM edb_public_classify WHERE classify_id_path like ? `
+	if orderStr != "" {
+		sql += orderStr
+	} else {
+		sql += ` order by level asc, sort asc, edb_public_classify_id asc`
+	}
+
+	err = o.Raw(sql, classifyIdPath).Scan(&items).Error
+
+	return
+}
+
+// GetAllChildClassifyByParentId
+// @Description: 根据上级id获取所有的下级id
+// @author: Roc
+// @datetime 2024-12-02 15:14:13
+// @param parentId int
+// @return targetList []*data_manage.EdbClassifyItems
+// @return err error
+// @return errMsg string
+func (m *EdbPublicClassify) GetAllChildClassifyByParentId(parentId int) (targetList []*EdbPublicClassify, err error, errMsg string) {
+	//判断是否是挂在顶级目录下
+	parentClassify, err := m.GetEdbClassifyById(parentId)
+	if err != nil {
+		if utils.IsErrNoRow(err) {
+			errMsg = "当前分类不存在"
+			err = errors.New(errMsg)
+			return
+		}
+		errMsg = "获取失败"
+		err = errors.New("获取分类信息失败,Err:" + err.Error())
+		return
+	}
+	orderStr := ` order by level asc, sort asc, edb_public_classify_id asc`
+
+	targetList, err = m.GetChildEdbClassifyListByParentId(fmt.Sprint(parentClassify.EdbPublicClassifyIdPath, ",%"), orderStr)
+
+	return
+}
+
 // GetEdbPublicClassifyByParentIdAndName 根据父级ID和名称获取分类
 func GetEdbPublicClassifyByParentIdAndName(parentId int, classifyName string, classifyId int, classifyType uint8) (item *EdbClassify, err error) {
 	sql := `SELECT * FROM edb_public_classify WHERE parent_id = ? AND edb_public_classify_name = ? AND edb_public_classify_id <> ? and classify_type=? LIMIT 1`

+ 10 - 1
services/elastic/edb_info.go

@@ -165,7 +165,7 @@ func searchEdbInfoData(indexName string, mustMap, mustNotMap []interface{}, shou
 // @return total int64
 // @return list []*data_manage.EdbInfoList
 // @return err error
-func SearchEdbInfoData(keywordStr string, from, size, filterSource, source int, frequency string, noPermissionEdbInfoIdList, noPermissionEdbClassifyIdList, collectEdbInfoIdList, searchClassifyIdList, edbTypeList []int, edbInfoType, edbAuth, sysUserId int, sortMap map[string]string) (total int64, list []*data_manage.EdbInfoList, err error) {
+func SearchEdbInfoData(keywordStr string, from, size, filterSource, source int, frequency string, noPermissionEdbInfoIdList, noPermissionEdbClassifyIdList, collectEdbInfoIdList, searchClassifyIdList, searchPublicClassifyIdList, edbTypeList []int, edbInfoType, edbAuth, sysUserId int, sortMap map[string]string) (total int64, list []*data_manage.EdbInfoList, err error) {
 	indexName := utils.DATA_INDEX_NAME
 	list = make([]*data_manage.EdbInfoList, 0)
 	defer func() {
@@ -267,6 +267,15 @@ func SearchEdbInfoData(keywordStr string, from, size, filterSource, source int,
 		})
 	}
 
+	// searchPublicClassifyIdList 指定公共分类id列表
+	if len(searchPublicClassifyIdList) > 0 {
+		mustMap = append(mustMap, map[string]interface{}{
+			"terms": map[string]interface{}{
+				"EdbPublicClassifyId": searchPublicClassifyIdList,
+			},
+		})
+	}
+
 	// 指标类型:0-基础+计算;1-基础指标;2-计算指标;3-预测指标
 	if len(edbTypeList) > 0 {
 		mustMap = append(mustMap, map[string]interface{}{