Browse Source

Merge branch 'eta/1.7.6' into debug

Roc 11 months ago
parent
commit
315ec6cb0b

+ 122 - 48
controllers/data_manage/edb_info.go

@@ -3849,11 +3849,44 @@ func (this *EdbInfoController) RelationChartList() {
 		myChartMap[v.ChartInfoId] = v
 	}
 	listLen := len(list)
-	for i := 0; i < listLen; i++ {
-		if existItem, ok := myChartMap[list[i].ChartInfoId]; ok {
-			list[i].IsAdd = true
-			list[i].MyChartId = existItem.MyChartId
-			list[i].MyChartClassifyId = existItem.MyChartClassifyId
+
+	if listLen > 0 {
+		// 分类id
+		classifyIdList := make([]int, 0)
+		// 当前列表中的分类map
+		classifyMap := make(map[int]*data_manage.ChartClassify)
+		for _, v := range list {
+			classifyIdList = append(classifyIdList, v.ChartClassifyId)
+		}
+		classifyList, err := data_manage.GetChartClassifyByIdList(classifyIdList)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取分类列表失败,Err:" + err.Error()
+			return
+		}
+
+		for _, v := range classifyList {
+			classifyMap[v.ChartClassifyId] = v
+		}
+
+		// 已授权分类id
+		permissionChartIdList, permissionClassifyIdList, err := data_manage_permission.GetUserChartAndClassifyPermissionList(this.SysUser.AdminId, 0, 0)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取已授权分类id数据失败,Err:" + err.Error()
+			return
+		}
+
+		for _, v := range list {
+			if existItem, ok := myChartMap[v.ChartInfoId]; ok {
+				v.IsAdd = true
+				v.MyChartId = existItem.MyChartId
+				v.MyChartClassifyId = existItem.MyChartClassifyId
+			}
+			// 权限
+			if currClassify, ok := classifyMap[v.ChartClassifyId]; ok {
+				v.HaveOperaAuth = data_manage_permission.CheckChartPermissionByPermissionIdList(v.IsJoinPermission, currClassify.IsJoinPermission, v.ChartInfoId, v.ChartClassifyId, permissionChartIdList, permissionClassifyIdList)
+			}
 		}
 	}
 
@@ -3981,55 +4014,96 @@ func (this *EdbInfoController) RelationEdbList() {
 	}
 
 	edbList := make([]*data_manage.ChartEdbInfoMapping, 0)
