Explorar o código

fix:新增图表权限配置

Roc hai 11 meses
pai
achega
35e5754bc2

+ 49 - 0
controllers/data_manage/data_manage_permission/data_move.go

@@ -10,6 +10,55 @@ import (
 	"github.com/rdlucklib/rdluck_tools/paging"
 )
 
+// EdbChartClassifyList
+// @Title 获取指标/图表分类列表数据接口
+// @Description 获取指标/图表分类列表数据接口
+// @Param   Source   query   int  false       "来源 :1:手工数据指标 2:钢联化工数据库 3:ETA指标库 4:ETA预测指标 5:图库 6:ETA表格"
+// @Success 200 {object} data_manage.ChartListResp
+// @router /edb_chart/classify [get]
+func (this *DataMangePermissionController) EdbChartClassifyList() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+
+	source, _ := this.GetInt("Source")
+	if source <= 0 || source > 6 {
+		br.Msg = "错误的来源"
+		br.IsSendEmail = false
+		return
+	}
+
+	// 子来源(目前作用于ETA表格,2024-3-26 14:12:09)
+	subSource, _ := this.GetInt("SubSource")
+	if source == 6 && (subSource <= utils.EXCEL_DEFAULT || subSource > utils.CUSTOM_ANALYSIS_TABLE) {
+		br.Msg = "错误的子来源"
+		br.IsSendEmail = false
+		return
+	}
+
+	list, err := data_manage_permission.GetEdbChartClassifyList(source, subSource)
+	if err != nil {
+		//br.Success = true
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = list
+}
+
 // MoveEdbChartList
 // @Title 获取指标/图表创建人列表数据接口
 // @Description 获取指标/图表创建人列表数据接口

+ 0 - 49
controllers/data_manage/edb_info.go

@@ -4034,55 +4034,6 @@ func (this *EdbInfoController) RelationEdbList() {
 	br.Data = resp
 }
 
-// EdbChartClassifyList
-// @Title 获取指标/图表分类列表数据接口
-// @Description 获取指标/图表分类列表数据接口
-// @Param   Source   query   int  false       "来源 :1:手工数据指标 2:钢联化工数据库 3:ETA指标库 4:ETA预测指标 5:图库 6:ETA表格"
-// @Success 200 {object} data_manage.ChartListResp
-// @router /edb_chart/classify [get]
-func (this *EdbInfoController) EdbChartClassifyList() {
-	br := new(models.BaseResponse).Init()
-	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
-	}()
-	sysUser := this.SysUser
-	if sysUser == nil {
-		br.Msg = "请登录"
-		br.ErrMsg = "请登录,SysUser Is Empty"
-		br.Ret = 408
-		return
-	}
-
-	source, _ := this.GetInt("Source")
-	if source <= 0 || source > 6 {
-		br.Msg = "错误的来源"
-		br.IsSendEmail = false
-		return
-	}
-
-	// 子来源(目前作用于ETA表格,2024-3-26 14:12:09)
-	subSource, _ := this.GetInt("SubSource")
-	if source == 6 && (subSource <= utils.EXCEL_DEFAULT || subSource > utils.CUSTOM_ANALYSIS_TABLE) {
-		br.Msg = "错误的子来源"
-		br.IsSendEmail = false
-		return
-	}
-
-	list, err := data.GetEdbChartClassifyList(source, subSource)
-	if err != nil {
-		//br.Success = true
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取失败,Err:" + err.Error()
-		return
-	}
-
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "获取成功"
-	br.Data = list
-}
-
 // EdbInfoDataTb
 // @Title 获取指标数据同比值
 // @Description 获取指标数据

+ 368 - 0
models/data_manage/data_manage_permission/chart.go

