|
@@ -41,6 +41,12 @@ func (this *ExcelClassifyController) List() {
|
|
|
}
|
|
|
//只看我的
|
|
|
isShowMe, _ := this.GetBool("IsShowMe")
|
|
|
+ // 自定义分析只看自己的
|
|
|
+ if source == utils.CUSTOM_ANALYSIS_TABLE {
|
|
|
+ AnalysisClassifyList(this)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
showUserId := 0
|
|
|
if isShowMe {
|
|
|
showUserId = this.SysUser.AdminId
|
|
@@ -85,6 +91,103 @@ func (this *ExcelClassifyController) List() {
|
|
|
|
|
|
ExcelInfoMap[v.ExcelClassifyId] = append(ExcelInfoMap[v.ExcelClassifyId], v)
|
|
|
}
|
|
|
+
|
|
|
+ classifyListMap := make(map[int][]*excel.ExcelClassifyItems)
|
|
|
+ for _, v := range classifyList {
|
|
|
+ // 数据权限
|
|
|
+ v.HaveOperaAuth = data_manage_permission.CheckExcelClassifyPermissionByPermissionIdList(v.IsJoinPermission, v.ExcelClassifyId, permissionClassifyIdList)
|
|
|
+ if existItems, ok := ExcelInfoMap[v.ExcelClassifyId]; ok {
|
|
|
+ v.Children = existItems
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ for _, v := range classifyList {
|
|
|
+ if v.ParentId > 0 {
|
|
|
+ classifyListMap[v.ParentId] = append(classifyListMap[v.ParentId], v)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //组装三级分类
|
|
|
+ for key, classify := range classifyList {
|
|
|
+ subList, ok := classifyListMap[classify.ExcelClassifyId]
|
|
|
+ if ok {
|
|
|
+ classifyList[key].Children = append(classifyList[key].Children, subList...)
|
|
|
+ sort.Slice(classifyList[key].Children, func(i, j int) bool {
|
|
|
+ return excel.ExcelClassifyItemBySort(classifyList[key].Children[i], classifyList[key].Children[j])
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ nodeAll := make([]*excel.ExcelClassifyItems, 0)
|
|
|
+ for _, v := range classifyList {
|
|
|
+ if v.ParentId == 0 {
|
|
|
+ sort.Slice(v.Children, func(i, j int) bool { return excel.ExcelClassifyItemBySort(v.Children[i], v.Children[j]) })
|
|
|
+ nodeAll = append(nodeAll, v)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ resp := response2.ExcelClassifyListResp{
|
|
|
+ AllNodes: nodeAll,
|
|
|
+ }
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "获取成功"
|
|
|
+ br.Data = resp
|
|
|
+}
|
|
|
+
|
|
|
+func AnalysisClassifyList(this *ExcelClassifyController) {
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
+ defer func() {
|
|
|
+ this.Data["json"] = br
|
|
|
+ this.ServeJSON()
|
|
|
+ }()
|
|
|
+
|
|
|
+ source, _ := this.GetInt("Source")
|
|
|
+ if source <= 0 {
|
|
|
+ source = utils.EXCEL_DEFAULT
|
|
|
+ }
|
|
|
+ //只看我的
|
|
|
+ showUserId := this.SysUser.AdminId
|
|
|
+
|
|
|
+ classifyList, err := excel.GetExcelClassifyBySource(source)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取数据失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 分类map
|
|
|
+ classifyMap := make(map[int]*excel.ExcelClassifyItems)
|
|
|
+ for _, v := range classifyList {
|
|
|
+ classifyMap[v.ExcelClassifyId] = v
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取二级分类
|
|
|
+ // 获取三级分类
|
|
|
+ // 根据来源获取所有excel表格(无内容)
|
|
|
+ allExcelInfo, err := excel.GetNoContentExcelInfoAll(source, showUserId)
|
|
|
+ if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取表格信息失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取所有有权限的指标和分类
|
|
|
+ permissionEdbIdList, permissionClassifyIdList, err := data_manage_permission.GetUserExcelAndClassifyPermissionList(this.SysUser.AdminId, 0, 0)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取所有有权限的指标和分类失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ ExcelInfoMap := make(map[int][]*excel.ExcelClassifyItems)
|
|
|
+ for _, v := range allExcelInfo {
|
|
|
+ // 数据权限
|
|
|
+ if classifyInfo, ok := classifyMap[v.ExcelClassifyId]; ok {
|
|
|
+ v.HaveOperaAuth = data_manage_permission.CheckExcelPermissionByPermissionIdList(v.IsJoinPermission, classifyInfo.IsJoinPermission, v.ExcelInfoId, v.ExcelClassifyId, permissionEdbIdList, permissionClassifyIdList)
|
|
|
+ }
|
|
|
+
|
|
|
+ ExcelInfoMap[v.ExcelClassifyId] = append(ExcelInfoMap[v.ExcelClassifyId], v)
|
|
|
+ }
|
|
|
+
|
|
|
classifyListMap := make(map[int][]*excel.ExcelClassifyItems)
|
|
|
for _, v := range classifyList {
|
|
|
// 数据权限
|
|
@@ -117,6 +220,10 @@ func (this *ExcelClassifyController) List() {
|
|
|
nodeAll = append(nodeAll, v)
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ // 自定义分析只看自己的分类
|
|
|
+ nodeAll = removeNodesWithAnalysisClassify(nodeAll, this.SysUser.AdminId)
|
|
|
+
|
|
|
resp := response2.ExcelClassifyListResp{
|
|
|
AllNodes: nodeAll,
|
|
|
}
|
|
@@ -126,6 +233,36 @@ func (this *ExcelClassifyController) List() {
|
|
|
br.Data = resp
|
|
|
}
|
|
|
|
|
|
+func removeNodesWithAnalysisClassify(nodes []*excel.ExcelClassifyItems, adminId int) []*excel.ExcelClassifyItems {
|
|
|
+ var newListNode []*excel.ExcelClassifyItems
|
|
|
+
|
|
|
+ for _, node := range nodes {
|
|
|
+ if node.Children != nil {
|
|
|
+ node.Children = removeNodesWithAnalysisClassify(node.Children, adminId)
|
|
|
+ }
|
|
|
+
|
|
|
+ // 如果是ETA表格,那么就保留
|
|
|
+ if node.ExcelInfoId > 0 {
|
|
|
+ newListNode = append(newListNode, node)
|
|
|
+ continue
|
|
|
+ }
|
|
|
+
|
|
|
+ // 如果是公共分类,且名下的ETA表格不为空,那么就保留
|
|
|
+ if node.SysUserId == 0 && node.Children != nil && len(node.Children) > 0 {
|
|
|
+ newListNode = append(newListNode, node)
|
|
|
+ continue
|
|
|
+ }
|
|
|
+
|
|
|
+ // 如果是自己的分类,那么就保留
|
|
|
+ if node.SysUserId == adminId {
|
|
|
+ newListNode = append(newListNode, node)
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return newListNode
|
|
|
+}
|
|
|
+
|
|
|
// ExcelClassifyItems
|
|
|
// @Title 获取所有excel表格分类接口-不包含表格
|
|
|
// @Description 获取所有excel表格分类接口-不包含表格
|