Roc 2 hónapja
szülő
commit
ec0a4f0cf9

+ 139 - 100
controllers/data_manage/chart_info.go

@@ -12,6 +12,7 @@ import (
 	"eta_gn/eta_api/services/data"
 	"eta_gn/eta_api/services/data/data_manage_permission"
 	"eta_gn/eta_api/services/data/excel"
+	"eta_gn/eta_api/services/elastic"
 	"eta_gn/eta_api/services/eta_forum"
 	"eta_gn/eta_api/utils"
 	"fmt"
@@ -2115,6 +2116,9 @@ func (this *ChartInfoController) ChartInfoSearch() {
 // @Title 图表模糊搜索(从es获取)
 // @Description  图表模糊搜索(从es获取)
 // @Param   Keyword   query   string  true       "图表名称"
+// @Param   ChartAuth   query   int  false       "图表权限:0-全部;1-我的;2-公共"
+// @Param   ChartCollect   query   int  false       "图表收藏状态:0-全部;1-已收藏"
+// @Param   ClassifyId   query   int  false       "父级分类id"
 // @Success 200 {object} data_manage.ChartInfo
 // @router /chart_info/search_by_es [get]
 func (this *ChartInfoController) ChartInfoSearchByEs() {
@@ -2123,6 +2127,7 @@ func (this *ChartInfoController) ChartInfoSearchByEs() {
 		this.Data["json"] = br
 		this.ServeJSON()
 	}()
+	resp := data_manage.ChartInfoListByEsRespV2{}
 
 	sysUser := this.SysUser
 	if sysUser == nil {
@@ -2144,144 +2149,178 @@ func (this *ChartInfoController) ChartInfoSearchByEs() {
 	startSize = paging.StartIndex(currentIndex, pageSize)
 
 	keyword := this.GetString("Keyword")
+	if keyword == `` {
+		keyword = this.GetString("KeyWord")
+	}
 
 	showSysId := sysUser.AdminId
 
-	var searchList []*data_manage.ChartInfo
+	var searchList []*data_manage.ChartInfoView
 	var total int64
 	var err error
 
-	// 获取当前账号的不可见指标
-	noPermissionChartIdList := make([]int, 0)
-	{
-		obj := data_manage.EdbInfoNoPermissionAdmin{}
-		confList, err := obj.GetAllChartListByAdminId(this.SysUser.AdminId)
-		if err != nil && !utils.IsErrNoRow(err) {
-			br.Msg = "获取失败"
-			br.ErrMsg = "获取不可见指标配置数据失败,Err:" + err.Error()
-			return
-		}
-		for _, v := range confList {
-			noPermissionChartIdList = append(noPermissionChartIdList, v.ChartInfoId)
+	chartAuth, _ := this.GetInt("ChartAuth", 0) // 图表权限范围,0-全部;1-我的;2-公共
+
+	chartCollect, _ := this.GetInt("ChartCollect", 0) // 图表收藏状态:0-全部;1-已收藏
+
+	// 筛选分类id列表
+	searchClassifyIdList := make([]int, 0)
+	searchPublicClassifyIdList := make([]int, 0)
+	// 父级分类id
+	classifyId, _ := this.GetInt("ClassifyId")
+	if classifyId > 0 {
+		switch chartAuth {
+		case 1: // 1-我的;2-公共
+			allChildClassifyItemList, err, _ := data.GetAllChartChildClassifyByParentId(classifyId)
+			if err != nil {
+				br.Msg = "获取失败"
+				br.ErrMsg = "获取指标分类信息失败,Err:" + err.Error()
+				return
+			}
+			searchClassifyIdList = append(searchClassifyIdList, classifyId)
+			for _, v := range allChildClassifyItemList {
+				searchClassifyIdList = append(searchClassifyIdList, v.ChartClassifyId)
+			}
+		case 2: // 1-我的;2-公共
+			obj := data_manage.ChartPublicClassify{}
+			allChildClassifyItemList, err, _ := obj.GetAllChildClassifyByParentId(classifyId)
+			if err != nil {
+				br.Msg = "获取失败"
+				br.ErrMsg = "获取指标分类信息失败,Err:" + err.Error()
+				return
+			}
+			searchPublicClassifyIdList = append(searchPublicClassifyIdList, classifyId)
+			for _, v := range allChildClassifyItemList {
+				searchPublicClassifyIdList = append(searchPublicClassifyIdList, v.ChartPublicClassifyId)
+			}
+
 		}
 	}
 
-	// 是否走ES
-	isEs := false
-	if keyword != "" {
-		searchList, total, err = data.EsSearchChartInfo(keyword, showSysId, []int{utils.CHART_SOURCE_DEFAULT}, noPermissionChartIdList, startSize, pageSize)
-		isEs = true
-	} else {
-		total, searchList, err = data_manage.ChartInfoSearchByEmptyKeyWord(showSysId, []int{utils.CHART_SOURCE_DEFAULT}, noPermissionChartIdList, startSize, pageSize)
-		if err != nil && !utils.IsErrNoRow(err) {
+	// 收藏的指标id
+	collectChartInfoIdList := make([]int, 0)
+	if chartCollect == 1 {
+		collectChartInfoIdList, err = data_manage.GetUserAllCollectChartInfoIdList(this.SysUser.AdminId)
+		if err != nil {
 			br.Msg = "获取失败"
-			br.ErrMsg = "获取图表信息失败,Err:" + err.Error()
+			br.ErrMsg = "获取收藏指标配置数据失败,Err:" + err.Error()
 			return
 		}
 	}
 
-	finalList := make([]*data_manage.ChartInfoMore, 0)
-	if len(searchList) > 0 {
-		// 涉及分类id
-		classifyIdList := make([]int, 0)
-		// 图表id
-		chartInfoIdList := make([]int, 0)
+	sortMap := make(map[string]string)
+	// 如果没有搜索关键词,则默认根据图表创建时间倒序排序
+	if keyword == `` {
+		sortMap["ChartInfoId"] = `desc`
+	}
 
-		chartInfoIds := ""
-		chartEdbMap := make(map[int][]*data_manage.ChartEdbInfoMapping)
+	// 是否走ES
+	total, searchList, err = elastic.SearchChartInfoDataV2(keyword, showSysId, chartAuth, []int{utils.CHART_SOURCE_DEFAULT}, collectChartInfoIdList, searchClassifyIdList, searchPublicClassifyIdList, sortMap, startSize, pageSize)
 
-		for _, v := range searchList {
-			chartInfoIds += strconv.Itoa(v.ChartInfoId) + ","
-			classifyIdList = append(classifyIdList, v.ChartClassifyId)
-			chartInfoIdList = append(chartInfoIdList, v.ChartInfoId)
+	if len(searchList) <= 0 {
+		searchList = make([]*data_manage.ChartInfoView, 0)
+		page := paging.GetPaging(currentIndex, pageSize, int(total))
+		resp.Paging = page
+		resp.List = searchList
+
+		br.Ret = 200
+		br.Success = true
+		br.Msg = "获取成功"
+		br.Data = resp
+		return
+	}
+
+	// 涉及分类id
+	classifyIdList := make([]int, 0)
+	// 图表id
+	chartInfoIdList := make([]int, 0)
+
+	for _, v := range searchList {
+		classifyIdList = append(classifyIdList, v.ChartClassifyId)
+		chartInfoIdList = append(chartInfoIdList, v.ChartInfoId)
+	}
+
+	// 当前列表中的分类map
+	chartClassifyMap := make(map[int]*data_manage.ChartClassify)
+
+	// 图表分类
+	{
+		chartClassifyList, err := data_manage.GetChartClassifyByIdList(classifyIdList)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取图表分类失败,Err:" + err.Error()
+			return
 		}
-		if chartInfoIds != "" {
-			chartInfoIds = strings.Trim(chartInfoIds, ",")
-			//判断是否需要展示英文标识
-			edbList, e := data_manage.GetChartEdbMappingListByChartInfoIds(chartInfoIds)
-			if e != nil {
-				br.Msg = "获取失败"
-				br.ErrMsg = "获取图表,指标信息失败,Err:" + e.Error()
-				return
-			}
-			for _, v := range edbList {
-				chartEdbMap[v.ChartInfoId] = append(chartEdbMap[v.ChartInfoId], v)
-			}
+		for _, v := range chartClassifyList {
+			chartClassifyMap[v.ChartClassifyId] = v
 		}
-		// 当前列表中的分类map
-		chartClassifyMap := make(map[int]*data_manage.ChartClassify)
+	}
 
-		// 图表分类
-		{
-			chartClassifyList, err := data_manage.GetChartClassifyByIdList(classifyIdList)
-			if err != nil {
-				br.Msg = "获取失败"
-				br.ErrMsg = "获取图表分类失败,Err:" + err.Error()
-				return
-			}
-			for _, v := range chartClassifyList {
-				chartClassifyMap[v.ChartClassifyId] = v
-			}
+	// 查询收藏
+	collectEdbMap := make(map[int][]int)
+	collectNameEdbMap := make(map[int][]string)
+	{
+		obj := data_manage.ChartCollect{}
+		collectList, err := obj.GetItemsByUserIdAndChartInfoIdList(this.SysUser.AdminId, chartInfoIdList)
+		if err != nil {
+			br.Msg = "获取指标信息失败"
+			br.ErrMsg = "获取指标数据失败,Err:" + err.Error()
+			return
 		}
-		// 图表
-		if isEs {
-			// 当前列表中的图表map
-			chartInfoMap := make(map[int]*data_manage.ChartInfo)
-			tmpChartList, err := data_manage.GetChartInfoByIdList(chartInfoIdList)
-			if err != nil {
-				br.Msg = "获取失败"
-				br.ErrMsg = "获取所有有权限的图表失败,Err:" + err.Error()
-				return
-			}
-			for _, tmpChartInfo := range tmpChartList {
-				chartInfoMap[tmpChartInfo.ChartInfoId] = tmpChartInfo
+		for _, v := range collectList {
+			collectIdList, ok := collectEdbMap[v.ChartInfoId]
+			if !ok {
+				collectIdList = make([]int, 0)
 			}
-			for _, v := range searchList {
-				// 图表权限
-				chartViewInfo, ok := chartInfoMap[v.ChartInfoId]
-				if !ok {
-					continue
-				}
-				v.IsJoinPermission = chartViewInfo.IsJoinPermission
+			collectEdbMap[v.ChartInfoId] = append(collectIdList, v.ChartCollectClassifyId)
+
+			collectNameList, ok := collectNameEdbMap[v.ChartInfoId]
+			if !ok {
+				collectNameList = make([]string, 0)
 			}
+			collectNameEdbMap[v.ChartInfoId] = append(collectNameList, v.ClassifyName)
 		}
 
-		// 已授权图表和分类id
-		permissionChartIdList, permissionClassifyIdList, err := data_manage_permission.GetUserChartAndClassifyPermissionList(sysUser.AdminId, 0, 0)
+	}
+
+	// 图表
+	{
+		// 当前列表中的图表map
+		chartInfoMap := make(map[int]*data_manage.ChartInfo)
+		tmpChartList, err := data_manage.GetChartInfoByIdList(chartInfoIdList)
 		if err != nil {
 			br.Msg = "获取失败"
-			br.ErrMsg = "已授权图表和分类id失败,Err:" + err.Error()
+			br.ErrMsg = "获取所有有权限的图表失败,Err:" + err.Error()
 			return
 		}
-
+		for _, tmpChartInfo := range tmpChartList {
+			chartInfoMap[tmpChartInfo.ChartInfoId] = tmpChartInfo
+		}
 		for _, v := range searchList {
-			tmp := new(data_manage.ChartInfoMore)
-			tmp.ChartInfo = *v
-			//判断是否需要展示英文标识
-			if edbTmpList, ok := chartEdbMap[v.ChartInfoId]; ok {
-				tmp.IsEnChart = data.CheckIsEnChart(v.ChartNameEn, edbTmpList, v.Source, v.ChartType)
+			if collectIdList, ok := collectEdbMap[v.ChartInfoId]; ok {
+				v.CollectClassifyIdList = collectIdList
+			} else {
+				v.CollectClassifyIdList = []int{}
 			}
 
-			// 图表权限
-			if currClassify, ok := chartClassifyMap[v.ChartClassifyId]; ok {
-				tmp.HaveOperaAuth = data_manage_permission.CheckChartPermissionByPermissionIdList(v.IsJoinPermission, currClassify.IsJoinPermission, v.ChartInfoId, v.ChartClassifyId, permissionChartIdList, permissionClassifyIdList)
+			if collectNameList, ok := collectNameEdbMap[v.ChartInfoId]; ok {
+				v.CollectClassifyNameList = collectNameList
+			} else {
+				v.CollectClassifyNameList = []string{}
 			}
 
-			finalList = append(finalList, tmp)
+			// 图表权限
+			if chartViewInfo, ok := chartInfoMap[v.ChartInfoId]; ok {
+				v.IsJoinPermission = chartViewInfo.IsJoinPermission
+			}
+			v.HaveOperaAuth = true
 		}
 	}
-	//新增搜索词记录
-	{
-		searchKeyword := new(data_manage.SearchKeyword)
-		searchKeyword.KeyWord = keyword
-		searchKeyword.CreateTime = time.Now()
-		go data_manage.AddSearchKeyword(searchKeyword)
-	}
 
 	page := paging.GetPaging(currentIndex, pageSize, int(total))
-	resp := data_manage.ChartInfoListByEsResp{
+	resp = data_manage.ChartInfoListByEsRespV2{
 		Paging: page,
-		List:   finalList,
+		List:   searchList,
 	}
 	br.Ret = 200
 	br.Success = true

+ 0 - 13
controllers/data_manage/edb_info.go

@@ -1887,12 +1887,6 @@ func (this *EdbInfoController) EdbInfoFilterByEs() {
 		}
 	}
 
-	var keyWordArr []string
-	keyWordArr = append(keyWordArr, keyWord)
-
-	newKeyWord := strings.Split(keyWord, " ")
-	keyWordArr = append(keyWordArr, newKeyWord...)
-
 	sortMap := make(map[string]string)
 	// 如果没有搜索关键词,则默认根据指标编码倒序排序
 	if keyWord == `` {
@@ -2024,13 +2018,6 @@ func (this *EdbInfoController) EdbInfoFilterByEs() {
 			}
 		}
 	}
-	//新增搜索词记录
-	{
-		searchKeyword := new(data_manage.SearchKeyword)
-		searchKeyword.KeyWord = keyWord
-		searchKeyword.CreateTime = time.Now()
-		go data_manage.AddSearchKeyword(searchKeyword)
-	}
 
 	// 不返回无权限的指标
 	respList := make([]*data_manage.EdbInfoList, 0)

+ 14 - 0
models/data_manage/chart_classify.go

@@ -547,6 +547,20 @@ func UpdateChartClassifyNameAndNamePathByOldClassifyIdPath(oldClassifyIdPath, ne
 	return
 }
 
+func GetChildChartClassifyListByParentId(classifyIdPath, orderStr string) (items []*ChartClassifyItems, err error) {
+	o := global.DmSQL["data"]
+	sql := ` SELECT * FROM chart_classify WHERE chart_classify_id_path like ? `
+	if orderStr != "" {
+		sql += orderStr
+	} else {
+		sql += ` order by level desc, sort asc, chart_classify_id asc`
+	}
+
+	err = o.Raw(sql, classifyIdPath).Scan(&items).Error
+
+	return
+}
+
 type ChartClassifyItemList []*ChartClassifyItems
 
 func (m ChartClassifyItemList) Len() int {

+ 23 - 0
models/data_manage/chart_edb_mapping.go

@@ -97,6 +97,29 @@ func GetChartEdbMappingListByChartInfoIds(chartInfoIds string) (list []*ChartEdb
 	return
 }
 
+func GetChartEdbMappingListByChartInfoIdList(chartInfoIdList []int) (list []*ChartEdbInfoMapping, err error) {
+	if len(chartInfoIdList) <= 0 {
+		return
+	}
+	o := global.DmSQL["data"]
+	sql := ` SELECT a.*,b.source_name,b.source,b.sub_source,b.edb_code,b.edb_name,b.edb_name_en,b.frequency,b.unit,b.unit_en,b.start_date,b.end_date,b.modify_time,b.latest_date,b.latest_value,b.unique_code,b.edb_info_type AS edb_info_category_type,b.edb_type,b.classify_id,b.is_join_permission
+             FROM chart_edb_mapping AS a
+			 INNER JOIN edb_info AS b ON a.edb_info_id=b.edb_info_id
+			 WHERE chart_info_id in (?) 
+             ORDER BY chart_edb_mapping_id ASC `
+	err = o.Raw(sql, chartInfoIdList).Scan(&list).Error
+	if err != nil {
+		return
+	}
+
+	// 日期格式转换
+	for _, v := range list {
+		v.ConvertToResp()
+	}
+
+	return
+}
+
 func GetChartEdbMappingListByEdbInfoId(edbInfoStr string) (list []*ChartEdbInfoMapping, err error) {
 	o := global.DmSQL["data"]
 	sql := ` SELECT edb_info_id,source_name,source,sub_source,edb_code,edb_name,edb_name_en,frequency,unit,unit_en,start_date,end_date,modify_time,latest_date,latest_value,unique_code,edb_info_type AS edb_info_category_type,max_value,min_value,edb_type,classify_id,is_join_permission

+ 31 - 23
models/data_manage/chart_info.go

@@ -1998,29 +1998,31 @@ type ChartInfoView struct {
 	BarConfig         string               `description:"柱方图的配置,json数据" json:"-"`
 	Source            int                  `description:"1:ETA图库;2:商品价格曲线;3:相关性图表"`
 	//CorrelationLeadUnit string `description:"相关性图表-领先单位"`
-	ExtraConfig            string          `description:"图表额外配置,json数据"`
-	ChartSource            string          `description:"图表来源str"`
-	ChartSourceEn          string          `description:"图表来源(英文)"`
-	Button                 ChartViewButton `gorm:"-" description:"操作按钮"`
-	SeasonExtraConfig      string          `description:"季节性图表中的配置,json数据"`
-	StartYear              int             `description:"当选择的日期类型为最近N年类型时,即date_type=20, 用start_year表示N"`
-	ChartThemeId           int             `description:"图表应用主题ID"`
-	ChartThemeStyle        string          `description:"图表应用主题样式"`
-	SourcesFrom            string          `description:"图表来源"`
-	Instructions           string          `description:"图表说明"`
-	MarkersLines           string          `description:"标识线"`
-	MarkersAreas           string          `description:"标识区"`
-	IsJoinPermission       int             `description:"是否加入权限管控,0:不加入;1:加入;默认:0"`
-	HaveOperaAuth          bool            `description:"是否有数据权限,默认:false"`
-	ForumChartInfoId       int             `description:"社区的图表ID"`
-	ChartAlias             string          `description:"图表别名"`
-	SharedUserIdList       []int           `description:"共享用户id列表" gorm:"-"`
-	SharedUserName         string          `description:"共享用户姓名,多个用英文,隔开" gorm:"-"`
-	PublicStatus           int             `description:"公开状态;0:未公开;1:审批中;2:已驳回;3:已公开"`
-	ChartPublicClassifyId  int             `description:"图表公开分类id"`
-	PublicTime             time.Time       `description:"设置公开的时间"`
-	ClassifyNamePath       string          `description:"分类完整路径"`
-	PublicClassifyNamePath string          `description:"公共分类完整路径"`
+	ExtraConfig             string          `description:"图表额外配置,json数据"`
+	ChartSource             string          `description:"图表来源str"`
+	ChartSourceEn           string          `description:"图表来源(英文)"`
+	Button                  ChartViewButton `gorm:"-" description:"操作按钮"`
+	SeasonExtraConfig       string          `description:"季节性图表中的配置,json数据"`
+	StartYear               int             `description:"当选择的日期类型为最近N年类型时,即date_type=20, 用start_year表示N"`
+	ChartThemeId            int             `description:"图表应用主题ID"`
+	ChartThemeStyle         string          `description:"图表应用主题样式"`
+	SourcesFrom             string          `description:"图表来源"`
+	Instructions            string          `description:"图表说明"`
+	MarkersLines            string          `description:"标识线"`
+	MarkersAreas            string          `description:"标识区"`
+	IsJoinPermission        int             `description:"是否加入权限管控,0:不加入;1:加入;默认:0"`
+	HaveOperaAuth           bool            `description:"是否有数据权限,默认:false"`
+	ForumChartInfoId        int             `description:"社区的图表ID"`
+	ChartAlias              string          `description:"图表别名"`
+	SharedUserIdList        []int           `description:"共享用户id列表" gorm:"-"`
+	SharedUserName          string          `description:"共享用户姓名,多个用英文,隔开" gorm:"-"`
+	PublicStatus            int             `description:"公开状态;0:未公开;1:审批中;2:已驳回;3:已公开"`
+	ChartPublicClassifyId   int             `description:"图表公开分类id"`
+	PublicTime              time.Time       `description:"设置公开的时间"`
+	ClassifyNamePath        string          `description:"分类完整路径"`
+	PublicClassifyNamePath  string          `description:"公共分类完整路径"`
+	CollectClassifyIdList   []int           `description:"所属收藏分类id列表" gorm:"-"`
+	CollectClassifyNameList []string        `description:"所属收藏分类名称列表" gorm:"-"`
 }
 
 type ChartViewButton struct {
@@ -2122,6 +2124,12 @@ type ChartInfoListByEsResp struct {
 	List   []*ChartInfoMore
 }
 
+// ChartInfoListByEsRespV2 图表数据Es搜索返回
+type ChartInfoListByEsRespV2 struct {
+	Paging *paging.PagingItem
+	List   []*ChartInfoView
+}
+
 // GetChartInfoListByCondition 根据条件获取图表数据了列表
 func GetChartInfoListByCondition(condition string, pars []interface{}, startSize, pageSize int) (items []*ChartInfo, err error) {
 	o := global.DmSQL["data"]

+ 3 - 3
models/data_manage/public_chart_classify.go

@@ -278,7 +278,7 @@ func (m *ChartPublicClassify) BatchesDel(classifyIdList []int) (err error) {
 	return
 }
 
-func (m *ChartPublicClassify) GetChildClassifyListByParentId(classifyIdPath, orderStr string) (items []*EdbPublicClassify, err error) {
+func (m *ChartPublicClassify) GetChildClassifyListByParentId(classifyIdPath, orderStr string) (items []*ChartPublicClassify, err error) {
 	o := global.DmSQL["data"]
 	sql := ` SELECT * FROM chart_public_classify WHERE chart_public_classify_id_path like ? `
 	if orderStr != "" {
@@ -297,10 +297,10 @@ func (m *ChartPublicClassify) GetChildClassifyListByParentId(classifyIdPath, ord
 // @author: Roc
 // @datetime 2024-12-02 15:14:13
 // @param parentId int
-// @return targetList []*data_manage.EdbClassifyItems
+// @return targetList []*data_manage.ChartPublicClassify
 // @return err error
 // @return errMsg string
-func (m *ChartPublicClassify) GetAllChildClassifyByParentId(parentId int) (targetList []*EdbPublicClassify, err error, errMsg string) {
+func (m *ChartPublicClassify) GetAllChildClassifyByParentId(parentId int) (targetList []*ChartPublicClassify, err error, errMsg string) {
 	//判断是否是挂在顶级目录下
 	parentClassify, err := m.GetChartClassifyById(parentId)
 	if err != nil {

+ 28 - 0
services/data/chart_classify.go

@@ -1475,3 +1475,31 @@ func GetChartClassifyChildIds(classifyId int, classifymap map[int]*data_manage.C
 		}
 	}
 }
+
+// GetAllChartChildClassifyByParentId
+// @Description: 根据上级id获取所有的下级id
+// @author: Roc
+// @datetime 2024-12-02 15:14:13
+// @param parentId int
+// @return targetList []*data_manage.EdbClassifyItems
+// @return err error
+// @return errMsg string
+func GetAllChartChildClassifyByParentId(parentId int) (targetList []*data_manage.ChartClassifyItems, err error, errMsg string) {
+	//判断是否是挂在顶级目录下
+	parentClassify, err := data_manage.GetChartClassifyById(parentId)
+	if err != nil {
+		if utils.IsErrNoRow(err) {
+			errMsg = "当前分类不存在"
+			err = errors.New(errMsg)
+			return
+		}
+		errMsg = "获取失败"
+		err = errors.New("获取分类信息失败,Err:" + err.Error())
+		return
+	}
+	orderStr := ` order by level asc, sort asc, classify_id asc`
+
+	targetList, err = data_manage.GetChildChartClassifyListByParentId(fmt.Sprint(parentClassify.ChartClassifyIdPath, ",%"), orderStr)
+
+	return
+}

+ 1 - 1
services/data/chart_info_elastic.go

@@ -69,7 +69,7 @@ func DeleteChartInfoToEs(chartInfoId int) {
 
 // EsSearchChartInfo 搜索图表信息
 func EsSearchChartInfo(keyword string, showSysId int, sourceList []int, noPermissionChartIdList []int, startSize, pageSize int) (list []*data_manage.ChartInfo, total int64, err error) {
-	list, total, err = elastic.SearchChartInfoData(utils.CHART_INDEX_NAME, keyword, showSysId, sourceList, noPermissionChartIdList, startSize, pageSize)
+	list, total, err = elastic.SearchChartInfoData(keyword, showSysId, sourceList, noPermissionChartIdList, startSize, pageSize)
 	return
 }
 

+ 100 - 2
services/elastic/chart.go

@@ -33,8 +33,8 @@ func AddOrEditChartInfoToEsData(indexName, docId string, item *data_manage.Chart
 	return
 }
 
-// SearchChartInfoData 查询es中的图表数据
-func SearchChartInfoData(indexName, keywordStr string, showSysId int, sourceList []int, noPermissionChartIdList []int, from, size int) (list []*data_manage.ChartInfo, total int64, err error) {
+func SearchChartInfoData(keywordStr string, showSysId int, sourceList []int, noPermissionChartIdList []int, from, size int) (list []*data_manage.ChartInfo, total int64, err error) {
+	indexName := utils.CHART_INDEX_NAME
 	list = make([]*data_manage.ChartInfo, 0)
 	defer func() {
 		if err != nil {
@@ -525,3 +525,101 @@ func searchChartInfoDataList(indexName string, query elastic.Query, sortList []*
 
 	return
 }
+
+// SearchChartInfoDataV2 查询es中的图表数据
+func SearchChartInfoDataV2(keywordStr string, showSysId, chartAuth int, sourceList []int, collectChartInfoIdList, searchClassifyIdList, searchPublicClassifyIdList []int, sortMap map[string]string, from, size int) (total int64, list []*data_manage.ChartInfoView, err error) {
+	indexName := utils.CHART_INDEX_NAME
+
+	list = make([]*data_manage.ChartInfoView, 0)
+	defer func() {
+		if err != nil {
+			fmt.Println("EsAddOrEditData Err:", err.Error())
+		}
+	}()
+
+	query := elastic.NewBoolQuery()
+
+	//图表来源
+	if len(sourceList) > 0 {
+		termsList := make([]interface{}, 0)
+		for _, v := range sourceList {
+			termsList = append(termsList, v)
+		}
+		query = query.Must(elastic.NewTermsQuery("Source", termsList...))
+	}
+
+	// collectChartInfoIdList 指定的图表id
+	if len(collectChartInfoIdList) > 0 {
+		termsList := make([]interface{}, 0)
+		for _, v := range collectChartInfoIdList {
+			termsList = append(termsList, v)
+		}
+		query = query.Must(elastic.NewTermsQuery("ChartInfoId", termsList...))
+	}
+
+	// classifyIdList 指定分类下的图表
+	if len(searchClassifyIdList) > 0 {
+		termsList := make([]interface{}, 0)
+		for _, v := range searchClassifyIdList {
+			termsList = append(termsList, v)
+		}
+		query = query.Must(elastic.NewTermsQuery("ChartClassifyId", termsList...))
+	}
+
+	// publicClassifyIdList 指定公共分类下的图表
+	if len(searchPublicClassifyIdList) > 0 {
+		termsList := make([]interface{}, 0)
+		for _, v := range searchPublicClassifyIdList {
+			termsList = append(termsList, v)
+		}
+		query = query.Must(elastic.NewTermsQuery("ChartPublicClassifyId", termsList...))
+	}
+
+	// 图表名称、编码匹配
+	if keywordStr != `` {
+		// 默认使用中文名字字段去匹配
+		keywordNameKey := `ChartName`
+		query = query.Must(elastic.NewMatchQuery(keywordNameKey, keywordStr))
+	}
+
+	// 图表与用户的权限匹配
+	{
+		//图表权限范围,0-全部;1-我的;2-公共
+		switch chartAuth {
+		case 1:
+			// 自己的图表
+			query = query.Must(elastic.NewTermQuery(`SysUserId`, showSysId))
+		case 2:
+			// 公开的图表
+			query = query.Must(elastic.NewTermQuery(`PublicStatus`, utils.DataPublicSuccess))
+		default:
+			tmpShouldQuery := elastic.NewBoolQuery()
+			// 自己的图表
+			tmpShouldQuery = tmpShouldQuery.Should(elastic.NewTermQuery(`SysUserId`, showSysId))
+			// 分享给我的图表
+			tmpShouldQuery = tmpShouldQuery.Should(elastic.NewTermsQuery(`SharedUserIdList`, showSysId))
+			//公开的图表
+			tmpShouldQuery = tmpShouldQuery.Should(elastic.NewTermQuery(`PublicStatus`, utils.DataPublicSuccess))
+			//shouldQuery = shouldQuery.Should(tmpShouldQuery)
+			query = query.Must(tmpShouldQuery)
+		}
+	}
+
+	// 排序
+	sortList := make([]*elastic.FieldSort, 0)
+	// 如果没有关键字,那么就走图表id倒序
+
+	for orderKey, orderType := range sortMap {
+		switch orderType {
+		case "asc":
+			sortList = append(sortList, elastic.NewFieldSort(orderKey).Asc())
+		case "desc":
+			sortList = append(sortList, elastic.NewFieldSort(orderKey).Desc())
+
+		}
+
+	}
+
+	return searchChartInfoData(indexName, query, sortList, from, size)
+
+}