@@ -0,0 +1,368 @@
+package data_manage_permission
+
+import (
+	"eta/eta_api/utils"
+	"fmt"
+	"github.com/beego/beego/v2/client/orm"
+	"strconv"
+	"time"
+)
+
+// ChartInfoPermission
+// @Description: 图表信息权限表
+type ChartInfoPermission struct {
+	ChartInfoPermissionId int64     `json:"chart_info_permission_id" orm:"column(chart_info_permission_id);pk"`
+	ChartInfoId           int32     `json:"chart_info_id"` // 图表id
+	Source                int32     `json:"source"`        // 1:ETA图库;2:商品价格曲线;3:相关性图
+	SysUserId             int32     `json:"sys_user_id"`   // 系统用户id
+	ModifyTime            time.Time `json:"modify_time"`   // 变更时间
+	CreateTime            time.Time `json:"create_time"`   // 关系建立时间
+}
+
+// ChartClassifyPermission
+// @Description: 图表分类权限表
+type ChartClassifyPermission struct {
+	ChartClassifyPermissionId int64     `json:"chart_classify_permission_id" orm:"column(chart_classify_permission_id);pk"`
+	ChartClassifyId           int32     `json:"chart_classify_id"` // 分类id
+	Source                    int32     `json:"source"`            // 分类来源: 1-图库; 2-商品价格曲线; 3-相关性图表; 6-拟合方程图表; 7-统计特征
+	SysUserId                 int32     `json:"sys_user_id"`       // 系统用户id
+	ModifyTime                time.Time `json:"modify_time"`       // 变更时间
+	CreateTime                time.Time `json:"create_time"`       // 关系建立时间
+}
+
+// SetIsPermissionChartChartByChartClassifyIdList
+// @Description: 设置指标分类是否涉密
+// @author: Roc
+// @datetime 2024-03-27 14:15:42
+// @param classifyIdList []int
+func SetIsPermissionChartChartByChartClassifyIdList(classifyIdList []int, classifyType int) (err error) {
+	num := len(classifyIdList)
+	if num <= 0 {
+		return
+	}
+	o, err := orm.NewOrmUsingDB("data").Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err != nil {
+			_ = o.Rollback()
+		} else {
+			_ = o.Commit()
+		}
+	}()
+
+	//// 获取已经配置涉密的分类权限
+	//chartClassifyList := make([]*ChartClassify, 0)
+	//sql := `SELECT * FROM chart_classify WHERE is_join_permission = ? `
+	//_, err = o.Raw(sql, 1).QueryRows(&chartClassifyList)
+	//if err != nil {
+	//	return
+	//}
+	//chartClassifyMap := make(map[int]*ChartClassify)
+	//for _, v := range chartClassifyList {
+	//	chartClassifyMap[v.ClassifyId] = v
+	//}
+
+	// 先将所有已经设置了涉密的分类设置为不涉密
+	sql := `UPDATE chart_classify SET is_join_permission=?,modify_time=now() WHERE is_join_permission = 1 AND source = ?`
+	_, err = o.Raw(sql, 0, classifyType).Exec()
+	if err != nil {
+		return
+	}
+
+	if len(classifyIdList) > 0 {
+		// 将对应的分类设置为涉密
+		sql = `UPDATE chart_classify SET is_join_permission=?,modify_time=now() WHERE source = ? AND chart_classify_id in (` + utils.GetOrmInReplace(num) + `) `
+		_, err = o.Raw(sql, 1, classifyType, classifyIdList).Exec()
+		if err != nil {
+			return
+		}
+	}
+
+	// TODO 判断是否要记录移除的分类,用于发送通知给客户
+
+	return
+}
+
+// SetPermissionChartChartByChartIdList
+// @Description: 根据图表ID列表设置指标的用户权限
+// @author: Roc
+// @datetime 2024-04-01 10:26:17
+// @param chartIdList []string
+// @param userIdList []int
+// @param source int
+// @return err error
+func SetPermissionChartChartByChartIdList(chartIdList []string, userIdList []int, source int) (err error) {
+	chartNum := len(chartIdList)
+	if chartNum <= 0 {
+		return
+	}
+	o, err := orm.NewOrmUsingDB("data").Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err != nil {
+			_ = o.Rollback()
+		} else {
+			_ = o.Commit()
+		}
+	}()
+
+	// 获取已经配置的指标权限用户
+	chartInfoPermissionList := make([]*ChartInfoPermission, 0)
+	sql := `SELECT * FROM chart_info_permission WHERE source = ? AND chart_info_id in (` + utils.GetOrmInReplace(chartNum) + `) `
+	_, err = o.Raw(sql, source, chartIdList).QueryRows(&chartInfoPermissionList)
+	if err != nil {
+		return
+	}
+	chartInfoPermissionMap := make(map[string]*ChartInfoPermission)
+	for _, v := range chartInfoPermissionList {
+		chartInfoPermissionMap[fmt.Sprint(v.ChartInfoId, "_", v.SysUserId)] = v
+	}
+
+	// 标记指标是否纳入权限管控
+	{
+		// 默认 标记指标为纳入权限管控
+		isJoinPermission := 1
+		// 用户不选的情况下,说明是要给这些指标移除权限管控
+		if len(userIdList) <= 0 {
+			// 标记指标为不纳入权限管控
+			isJoinPermission = 0
+		}
+		sql = `UPDATE chart_info SET is_join_permission=?,modify_time=now() WHERE source = ? AND chart_info_id in (` + utils.GetOrmInReplace(chartNum) + `) `
+		_, err = o.Raw(sql, isJoinPermission, source, chartIdList).Exec()
+		if err != nil {
+			return
+		}
+	}
+
+	// 待添加的配置项
+	addList := make([]*ChartInfoPermission, 0)
+
+	// 遍历待配置的指标和用户,筛选出需要添加的配置项
+	for _, chartInfoIdStr := range chartIdList {
+		chartInfoId, tmpErr := strconv.ParseInt(chartInfoIdStr, 10, 64)
+		if tmpErr != nil {
+			err = tmpErr
+			return
+		}
+		for _, userId := range userIdList {
+			key := fmt.Sprint(chartInfoId, "_", userId)
+			if _, ok := chartInfoPermissionMap[key]; ok {
+				// 如果存在那么就移除,说明不需要处理了
+				delete(chartInfoPermissionMap, key)
+			} else {
+				// 如果不存在,那么就提那家
+				addList = append(addList, &ChartInfoPermission{
+					//PermissionId: 0,
+					ChartInfoId: int32(chartInfoId),
+					SysUserId:   int32(userId),
+					ModifyTime:  time.Now(),
+					CreateTime:  time.Now(),
+				})
+			}
+		}
+	}
+
+	// 添加待配置项
+	if len(addList) > 0 {
+		_, err = o.InsertMulti(500, addList)
+		if err != nil {
+			return
+		}
+	}
+
+	// 移除废弃的配置项
+	{
+		// 待移除的配置项
+		deletePermissionIdList := make([]int64, 0)
+		for _, v := range chartInfoPermissionMap {
+			deletePermissionIdList = append(deletePermissionIdList, v.ChartInfoPermissionId)
+		}
+
+		deletePermissionIdNum := len(deletePermissionIdList)
+		if deletePermissionIdNum > 0 {
+			sql = "DELETE FROM chart_info_permission WHERE chart_info_permission_id in (" + utils.GetOrmInReplace(deletePermissionIdNum) + ")"
+			_, err = o.Raw(sql, deletePermissionIdList).Exec()
+			if err != nil {
+				return
+			}
+		}
+	}
+
+	return
+}
+
+// SetChartChartClassifyPermissionReq
+// @Description: 设置数据分类权限请求
+type SetChartChartClassifyPermissionReq struct {
+	Source         int   `description:"来源id"`
+	SubSource      int   `description:"子来源id"`
+	UserList       []int `description:"赋权用户id列表,如果为空,说明要给这些数据分类移除权限管控"`
+	ClassifyIdList []int `description:"指标/图表/表格分类唯一id列表"`
+}
+
+// SetPermissionChartChartClassifyIdByClassifyIdList
+// @Description: 根据指标分类ID列表设置分类的用户权限
+// @author: Roc
+// @datetime 2024-03-28 14:53:04
+// @param classifyIdList []int
+// @param userIdList []int
+// @return err error
+func SetPermissionChartChartClassifyIdByClassifyIdList(classifyIdList []int, userIdList []int, classifyType int) (err error) {
+	userNum := len(userIdList)
+	if userNum <= 0 {
+		return
+	}
+	o, err := orm.NewOrmUsingDB("data").Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err != nil {
+			_ = o.Rollback()
+		} else {
+			_ = o.Commit()
+		}
+	}()
+
+	// 获取当前选择用户已经配置的指标分类权限
+	classifyPermissionList := make([]*ChartClassifyPermission, 0)
+	sql := `SELECT * FROM chart_classify_permission WHERE source = ? AND sys_user_id in (` + utils.GetOrmInReplace(userNum) + `) `
+	_, err = o.Raw(sql, classifyType, userIdList).QueryRows(&classifyPermissionList)
+	if err != nil {
+		return
+	}
+	classifyPermissionMap := make(map[string]*ChartClassifyPermission)
+	for _, v := range classifyPermissionList {
+		classifyPermissionMap[fmt.Sprint(v.ChartClassifyId, "_", v.SysUserId)] = v
+	}
+
+	// 待添加的配置项
+	addList := make([]*ChartClassifyPermission, 0)
+
+	// 遍历待配置的指标和用户,筛选出需要添加的配置项
+	for _, userId := range userIdList {
+		for _, classifyId := range classifyIdList {
+			key := fmt.Sprint(classifyId, "_", userId)
+			if _, ok := classifyPermissionMap[key]; ok {
+				// 如果存在那么就移除,说明不需要处理了
+				delete(classifyPermissionMap, key)
+			} else {
+				// 如果不存在,那么就提那家
+				addList = append(addList, &ChartClassifyPermission{
+					//PermissionId: 0,
+					ChartClassifyId: int32(classifyId),
+					Source:          int32(classifyType),
+					SysUserId:       int32(userId),
+					ModifyTime:      time.Now(),
+					CreateTime:      time.Now(),
+				})
+			}
+		}
+	}
+
+	// 添加待配置项
+	if len(addList) > 0 {
+		_, err = o.InsertMulti(500, addList)
+		if err != nil {
+			return
+		}
+	}
+
+	// 移除废弃的配置项
+	{
+		// 获取移除的配置项
+		deletePermissionIdList := make([]int64, 0)
+		for _, v := range classifyPermissionMap {
+			deletePermissionIdList = append(deletePermissionIdList, v.ChartClassifyPermissionId)
+		}
+
+		deletePermissionIdNum := len(deletePermissionIdList)
+		if deletePermissionIdNum > 0 {
+			sql = "DELETE FROM chart_classify_permission WHERE chart_classify_permission_id in (" + utils.GetOrmInReplace(deletePermissionIdNum) + ")"
+			_, err = o.Raw(sql, deletePermissionIdList).Exec()
+			if err != nil {
+				return
+			}
+		}
+	}
+
+	return
+}
+
+// GetPermissionChartClassifyIdListByUserId
+// @Description: 根据用户ID获取已经配置的分类id列表
+// @author: Roc
+// @datetime 2024-03-29 16:24:46
+// @param userId int
+// @param classifyType int
+// @return chartClassifyIdList []int
+// @return err error
+func GetPermissionChartClassifyIdListByUserId(userId int, classifyType int) (chartClassifyIdList []int, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT chart_classify_id FROM chart_classify_permission WHERE source = ? AND sys_user_id = ? `
+	_, err = o.Raw(sql, classifyType, userId).QueryRows(&chartClassifyIdList)
+
+	return
+}
+
+// GetPermissionChartIdListByDataId
+// @Description: 根据资产(指标、图表、表格)ID获取已经配置的用户id列表
+// @author: Roc
+// @datetime 2024-03-29 16:24:46
+// @param dataId int
+// @param source int
+// @return chartIdList []int
+// @return err error
+func GetPermissionChartIdListByDataId(dataId int, source int) (chartIdList []int, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT sys_user_id FROM chart_info_permission WHERE source = ? AND chart_info_id= ? `
+	_, err = o.Raw(sql, source, dataId).QueryRows(&chartIdList)
+
+	return
+}
+
+// GetPermissionChartIdList
+// @Description: 获取用户权限的指标列表
+// @author: Roc
+// @datetime 2024-03-28 16:50:47
+// @param userId int
+// @param chartInfoId int
+// @return idList []int
+// @return err error
+func GetPermissionChartIdList(userId, chartInfoId int) (idList []int, err error) {
+	pars := []interface{}{userId}
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT chart_info_id FROM chart_info_permission WHERE sys_user_id = ? `
+	if chartInfoId > 0 {
+		sql += ` AND chart_info_id = ? `
+		pars = append(pars, chartInfoId)
+	}
+	_, err = o.Raw(sql, pars).QueryRows(&idList)
+
+	return
+}
+
+// GetPermissionChartClassifyIdList
+// @Description: 获取用户权限的指标分类列表
+// @author: Roc
+// @datetime 2024-03-28 16:50:47
+// @param userId int
+// @param classifyId int
+// @return idList []int
+// @return err error
+func GetPermissionChartClassifyIdList(userId, classifyId int) (idList []int, err error) {
+	pars := []interface{}{userId}
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT chart_classify_id FROM chart_classify_permission WHERE sys_user_id = ? `
+	if classifyId > 0 {
+		sql += ` AND chart_classify_id = ? `
+		pars = append(pars, classifyId)
+	}
+	_, err = o.Raw(sql, pars).QueryRows(&idList)
+
+	return
+}

