|
@@ -0,0 +1,323 @@
|
|
|
+package data_manage
|
|
|
+
|
|
|
+import (
|
|
|
+ "eta/eta_api/models"
|
|
|
+ "eta/eta_api/models/data_manage"
|
|
|
+ "eta/eta_api/models/data_manage/response"
|
|
|
+ "eta/eta_api/models/system"
|
|
|
+ "eta/eta_api/services/data"
|
|
|
+ "eta/eta_api/utils"
|
|
|
+ "fmt"
|
|
|
+ "github.com/rdlucklib/rdluck_tools/paging"
|
|
|
+ "sort"
|
|
|
+)
|
|
|
+
|
|
|
+// WindClassify
|
|
|
+// @Title wind指标分类
|
|
|
+// @Description wind指标分类
|
|
|
+// @Success 200 {object} data_manage.BaseFromYongyiClassify
|
|
|
+// @router /wind/classify [get]
|
|
|
+func (this *EdbInfoController) WindClassify() {
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
+ defer func() {
|
|
|
+ this.Data["json"] = br
|
|
|
+ this.ServeJSON()
|
|
|
+ }()
|
|
|
+ // 默认查一级分类和一级分类下的指标信息,
|
|
|
+ // 如果是 子级分类,查询该子级分类的下一级分类和指标信息
|
|
|
+ // 增加标识判断是文件夹还是指标列表
|
|
|
+ parentId, _ := this.GetInt("ParentId")
|
|
|
+ // 特殊处理顶级分类
|
|
|
+ rootList, err := data_manage.GetEdbClassifyByParentId(parentId, 0)
|
|
|
+ if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取数据失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ realRootMap := make(map[int]struct{})
|
|
|
+ if parentId == 0 {
|
|
|
+ // 查询wind指标的所有一级分类
|
|
|
+ classifyIdList, e := data_manage.GetEdbClassifyIdListBySource(utils.DATA_SOURCE_WIND)
|
|
|
+ if e != nil && e.Error() != utils.ErrNoRow() {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取分类列表失败,Err:" + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if len(classifyIdList) == 0 {
|
|
|
+ resp := new(data_manage.EdbClassifyListResp)
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "获取成功"
|
|
|
+ br.Data = resp
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 查询wind指标的所有一级分类下的指标信息
|
|
|
+ rootIds, e := data_manage.GetEdbClassifyRootIdsByClassifyIds(classifyIdList)
|
|
|
+ if e != nil && e.Error() != utils.ErrNoRow() {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取分类列表失败,Err:" + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, v := range rootIds {
|
|
|
+ realRootMap[v] = struct{}{}
|
|
|
+ }
|
|
|
+ }
|
|
|
+ nodeAll := make([]*data_manage.EdbClassifyItems, 0)
|
|
|
+
|
|
|
+ var sortList data_manage.EdbClassifyItemList
|
|
|
+ if parentId > 0 {
|
|
|
+ // 查询挂在当前分类上的指标列表
|
|
|
+ // 获取当前账号的不可见指标
|
|
|
+ obj := data_manage.EdbInfoNoPermissionAdmin{}
|
|
|
+ confList, err := obj.GetAllListByAdminId(this.SysUser.AdminId)
|
|
|
+ if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取不可见指标配置数据失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ noPermissionEdbInfoIdMap := make(map[int]bool)
|
|
|
+ for _, v := range confList {
|
|
|
+ noPermissionEdbInfoIdMap[v.EdbInfoId] = true
|
|
|
+ }
|
|
|
+ allEdbInfo, err := data_manage.GetEdbInfoByClassifyIdAndSource(parentId, 0, utils.DATA_SOURCE_WIND)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取指标数据失败"
|
|
|
+ br.ErrMsg = "获取指标数据失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if len(allEdbInfo) > 0 {
|
|
|
+ // 查询当前分类信息
|
|
|
+ /*currClassify, err := data_manage.GetEdbClassifyById(parentId)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取当前分类信息失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 获取所有有权限的指标和分类
|
|
|
+ permissionEdbIdList, permissionClassifyIdList, err := data_manage_permission.GetUserEdbAndClassifyPermissionList(this.SysUser.AdminId, 0, 0)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取所有有权限的指标和分类失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }*/
|
|
|
+ for _, v := range allEdbInfo {
|
|
|
+ // 如果指标不可见,那么就不返回该指标
|
|
|
+ if _, ok := noPermissionEdbInfoIdMap[v.EdbInfoId]; ok {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ //v.HaveOperaAuth = data_manage_permission.CheckEdbPermissionByPermissionIdList(v.IsJoinPermission, currClassify.IsJoinPermission, v.EdbInfoId, v.ClassifyId, permissionEdbIdList, permissionClassifyIdList)
|
|
|
+ /*button := data.GetEdbOpButton(this.SysUser, v.SysUserId, v.EdbType, utils.EDB_INFO_TYPE, v.HaveOperaAuth)
|
|
|
+ button.AddButton = false //不管有没有权限,指标都是没有添加按钮的
|
|
|
+ v.Button = button*/
|
|
|
+ v.Children = make([]*data_manage.EdbClassifyItems, 0)
|
|
|
+ v.ParentId = parentId
|
|
|
+ nodeAll = append(nodeAll, v)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ if len(rootList) > 0 {
|
|
|
+ // 已授权分类id
|
|
|
+ /*permissionClassifyIdList, err := data_manage_permission.GetUserEdbClassifyPermissionList(this.SysUser.AdminId, 0)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取已授权分类id数据失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }*/
|
|
|
+
|
|
|
+ for _, v := range rootList {
|
|
|
+ // 数据权限
|
|
|
+ /*v.HaveOperaAuth = data_manage_permission.CheckEdbClassifyPermissionByPermissionIdList(v.IsJoinPermission, v.ClassifyId, permissionClassifyIdList)
|
|
|
+ // 按钮权限
|
|
|
+ button := data.GetEdbClassifyOpButton(this.SysUser, v.SysUserId, v.HaveOperaAuth)
|
|
|
+ v.Button = button*/
|
|
|
+ if _, ok := realRootMap[v.ClassifyId]; !ok && parentId == 0 { //查询一级分类时,过滤
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ v.Children = make([]*data_manage.EdbClassifyItems, 0)
|
|
|
+ nodeAll = append(nodeAll, v)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if len(nodeAll) > 0 {
|
|
|
+ //根据sort值排序
|
|
|
+ sortList = nodeAll
|
|
|
+ sort.Sort(sortList)
|
|
|
+ }
|
|
|
+
|
|
|
+ language := `CN`
|
|
|
+ // 指标显示的语言
|
|
|
+ {
|
|
|
+ configDetail, _ := system.GetConfigDetailByCode(this.SysUser.AdminId, system.EdbLanguageVar)
|
|
|
+ if configDetail != nil {
|
|
|
+ language = configDetail.ConfigValue
|
|
|
+ } else {
|
|
|
+ configDetail, _ = system.GetDefaultConfigDetailByCode(system.EdbLanguageVar)
|
|
|
+ if configDetail != nil {
|
|
|
+ language = configDetail.ConfigValue
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ resp := new(data_manage.EdbClassifyListResp)
|
|
|
+ resp.AllNodes = sortList
|
|
|
+ resp.Language = language
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "获取成功"
|
|
|
+ br.Data = resp
|
|
|
+}
|
|
|
+
|
|
|
+// WindEdbInfoList
|
|
|
+// @Title wind指标列表接口
|
|
|
+// @Description wind指标列表接口
|
|
|
+// @Param PageSize query int true "每页数据条数"
|
|
|
+// @Param CurrentIndex query int true "当前页页码,从1开始"
|
|
|
+// @Param ClassifyId query int true "分类id"
|
|
|
+// @Success 200 {object} response.EdbInfoChartListResp
|
|
|
+// @router /wind/index [get]
|
|
|
+func (this *EdbInfoController) WindEdbInfoList() {
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
+ defer func() {
|
|
|
+ if br.ErrMsg == "" {
|
|
|
+ br.IsSendEmail = false
|
|
|
+ }
|
|
|
+ this.Data["json"] = br
|
|
|
+ this.ServeJSON()
|
|
|
+ }()
|
|
|
+ sysUser := this.SysUser
|
|
|
+ if sysUser == nil {
|
|
|
+ br.Msg = "请登录"
|
|
|
+ br.ErrMsg = "请登录,SysUser Is Empty"
|
|
|
+ br.Ret = 408
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 分页
|
|
|
+ pageSize, _ := this.GetInt("PageSize")
|
|
|
+ currentIndex, _ := this.GetInt("CurrentIndex")
|
|
|
+ var total int
|
|
|
+ page := paging.GetPaging(currentIndex, pageSize, total)
|
|
|
+ var startSize int
|
|
|
+ if pageSize <= 0 {
|
|
|
+ pageSize = utils.PageSize20
|
|
|
+ }
|
|
|
+ if currentIndex <= 0 {
|
|
|
+ currentIndex = 1
|
|
|
+ }
|
|
|
+ startSize = paging.StartIndex(currentIndex, pageSize)
|
|
|
+
|
|
|
+ // wind基础指标
|
|
|
+ var condition string
|
|
|
+ var pars []interface{}
|
|
|
+ condition += ` AND edb_info_type = ? AND source =? AND edb_type=?`
|
|
|
+ pars = append(pars, 0, utils.DATA_SOURCE_WIND, 1)
|
|
|
+
|
|
|
+ // 分类筛选
|
|
|
+ classifyId, _ := this.GetInt("ClassifyId")
|
|
|
+ if classifyId > 0 {
|
|
|
+ childClassify, e, _ := data.GetChildClassifyByClassifyId(classifyId)
|
|
|
+ if e != nil && e.Error() != utils.ErrNoRow() {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取分类信息失败, GetEdbClassify,Err:" + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ var classifyIds []int
|
|
|
+ for _, v := range childClassify {
|
|
|
+ classifyIds = append(classifyIds, v.ClassifyId)
|
|
|
+ }
|
|
|
+ condition += fmt.Sprintf(` AND classify_id IN (%s) `, utils.GetOrmInReplace(len(classifyIds)))
|
|
|
+ pars = append(pars, classifyIds)
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取当前账号的不可见指标
|
|
|
+ obj := data_manage.EdbInfoNoPermissionAdmin{}
|
|
|
+ confList, e := obj.GetAllListByAdminId(this.SysUser.AdminId)
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取不可见指标配置数据失败,Err:" + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ noPermissionEdbInfoIdList := make([]int, 0)
|
|
|
+ for _, v := range confList {
|
|
|
+ noPermissionEdbInfoIdList = append(noPermissionEdbInfoIdList, v.EdbInfoId)
|
|
|
+ }
|
|
|
+ noPermissionEdbInfoIdNum := len(noPermissionEdbInfoIdList)
|
|
|
+ if noPermissionEdbInfoIdNum > 0 {
|
|
|
+ condition += ` AND edb_info_id NOT IN (` + utils.GetOrmInReplace(noPermissionEdbInfoIdNum) + `) `
|
|
|
+ pars = append(pars, noPermissionEdbInfoIdList)
|
|
|
+ }
|
|
|
+ list := make([]*data_manage.WindEdbInfoList, 0)
|
|
|
+ // 获取指标信息
|
|
|
+ dataCount, edbList, e := data_manage.GetEdbInfoFilterList(condition, pars, startSize, pageSize)
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取普通指标列表失败, Err:" + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ page = paging.GetPaging(currentIndex, pageSize, int(dataCount))
|
|
|
+ if len(edbList) > 0 {
|
|
|
+ classifyMap := make(map[int]*data_manage.EdbClassify)
|
|
|
+ targetClassifyList := make([]*data_manage.EdbClassifyItems, 0)
|
|
|
+ if classifyId > 0 { // todo 当没有传入分类ID时,如何处理 同一个分类ID,顶级分类是一样的
|
|
|
+ targetClassify, err := data_manage.GetEdbClassifyById(classifyId)
|
|
|
+ if err != nil {
|
|
|
+ if err.Error() == utils.ErrNoRow() {
|
|
|
+ br.Msg = "当前分类不存在"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取分类信息失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ targetClassifyList, err = data_manage.GetEdbClassifyByRootIdLevel(targetClassify.RootId, targetClassify.ClassifyType, "")
|
|
|
+ if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取分类信息失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ classifyIds := make([]int, 0)
|
|
|
+ for _, v := range edbList {
|
|
|
+ classifyIds = append(classifyIds, v.ClassifyId)
|
|
|
+ }
|
|
|
+ //查询分类信息
|
|
|
+ classifyList, err := data_manage.GetEdbClassifyByIdList(classifyIds)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取分类信息失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, v := range classifyList {
|
|
|
+ classifyMap[v.ClassifyId] = v
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for _, v := range edbList {
|
|
|
+ //查询目录
|
|
|
+ targetClassify, ok := classifyMap[v.ClassifyId]
|
|
|
+ if !ok {
|
|
|
+ br.Msg = "当前分类不存在"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ classifyList, err, errMsg := data.GetFullClassifyByRootId(targetClassify, targetClassifyList)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = err.Error()
|
|
|
+ br.ErrMsg = errMsg
|
|
|
+ return
|
|
|
+ }
|
|
|
+ tmp := &data_manage.WindEdbInfoList{
|
|
|
+ EdbInfoList: v,
|
|
|
+ ClassifyList: classifyList,
|
|
|
+ }
|
|
|
+ list = append(list, tmp)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ resp := response.WindEdbInfoListResp{
|
|
|
+ Paging: page,
|
|
|
+ List: list,
|
|
|
+ }
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "获取成功"
|
|
|
+ br.Data = resp
|
|
|
+}
|