-	for _, v := range list {
-		item := new(data_manage.ChartEdbInfoMapping)
-		item.EdbInfoId = v.EdbInfoId
-		item.SourceName = v.SourceName
-		item.Source = v.Source
-		item.EdbCode = v.EdbCode
-		item.EdbName = v.EdbName
-		item.EdbNameEn = v.EdbNameEn
-		item.Frequency = v.Frequency
-		item.FrequencyEn = data.GetFrequencyEn(v.Frequency)
-		if v.Unit != `无` {
-			item.Unit = v.Unit
-		}
-		item.UnitEn = v.UnitEn
-		item.StartDate = v.StartDate
-		item.EndDate = v.EndDate
-		item.ModifyTime = v.ModifyTime
-		item.IsAxis = 1
-		item.LeadValue = 0
-		item.LeadUnit = ""
-		item.ChartEdbMappingId = 0
-		item.ChartInfoId = 0
-		item.IsOrder = false
-		item.EdbInfoType = v.EdbInfoType
-		item.EdbInfoCategoryType = v.EdbInfoType
-		item.ChartStyle = ""
-		item.ChartColor = ""
-		item.ChartWidth = 0
-		item.MaxData = v.MaxValue
-		item.MinData = v.MinValue
-		item.LatestValue = v.LatestValue
-		item.LatestDate = v.LatestDate
-		item.UniqueCode = v.UniqueCode
-		item.ClassifyId = v.ClassifyId
-
-		dataList := make([]*data_manage.EdbDataList, 0)
-		if v.EdbInfoType == 0 {
-			dataList, err = data_manage.GetEdbDataList(v.Source, v.SubSource, v.EdbInfoId, "", "")
-		} else {
-			_, dataList, _, _, err, _ = data.GetPredictDataListByPredictEdbInfoId(v.EdbInfoId, "", "", false)
+
+	if len(edbList) > 0 {
+
+		// 当前的分类
+		classifyMap := make(map[int]*data_manage.EdbClassify)
+		{
+			classifyIdList := make([]int, 0)
+			for _, v := range edbList {
+				classifyIdList = append(classifyIdList, v.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.Msg = "获取失败,Err:" + err.Error()
+			br.ErrMsg = "获取所有有权限的指标和分类失败,Err:" + err.Error()
 			return
 		}
 
-		item.DataList = dataList
-		edbList = append(edbList, item)
+		for _, v := range list {
+			item := new(data_manage.ChartEdbInfoMapping)
+			item.EdbInfoId = v.EdbInfoId
+			item.SourceName = v.SourceName
+			item.Source = v.Source
+			item.EdbCode = v.EdbCode
+			item.EdbName = v.EdbName
+			item.EdbNameEn = v.EdbNameEn
+			item.Frequency = v.Frequency
+			item.FrequencyEn = data.GetFrequencyEn(v.Frequency)
+			if v.Unit != `无` {
+				item.Unit = v.Unit
+			}
+			item.UnitEn = v.UnitEn
+			item.StartDate = v.StartDate
+			item.EndDate = v.EndDate
+			item.ModifyTime = v.ModifyTime
+			item.IsAxis = 1
+			item.LeadValue = 0
+			item.LeadUnit = ""
+			item.ChartEdbMappingId = 0
+			item.ChartInfoId = 0
+			item.IsOrder = false
+			item.EdbInfoType = v.EdbInfoType
+			item.EdbInfoCategoryType = v.EdbInfoType
+			item.ChartStyle = ""
+			item.ChartColor = ""
+			item.ChartWidth = 0
+			item.MaxData = v.MaxValue
+			item.MinData = v.MinValue
+			item.LatestValue = v.LatestValue
+			item.LatestDate = v.LatestDate
+			item.UniqueCode = v.UniqueCode
+			item.ClassifyId = v.ClassifyId
+
+			dataList := make([]*data_manage.EdbDataList, 0)
+			// 指标权限
+			if currClassify, ok := classifyMap[v.ClassifyId]; ok {
+				v.HaveOperaAuth = data_manage_permission.CheckEdbPermissionByPermissionIdList(v.IsJoinPermission, currClassify.IsJoinPermission, v.EdbInfoId, v.ClassifyId, permissionEdbIdList, permissionClassifyIdList)
+			}
+
+			// 有权限则获取数据
+			if v.HaveOperaAuth {
+				if v.EdbInfoType == 0 {
+					dataList, err = data_manage.GetEdbDataList(v.Source, v.SubSource, v.EdbInfoId, "", "")
+				} else {
+					_, dataList, _, _, err, _ = data.GetPredictDataListByPredictEdbInfoId(v.EdbInfoId, "", "", false)
+				}
+				if err != nil {
+					br.Msg = "获取失败"
+					br.Msg = "获取失败,Err:" + err.Error()
+					return
+				}
+			}
+
+			item.DataList = dataList
+			edbList = append(edbList, item)
+		}
 	}
 
 	page = paging.GetPaging(currentIndex, pageSize, dataCount)

+ 1 - 1
controllers/data_manage/edb_info_calculate.go

@@ -2353,7 +2353,7 @@ func (this *ChartInfoController) CalculateMultiSearch() {
 	page := paging.GetPaging(currentIndex, pageSize, total)
 	resp := new(data_manage.CalculateMultiEdbSearchResp)
 
-	edbList, e := data_manage.GetEdbInfoListByCondition(condition, pars, startSize, pageSize)
+	edbList, e := data_manage.GetEdbInfoListByCondition(condition, pars, startSize, pageSize, "")
 	if e != nil {
 		br.Msg = "获取指标列表失败"
 		br.ErrMsg = "获取指标列表失败,Err:" + e.Error()

+ 2 - 0
controllers/data_manage/excel/custom_analysis.go

@@ -91,6 +91,7 @@ func (c *CustomAnalysisController) ExcelByName() {
 		ModifyTime:      excelDetail.ModifyTime,
 		CreateTime:      excelDetail.CreateTime,
 		Button:          excel.GetExcelInfoOpButton(sysUser, excelDetail.SysUserId, excelDetail.Source, haveOperaAuth),
+		HaveOperaAuth:   true,
 	}
 
 	if excelDetail != nil {
@@ -435,6 +436,7 @@ func (c *CustomAnalysisController) BaseExcelDetail() {
 		ModifyTime:      excelDetail.ModifyTime,
 		CreateTime:      excelDetail.CreateTime,
 		Button:          excel.GetExcelInfoOpButton(sysUser, excelDetail.SysUserId, excelDetail.Source, haveOperaAuth),
+		HaveOperaAuth:   true,
 	}
 	if markStatus.Status == 0 {
 		resp.ExcelInfo.CanEdit = true

+ 36 - 0
controllers/data_manage/my_chart.go

@@ -2360,6 +2360,33 @@ func (this *MyChartController) Locate() {
 		classifyIdName[c.ChartClassifyId] = c.ChartClassifyName
 	}
 
+	// 当前列表中的分类map
+	classifyMap := make(map[int]*data_manage.ChartClassify)
+	{
+		// 分类id
+		classifyIdList := make([]int, 0)
+		for _, v := range list {
+			classifyIdList = append(classifyIdList, v.ChartClassifyId)
+		}
+		classifyList, err := data_manage.GetChartClassifyByIdList(classifyIdList)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取分类列表失败,Err:" + err.Error()
+			return
+		}
+
+		for _, v := range classifyList {
+			classifyMap[v.ChartClassifyId] = v
+		}
+	}
+	// 已授权分类id
+	permissionChartIdList, permissionClassifyIdList, err := data_manage_permission.GetUserChartAndClassifyPermissionList(this.SysUser.AdminId, 0, 0)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取已授权分类id数据失败,Err:" + err.Error()
+		return
+	}
+
 	// 分类ID大于0时, 优先分类排序, 其次图表排序
 	if classifyId > 0 {
 		for _, cl := range classifies {
@@ -2382,6 +2409,11 @@ func (this *MyChartController) Locate() {
 				v.DateType = ch.DateType
 				v.Calendar = ch.Calendar
 				v.StartYear = ch.StartYear
+				// 图表权限
+				if currClassify, ok := classifyMap[ch.ChartClassifyId]; ok {
+					v.HaveOperaAuth = data_manage_permission.CheckChartPermissionByPermissionIdList(ch.IsJoinPermission, currClassify.IsJoinPermission, ch.ChartInfoId, ch.ChartClassifyId, permissionChartIdList, permissionClassifyIdList)
+				}
+
 				list = append(list, v)
 			}
 		}
@@ -2409,6 +2441,10 @@ func (this *MyChartController) Locate() {
 		v.DateType = ch.DateType
 		v.Calendar = ch.Calendar
 		v.StartYear = ch.StartYear
+		// 图表权限
+		if currClassify, ok := classifyMap[ch.ChartClassifyId]; ok {
+			v.HaveOperaAuth = data_manage_permission.CheckChartPermissionByPermissionIdList(ch.IsJoinPermission, currClassify.IsJoinPermission, ch.ChartInfoId, ch.ChartClassifyId, permissionChartIdList, permissionClassifyIdList)
+		}
 		list = append(list, v)
 	}
 	br.Ret = 200

+ 1 - 1
controllers/data_stat/edb_source_stat.go

@@ -592,7 +592,7 @@ func (this *EdbSourceStatController) EdbUpdateStat() {
 		baseCond := " and index_code in (" + utils.GetOrmInReplace(len(edbCodeList)) + ")"
 		var basePars []interface{}
 		basePars = append(basePars, edbCodeList)
-		indexList, tErr := data_manage.GetMysteelChemicalIndexList(baseCond, basePars, 0, 1000)
+		indexList, tErr := data_manage.GetMysteelChemicalIndexList(baseCond, basePars, 0, 1000, "")
 		if tErr != nil {
 			br.Msg = "获取初始指标信息失败"
 			br.ErrMsg = "获取初始指标信息失败,Err:" + tErr.Error()

+ 5 - 5
models/data_manage/chart_edb_mapping.go

@@ -58,7 +58,7 @@ a.is_convert, a.convert_type, a.convert_value, a.convert_unit, a.convert_en_unit
 
 func GetChartEdbMappingListByChartInfoIds(chartInfoIds string) (list []*ChartEdbInfoMapping, err error) {
 	o := orm.NewOrmUsingDB("data")
-	sql := ` SELECT a.*,b.source_name,b.source,b.sub_source,b.edb_code,b.edb_name,b.edb_name_en,b.frequency,b.unit,b.unit_en,b.start_date,b.end_date,b.modify_time,b.latest_date,b.latest_value,b.unique_code,b.edb_info_type AS edb_info_category_type,b.edb_type
+	sql := ` SELECT a.*,b.source_name,b.source,b.sub_source,b.edb_code,b.edb_name,b.edb_name_en,b.frequency,b.unit,b.unit_en,b.start_date,b.end_date,b.modify_time,b.latest_date,b.latest_value,b.unique_code,b.edb_info_type AS edb_info_category_type,b.edb_type,b.classify_id,b.is_join_permission
              FROM chart_edb_mapping AS a
 			 INNER JOIN edb_info AS b ON a.edb_info_id=b.edb_info_id
 			 WHERE chart_info_id in (` + chartInfoIds + `) 
@@ -69,7 +69,7 @@ func GetChartEdbMappingListByChartInfoIds(chartInfoIds string) (list []*ChartEdb
 
 func GetChartEdbMappingListByEdbInfoId(edbInfoStr string) (list []*ChartEdbInfoMapping, err error) {
 	o := orm.NewOrmUsingDB("data")
-	sql := ` SELECT edb_info_id,source_name,source,sub_source,edb_code,edb_name,edb_name_en,frequency,unit,unit_en,start_date,end_date,modify_time,latest_date,latest_value,unique_code,edb_info_type AS edb_info_category_type,max_value,min_value,edb_type
+	sql := ` SELECT edb_info_id,source_name,source,sub_source,edb_code,edb_name,edb_name_en,frequency,unit,unit_en,start_date,end_date,modify_time,latest_date,latest_value,unique_code,edb_info_type AS edb_info_category_type,max_value,min_value,edb_type,classify_id,is_join_permission
              FROM edb_info
 			 WHERE edb_info_id IN(` + edbInfoStr + `)
 			ORDER BY FIELD(edb_info_id,` + edbInfoStr + `)
@@ -85,7 +85,7 @@ func GetChartEdbMappingListByEdbInfoIdList(edbIdList []int) (list []*ChartEdbInf
 		return
 	}
 	o := orm.NewOrmUsingDB("data")
-	sql := ` SELECT edb_info_id,source_name,source,sub_source,edb_code,edb_name,edb_name_en,frequency,unit,unit_en,start_date,end_date,modify_time,latest_date,latest_value,unique_code,edb_info_type AS edb_info_category_type,max_value,min_value,edb_type,sub_source,sub_source_name,indicator_code,stock_code,is_join_permission
+	sql := ` SELECT edb_info_id,source_name,source,sub_source,edb_code,edb_name,edb_name_en,frequency,unit,unit_en,start_date,end_date,modify_time,latest_date,latest_value,unique_code,edb_info_type AS edb_info_category_type,max_value,min_value,edb_type,classify_id,is_join_permission
              FROM edb_info
 			 WHERE edb_info_id IN(` + utils.GetOrmInReplace(num) + `)
 			ORDER BY FIELD(edb_info_id,` + utils.GetOrmInReplace(num) + `)
@@ -101,7 +101,7 @@ func GetChartEdbMappingListByIdList(chartInfoIdList []int) (list []*ChartEdbInfo
 		return
 	}
 	o := orm.NewOrmUsingDB("data")
-	sql := ` SELECT a.*,b.source_name,b.source,b.sub_source,b.edb_code,b.edb_name,b.edb_name_en,b.frequency,b.unit,b.unit_en,b.start_date,b.end_date,b.modify_time,b.latest_date,b.latest_value,b.unique_code,b.edb_info_type,b.edb_type AS edb_info_category_type
+	sql := ` SELECT a.*,b.source_name,b.source,b.sub_source,b.edb_code,b.edb_name,b.edb_name_en,b.frequency,b.unit,b.unit_en,b.start_date,b.end_date,b.modify_time,b.latest_date,b.latest_value,b.unique_code,b.edb_info_type,b.edb_type AS edb_info_category_type,b.classify_id,b.is_join_permission
              FROM chart_edb_mapping AS a
 			 INNER JOIN edb_info AS b ON a.edb_info_id=b.edb_info_id
 			 WHERE chart_info_id in (` + utils.GetOrmInReplace(num) + `) 
@@ -145,7 +145,7 @@ func GetEtaEdbChartEdbMapping(chartInfoId int) (item *ChartEdbInfoMapping, err e
 	o := orm.NewOrmUsingDB("data")
 	aField := `a.chart_edb_mapping_id,a.chart_info_id,a.edb_info_id,a.create_time,a.modify_time,a.unique_code,a.max_data,a.min_data,a.is_order,a.is_axis,a.edb_info_type,a.lead_value,a.lead_unit,a.chart_style,a.chart_color,a.predict_chart_color,a.chart_width,a.source as mapping_source`
 
-	sql := ` SELECT ` + aField + `,b.source_name,b.source,b.sub_source,b.edb_code,b.edb_name,b.edb_name_en,b.frequency,b.unit,b.unit_en,b.start_date,b.end_date,b.modify_time,b.latest_date,b.latest_value,b.unique_code,b.edb_info_type AS edb_info_category_type
+	sql := ` SELECT ` + aField + `,b.source_name,b.source,b.sub_source,b.edb_code,b.edb_name,b.edb_name_en,b.frequency,b.unit,b.unit_en,b.start_date,b.end_date,b.modify_time,b.latest_date,b.latest_value,b.unique_code,b.edb_info_type AS edb_info_category_type,b.classify_id,b.is_join_permission
              FROM chart_edb_mapping AS a
 			 INNER JOIN edb_info AS b ON a.edb_info_id=b.edb_info_id
 			 WHERE a.chart_info_id=? AND a.source = ?

+ 1 - 0
models/data_manage/chart_info.go

@@ -2003,6 +2003,7 @@ type ChartInfoLocate struct {
 	DateType          int    `description:""`
 	Calendar          string `description:""`
 	StartYear         int    `description:"当选择的日期类型为最近N年类型时,即date_type=20, 用start_year表示N"`
+	HaveOperaAuth     bool   `description:"是否有数据权限,默认:false"`
 }
 
 func FIXChartClassifyId(newId, oldId int) (err error) {

+ 10 - 2
models/data_manage/edb_info.go

@@ -1527,13 +1527,21 @@ func GetEdbInfoByConditionCount(condition string, pars []interface{}) (count int
 }
 
 // GetEdbInfoListByCondition 根据条件获取指标列表数据
-func GetEdbInfoListByCondition(condition string, pars []interface{}, startSize, pageSize int) (items []*EdbInfoList, err error) {
+func GetEdbInfoListByCondition(condition string, pars []interface{}, startSize, pageSize int, orderDesc string) (items []*EdbInfoList, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := ` SELECT * FROM edb_info WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
-	sql += ` ORDER BY edb_info_id ASC LIMIT ?,? `
+
+	if orderDesc == `` {
+		orderDesc = ` ASC `
+	}
+
+	sql += ` ORDER BY edb_info_id `
+	sql += orderDesc
+	sql += ` LIMIT ?,? `
+
 	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
 	return
 }

+ 1 - 0
models/data_manage/excel/response/sheet.go

@@ -30,4 +30,5 @@ type FindExcelInfo struct {
 	Button          ExcelInfoDetailButton `description:"操作权限"`
 	CanEdit         bool                  `description:"是否可编辑"`
 	Editor          string                `description:"编辑人"`
+	HaveOperaAuth   bool                  `description:"是否有数据权限,默认:false"`
 }

+ 9 - 2
models/data_manage/mysteel_chemical_index.go

@@ -281,15 +281,22 @@ func GetMysteelChemicalIndexCount(condition string, pars []interface{}) (count i
 }
 
 // GetMysteelChemicalIndexList 根据分类id获取钢联化工频度数据列表
-func GetMysteelChemicalIndexList(condition string, pars []interface{}, startSize, pageSize int) (items []*BaseFromMysteelChemicalIndex, err error) {
+func GetMysteelChemicalIndexList(condition string, pars []interface{}, startSize, pageSize int, orderDesc string) (items []*BaseFromMysteelChemicalIndex, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := ` SELECT * FROM base_from_mysteel_chemical_index WHERE 1=1 `
 
 	if condition != "" {
 		sql += condition
 	}
-	sql += ` ORDER BY base_from_mysteel_chemical_index_id ASC LIMIT ?,? `
+
+	if orderDesc == `` {
+		orderDesc = ` ASC `
+	}
+	sql += ` ORDER BY base_from_mysteel_chemical_index_id `
+	sql += orderDesc
+	sql += ` LIMIT ?,? `
 	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+
 	return
 }
 

+ 2 - 2
services/data/data_manage_permission/data_move.go

@@ -281,7 +281,7 @@ func GetMoveEdbChartList(source, subSource, userId int, keyword, classify string
 		if err != nil {
 			return
 		}
-		tmpList, tmpErr := data_manage.GetMysteelChemicalIndexList(condition, pars, startSize, pageSize)
+		tmpList, tmpErr := data_manage.GetMysteelChemicalIndexList(condition, pars, startSize, pageSize, "DESC")
 		if tmpErr != nil {
 			err = tmpErr
 			return
@@ -321,7 +321,7 @@ func GetMoveEdbChartList(source, subSource, userId int, keyword, classify string
 		if err != nil {
 			return
 		}
-		tmpList, tmpErr := data_manage.GetEdbInfoListByCondition(condition, pars, startSize, pageSize)
+		tmpList, tmpErr := data_manage.GetEdbInfoListByCondition(condition, pars, startSize, pageSize, "DESC")
 		if tmpErr != nil {
 			err = tmpErr
 			return