+ 22 - 43
models/data_manage/data_manage_permission/data_manage_permission.go → models/data_manage/data_manage_permission/edb.go

@@ -8,12 +8,26 @@ import (
 	"time"
 )
 
-// SetDataIsPermissionReq
-// @Description: 设置数据分类权限请求
-type SetDataIsPermissionReq struct {
-	Source         int   `description:"来源id"`
-	SubSource      int   `description:"子来源id"`
-	ClassifyIdList []int `description:"指标/图表/表格分类唯一id列表,如果为空,说明要给这些指标移除权限管控"`
+// EdbInfoPermission
+// @Description: 指标权限表
+type EdbInfoPermission struct {
+	EdbInfoPermissionId int64     `json:"edb_info_permission_id" orm:"column(edb_info_permission_id);pk"`
+	EdbInfoId           int32     `json:"edb_info_id"`   // 指标id
+	EdbInfoType         int32     `json:"edb_info_type"` // 指标类型,0:普通指标,1:预测指标
+	SysUserId           int32     `json:"sys_user_id"`   // 系统用户id
+	ModifyTime          time.Time `json:"modify_time"`   // 变更时间
+	CreateTime          time.Time `json:"create_time"`   // 关系建立时间
+}
+
+// EdbClassifyPermission
+// @Description: 指标分类权限表
+type EdbClassifyPermission struct {
+	EdbClassifyPermissionId int64     `json:"edb_classify_permission_id" orm:"column(edb_classify_permission_id);pk"`
+	EdbClassifyId           int32     `json:"edb_classify_id"`   // 分类id
+	EdbClassifyType         int32     `json:"edb_classify_type"` // 分类类型,0:普通指标分类,1:预测指标分类
+	SysUserId               int32     `json:"sys_user_id"`       // 系统用户id
+	ModifyTime              time.Time `json:"modify_time"`       // 变更时间
+	CreateTime              time.Time `json:"create_time"`       // 关系建立时间
 }
 
 // SetIsPermissionEdbChartByEdbClassifyIdList
@@ -71,48 +85,13 @@ func SetIsPermissionEdbChartByEdbClassifyIdList(classifyIdList []int, classifyTy
 	return
 }
 
-// SetEdbChartPermissionReq
-// @Description: 设置数据权限请求
-type SetEdbChartPermissionReq struct {
-	Source       int      `description:"来源id"`
-	SubSource    int      `description:"子来源id"`
-	UserId       int      `description:"用户筛选"`
-	DataIdList   []string `description:"指标/图表/表格唯一id列表"`
-	NoDataIdList []string `description:"指标/图表/表格唯一id列表"`
-	UserList     []int    `description:"赋权用户id列表,如果为空,说明要给这些指标移除权限管控"`
-	IsSelectAll  bool     `description:"是否选择所有指标"`
-	ClassifyId   string   `description:"分类id,支持多选,用英文,隔开"`
-	Keyword      string   `description:"关键字"`
-}
-
-// EdbInfoPermission
-// @Description: 指标权限表
-type EdbInfoPermission struct {
-	EdbInfoPermissionId int64     `json:"edb_info_permission_id" orm:"column(edb_info_permission_id);pk"`
-	EdbInfoId           int32     `json:"edb_info_id"`   // 指标id
-	EdbInfoType         int32     `json:"edb_info_type"` // 指标类型,0:普通指标,1:预测指标
-	SysUserId           int32     `json:"sys_user_id"`   // 系统用户id
-	ModifyTime          time.Time `json:"modify_time"`   // 变更时间
-	CreateTime          time.Time `json:"create_time"`   // 关系建立时间
-}
-
-// EdbClassifyPermission
-// @Description: 指标分类权限表
-type EdbClassifyPermission struct {
-	EdbClassifyPermissionId int64     `json:"edb_classify_permission_id" orm:"column(edb_classify_permission_id);pk"`
-	EdbClassifyId           int32     `json:"edb_classify_id"`   // 分类id
-	EdbClassifyType         int32     `json:"edb_classify_type"` // 分类类型,0:普通指标分类,1:预测指标分类
-	SysUserId               int32     `json:"sys_user_id"`       // 系统用户id
-	ModifyTime              time.Time `json:"modify_time"`       // 变更时间
-	CreateTime              time.Time `json:"create_time"`       // 关系建立时间
-}
-
 // SetPermissionEdbChartByEdbIdList
 // @Description: 根据指标ID列表设置指标的用户权限
 // @author: Roc
 // @datetime 2024-03-27 14:03:42
 // @param edbIdList []string
 // @param userIdList []int
+// @param chartInfoType int
 // @return err error
 func SetPermissionEdbChartByEdbIdList(edbIdList []string, userIdList []int, edbInfoType int) (err error) {
 	edbNum := len(edbIdList)
@@ -335,7 +314,7 @@ func GetPermissionEdbClassifyIdListByUserId(userId int, classifyType int) (edbCl
 // @author: Roc
 // @datetime 2024-03-29 16:24:46
 // @param dataId int
-// @param classifyType int
+// @param edbInfoType int
 // @return edbIdList []int
 // @return err error
 func GetPermissionEdbIdListByDataId(dataId int, edbInfoType int) (edbIdList []int, err error) {

+ 23 - 0
models/data_manage/data_manage_permission/req_and_resp.go

@@ -0,0 +1,23 @@
+package data_manage_permission
+
+// SetDataIsPermissionReq
+// @Description: 设置数据分类权限请求
+type SetDataIsPermissionReq struct {
+	Source         int   `description:"来源id"`
+	SubSource      int   `description:"子来源id"`
+	ClassifyIdList []int `description:"指标/图表/表格分类唯一id列表,如果为空,说明要给这些指标移除权限管控"`
+}
+
+// SetEdbChartPermissionReq
+// @Description: 设置数据权限请求
+type SetEdbChartPermissionReq struct {
+	Source       int      `description:"来源id"`
+	SubSource    int      `description:"子来源id"`
+	UserId       int      `description:"用户筛选"`
+	DataIdList   []string `description:"指标/图表/表格唯一id列表"`
+	NoDataIdList []string `description:"指标/图表/表格唯一id列表"`
+	UserList     []int    `description:"赋权用户id列表,如果为空,说明要给这些指标移除权限管控"`
+	IsSelectAll  bool     `description:"是否选择所有指标"`
+	ClassifyId   string   `description:"分类id,支持多选,用英文,隔开"`
+	Keyword      string   `description:"关键字"`
+}

+ 9 - 9
routers/commentsRouter.go

@@ -529,6 +529,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/data_manage_permission:DataMangePermissionController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/data_manage_permission:DataMangePermissionController"],
+        beego.ControllerComments{
+            Method: "EdbChartClassifyList",
+            Router: `/edb_chart/classify`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/data_manage_permission:DataMangePermissionController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/data_manage_permission:DataMangePermissionController"],
         beego.ControllerComments{
             Method: "SetPermissionEdbChartClassifyIsPermission",
@@ -2896,15 +2905,6 @@ func init() {
             Filters: nil,
             Params: nil})
 
-    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:EdbInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:EdbInfoController"],
-        beego.ControllerComments{
-            Method: "EdbChartClassifyList",
-            Router: `/edb_chart/classify`,
-            AllowHTTPMethods: []string{"get"},
-            MethodParams: param.Make(),
-            Filters: nil,
-            Params: nil})
-
     beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:EdbInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:EdbInfoController"],
         beego.ControllerComments{
             Method: "QueryEdbDataTable",

+ 196 - 0
services/data/data_manage_permission/data_move.go

@@ -10,6 +10,196 @@ import (
 	"strconv"
 )
 
+// GetEdbChartClassifyList
+// @Description: 获取数据权限那边的分类列表
+// @author: Roc
+// @datetime 2024-04-01 09:46:29
+// @param source int
+// @param subSource int
+// @return resp data_manage.EdbChartClassifyResp
+// @return err error
+func GetEdbChartClassifyList(source, subSource int) (resp data_manage.EdbChartClassifyResp, err error) {
+	switch source {
+	case 1: //手工数据指标
+		list, e := models.GetEdbdataClassify(0)
+		if e != nil {
+			err = e
+			return
+		}
+
+		for _, v := range list {
+			item := data_manage.EdbChartClassify{
+				ClassifyId:   v.ClassifyId,
+				ClassifyName: v.ClassifyName,
+				ParentId:     v.ParentId,
+			}
+			for _, v2 := range v.Child {
+				child := data_manage.EdbChartClassify{
+					ClassifyId:   v2.ClassifyId,
+					ClassifyName: v2.ClassifyName,
+					ParentId:     v2.ParentId,
+				}
+				item.Child = append(item.Child, &child)
+			}
+			resp.List = append(resp.List, &item)
+		}
+
+	case 2: //钢联化工数据库
+		rootList, e := data_manage.GetBaseFromMysteelChemicalClassifyByParentId(0)
+		if e != nil && e.Error() != utils.ErrNoRow() {
+			err = e
+			return
+		}
+
+		classifyAll, e := data_manage.GetAllBaseFromMysteelChemicalClassify()
+		if e != nil && e.Error() != utils.ErrNoRow() {
+			err = e
+			return
+		}
+
+		rootChildMap := make(map[int][]*data_manage.BaseFromMysteelChemicalClassifyItems)
+		for _, v := range classifyAll {
+			rootChildMap[v.ParentId] = append(rootChildMap[v.ParentId], v)
+		}
+		nodeAll := make([]*data_manage.BaseFromMysteelChemicalClassifyItems, 0)
+
+		for _, v := range rootList {
+			if existItems, ok := rootChildMap[v.BaseFromMysteelChemicalClassifyId]; ok {
+				v.Children = existItems
+			} else {
+				items := make([]*data_manage.BaseFromMysteelChemicalClassifyItems, 0)
+				v.Children = items
+			}
+			nodeAll = append(nodeAll, v)
+		}
+
+		for _, v := range nodeAll {
+			item := data_manage.EdbChartClassify{
+				ClassifyId:   v.BaseFromMysteelChemicalClassifyId,
+				ClassifyName: v.ClassifyName,
+				ParentId:     v.ParentId,
+			}
+			for _, v2 := range v.Children {
+				child := data_manage.EdbChartClassify{
+					ClassifyId:   v2.BaseFromMysteelChemicalClassifyId,
+					ClassifyName: v2.ClassifyName,
+					ParentId:     v2.ParentId,
+				}
+				item.Child = append(item.Child, &child)
+			}
+			resp.List = append(resp.List, &item)
+		}
+
+	case 3:
+		//ETA指标库
+		//rootList, e := data_manage.GetEdbClassifyByParentId(0, 0)
+		//if e != nil && e.Error() != utils.ErrNoRow() {
+		//	err = e
+		//	return
+		//}
+
+		// 考虑到后面可以会迭代到10层, 这里直接用递归处理
+		classifyAll, e := data_manage.GetAllEdbClassifyByType(0)
+		if e != nil && e.Error() != utils.ErrNoRow() {
+			err = e
+			return
+		}
+		resp.List = GetEdbMenuTreeRecursive(classifyAll, 0)
+
+	case 4:
+		//ETA预测指标
+		// 考虑到后面可以会迭代到10层, 这里直接用递归
+		classifyAll, e := data_manage.GetAllEdbClassifyByType(1)
+		if e != nil && e.Error() != utils.ErrNoRow() {
+			err = e
+			return
+		}
+		resp.List = GetEdbMenuTreeRecursive(classifyAll, 0)
+	case 5: //图库
+		// 考虑到后面可以会迭代到10层, 这里直接用递归处理
+		classifyAll, e := data_manage.GetAllChartClassifyItemsBySource(1)
+		if e != nil && e.Error() != utils.ErrNoRow() {
+			err = e
+			return
+		}
+		resp.List = GetChartMenuTreeRecursive(classifyAll, 0)
+
+	// 将数据加入缓存
+	//if utils.Re == nil {
+	//	utils.Rc.Delete(key)
+	//}
+	case 6: // ETA表格
+		// 考虑到后面可以会迭代到10层, 这里直接用递归处理
+		classifyAll, e := excel.GetExcelClassifyBySourceOrderByLevel(subSource)
+		if e != nil && e.Error() != utils.ErrNoRow() {
+			err = e
+			return
+		}
+		resp.List = GetExcelMenuTreeRecursive(classifyAll, 0)
+	default:
+		return
+	}
+
+	return
+}
+
+// GetEdbMenuTreeRecursive 递归指标库菜单树
+func GetEdbMenuTreeRecursive(list []*data_manage.EdbClassifyItems, parentId int) []*data_manage.EdbChartClassify {
+	res := make([]*data_manage.EdbChartClassify, 0)
+	for _, v := range list {
+		t := new(data_manage.EdbChartClassify)
+		t.ClassifyId = v.ClassifyId
+		t.ClassifyName = v.ClassifyName
+		t.ParentId = v.ParentId
+		t.IsJoinPermission = v.IsJoinPermission
+		if v.ParentId == parentId {
+			t.Child = GetEdbMenuTreeRecursive(list, v.ClassifyId)
+			res = append(res, t)
+		}
+	}
+	return res
+}
+
+// GetChartMenuTreeRecursive 递归指标库菜单树
+func GetChartMenuTreeRecursive(list []*data_manage.ChartClassifyItems, parentId int) []*data_manage.EdbChartClassify {
+	res := make([]*data_manage.EdbChartClassify, 0)
+	for _, v := range list {
+		t := new(data_manage.EdbChartClassify)
+		t.ClassifyId = v.ChartClassifyId
+		t.ClassifyName = v.ChartClassifyName
+		t.ParentId = v.ParentId
+		t.IsJoinPermission = v.ParentId
+		if v.ParentId == parentId {
+			t.Child = GetChartMenuTreeRecursive(list, v.ChartClassifyId)
+			res = append(res, t)
+		}
+	}
+	return res
+}
+
+// GetExcelMenuTreeRecursive
+// @Description: 递归ETA表格菜单树
+// @author: Roc
+// @datetime 2024-03-27 10:30:32
+// @param list []*data_manage.ChartClassifyItems
+// @param parentId int
+// @return []*data_manage.EdbChartClassify
+func GetExcelMenuTreeRecursive(list []*excel.ExcelClassifyItems, parentId int) []*data_manage.EdbChartClassify {
+	res := make([]*data_manage.EdbChartClassify, 0)
+	for _, v := range list {
+		t := new(data_manage.EdbChartClassify)
+		t.ClassifyId = v.ExcelClassifyId
+		t.ClassifyName = v.ExcelClassifyName
+		t.ParentId = v.ParentId
+		t.IsJoinPermission = v.IsJoinPermission
+		if v.ParentId == parentId {
+			t.Child = GetExcelMenuTreeRecursive(list, v.ExcelClassifyId)
+			res = append(res, t)
+		}
+	}
+	return res
+}
+
 // GetMoveEdbChartList 获取待转移的指标/图表列表
 // @param source 来源 :1:手工数据指标 2:钢联化工数据库 3:ETA指标库 4:ETA预测指标 5:图库 6:ETA表格
 func GetMoveEdbChartList(source, subSource, userId int, keyword, classify string, startSize, pageSize int) (list []data_manage.MoveEdbChartList, total int, err error) {
@@ -142,6 +332,12 @@ func GetMoveEdbChartList(source, subSource, userId int, keyword, classify string
 			})
 		}
 	case 5: //图库
+
+		// 只展示eta图库
+		condition += ` AND source = ? `
+		pars = append(pars, 1)
+
+		// 关键字搜索
 		if keyword != `` {
 			condition += " AND (chart_name like ?  OR sys_user_real_name like ? ) "
 			pars = utils.GetLikeKeywordPars(pars, keyword, 2)

+ 0 - 180
services/data/edb_info.go

@@ -1719,129 +1719,6 @@ func getRefreshEdbInfoListByIds(edbInfoIdList []int) (newBaseEdbInfoArr, newBase
 	return
 }
 
-func GetEdbChartClassifyList(source, subSource int) (resp data_manage.EdbChartClassifyResp, err error) {
-	switch source {
-	case 1: //手工数据指标
-		list, e := models.GetEdbdataClassify(0)
-		if e != nil {
-			err = e
-			return
-		}
-
-		for _, v := range list {
-			item := data_manage.EdbChartClassify{
-				ClassifyId:   v.ClassifyId,
-				ClassifyName: v.ClassifyName,
-				ParentId:     v.ParentId,
-			}
-			for _, v2 := range v.Child {
-				child := data_manage.EdbChartClassify{
-					ClassifyId:   v2.ClassifyId,
-					ClassifyName: v2.ClassifyName,
-					ParentId:     v2.ParentId,
-				}
-				item.Child = append(item.Child, &child)
-			}
-			resp.List = append(resp.List, &item)
-		}
-
-	case 2: //钢联化工数据库
-		rootList, e := data_manage.GetBaseFromMysteelChemicalClassifyByParentId(0)
-		if e != nil && e.Error() != utils.ErrNoRow() {
-			err = e
-			return
-		}
-
-		classifyAll, e := data_manage.GetAllBaseFromMysteelChemicalClassify()
-		if e != nil && e.Error() != utils.ErrNoRow() {
-			err = e
-			return
-		}
-
-		rootChildMap := make(map[int][]*data_manage.BaseFromMysteelChemicalClassifyItems)
-		for _, v := range classifyAll {
-			rootChildMap[v.ParentId] = append(rootChildMap[v.ParentId], v)
-		}
-		nodeAll := make([]*data_manage.BaseFromMysteelChemicalClassifyItems, 0)
-
-		for _, v := range rootList {
-			if existItems, ok := rootChildMap[v.BaseFromMysteelChemicalClassifyId]; ok {
-				v.Children = existItems
-			} else {
-				items := make([]*data_manage.BaseFromMysteelChemicalClassifyItems, 0)
-				v.Children = items
-			}
-			nodeAll = append(nodeAll, v)
-		}
-
-		for _, v := range nodeAll {
-			item := data_manage.EdbChartClassify{
-				ClassifyId:   v.BaseFromMysteelChemicalClassifyId,
-				ClassifyName: v.ClassifyName,
-				ParentId:     v.ParentId,
-			}
-			for _, v2 := range v.Children {
-				child := data_manage.EdbChartClassify{
-					ClassifyId:   v2.BaseFromMysteelChemicalClassifyId,
-					ClassifyName: v2.ClassifyName,
-					ParentId:     v2.ParentId,
-				}
-				item.Child = append(item.Child, &child)
-			}
-			resp.List = append(resp.List, &item)
-		}
-
-	case 3: //ETA指标库
-		//rootList, e := data_manage.GetEdbClassifyByParentId(0, 0)
-		//if e != nil && e.Error() != utils.ErrNoRow() {
-		//	err = e
-		//	return
-		//}
-
-		// 考虑到后面可以会迭代到10层, 这里直接用递归处理
-		classifyAll, e := data_manage.GetAllEdbClassifyByType(0)
-		if e != nil && e.Error() != utils.ErrNoRow() {
-			err = e
-			return
-		}
-		resp.List = GetEdbMenuTreeRecursive(classifyAll, 0)
-
-	case 4: //ETA预测指标
-		// 考虑到后面可以会迭代到10层, 这里直接用递归
-		classifyAll, e := data_manage.GetAllEdbClassifyByType(1)
-		if e != nil && e.Error() != utils.ErrNoRow() {
-			err = e
-			return
-		}
-		resp.List = GetEdbMenuTreeRecursive(classifyAll, 0)
-	case 5: //图库
-		// 考虑到后面可以会迭代到10层, 这里直接用递归处理
-		classifyAll, e := data_manage.GetAllChartClassifyItemsBySource(1)
-		if e != nil && e.Error() != utils.ErrNoRow() {
-			err = e
-			return
-		}
-		resp.List = GetChartMenuTreeRecursive(classifyAll, 0)
-
-	// 将数据加入缓存
-	//if utils.Re == nil {
-	//	utils.Rc.Delete(key)
-	//}
-	case 6: // ETA表格
-		// 考虑到后面可以会迭代到10层, 这里直接用递归处理
-		classifyAll, e := excel.GetExcelClassifyBySourceOrderByLevel(subSource)
-		if e != nil && e.Error() != utils.ErrNoRow() {
-			err = e
-			return
-		}
-		resp.List = GetExcelMenuTreeRecursive(classifyAll, 0)
-	default:
-		return
-	}
-
-	return
-}
-
 // EdbInfoAdd 添加指标到指标库
 func EdbInfoAdd(source, subSource, classifyId int, edbCode, edbName, frequency, unit, startDate, endDate string, sysUserId int, sysUserRealName string) (edbInfo *data_manage.EdbInfo, err error, errMsg string, isSendEmail bool) {
 	isSendEmail = true
@@ -2453,63 +2330,6 @@ func EdbInfoReplace(oldEdbInfo, newEdbInfo *data_manage.EdbInfo, sysAdminId int,
 	return
 }
 
-// GetEdbMenuTreeRecursive 递归指标库菜单树
-func GetEdbMenuTreeRecursive(list []*data_manage.EdbClassifyItems, parentId int) []*data_manage.EdbChartClassify {
-	res := make([]*data_manage.EdbChartClassify, 0)
-	for _, v := range list {
-		t := new(data_manage.EdbChartClassify)
-		t.ClassifyId = v.ClassifyId
-		t.ClassifyName = v.ClassifyName
-		t.ParentId = v.ParentId
-		t.IsJoinPermission = v.IsJoinPermission
-		if v.ParentId == parentId {
-			t.Child = GetEdbMenuTreeRecursive(list, v.ClassifyId)
-			res = append(res, t)
-		}
-	}
-	return res
-}
-
-// GetChartMenuTreeRecursive 递归指标库菜单树
-func GetChartMenuTreeRecursive(list []*data_manage.ChartClassifyItems, parentId int) []*data_manage.EdbChartClassify {
-	res := make([]*data_manage.EdbChartClassify, 0)
-	for _, v := range list {
-		t := new(data_manage.EdbChartClassify)
-		t.ClassifyId = v.ChartClassifyId
-		t.ClassifyName = v.ChartClassifyName
-		t.ParentId = v.ParentId
-		t.IsJoinPermission = v.ParentId
-		if v.ParentId == parentId {
-			t.Child = GetChartMenuTreeRecursive(list, v.ChartClassifyId)
-			res = append(res, t)
-		}
-	}
-	return res
-}
-
-// GetExcelMenuTreeRecursive
-// @Description: 递归ETA表格菜单树
-// @author: Roc
-// @datetime 2024-03-27 10:30:32
-// @param list []*data_manage.ChartClassifyItems
-// @param parentId int
-// @return []*data_manage.EdbChartClassify
-func GetExcelMenuTreeRecursive(list []*excel.ExcelClassifyItems, parentId int) []*data_manage.EdbChartClassify {
-	res := make([]*data_manage.EdbChartClassify, 0)
-	for _, v := range list {
-		t := new(data_manage.EdbChartClassify)
-		t.ClassifyId = v.ExcelClassifyId
-		t.ClassifyName = v.ExcelClassifyName
-		t.ParentId = v.ParentId
-		t.IsJoinPermission = v.IsJoinPermission
-		if v.ParentId == parentId {
-			t.Child = GetExcelMenuTreeRecursive(list, v.ExcelClassifyId)
-			res = append(res, t)
-		}
-	}
-	return res
-}
-
 func GetTerminalFromBaseIndex(source int, edbCode string) (terminalCode string, sourceIndexName string, err error) {
 	tbName := GetBaseIndexTableName(source)
 	if tbName != "" {