Ver código fonte

指标库分类改造、数据操作权限改造

hsun 6 meses atrás
pai
commit
491197bf3a

+ 2 - 2
controllers/data_manage/data_manage_permission/data_manage_permission.go

@@ -44,7 +44,7 @@ func (c *DataMangePermissionController) SetEdbChartPermission() {
 		return
 	}
 
-	if req.Source <= 0 || req.Source > 6 {
+	if req.Source <= 0 || req.Source > 7 {
 		br.Msg = "错误的来源"
 		br.IsSendEmail = false
 		return
@@ -223,7 +223,7 @@ func (c *DataMangePermissionController) GetEdbChartPermission() {
 	}
 
 	source, _ := c.GetInt("Source")
-	if source <= 0 || source > 6 {
+	if source <= 0 || source > 7 {
 		br.Msg = "错误的来源"
 		br.IsSendEmail = false
 		return

+ 4 - 4
controllers/data_manage/data_manage_permission/data_move.go

@@ -13,7 +13,7 @@ import (
 // EdbChartClassifyList
 // @Title 获取指标/图表分类列表数据接口
 // @Description 获取指标/图表分类列表数据接口
-// @Param   Source   query   int  false       "来源 :1:手工数据指标 2:钢联化工数据库 3:ETA指标库 4:ETA预测指标 5:图库 6:ETA表格"
+// @Param   Source   query   int  false       "来源 :1:手工数据指标 2:钢联化工数据库 3:ETA指标库 4:ETA预测指标 5:图库 6:ETA表格;7-计算指标"
 // @Param   SubSource   query   int  false       "子来源 :ETA表格中的各种表格类型,以及图表的来源(这个是后续的扩展方向)"
 // @Success 200 {object} data_manage.ChartListResp
 // @router /edb_chart/classify [get]
@@ -32,7 +32,7 @@ func (c *DataMangePermissionController) EdbChartClassifyList() {
 	}
 
 	source, _ := c.GetInt("Source")
-	if source <= 0 || source > 6 {
+	if source <= 0 || source > 7 {
 		br.Msg = "错误的来源"
 		br.IsSendEmail = false
 		return
@@ -82,7 +82,7 @@ func (c *DataMangePermissionController) SecretEdbChartClassifyList() {
 	}
 
 	source, _ := c.GetInt("Source")
-	if source <= 0 || source > 6 {
+	if source <= 0 || source > 7 {
 		br.Msg = "错误的来源"
 		br.IsSendEmail = false
 		return
@@ -155,7 +155,7 @@ func (c *DataMangePermissionController) MoveEdbChartList() {
 	}
 
 	source, _ := c.GetInt("Source")
-	if source <= 0 || source > 6 {
+	if source <= 0 || source > 7 {
 		br.Msg = "错误的来源"
 		br.IsSendEmail = false
 		return

+ 138 - 18
controllers/data_manage/edb_classify.go

@@ -9,6 +9,7 @@ import (
 	"eta_gn/eta_api/services/data"
 	"eta_gn/eta_api/services/data/data_manage_permission"
 	"eta_gn/eta_api/utils"
+	"fmt"
 	"sort"
 )
 
@@ -28,13 +29,26 @@ func (this *EdbClassifyController) ListV2() {
 		this.Data["json"] = br
 		this.ServeJSON()
 	}()
-	rootList, err := data_manage.GetEdbClassifyByParentId(0, 0)
+	// 分类来源筛选
+	classifyType, _ := this.GetInt("ClassifyType", utils.EdbClassifyTypeBase) // 默认指标库的
+	if classifyType != utils.EdbClassifyTypeBase && classifyType != utils.EdbClassifyTypeCalculate {
+		br.Msg = "参数有误"
+		br.ErrMsg = fmt.Sprintf("指标分类类型有误, ClassifyType: %d", classifyType)
+		return
+	}
+	edbType := utils.EdbTypeBase
+	if classifyType == utils.EdbClassifyTypeCalculate {
+		edbType = utils.EdbTypeCalculate
+	}
+
+	rootList, err := data_manage.GetEdbClassifyByParentId(0, int8(classifyType))
 	if err != nil && !utils.IsErrNoRow(err) {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取数据失败,Err:" + err.Error()
 		return
 	}
-	classifyAll, err := data_manage.GetEdbClassifyAll()
+	//classifyAll, err := data_manage.GetEdbClassifyAll()
+	classifyAll, err := data_manage.GetChildEdbClassifyByClassifyType(classifyType)
 	if err != nil && !utils.IsErrNoRow(err) {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取数据失败,Err:" + err.Error()
@@ -66,7 +80,8 @@ func (this *EdbClassifyController) ListV2() {
 	for _, v := range confList {
 		noPermissionEdbInfoIdMap[v.EdbInfoId] = true
 	}
-	allEdbInfo, err := data_manage.GetEdbInfoAll(utils.EDB_INFO_TYPE)
+	//allEdbInfo, err := data_manage.GetEdbInfoAll(utils.EDB_INFO_TYPE)
+	allEdbInfo, err := data_manage.GetEdbInfoByTypes(utils.EDB_INFO_TYPE, edbType)
 	if err != nil && !utils.IsErrNoRow(err) {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取数据失败,Err:" + err.Error()
@@ -139,6 +154,7 @@ func (this *EdbClassifyController) ListV2() {
 	br.Data = resp
 }
 
+// Items
 // @Title 获取所有分类接口-不包含指标
 // @Description 获取所有分类接口-不包含指标
 // @Success 200 {object} data_manage.EdbClassifyListResp
@@ -149,14 +165,27 @@ func (this *EdbClassifyController) Items() {
 		this.Data["json"] = br
 		this.ServeJSON()
 	}()
-	rootList, err := data_manage.GetEdbClassifyByParentId(0, 0)
+	// 分类来源筛选
+	classifyType, _ := this.GetInt("ClassifyType", utils.EdbClassifyTypeBase) // 默认指标库的
+	if classifyType != utils.EdbClassifyTypeBase && classifyType != utils.EdbClassifyTypeCalculate {
+		br.Msg = "参数有误"
+		br.ErrMsg = fmt.Sprintf("指标分类类型有误, ClassifyType: %d", classifyType)
+		return
+	}
+	//edbType := utils.EdbTypeBase
+	//if classifyType == utils.EdbClassifyTypeCalculate {
+	//	edbType = utils.EdbTypeCalculate
+	//}
+
+	rootList, err := data_manage.GetEdbClassifyByParentId(0, int8(classifyType))
 	if err != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取数据失败,Err:" + err.Error()
 		return
 	}
 
-	classifyAll, err := data_manage.GetEdbClassifyAll()
+	//classifyAll, err := data_manage.GetEdbClassifyAll()
+	classifyAll, err := data_manage.GetChildEdbClassifyByClassifyType(classifyType)
 	if err != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取数据失败,Err:" + err.Error()
@@ -177,6 +206,7 @@ func (this *EdbClassifyController) Items() {
 	br.Data = resp
 }
 
+// AddEdbClassify
 // @Title 新增分类
 // @Description 新增分类接口
 // @Param	request	body data_manage.AddEdbClassifyReq true "type json string"
@@ -205,9 +235,16 @@ func (this *EdbClassifyController) AddEdbClassify() {
 		br.IsSendEmail = false
 		return
 	}
+	// 分类来源筛选
+	classifyType := req.ClassifyType
+	if classifyType != utils.EdbClassifyTypeBase && classifyType != utils.EdbClassifyTypeCalculate {
+		br.Msg = "参数有误"
+		br.ErrMsg = fmt.Sprintf("指标分类类型有误, ClassifyType: %d", classifyType)
+		return
+	}
 
 	//添加指标
-	_, err, errMsg := data.AddEdbClassify(req.ClassifyName, req.ParentId, req.Level, 0, this.SysUser.AdminId, this.SysUser.AdminName, this.Lang)
+	_, err, errMsg := data.AddEdbClassify(req.ClassifyName, req.ParentId, req.Level, classifyType, this.SysUser.AdminId, this.SysUser.AdminName, this.Lang)
 	if errMsg != `` {
 		br.Msg = errMsg
 		br.ErrMsg = errMsg
@@ -258,6 +295,7 @@ func (this *EdbClassifyController) AddEdbClassify() {
 	br.IsAddLog = true
 }
 
+// EditEdbClassify
 // @Title 修改分类
 // @Description 修改分类接口
 // @Param	request	body data_manage.EditEdbClassifyReq true "type json string"
@@ -332,6 +370,7 @@ func (this *EdbClassifyController) EditEdbClassify() {
 	br.IsAddLog = true
 }
 
+// DeleteEdbClassifyCheck
 // @Title 删除检测接口
 // @Description 删除检测接口
 // @Param	request	body data_manage.ClassifyDeleteCheckReq true "type json string"
@@ -442,6 +481,7 @@ func (this *EdbClassifyController) DeleteEdbClassifyCheck() {
 	br.Data = resp
 }
 
+// DeleteEdbClassify
 // @Title 删除分类/指标
 // @Description 删除分类/指标接口
 // @Param	request	body data_manage.DeleteEdbClassifyReq true "type json string"
@@ -535,7 +575,15 @@ func (this *EdbClassifyController) EdbClassifyMove() {
 		return
 	}
 
-	err, errMsg := data.MoveEdbClassify(req, sysUser, 0)
+	// 分类来源筛选
+	classifyType := req.ClassifyType // 默认指标库的
+	if classifyType != utils.EdbClassifyTypeBase && classifyType != utils.EdbClassifyTypeCalculate {
+		br.Msg = "参数有误"
+		br.ErrMsg = fmt.Sprintf("指标分类类型有误, ClassifyType: %d", classifyType)
+		return
+	}
+
+	err, errMsg := data.MoveEdbClassify(req, sysUser, uint8(classifyType))
 	if errMsg != `` {
 		br.Msg = errMsg
 		br.ErrMsg = errMsg
@@ -649,13 +697,26 @@ func (this *EdbClassifyController) ItemsV2() {
 		this.Data["json"] = br
 		this.ServeJSON()
 	}()
-	rootList, err := data_manage.GetEdbClassifyByParentId(0, 0)
+	// 分类来源筛选
+	classifyType, _ := this.GetInt("ClassifyType", utils.EdbClassifyTypeBase) // 默认指标库的
+	if classifyType != utils.EdbClassifyTypeBase && classifyType != utils.EdbClassifyTypeCalculate {
+		br.Msg = "参数有误"
+		br.ErrMsg = fmt.Sprintf("指标分类类型有误, ClassifyType: %d", classifyType)
+		return
+	}
+	//edbType := utils.EdbTypeBase
+	//if classifyType == utils.EdbClassifyTypeCalculate {
+	//	edbType = utils.EdbTypeCalculate
+	//}
+
+	rootList, err := data_manage.GetEdbClassifyByParentId(0, int8(classifyType))
 	if err != nil && !utils.IsErrNoRow(err) {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取数据失败,Err:" + err.Error()
 		return
 	}
-	classifyAll, err := data_manage.GetEdbClassifyAll()
+	//classifyAll, err := data_manage.GetEdbClassifyAll()
+	classifyAll, err := data_manage.GetChildEdbClassifyByClassifyType(classifyType)
 	if err != nil && !utils.IsErrNoRow(err) {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取数据失败,Err:" + err.Error()
@@ -747,6 +808,7 @@ func (this *EdbClassifyController) ItemsV2() {
 	br.Data = resp
 }
 
+// ClassifyEdbInfoList
 // @Title 获取分类下指标接口
 // @Description 获取分类下指标接口
 // @Param   ClassifyId   query   int  true       "分类id"
@@ -785,7 +847,7 @@ func (this *EdbClassifyController) ClassifyEdbInfoList() {
 		noPermissionEdbInfoIdMap[v.EdbInfoId] = true
 	}
 
-	allEdbInfo, err := data_manage.GetEdbInfoByClassifyId(classifyId, 0, 0)
+	allEdbInfo, err := data_manage.GetEdbInfoByClassifyId(classifyId, utils.EDB_INFO_TYPE, 0)
 	if err != nil && !utils.IsErrNoRow(err) {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取数据失败,Err:" + err.Error()
@@ -835,19 +897,32 @@ func (this *EdbClassifyController) ItemsV3() {
 		this.Data["json"] = br
 		this.ServeJSON()
 	}()
-	rootList, err := data_manage.GetEdbClassifyByParentId(0, 0)
+	// 分类来源筛选
+	classifyType, _ := this.GetInt("ClassifyType", utils.EdbClassifyTypeBase) // 默认指标库的
+	if classifyType != utils.EdbClassifyTypeBase && classifyType != utils.EdbClassifyTypeCalculate {
+		br.Msg = "参数有误"
+		br.ErrMsg = fmt.Sprintf("指标分类类型有误, ClassifyType: %d", classifyType)
+		return
+	}
+	//edbType := utils.EdbTypeBase
+	//if classifyType == utils.EdbClassifyTypeCalculate {
+	//	edbType = utils.EdbTypeCalculate
+	//}
+
+	// TODO:9级改造
+	rootList, err := data_manage.GetEdbClassifyByParentId(0, int8(classifyType))
 	if err != nil && !utils.IsErrNoRow(err) {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取数据失败,Err:" + err.Error()
 		return
 	}
-	rootTwoList, err := data_manage.GetEdbClassifyByParentIdTwo(0)
+	rootTwoList, err := data_manage.GetEdbClassifyByParentIdTwo(int8(classifyType))
 	if err != nil && !utils.IsErrNoRow(err) {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取数据失败,Err:" + err.Error()
 		return
 	}
-	classifyAll, err := data_manage.GetEdbClassifyAllV2(0)
+	classifyAll, err := data_manage.GetEdbClassifyAllV2(int8(classifyType))
 	if err != nil && !utils.IsErrNoRow(err) {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取数据失败,Err:" + err.Error()
@@ -963,6 +1038,18 @@ func (this *EdbClassifyController) SimpleList() {
 		this.Data["json"] = br
 		this.ServeJSON()
 	}()
+	// 分类来源筛选
+	classifyType, _ := this.GetInt("ClassifyType", utils.EdbClassifyTypeBase) // 默认指标库的
+	if classifyType != utils.EdbClassifyTypeBase && classifyType != utils.EdbClassifyTypeCalculate {
+		br.Msg = "参数有误"
+		br.ErrMsg = fmt.Sprintf("指标分类类型有误, ClassifyType: %d", classifyType)
+		return
+	}
+	//edbType := utils.EdbTypeBase
+	//if classifyType == utils.EdbClassifyTypeCalculate {
+	//	edbType = utils.EdbTypeCalculate
+	//}
+
 	// 默认查一级分类和一级分类下的指标信息,
 	// 如果是 子级分类,查询该子级分类的下一级分类和指标信息
 	// 增加标识判断是文件夹还是指标列表
@@ -973,7 +1060,7 @@ func (this *EdbClassifyController) SimpleList() {
 	if isOnlyMe {
 		sysUserId = this.SysUser.AdminId
 	}
-	rootList, err := data_manage.GetEdbClassifyByParentId(parentId, 0)
+	rootList, err := data_manage.GetEdbClassifyByParentId(parentId, int8(classifyType))
 	if err != nil && !utils.IsErrNoRow(err) {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取数据失败,Err:" + err.Error()
@@ -1044,6 +1131,11 @@ func (this *EdbClassifyController) SimpleList() {
 		}
 
 		for _, v := range rootList {
+			// TODO:(基础指标分类是否加这个判断待定)分类设定了权限且无权限, 那么忽略掉该节点
+			if classifyType == utils.EdbClassifyTypeCalculate && v.IsJoinPermission == 1 && !utils.InArrayByInt(permissionClassifyIdList, v.ClassifyId) {
+				continue
+			}
+
 			// 数据权限
 			v.HaveOperaAuth = data_manage_permission.CheckEdbClassifyPermissionByPermissionIdList(v.IsJoinPermission, v.ClassifyId, permissionClassifyIdList)
 			// 按钮权限
@@ -1101,8 +1193,20 @@ func (this *EdbClassifyController) ClassifyTree() {
 		this.Data["json"] = br
 		this.ServeJSON()
 	}()
+	// 分类来源筛选
+	classifyType, _ := this.GetInt("ClassifyType", utils.EdbClassifyTypeBase) // 默认指标库的
+	if classifyType != utils.EdbClassifyTypeBase && classifyType != utils.EdbClassifyTypeCalculate {
+		br.Msg = "参数有误"
+		br.ErrMsg = fmt.Sprintf("指标分类类型有误, ClassifyType: %d", classifyType)
+		return
+	}
+	//edbType := utils.EdbTypeBase
+	//if classifyType == utils.EdbClassifyTypeCalculate {
+	//	edbType = utils.EdbTypeCalculate
+	//}
 
-	allList, err := data_manage.GetNormalEdbClassifyAll()
+	//allList, err := data_manage.GetNormalEdbClassifyAll()
+	allList, err := data_manage.GetAllEdbClassifyByType(classifyType)
 	if err != nil && !utils.IsErrNoRow(err) {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取数据失败,Err:" + err.Error()
@@ -1120,14 +1224,30 @@ func (this *EdbClassifyController) ClassifyTree() {
 			return
 		}
 
-		for k, v := range allList {
+		//for k, v := range allList {
+		//	// 数据权限
+		//	v.HaveOperaAuth = data_manage_permission.CheckEdbClassifyPermissionByPermissionIdList(v.IsJoinPermission, v.ClassifyId, permissionClassifyIdList)
+		//	// 按钮权限
+		//	button := data.GetEdbClassifyOpButton(this.SysUser, v.SysUserId, v.HaveOperaAuth)
+		//	allList[k].Button = button
+		//}
+		//nodeAll = data.GetClassifyTreeRecursive(allList, 0)
+		newNodes := make([]*data_manage.EdbClassifyItems, 0)
+		for _, v := range allList {
+			// TODO:(基础指标分类是否加这个判断待定)分类设定了权限且无权限, 那么忽略掉该节点
+			if classifyType == utils.EdbTypeCalculate && v.IsJoinPermission == 1 && !utils.InArrayByInt(permissionClassifyIdList, v.ClassifyId) {
+				continue
+			}
+			newNodes = append(newNodes, v)
+		}
+		for k, v := range newNodes {
 			// 数据权限
 			v.HaveOperaAuth = data_manage_permission.CheckEdbClassifyPermissionByPermissionIdList(v.IsJoinPermission, v.ClassifyId, permissionClassifyIdList)
 			// 按钮权限
 			button := data.GetEdbClassifyOpButton(this.SysUser, v.SysUserId, v.HaveOperaAuth)
-			allList[k].Button = button
+			newNodes[k].Button = button
 		}
-		nodeAll = data.GetClassifyTreeRecursive(allList, 0)
+		nodeAll = data.GetClassifyTreeRecursive(newNodes, 0)
 		//根据sort值排序
 		sortList = nodeAll
 		sort.Sort(sortList)

+ 15 - 3
controllers/data_manage/edb_info.go

@@ -3390,6 +3390,7 @@ func (this *EdbInfoController) EdbInfoFilter() {
 // @Param   IsAddPredictEdb   query   bool  false       "是否查询添加预测指标"
 // @Param   PageSize   query   int  true       "每页数据条数"
 // @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
+// @Param   EdbType   query   int  false       "指标类型:0-基础和计算;1-基础指标;2-计算指标"
 // @Success 200 {object} data_manage.EdbInfoList
 // @router /edb_info/filter_by_es [get]
 func (this *EdbInfoController) EdbInfoFilterByEs() {
@@ -3426,6 +3427,8 @@ func (this *EdbInfoController) EdbInfoFilterByEs() {
 
 	isAddPredictEdb, _ := this.GetBool("IsAddPredictEdb") //是否查询添加预测指标
 
+	edbType, _ := this.GetInt("EdbType", 0) // 指标类型:0-基础和计算;1-基础指标;2-计算指标
+
 	var edbInfoList []*data_manage.EdbInfoList
 	var err error
 
@@ -3455,10 +3458,10 @@ func (this *EdbInfoController) EdbInfoFilterByEs() {
 
 		// 普通的搜索
 		if !isAddPredictEdb {
-			total, edbInfoList, err = elastic.SearchEdbInfoData(utils.DATA_INDEX_NAME, keyWord, startSize, pageSize, filterSource, source, 0, frequency, noPermissionEdbInfoIdList)
+			total, edbInfoList, err = elastic.SearchEdbInfoData(utils.DATA_INDEX_NAME, keyWord, startSize, pageSize, filterSource, source, 0, frequency, noPermissionEdbInfoIdList, edbType)
 		} else {
 			// 允许添加预测指标的搜索
-			total, edbInfoList, err = elastic.SearchAddPredictEdbInfoData(utils.DATA_INDEX_NAME, keyWord, noPermissionEdbInfoIdList, startSize, pageSize)
+			total, edbInfoList, err = elastic.SearchAddPredictEdbInfoData(utils.DATA_INDEX_NAME, keyWord, noPermissionEdbInfoIdList, startSize, pageSize, edbType)
 		}
 		isEs = true
 	} else {
@@ -4813,6 +4816,8 @@ func (this *EdbInfoController) AllEdbInfoByEs() {
 
 	isAddPredictEdb, _ := this.GetBool("IsAddPredictEdb") //是否查询添加预测指标
 
+	edbType, _ := this.GetInt("EdbType", 0) // 指标类型:0-基础和计算;1-基础指标;2-计算指标
+
 	var edbInfoList []*data_manage.EdbInfoList
 	var err error
 
@@ -4841,7 +4846,7 @@ func (this *EdbInfoController) AllEdbInfoByEs() {
 		keyWordArr = append(keyWordArr, newKeyWord...)
 
 		// 普通的搜索
-		total, edbInfoList, err = elastic.SearchEdbInfoData(utils.DATA_INDEX_NAME, keyWord, startSize, pageSize, filterSource, source, -1, frequency, noPermissionEdbInfoIdList)
+		total, edbInfoList, err = elastic.SearchEdbInfoData(utils.DATA_INDEX_NAME, keyWord, startSize, pageSize, filterSource, source, -1, frequency, noPermissionEdbInfoIdList, edbType)
 		isEs = true
 	} else {
 		var condition string
@@ -5422,6 +5427,13 @@ func (this *EdbInfoController) EdbChartList() {
 	condition += ` AND edb_info_type = ? `
 	pars = append(pars, 0)
 
+	// 指标类型
+	edbType, _ := this.GetInt("EdbType", 0)
+	if edbType > 0 {
+		condition += ` AND edb_type = ? `
+		pars = append(pars, edbType)
+	}
+
 	// 分类筛选
 	classifyId, _ := this.GetInt("ClassifyId")
 	if classifyId > 0 {

+ 1 - 1
controllers/data_manage/predict_edb_info.go

@@ -1189,7 +1189,7 @@ func (this *PredictEdbInfoController) FilterByEs() {
 		if isOnlyMe {
 			total, edbInfoList, err = elastic.SearchEdbInfoDataByAdminId(utils.DATA_INDEX_NAME, keyWord, startSize, pageSize, filterSource, source, 1, frequency, this.SysUser.AdminId)
 		} else {
-			total, edbInfoList, err = elastic.SearchEdbInfoData(utils.DATA_INDEX_NAME, keyWord, startSize, pageSize, filterSource, source, 1, frequency, noPermissionEdbInfoIdList)
+			total, edbInfoList, err = elastic.SearchEdbInfoData(utils.DATA_INDEX_NAME, keyWord, startSize, pageSize, filterSource, source, 1, frequency, noPermissionEdbInfoIdList, 0)
 		}
 		isEs = true
 	} else {

+ 9 - 0
models/data_manage/edb_classify.go

@@ -381,6 +381,7 @@ type MoveEdbClassifyReq struct {
 	EdbInfoId        int `description:"指标ID, 如果指标ID有值,则移动对象为指标,否则认为移动对象为分类"`
 	PrevEdbInfoId    int `description:"上一个指标ID"`
 	NextEdbInfoId    int `description:"下一个指标ID"`
+	ClassifyType     int `description:"分类类型:0-指标库;2-计算指标"`
 }
 
 // GetFirstEdbClassifyByParentId 获取当前父级分类下,且排序数相同 的排序第一条的数据
@@ -675,3 +676,11 @@ func GetEdbClassifyRootIdsByClassifyIds(classifyIds []int) (items []int, err err
 
 	return
 }
+
+// GetChildEdbClassifyByClassifyType 根据类型获取非顶级分类
+func GetChildEdbClassifyByClassifyType(classifyType int) (items []*EdbClassifyItems, err error) {
+	o := global.DmSQL["data"]
+	sql := `SELECT * FROM edb_classify WHERE parent_id <> 0 AND classify_type = ? ORDER BY sort ASC,classify_id ASC`
+	err = o.Raw(sql, classifyType).Find(&items).Error
+	return
+}

+ 8 - 0
models/data_manage/edb_info.go

@@ -1949,3 +1949,11 @@ func getThsHfAllDataByMongo(edbInfoId, source, subSource int, startDataTime stri
 
 	return
 }
+
+// GetEdbInfoByTypes 根据类型获取所有指标
+func GetEdbInfoByTypes(edbInfoType, edbType int) (items []*EdbClassifyItems, err error) {
+	o := global.DmSQL["data"]
+	sql := `SELECT edb_info_id,classify_id,edb_name_source AS classify_name,edb_name_en AS classify_name_en,unique_code,source_name,source,sys_user_id,sys_user_real_name,start_date,edb_code,edb_type FROM edb_info WHERE edb_info_type = ? AND edb_type = ? order by sort asc,edb_info_id asc`
+	err = o.Raw(sql, edbInfoType, edbType).Scan(&items).Error
+	return
+}

+ 18 - 4
services/data/data_manage_permission/data_move.go

@@ -95,16 +95,20 @@ func GetEdbChartClassifyList(source, subSource int) (resp data_manage.EdbChartCl
 			resp.List = append(resp.List, &item)
 		}
 
-	case 3:
+	case 3, 7:
 		//ETA指标库
 		//rootList, e := data_manage.GetEdbClassifyByParentId(0, 0)
 		//if e != nil && !utils.IsErrNoRow(e) {
 		//	err = e
 		//	return
 		//}
-
+		// 这里拆分指标库和计算指标
+		classifyType := utils.EdbClassifyTypeBase
+		if source == 7 {
+			classifyType = utils.EdbClassifyTypeCalculate
+		}
 		// 考虑到后面可以会迭代到10层, 这里直接用递归处理
-		classifyAll, e := data_manage.GetAllEdbClassifyByType(0)
+		classifyAll, e := data_manage.GetAllEdbClassifyByType(classifyType)
 		if e != nil && !utils.IsErrNoRow(e) {
 			err = e
 			return
@@ -300,7 +304,7 @@ func GetMoveEdbChartList(source, subSource, userId int, keyword, classify string
 				CreateUserName: v.SysUserRealName,
 			})
 		}
-	case 3, 4: //ETA指标库、ETA预测指标
+	case 3, 4, 7: //ETA指标库、ETA预测指标、指标加工
 		if keyword != `` {
 			condition += " AND (edb_code like ? OR edb_name like ? OR edb_name_en like ? OR sys_user_real_name like ? ) "
 			pars = utils.GetLikeKeywordPars(pars, keyword, 4)
@@ -320,6 +324,16 @@ func GetMoveEdbChartList(source, subSource, userId int, keyword, classify string
 		condition += ` AND edb_info_type = ? `
 		pars = append(pars, edbInfoType)
 
+		// 指标加工
+		if source != 4 {
+			edbType := 1
+			if source == 7 {
+				edbType = 2
+			}
+			condition += ` AND edb_type = ? `
+			pars = append(pars, edbType)
+		}
+
 		total, err = data_manage.GetEdbInfoByConditionCount(condition, pars)
 		if err != nil {
 			return

+ 11 - 3
services/data/data_manage_permission/edb_permission.go

@@ -61,13 +61,17 @@ func SetEdbChartPermission(source, subSource, userId int, authUserList []int, is
 	dataList := make([]data_manage_permission.DataItem, 0)
 
 	switch source {
-	case 3, 4:
+	case 3, 4, 7:
 		//ETA指标库、ETA预测指标
 		if source == 3 {
 			content += `(ETA指标库)`
-		} else {
+		}
+		if source == 4 {
 			content += `(ETA预测指标)`
 		}
+		if source == 7 {
+			content += `(ETA计算指标)`
+		}
 
 		tmpList, tmpErr := data_manage.GetEdbInfoListByEdbInfoId(dataIdList)
 		if tmpErr != nil {
@@ -503,12 +507,16 @@ func GetEdbChartClassifyIdListPermissionByUserId(source, subSource, userId int)
 // @return err error
 func GetUserIdListPermissionByDataId(source, subSource, dataId int) (idList []int, err error) {
 	switch source {
-	case 3, 4:
+	case 3, 4, 7:
 		// ETA指标库、ETA预测指标
 		edbInfoType := 0
 		if source == 4 {
 			edbInfoType = 1
 		}
+		//edbType := 1
+		//if source == 7 {
+		//	edbType = 2
+		//}
 		idList, err = data_manage_permission.GetPermissionUserIdListByEdbId(dataId, edbInfoType)
 	case 5:
 		// 图库

+ 2 - 2
services/data/edb_classify.go

@@ -320,8 +320,8 @@ func AddEdbClassify(classifyName string, parentId, level int, classifyType uint8
 	}
 
 	// 层级校验
-	if level > 6 {
-		errMsg = `最高只支持添加6级分类`
+	if level > 9 {
+		errMsg = `最高只支持添加9级分类`
 		return
 	}
 

+ 20 - 2
services/elastic/elastic.go

@@ -87,7 +87,7 @@ func EsAddOrEditEdbInfoData(indexName, docId string, item *data_manage.EdbInfoLi
 }
 
 // SearchEdbInfoData 查询es中的指标数据
-func SearchEdbInfoData(indexName, keywordStr string, from, size, filterSource, source int, edbInfoType int8, frequency string, noPermissionEdbInfoIdList []int) (total int64, list []*data_manage.EdbInfoList, err error) {
+func SearchEdbInfoData(indexName, keywordStr string, from, size, filterSource, source int, edbInfoType int8, frequency string, noPermissionEdbInfoIdList []int, edbType int) (total int64, list []*data_manage.EdbInfoList, err error) {
 	list = make([]*data_manage.EdbInfoList, 0)
 	defer func() {
 		if err != nil {
@@ -257,6 +257,15 @@ func SearchEdbInfoData(indexName, keywordStr string, from, size, filterSource, s
 		})
 	}
 
+	// 指标类型:0-基础+计算;1-基础指标;2-计算指标
+	if edbType >= 0 {
+		mustMap = append(mustMap, map[string]interface{}{
+			"term": map[string]interface{}{
+				"EdbType": edbType,
+			},
+		})
+	}
+
 	//普通指标
 	//mustMap = append(mustMap, map[string]interface{}{
 	//	"term": map[string]interface{}{
@@ -622,7 +631,7 @@ func SearchEdbInfoDataBak(indexName, keywordStr string, from, size, filterSource
 }
 
 // SearchAddPredictEdbInfoData 查询允许添加预测指标的数据
-func SearchAddPredictEdbInfoData(indexName, keywordStr string, noPermissionEdbInfoIdList []int, from, size int) (total int64, list []*data_manage.EdbInfoList, err error) {
+func SearchAddPredictEdbInfoData(indexName, keywordStr string, noPermissionEdbInfoIdList []int, from, size, edbType int) (total int64, list []*data_manage.EdbInfoList, err error) {
 	list = make([]*data_manage.EdbInfoList, 0)
 	defer func() {
 		if err != nil {
@@ -661,6 +670,15 @@ func SearchAddPredictEdbInfoData(indexName, keywordStr string, noPermissionEdbIn
 		},
 	})
 
+	// 指标类型: 1-基础指标; 2-计算指标
+	if edbType > 0 {
+		mustMap = append(mustMap, map[string]interface{}{
+			"term": map[string]interface{}{
+				"EdbType": edbType,
+			},
+		})
+	}
+
 	//关键字匹配
 	//shouldMap := map[string]interface{}{
 	//	"should": []interface{}{

+ 11 - 0
utils/constants.go

@@ -478,3 +478,14 @@ const (
 const MultiAddNum = 500
 
 const EdbClassifyMaxLevel = 9 // 指标库分类最大层级
+
+const (
+	EdbClassifyTypeBase      = 0 // 指标分类-指标库
+	EdbClassifyTypePredict   = 1 // 指标分类-预测指标
+	EdbClassifyTypeCalculate = 2 // 指标分类-计算指标
+)
+
+const (
+	EdbTypeBase      = 1 // 指标类型-基础指标
+	EdbTypeCalculate = 2 // 指标类型-计算指标
+)