Browse Source

表格另存为

xyxie 9 months ago
parent
commit
86abc49a1f

+ 1 - 1
controllers/data_manage/excel/balance_table.go

@@ -1046,7 +1046,7 @@ func (c *ExcelInfoController) AddStaticExcel() {
 		childExcelList[k].Content = content
 	}
 
-	excelInfo, err, errMsg, isSendEmail := data.AddBalanceStaticExcel(oldExcelInfo, req.VersionName, sysUser, 0, req.ExcelInfoId, 1, childExcelList)
+	excelInfo, err, errMsg, isSendEmail := data.AddBalanceStaticExcel(oldExcelInfo, req.VersionName, sysUser, 0, req.ExcelInfoId, 1, childExcelList, true)
 	if err != nil {
 		br.Msg = "复制失败"
 		if errMsg != `` {

+ 28 - 3
controllers/data_manage/excel/excel_info.go

@@ -2033,7 +2033,18 @@ func (c *ExcelInfoController) Refresh() {
 		br.IsSendEmail = false
 		return
 	}
-
+	chartInfoId, _ := c.GetInt("ChartInfoId")
+	// todo 如果请求入参是chart_info_id,则需要获取excel_info_id
+	if chartInfoId > 0 && excelInfoId == 0 {
+		excelInfo, err := excel3.GetExcelInfoByChartInfoId(chartInfoId)
+		if err != nil {
+			br.Msg = "请选择表格"
+			br.ErrMsg = "未找到对应的表格"
+			br.IsSendEmail = false
+			return
+		}
+		excelInfoId = excelInfo.ExcelInfoId
+	}
 	// 获取数据详情
 	excelDetail, errMsg, err := excel2.GetExcelDetailInfoByExcelInfoId(excelInfoId, c.SysUser.AdminId)
 	if err != nil {
@@ -2304,8 +2315,22 @@ func (c *ExcelInfoController) Copy() {
 		br.IsSendEmail = false
 		return
 	}
-
-	excelInfo, err, errMsg, isSendEmail := excel2.Copy(req.ExcelInfoId, req.ExcelClassifyId, req.ExcelName, sysUser)
+	// 获取原ETA表格信息
+	oldExcelInfo, err := excel3.GetExcelInfoById(req.ExcelInfoId)
+	if err != nil {
+		br.Msg = "获取ETA表格失败"
+		return
+	}
+	var (
+		excelInfo   *excel3.ExcelInfo
+		errMsg      string
+		isSendEmail bool
+	)
+	if oldExcelInfo.Source == utils.BALANCE_TABLE {
+		excelInfo, err, errMsg, isSendEmail = data.CopyBalanceExcel(oldExcelInfo, req.ExcelClassifyId, req.ExcelName, sysUser)
+	} else {
+		excelInfo, err, errMsg, isSendEmail = excel2.Copy(oldExcelInfo, req.ExcelClassifyId, req.ExcelName, sysUser)
+	}
 	if err != nil {
 		br.Msg = "复制失败"
 		if errMsg != `` {

+ 2 - 0
controllers/data_manage/my_chart.go

@@ -1357,6 +1357,8 @@ func (this *MyChartController) MyChartList() {
 			// 数据权限
 			if currClassify, ok := classifyMap[chartViewInfo.ChartClassifyId]; ok {
 				list[i].HaveOperaAuth = data_manage_permission.CheckChartPermissionByPermissionIdList(chartViewInfo.IsJoinPermission, currClassify.IsJoinPermission, chartViewInfo.ChartInfoId, chartViewInfo.ChartClassifyId, permissionChartIdList, permissionClassifyIdList)
+			} else if chartViewInfo.ChartClassifyId == 0 {
+				list[i].HaveOperaAuth = data_manage_permission.CheckChartPermissionByPermissionIdList(chartViewInfo.IsJoinPermission, 0, chartViewInfo.ChartInfoId, chartViewInfo.ChartClassifyId, permissionChartIdList, permissionClassifyIdList)
 			}
 		}
 

+ 93 - 10
services/data/chart_info_excel_balance.go

@@ -1254,15 +1254,16 @@ func getBalanceDataListStartDateAndValue(dataList []*data_manage.EdbDataList) (s
 }
 
 // AddBalanceStaticExcel 另存为和存为静态表以及子表的复制都调用该接口
-func AddBalanceStaticExcel(oldExcelInfo *excelModel.ExcelInfo, versionName string, sysUser *system.Admin, parentId, relExcelInfoId, balanceType int, childExcelList []*excelModel.ExcelInfo) (excelInfo *excelModel.ExcelInfo, err error, errMsg string, isSendEmail bool) {
+func AddBalanceStaticExcel(oldExcelInfo *excelModel.ExcelInfo, versionName string, sysUser *system.Admin, parentId, relExcelInfoId, balanceType int, childExcelList []*excelModel.ExcelInfo, pingNameFlag bool) (excelInfo *excelModel.ExcelInfo, err error, errMsg string, isSendEmail bool) {
 	isSendEmail = true
 
 	versionName = utils.TrimLRStr(versionName)
 	// 检验分类下是否存在该表格名称
-	{
+	// todo 检验动态表分类下表格名称是否存在
+	if balanceType == 1 && versionName != "" {
 		var condition string
 		var pars []interface{}
-		condition += " AND rel_excel_info_id=? "
+		condition += " AND rel_excel_info_id=? AND balance_type=1"
 		pars = append(pars, oldExcelInfo.ExcelInfoId)
 
 		condition += " AND version_name=? "
@@ -1275,7 +1276,7 @@ func AddBalanceStaticExcel(oldExcelInfo *excelModel.ExcelInfo, versionName strin
 			return
 		}
 		if count > 0 {
-			errMsg = "表格版本号已存在,请重新填写表格名称"
+			errMsg = "表格版本号已存在,请重新填写版本号"
 			err = errors.New(errMsg)
 			isSendEmail = false
 			return
@@ -1285,7 +1286,7 @@ func AddBalanceStaticExcel(oldExcelInfo *excelModel.ExcelInfo, versionName strin
 	// 表格信息
 	timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
 	excelName := oldExcelInfo.ExcelName
-	if parentId == 0 {
+	if pingNameFlag && versionName != "" {
 		excelName += "(" + versionName + ")"
 	}
 
@@ -1338,7 +1339,7 @@ func AddBalanceStaticExcel(oldExcelInfo *excelModel.ExcelInfo, versionName strin
 	}
 	if parentId == 0 && len(childExcelList) > 0 {
 		for _, childExcelInfo := range childExcelList {
-			_, err, errMsg, isSendEmail = AddBalanceStaticExcel(childExcelInfo, versionName, sysUser, excelInfo.ExcelInfoId, relExcelInfoId, balanceType, []*excelModel.ExcelInfo{})
+			_, err, errMsg, isSendEmail = AddBalanceStaticExcel(childExcelInfo, versionName, sysUser, excelInfo.ExcelInfoId, relExcelInfoId, balanceType, []*excelModel.ExcelInfo{}, false)
 			if err != nil {
 				return
 			}
@@ -1375,7 +1376,7 @@ func AddBalanceStaticExcel(oldExcelInfo *excelModel.ExcelInfo, versionName strin
 					err = fmt.Errorf("未找到图表关联的指标信息")
 					return
 				}
-				err, errMsg, isSendEmail = CopyBalanceExcelChart(chartInfo, mappingList, versionName, sysUser)
+				err, errMsg, isSendEmail = CopyBalanceExcelChart(chartInfo, mappingList, versionName, sysUser, pingNameFlag)
 				if err != nil {
 					err = fmt.Errorf("复制图表失败 Err:%s", err.Error())
 					return
@@ -1387,15 +1388,15 @@ func AddBalanceStaticExcel(oldExcelInfo *excelModel.ExcelInfo, versionName strin
 }
 
 // CopyBalanceExcelChart 复制平衡表图表
-func CopyBalanceExcelChart(oldChartInfo *data_manage.ChartInfoView, oldChartEdbList []*excelModel.ExcelChartEdb, versionName string, sysUser *system.Admin) (err error, errMsg string, isSendEmail bool) {
+func CopyBalanceExcelChart(oldChartInfo *data_manage.ChartInfoView, oldChartEdbList []*excelModel.ExcelChartEdb, versionName string, sysUser *system.Admin, pingNameFlag bool) (err error, errMsg string, isSendEmail bool) {
 	chartEdbList := make([]*excelModel.AddChartEdbAndDataItem, 0)
-	if versionName != "" {
+	if pingNameFlag && versionName != "" {
 		oldChartInfo.ChartName += "(" + versionName + ")"
 	}
 	for _, chartEdb := range oldChartEdbList {
 		excelEdb := new(excelModel.ExcelChartEdb)
 		excelEdb.EdbName = chartEdb.EdbName
-		if versionName != "" {
+		if pingNameFlag && versionName != "" {
 			excelEdb.EdbName += "(" + versionName + ")"
 		}
 		randStr := utils.GetRandDigit(4)
@@ -1531,3 +1532,85 @@ func copyBalanceExcelChart(oldChartInfo *data_manage.ChartInfoView, sysUserId in
 
 	return
 }
+
+// CopyBalanceExcel 动态平衡表另存为
+func CopyBalanceExcel(oldExcelInfo *excelModel.ExcelInfo, excelClassifyId int, excelName string, sysUser *system.Admin) (excelInfo *excelModel.ExcelInfo, err error, errMsg string, isSendEmail bool) {
+	if oldExcelInfo.ParentId != 0 && oldExcelInfo.BalanceType != 0 {
+		errMsg = "平衡表类型错误"
+		err = fmt.Errorf("平衡表类型错误 ")
+		return
+	}
+
+	// 查询excel表格名称是否已经存在
+	// 检验分类下是否存在该表格名称
+	{
+		var nameCondition string
+		var namePars []interface{}
+		nameCondition += " AND excel_classify_id=?  AND parent_id=?"
+		namePars = append(namePars, excelClassifyId, 0)
+
+		nameCondition += " AND excel_name=? "
+		namePars = append(namePars, excelName)
+
+		count, tmpErr := excelModel.GetExcelInfoCountByCondition(nameCondition, namePars)
+		if tmpErr != nil {
+			errMsg = "判断表格名称是否存在失败"
+			err = tmpErr
+			return
+		}
+		if count > 0 {
+			errMsg = "表格名称已存在,请重新填写表格名称"
+			err = errors.New(errMsg)
+			isSendEmail = false
+			return
+		}
+	}
+	oldExcelInfo.ExcelName = excelName
+
+	// 先复制动态表,再复制动态子表,复制静态表,再复制静态子表
+	//查询动态表所有的子表,并复制为静态表
+	condition := " AND parent_id = ? AND balance_type = 0 "
+	var pars []interface{}
+	pars = append(pars, oldExcelInfo.ExcelInfoId)
+	childExcelList, err := excelModel.GetExcelInfoListByCondition(condition, pars)
+	if err != nil {
+		errMsg = "获取子表失败"
+		err = fmt.Errorf("获取子表失败 %s", err.Error())
+		return
+	}
+	excelInfo, err, errMsg, isSendEmail = AddBalanceStaticExcel(oldExcelInfo, "", sysUser, 0, 0, 0, childExcelList, false)
+	if err != nil {
+		errMsg = "复制动态表失败"
+		err = fmt.Errorf("复制动态表失败 %s", err.Error())
+		return
+	}
+
+	//复制静态表
+	staticCondition := " AND parent_id = 0 AND balance_type = 1 AND rel_excel_info_id=? "
+	var staticPars []interface{}
+	staticPars = append(staticPars, oldExcelInfo.ExcelInfoId)
+	staticExcelList, err := excelModel.GetExcelInfoListByCondition(staticCondition, staticPars)
+	if err != nil {
+		errMsg = "获取子表失败"
+		err = fmt.Errorf("获取子表失败 %s", err.Error())
+		return
+	}
+	for _, staticExcelInfo := range staticExcelList {
+		cCondition := " AND parent_id = ? AND balance_type = 1"
+		var cPars []interface{}
+		cPars = append(cPars, staticExcelInfo.ExcelInfoId)
+		childList, e := excelModel.GetExcelInfoListByCondition(cCondition, cPars)
+		if e != nil {
+			errMsg = "获取子表失败"
+			err = fmt.Errorf("获取子表失败 %s", err.Error())
+			return
+		}
+		_, err, errMsg, isSendEmail = AddBalanceStaticExcel(staticExcelInfo, staticExcelInfo.VersionName, sysUser, 0, excelInfo.ExcelInfoId, 1, childList, false)
+		if err != nil {
+			errMsg = "复制动态表失败"
+			err = fmt.Errorf("复制动态表失败 %s", err.Error())
+			return
+		}
+	}
+	return
+}

+ 2 - 0
services/data/excel/excel_info.go

@@ -228,6 +228,7 @@ func GetBalanceExcelInfoOpButton(sysUserId, parentSysUserId int, haveOperaAuth b
 		button.OpButton = true
 		button.RefreshEdbButton = true
 		button.OpWorkerButton = true
+		button.DeleteButton = true
 	} else {
 		obj := new(excel.ExcelWorker)
 		workerList, err := obj.GetByExcelInfoId(parentExcelInfoId)
@@ -236,6 +237,7 @@ func GetBalanceExcelInfoOpButton(sysUserId, parentSysUserId int, haveOperaAuth b
 				if v.SysUserId == sysUserId {
 					button.OpButton = true
 					button.RefreshEdbButton = true
+					button.DeleteButton = true
 					break
 				}
 			}

+ 1 - 8
services/data/excel/excel_op.go

@@ -111,7 +111,7 @@ func Delete(excelInfo *excelModel.ExcelInfo, sysUser *system.Admin) (err error,
 }
 
 // Copy 复制excel
-func Copy(oldExcelInfoId, excelClassifyId int, excelName string, sysUser *system.Admin) (excelInfo *excelModel.ExcelInfo, err error, errMsg string, isSendEmail bool) {
+func Copy(oldExcelInfo *excelModel.ExcelInfo, excelClassifyId int, excelName string, sysUser *system.Admin) (excelInfo *excelModel.ExcelInfo, err error, errMsg string, isSendEmail bool) {
 	isSendEmail = true
 
 	excelName = utils.TrimLRStr(excelName)
@@ -134,13 +134,6 @@ func Copy(oldExcelInfoId, excelClassifyId int, excelName string, sysUser *system
 		return
 	}
 
-	// 获取原ETA表格信息
-	oldExcelInfo, err := excelModel.GetExcelInfoById(oldExcelInfoId)
-	if err != nil {
-		errMsg = "获取ETA表格失败"
-		return
-	}
-
 	// 操作权限校验
 	{
 		// 数据权限