Browse Source

判断图表编辑权限

xyxie 10 months ago
parent
commit
0b6f66f700
2 changed files with 72 additions and 3 deletions
  1. 1 1
      controllers/data_manage/chart_info.go
  2. 71 2
      services/data/chart_info_excel_balance.go

+ 1 - 1
controllers/data_manage/chart_info.go

@@ -1043,7 +1043,7 @@ func (this *ChartInfoController) PreviewChartInfoDetail() {
 	// 区分是否是来自平衡表图表的数据
 	var chartInfoDataShow data.ChartInfoDataShow
 
-	if req.ChartSource == 11 { //来自平衡表图表的数据
+	if req.ChartSource == utils.CHART_SOURCE_BALANCE_EXCEL { //来自平衡表图表的数据
 		excelChartInfoDataShow := new(data.ExcelChartInfoDataShow)
 		// 相关联指标
 		mappingListTmp, dataListMap, err, errMsg := excel.GetBalanceExcelChartSingle(chartInfo.ChartInfoId, req.ChartEdbInfoList[0].EdbInfoId, "")

+ 71 - 2
services/data/chart_info_excel_balance.go

@@ -346,9 +346,15 @@ func EditBalanceExcelChart(excelInfo *excelModel.ExcelInfo, req request.AddBalan
 					return
 				}
 			}
+		} else {
+			excelEdb.ExcelInfoId = excelInfo.ExcelInfoId
+			randStr := utils.GetRandDigit(4)
+			excelEdb.EdbCode = `T` + time.Now().Format("060102150405") + "_" + randStr
+			excelEdb.SysUserId = sysUser.AdminId
+			excelEdb.SysUserRealName = sysUser.RealName
+			excelEdb.CreateTime = time.Now()
 		}
 
-		excelEdb.ExcelInfoId = excelInfo.ExcelInfoId
 		excelEdb.EdbName = chartEdb.EdbName
 		excelEdb.DateSequence = chartEdb.DateSequenceStr
 		excelEdb.DataSequence = chartEdb.DataSequenceStr
@@ -360,7 +366,9 @@ func EditBalanceExcelChart(excelInfo *excelModel.ExcelInfo, req request.AddBalan
 		excelEdb.EdbInfoType = chartEdb.EdbInfoType
 		excelEdb.LeadValue = chartEdb.LeadValue
 		excelEdb.LeadUnit = chartEdb.LeadUnit
+		excelEdb.ChartWidth = 1
 		excelEdb.ModifyTime = time.Now()
+
 		var dataList []*excelModel.ExcelChartData
 		if excelInfo.BalanceType == 1 {
 			// 如果是静态表,则直接使用前端传输的数据落到数据库里
@@ -734,7 +742,7 @@ func GetBalanceExcelChartDetail(chartInfo *data_manage.ChartInfoView, mappingLis
 	}
 
 	// todo 平衡表图表操作权限平衡表表格的操作权限保持一致,前端未用到该按钮权限,故不处理
-	//chartInfo.IsEdit = CheckOpChartPermission(sysUser, chartInfo.SysUserId, chartInfo.HaveOperaAuth)
+	chartInfo.IsEdit, _ = GetBalanceExcelInfoOpButtonByChartInfoId(sysUser.AdminId, chartInfo.ChartInfoId, chartInfo.HaveOperaAuth)
 	chartInfo.Button = data_manage.ChartViewButton{
 		IsEdit:    chartInfo.IsEdit,
 		IsEnChart: chartInfo.IsEnChart,
@@ -1662,3 +1670,64 @@ func TransferChartEdbToEdbMappingFormat(chartInfoId, chartType int, mappingListT
 	}
 	return
 }
+
+// GetBalanceExcelInfoOpButtonByChartInfoId 获取图表权限
+func GetBalanceExcelInfoOpButtonByChartInfoId(sysUserId, chartInfoId int, chartHaveOperaAuth bool) (opButton bool, err error) {
+	// 如果没有数据权限,那么直接返回
+	if !chartHaveOperaAuth {
+		return
+	}
+	// 获取表格信息
+	excelInfo, e := excelModel.GetExcelInfoByChartInfoId(chartInfoId)
+	if e != nil {
+		err = fmt.Errorf("获取ETA表格失败 Err %s", e.Error())
+		return
+	}
+	checkExcelInfo := excelInfo
+	if excelInfo.Source == utils.BALANCE_TABLE {
+		checkExcelInfoId := excelInfo.ExcelInfoId
+		if excelInfo.BalanceType == 1 {
+			checkExcelInfoId = excelInfo.RelExcelInfoId
+		} else {
+			if excelInfo.ParentId > 0 {
+				checkExcelInfoId = excelInfo.ParentId
+			}
+		}
+		if checkExcelInfoId != excelInfo.ExcelInfoId {
+			checkExcelInfo, e = excelModel.GetExcelInfoById(checkExcelInfoId)
+			if e != nil {
+				err = fmt.Errorf("获取平衡表格信息失败,Err:" + e.Error())
+				return
+			}
+		}
+	} else {
+		return
+	}
+	// 数据权限
+	haveOperaAuth, e := data_manage_permission.CheckExcelPermissionByExcelInfoId(checkExcelInfo.ExcelInfoId, checkExcelInfo.ExcelClassifyId, checkExcelInfo.IsJoinPermission, sysUserId)
+	if e != nil {
+		err = fmt.Errorf("获取表格权限信息失败,Err" + e.Error())
+		return
+	}
+	// 如果没有数据权限,那么直接返回
+	if !haveOperaAuth {
+		return
+	}
+	//button := GetBalanceExcelInfoOpButton(sysUserId, checkExcelInfo.SysUserId, haveOperaAuth, checkExcelInfo.ExcelInfoId)
+
+	if sysUserId == checkExcelInfo.SysUserId {
+		opButton = true
+	} else {
+		obj := new(excelModel.ExcelWorker)
+		workerList, e := obj.GetByExcelInfoId(checkExcelInfo.ExcelInfoId)
+		if e == nil {
+			for _, v := range workerList {
+				if v.SysUserId == sysUserId {
+					opButton = true
+					break
+				}
+			}
+		}
+	}
+	return
+}