|
@@ -347,6 +347,9 @@ func (c *ExcelInfoController) List() {
|
|
|
} else {
|
|
|
condition += " AND source = ? "
|
|
|
pars = append(pars, source)
|
|
|
+ if source == utils.BALANCE_TABLE { //平衡表的列表只显示动态表的一级表(不显示子表和静态表)
|
|
|
+ condition += " AND parent_id = 0 AND balance_type=0 "
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// 筛选分类
|
|
@@ -386,9 +389,95 @@ func (c *ExcelInfoController) List() {
|
|
|
}
|
|
|
//只看我的
|
|
|
isShowMe, _ := c.GetBool("IsShowMe")
|
|
|
+ // 获取所有有权限的指标和分类
|
|
|
+ permissionEdbIdList, permissionClassifyIdList, err := data_manage_permission.GetUserExcelAndClassifyPermissionList(c.SysUser.AdminId, 0, 0)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取所有有权限的指标和分类失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ hasCheck := make(map[int]bool)
|
|
|
if isShowMe {
|
|
|
- condition += " AND sys_user_id = ? "
|
|
|
- pars = append(pars, sysUser.AdminId)
|
|
|
+ if source == utils.BALANCE_TABLE { //平衡表的,显示同时需要显示协作人相关的图表
|
|
|
+ //找到当前协作人相关的表格ID
|
|
|
+ obj := new(excel3.ExcelWorker)
|
|
|
+ existList, err := obj.GetBySysUserId(sysUser.AdminId)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取表格协作人失败!"
|
|
|
+ br.ErrMsg = "获取表格协作人失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ var excelIds []int
|
|
|
+ newCondition := condition
|
|
|
+ newPars := pars
|
|
|
+ if len(existList) > 0 {
|
|
|
+ for _, v := range existList {
|
|
|
+ excelIds = append(excelIds, v.ExcelInfoId)
|
|
|
+ }
|
|
|
+ newCondition += fmt.Sprintf(` AND ( excel_info_id IN (%s) or sys_user_id = ?)`, utils.GetOrmInReplace(len(excelIds)))
|
|
|
+ newPars = append(newPars, excelIds, sysUser.AdminId)
|
|
|
+ } else {
|
|
|
+ newCondition += ` AND sys_user_id = ? `
|
|
|
+ newPars = append(newPars, sysUser.AdminId)
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取表格信息
|
|
|
+ tmpList, e := excel3.GetNoContentExcelListByConditionNoPage(newCondition, newPars)
|
|
|
+ if e != nil && e.Error() != utils.ErrNoRow() {
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "获取表格信息失败"
|
|
|
+ br.ErrMsg = "获取表格信息失败,Err:" + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ classifyIdListTmp := make([]int, 0)
|
|
|
+ for _, v := range tmpList {
|
|
|
+ classifyIdListTmp = append(classifyIdListTmp, v.ExcelClassifyId)
|
|
|
+ }
|
|
|
+ classifyMap := make(map[int]*excel3.ExcelClassify)
|
|
|
+
|
|
|
+ // 分类信息
|
|
|
+ if len(classifyIdListTmp) > 0 {
|
|
|
+ classifyListTmp, e := excel3.GetClassifyByIdList(classifyIdListTmp)
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "获取表格分类信息失败"
|
|
|
+ br.ErrMsg = "获取表格分类列表数据失败,Err:" + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, v := range classifyListTmp {
|
|
|
+ classifyMap[v.ExcelClassifyId] = v
|
|
|
+ }
|
|
|
+ }
|
|
|
+ excelIds = make([]int, 0)
|
|
|
+ for _, v := range tmpList {
|
|
|
+ // 数据权限
|
|
|
+ if classifyInfo, ok := classifyMap[v.ExcelClassifyId]; ok {
|
|
|
+ v.HaveOperaAuth = data_manage_permission.CheckExcelPermissionByPermissionIdList(v.IsJoinPermission, classifyInfo.IsJoinPermission, v.ExcelInfoId, v.ExcelClassifyId, permissionEdbIdList, permissionClassifyIdList)
|
|
|
+ if v.HaveOperaAuth {
|
|
|
+ excelIds = append(excelIds, v.ExcelInfoId)
|
|
|
+ }
|
|
|
+ hasCheck[v.ExcelInfoId] = v.HaveOperaAuth
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if len(excelIds) > 0 {
|
|
|
+ condition += fmt.Sprintf(` AND excel_info_id IN (%s)`, utils.GetOrmInReplace(len(excelIds)))
|
|
|
+ pars = append(pars, excelIds)
|
|
|
+ } else {
|
|
|
+ list := make([]*excel3.MyExcelInfoList, 0)
|
|
|
+ resp := response.ExcelListResp{
|
|
|
+ Paging: page,
|
|
|
+ List: list,
|
|
|
+ }
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "获取成功"
|
|
|
+ br.Data = resp
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+ condition += " AND sys_user_id = ? "
|
|
|
+ pars = append(pars, sysUser.AdminId)
|
|
|
+ }
|
|
|
}
|
|
|
//获取表格信息
|
|
|
list, err := excel3.GetNoContentExcelListByCondition(condition, pars, startSize, pageSize)
|
|
@@ -408,6 +497,7 @@ func (c *ExcelInfoController) List() {
|
|
|
classifyIdList := make([]int, 0)
|
|
|
for _, v := range list {
|
|
|
classifyIdList = append(classifyIdList, v.ExcelClassifyId)
|
|
|
+
|
|
|
}
|
|
|
classifyMap := make(map[int]*excel3.ExcelClassify)
|
|
|
|
|
@@ -423,18 +513,32 @@ func (c *ExcelInfoController) List() {
|
|
|
classifyMap[v.ExcelClassifyId] = v
|
|
|
}
|
|
|
}
|
|
|
- // 获取所有有权限的指标和分类
|
|
|
- permissionEdbIdList, permissionClassifyIdList, err := data_manage_permission.GetUserExcelAndClassifyPermissionList(c.SysUser.AdminId, 0, 0)
|
|
|
- if err != nil {
|
|
|
- br.Msg = "获取失败"
|
|
|
- br.ErrMsg = "获取所有有权限的指标和分类失败,Err:" + err.Error()
|
|
|
- return
|
|
|
- }
|
|
|
|
|
|
- for _, v := range list {
|
|
|
+ for k, v := range list {
|
|
|
// 数据权限
|
|
|
- if classifyInfo, ok := classifyMap[v.ExcelClassifyId]; ok {
|
|
|
- v.HaveOperaAuth = data_manage_permission.CheckExcelPermissionByPermissionIdList(v.IsJoinPermission, classifyInfo.IsJoinPermission, v.ExcelInfoId, v.ExcelClassifyId, permissionEdbIdList, permissionClassifyIdList)
|
|
|
+ if authCheck, ok1 := hasCheck[v.ExcelInfoId]; ok1 {
|
|
|
+ v.HaveOperaAuth = authCheck
|
|
|
+ } else {
|
|
|
+ if classifyInfo, ok := classifyMap[v.ExcelClassifyId]; ok {
|
|
|
+ v.HaveOperaAuth = data_manage_permission.CheckExcelPermissionByPermissionIdList(v.IsJoinPermission, classifyInfo.IsJoinPermission, v.ExcelInfoId, v.ExcelClassifyId, permissionEdbIdList, permissionClassifyIdList)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if v.Source == utils.BALANCE_TABLE {
|
|
|
+ //处理按钮权限和编辑状态
|
|
|
+ markStatus, err := services.UpdateExcelEditMark(v.ExcelInfoId, sysUser.AdminId, 2, sysUser.RealName)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "查询标记状态失败"
|
|
|
+ br.ErrMsg = "查询标记状态失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if markStatus.Status == 0 {
|
|
|
+ list[k].CanEdit = true
|
|
|
+ } else {
|
|
|
+ list[k].Editor = markStatus.Editor
|
|
|
+ }
|
|
|
+
|
|
|
+ // excel表格按钮权限
|
|
|
+ list[k].Button = excel2.GetBalanceExcelInfoOpButton(sysUser.AdminId, v.SysUserId, v.HaveOperaAuth, v.ExcelInfoId)
|
|
|
}
|
|
|
}
|
|
|
|