فهرست منبع

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

Roc 1 سال پیش
والد
کامیت
0c9c19fd10

+ 3 - 3
controllers/data_manage/chart_info.go

@@ -2262,9 +2262,9 @@ func GetChartInfoDetailFromUniqueCode(chartInfo *data_manage.ChartInfoView, isCa
 					for _, v := range resp.EdbInfoList {
 						v.DataList = nil
 					}
-					resp.DataResp = nil
-					resp.XEdbIdValue = []int{}
-					resp.YDataList = []data_manage.YData{}
+					//resp.DataResp = nil
+					//resp.XEdbIdValue = []int{}
+					//resp.YDataList = []data_manage.YData{}
 				}
 			}
 

+ 2 - 0
controllers/data_manage/correlation/correlation_chart_info.go

@@ -1651,6 +1651,8 @@ func (this *CorrelationChartInfoController) SearchByEs() {
 		for _, v := range searchList {
 			tmp := new(data_manage.ChartInfoMore)
 			tmp.ChartInfo = *v
+			// 图表数据权限
+			tmp.HaveOperaAuth = true
 			//判断是否需要展示英文标识
 			if edbTmpList, ok := chartEdbMap[v.ChartInfoId]; ok {
 				tmp.IsEnChart = data.CheckIsEnChart(v.ChartNameEn, edbTmpList, v.Source, v.ChartType)

+ 2 - 0
controllers/data_manage/cross_variety/chart_info.go

@@ -1485,6 +1485,8 @@ func (c *ChartInfoController) SearchByEs() {
 		for _, v := range searchList {
 			tmp := new(data_manage.ChartInfoMore)
 			tmp.ChartInfo = *v
+			// 图表数据权限
+			tmp.HaveOperaAuth = true
 			//判断是否需要展示英文标识
 			if _, ok := chartEdbMap[v.ChartInfoId]; ok {
 				tmp.IsEnChart = data.CheckIsEnChart(v.ChartNameEn, []*data_manage.ChartEdbInfoMapping{}, v.Source, v.ChartType)

+ 78 - 12
controllers/data_manage/edb_info_calculate.go

@@ -2214,15 +2214,50 @@ func (this *ChartInfoController) CalculateMultiChoice() {
 
 	resp := new(data_manage.CalculateMultiChoiceResp)
 
-	for _, info := range list {
-		searchItem := data_manage.EdbInfoBase{
-			Frequency:  info.Frequency,
-			Unit:       info.Unit,
-			EdbName:    info.EdbName,
-			EdbInfoId:  info.EdbInfoId,
-			ClassifyId: info.ClassifyId,
+	if len(list) > 0 {
+		// 当前列表中的分类map
+		classifyMap := make(map[int]*data_manage.EdbClassify)
+		{
+			classifyIdList := make([]int, 0)
+			for _, info := range list {
+				classifyIdList = append(classifyIdList, info.ClassifyId)
+			}
+			classifyList, err := data_manage.GetEdbClassifyByIdList(classifyIdList)
+			if err != nil {
+				if err != nil {
+					br.Msg = "获取失败"
+					br.ErrMsg = "获取分类列表失败,Err:" + err.Error()
+					return
+				}
+			}
+
+			for _, v := range classifyList {
+				classifyMap[v.ClassifyId] = v
+			}
+		}
+
+		// 获取所有有权限的指标和分类
+		permissionEdbIdList, permissionClassifyIdList, err := data_manage_permission.GetUserEdbAndClassifyPermissionList(this.SysUser.AdminId, 0, 0)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取所有有权限的指标和分类失败,Err:" + err.Error()
+			return
+		}
+		for _, info := range list {
+			var haveOperaAuth bool
+			if currClassify, ok := classifyMap[info.ClassifyId]; ok {
+				haveOperaAuth = data_manage_permission.CheckEdbPermissionByPermissionIdList(info.IsJoinPermission, currClassify.IsJoinPermission, info.EdbInfoId, info.ClassifyId, permissionEdbIdList, permissionClassifyIdList)
+			}
+			searchItem := data_manage.EdbInfoBase{
+				Frequency:     info.Frequency,
+				Unit:          info.Unit,
+				EdbName:       info.EdbName,
+				EdbInfoId:     info.EdbInfoId,
+				ClassifyId:    info.ClassifyId,
+				HaveOperaAuth: haveOperaAuth,
+			}
+			searchItemList = append(searchItemList, searchItem)
 		}
-		searchItemList = append(searchItemList, searchItem)
 	}
 
 	resp.SearchItem = searchItemList
@@ -2324,11 +2359,37 @@ func (this *ChartInfoController) CalculateMultiSearch() {
 		return
 	}
 
-	for _, v := range edbList {
-		edbIdArr = append(edbIdArr, v.EdbInfoId)
-	}
+	if len(edbList) > 0 {
+		classifyIdList := make([]int, 0)
+		for _, v := range edbList {
+			edbIdArr = append(edbIdArr, v.EdbInfoId)
+			classifyIdList = append(classifyIdList, v.ClassifyId)
+		}
+
+		// 当前列表中的分类map
+		classifyMap := make(map[int]*data_manage.EdbClassify)
+		{
+			classifyList, err := data_manage.GetEdbClassifyByIdList(classifyIdList)
+			if err != nil {
+				if err != nil {
+					br.Msg = "获取失败"
+					br.ErrMsg = "获取分类列表失败,Err:" + err.Error()
+					return
+				}
+			}
+			for _, v := range classifyList {
+				classifyMap[v.ClassifyId] = v
+			}
+		}
+
+		// 获取所有有权限的指标和分类
+		permissionEdbIdList, permissionClassifyIdList, err := data_manage_permission.GetUserEdbAndClassifyPermissionList(this.SysUser.AdminId, 0, 0)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取所有有权限的指标和分类失败,Err:" + err.Error()
+			return
+		}
 
-	if len(edbIdArr) > 0 {
 		list, err := data_manage.GetEdbInfoByIdList(edbIdArr)
 		if err != nil && err.Error() != utils.ErrNoRow() {
 			br.Msg = "获取指标列表失败"
@@ -2336,6 +2397,10 @@ func (this *ChartInfoController) CalculateMultiSearch() {
 			return
 		}
 		for _, info := range list {
+			var haveOperaAuth bool
+			if currClassify, ok := classifyMap[info.ClassifyId]; ok {
+				haveOperaAuth = data_manage_permission.CheckEdbPermissionByPermissionIdList(info.IsJoinPermission, currClassify.IsJoinPermission, info.EdbInfoId, info.ClassifyId, permissionEdbIdList, permissionClassifyIdList)
+			}
 			searchItem := data_manage.CalculateMultiEdbSearchItem{
 				Frequency:       info.Frequency,
 				Unit:            info.Unit,
@@ -2346,6 +2411,7 @@ func (this *ChartInfoController) CalculateMultiSearch() {
 				SysUserId:       info.SysUserId,
 				EndDate:         info.EndDate,
 				EndValue:        info.EndValue,
+				HaveOperaAuth:   haveOperaAuth,
 			}
 			searchItemList = append(searchItemList, searchItem)
 		}

+ 2 - 0
controllers/data_manage/future_good/future_good_chart_info.go

@@ -2302,6 +2302,8 @@ func (this *FutureGoodChartInfoController) ChartInfoSearchByEs() {
 		for _, v := range searchList {
 			tmp := new(data_manage.ChartInfoMore)
 			tmp.ChartInfo = *v
+			// 图表数据权限
+			tmp.HaveOperaAuth = true
 			//判断是否需要展示英文标识
 			if edbTmpList, ok := chartEdbMap[v.ChartInfoId]; ok {
 				tmp.IsEnChart = data.CheckIsEnChart(v.ChartNameEn, edbTmpList, v.Source, v.ChartType)

+ 2 - 0
controllers/data_manage/line_equation/line_chart_info.go

@@ -1637,6 +1637,8 @@ func (this *LineEquationChartInfoController) SearchByEs() {
 		for _, v := range searchList {
 			tmp := new(data_manage.ChartInfoMore)
 			tmp.ChartInfo = *v
+			// 图表数据权限
+			tmp.HaveOperaAuth = true
 			//判断是否需要展示英文标识
 			if _, ok := chartEdbMap[v.ChartInfoId]; ok {
 				tmp.IsEnChart = data.CheckIsEnChart(v.ChartNameEn, []*data_manage.ChartEdbInfoMapping{}, v.Source, v.ChartType)

+ 2 - 0
controllers/data_manage/line_feature/chart_info.go

@@ -2769,6 +2769,8 @@ func (this *LineFeaturesChartInfoController) SearchByEs() {
 		for _, v := range searchList {
 			tmp := new(data_manage.ChartInfoMore)
 			tmp.ChartInfo = *v
+			// 图表数据权限
+			tmp.HaveOperaAuth = true
 			//判断是否需要展示英文标识
 			if _, ok := chartEdbMap[v.ChartInfoId]; ok {
 				tmp.IsEnChart = data.CheckIsEnChart(v.ChartNameEn, []*data_manage.ChartEdbInfoMapping{}, v.Source, v.ChartType)

+ 7 - 5
models/data_manage/edb_info_calculate.go

@@ -162,11 +162,12 @@ func DeleteCalculateData(edbInfoId int) (err error) {
 }
 
 type EdbInfoBase struct {
-	EdbInfoId  int    `description:"指标id"`
-	EdbName    string `description:"指标名称"`
-	Frequency  string `description:"频度"`
-	Unit       string `description:"单位"`
-	ClassifyId int    `description:"分类id"`
+	EdbInfoId     int    `description:"指标id"`
+	EdbName       string `description:"指标名称"`
+	Frequency     string `description:"频度"`
+	Unit          string `description:"单位"`
+	ClassifyId    int    `description:"分类id"`
+	HaveOperaAuth bool   `description:"是否有数据权限,默认:false"`
 }
 
 type CalculateEdbInfoItem struct {
@@ -607,4 +608,5 @@ type CalculateMultiEdbSearchItem struct {
 	SysUserRealName string
 	EndValue        float64 `description:"数据的最新值(预测日期的最新值)"`
 	EndDate         string  `description:"终止日期"`
+	HaveOperaAuth   bool    `description:"是否有数据权限,默认:false"`
 }

+ 1 - 1
models/data_manage/my_chart.go

@@ -339,7 +339,7 @@ type MyChartListResp struct {
 func GetMyChartListByCondition(condition string, pars []interface{}, startSize, pageSize int) (item []*MyChartList, err error) {
 	o := orm.NewOrmUsingDB("data")
 
-	field := `a.my_chart_id,c.admin_id,c.sort,c.create_time as c_ctime,b.chart_info_id,b.chart_name,b.chart_name_en,b.chart_classify_id,b.sys_user_id,b.sys_user_real_name,b.unique_code,b.create_time,b.modify_time,b.date_type,b.start_date,b.end_date,b.is_set_name,b.edb_info_ids,b.chart_type,b.calendar,b.season_start_date,b.season_end_date,b.chart_image,b.edb_end_date,b.disabled,b.source `
+	field := `a.my_chart_id,c.admin_id,c.sort,c.create_time as c_ctime,b.chart_info_id,b.chart_name,b.chart_name_en,b.chart_classify_id,b.sys_user_id,b.sys_user_real_name,b.unique_code,b.create_time,b.modify_time,b.date_type,b.start_date,b.end_date,b.is_set_name,b.edb_info_ids,b.chart_type,b.calendar,b.season_start_date,b.season_end_date,b.chart_image,b.edb_end_date,b.disabled,b.source,b.is_join_permission `
 	//MyChartClassifyName string `description:"分类名称,多个用英文逗号分割"`
 	//MyChartClassifyId   string `description:"分类id,多个用英文逗号分割"`
 	sql := ` SELECT * FROM ( SELECT ` + field + ` FROM my_chart AS a