Răsfoiți Sursa

feat:新增刷新图表接口

Roc 1 an în urmă
părinte
comite
92c9e0bd0e

+ 482 - 0
controllers/data_manage/cross_variety/chart_info.go

@@ -859,6 +859,488 @@ func (c *ChartInfoController) Move() {
 	br.Msg = "移动成功"
 }
 
+// Refresh
+// @Title 图表刷新接口
+// @Description 图表刷新接口
+// @Param   ChartInfoId   query   int  true       "图表id"
+// @Param   UniqueCode   query   string  true       "唯一code"
+// @Success Ret=200 刷新成功
+// @router /chart_info/refresh [get]
+func (c *ChartInfoController) Refresh() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		c.Data["json"] = br
+		c.ServeJSON()
+	}()
+	sysUser := c.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+	chartInfoId, _ := c.GetInt("ChartInfoId")
+	uniqueCode := c.GetString("UniqueCode")
+	if chartInfoId <= 0 && uniqueCode == `` {
+		br.Msg = "参数错误"
+		br.ErrMsg = "参数错误:chartInfoId:" + strconv.Itoa(chartInfoId) + ",UniqueCode:" + uniqueCode
+		return
+	}
+
+	var chartInfo *data_manage.ChartInfo
+	var err error
+	if chartInfoId > 0 {
+		chartInfo, err = data_manage.GetChartInfoById(chartInfoId)
+	} else {
+		chartInfo, err = data_manage.GetChartInfoByUniqueCode(uniqueCode)
+	}
+	if err != nil {
+		if err.Error() == utils.ErrNoRow() {
+			br.Msg = "图表已被删除,无需刷新"
+			br.ErrMsg = "获取指标信息失败,Err:" + err.Error()
+			return
+		}
+		br.Msg = "刷新失败"
+		br.ErrMsg = "获取图表信息失败,Err:" + err.Error()
+		return
+	}
+
+	var config request.ChartConfigReq
+	err = json.Unmarshal([]byte(chartInfo.ExtraConfig), &config)
+	if err != nil {
+		br.Msg = "解析跨品种分析配置失败"
+		br.ErrMsg = "解析跨品种分析配置失败,Err:" + err.Error()
+		return
+	}
+
+	// 获取关联的指标信息
+	_, _, edbInfoIdList, err := cross_variety.GetXYEdbIdList(config.TagX, config.TagY, config.VarietyList)
+	if err != nil {
+		br.Msg = "刷新失败,获取指标信息失败"
+		br.ErrMsg = "刷新失败,获取指标信息失败,Err:" + err.Error()
+		return
+	}
+
+	// 批量刷新
+	err, isAsync := data.EdbInfoRefreshAllFromBaseV3(edbInfoIdList, false, false)
+	if err != nil {
+		return
+	}
+
+	//清除图表缓存
+	{
+		key := utils.HZ_CHART_LIB_DETAIL + chartInfo.UniqueCode
+		_ = utils.Rc.Delete(key)
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "刷新成功"
+	if isAsync {
+		br.Msg = "图表关联指标较多,请10分钟后刷新页面查看最新数据"
+	}
+}
+
+// EnInfoEdit
+// @Title 编辑图表英文信息接口
+// @Description 编辑图表英文信息接口
+// @Param	request	body data_manage.EditChartEnInfoReq true "type json string"
+// @Success Ret=200 编辑成功
+// @router /chart_info/en/edit [post]
+func (c *ChartInfoController) EnInfoEdit() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		c.Data["json"] = br
+		c.ServeJSON()
+	}()
+	sysUser := c.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+	var req request.EditChartEnInfoReq
+	err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	req.ChartNameEn = strings.Trim(req.ChartNameEn, " ")
+	if req.ChartInfoId <= 0 {
+		br.Msg = "请选择图表"
+		return
+	}
+	if req.ChartNameEn == "" {
+		br.Msg = "请输入英文图表名称"
+		return
+	}
+
+	//判断指标名称是否存在
+	chartItem, err := data_manage.GetChartInfoById(req.ChartInfoId)
+	if err != nil {
+		if err.Error() == utils.ErrNoRow() {
+			br.Msg = "图表已被删除,请刷新页面"
+			br.ErrMsg = "图表已被删除,请刷新页面"
+			return
+		}
+		br.Msg = "获取图表信息失败"
+		br.ErrMsg = "获取图表信息失败,Err:" + err.Error()
+		return
+	}
+
+	// 校验名称是否有重复
+	{
+		var condition string
+		var pars []interface{}
+		condition += " AND chart_info_id <> ?  AND chart_name_en = ? AND source = ?"
+		pars = append(pars, req.ChartInfoId, req.ChartNameEn, utils.CHART_SOURCE_CROSS_HEDGING)
+		existItem, err := data_manage.GetChartInfoByCondition(condition, pars)
+		if err != nil {
+			if err.Error() != utils.ErrNoRow() {
+				br.Msg = "判断英文图表名称是否存在失败"
+				br.ErrMsg = "判断英文图表名称是否存在失败,Err:" + err.Error()
+				return
+			}
+		}
+		if err == nil && existItem.ChartInfoId > 0 {
+			br.Msg = existItem.ChartName + ":" + req.ChartNameEn + "图表名称已存在"
+			return
+		}
+	}
+
+	chartItem.ChartNameEn = req.ChartNameEn
+	chartItem.ModifyTime = time.Now().Local()
+	if e := chartItem.Update([]string{"ChartNameEn", "ModifyTime"}); e != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "更新图表信息失败, Err: " + e.Error()
+		return
+	}
+
+	//添加es数据
+	go data.EsAddOrEditChartInfo(chartItem.ChartInfoId)
+	//修改my eta es数据
+	go data.EsAddOrEditMyChartInfoByChartInfoId(chartItem.ChartInfoId)
+
+	//指标 修改es信息
+	//go data.AddOrEditEdbInfoToEs(edbInfo.EdbInfoId)
+
+	//新增操作日志
+	{
+		chartLog := new(data_manage.ChartInfoLog)
+		chartLog.ChartName = chartItem.ChartName
+		chartLog.ChartInfoId = req.ChartInfoId
+		chartLog.ChartClassifyId = chartItem.ChartClassifyId
+		chartLog.SysUserId = sysUser.AdminId
+		chartLog.SysUserRealName = sysUser.RealName
+		chartLog.UniqueCode = chartItem.UniqueCode
+		chartLog.CreateTime = time.Now()
+		chartLog.Content = string(c.Ctx.Input.RequestBody)
+		chartLog.Status = "编辑跨品种分析图表英文信息"
+		chartLog.Method = c.Ctx.Input.URL()
+		go data_manage.AddChartInfoLog(chartLog)
+	}
+	// 清除缓存
+	if utils.Re == nil && utils.Rc != nil {
+		_ = utils.Rc.Delete(utils.HZ_CHART_LIB_DETAIL + chartItem.UniqueCode) //图表分享链接缓存
+		_ = utils.Rc.Delete(data.GetChartInfoDataKey(req.ChartInfoId))
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "编辑成功"
+	br.IsAddLog = true
+}
+
+// DeleteChartClassify
+// @Title 删除跨品种分析分类/图表
+// @Description 删除跨品种分析分类/图表接口
+// @Param	request	body data_manage.DeleteChartClassifyReq true "type json string"
+// @Success 200 Ret=200 删除成功
+// @router /chart_info/delete [post]
+func (c *ChartInfoController) DeleteChartClassify() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		c.Data["json"] = br
+		c.ServeJSON()
+	}()
+
+	sysUser := c.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+
+	var req data_manage.DeleteChartClassifyReq
+	err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+
+	if req.ChartInfoId <= 0 {
+		br.Msg = "请选择图表"
+		br.IsSendEmail = false
+		return
+	}
+
+	resp := new(data_manage.AddChartInfoResp)
+	//删除图表
+	chartInfo, err := data_manage.GetChartInfoById(req.ChartInfoId)
+	if err != nil {
+		if err.Error() == utils.ErrNoRow() {
+			br.Msg = "图表已删除,请刷新页面"
+			br.ErrMsg = "指标不存在,Err:" + err.Error()
+			return
+		} else {
+			br.Msg = "删除失败"
+			br.ErrMsg = "删除失败,获取指标信息失败,Err:" + err.Error()
+			return
+		}
+	}
+	if chartInfo == nil {
+		br.Msg = "图表已删除,请刷新页面"
+		return
+	}
+	//图表操作权限
+	ok := data.CheckOpChartPermission(sysUser, chartInfo.SysUserId)
+	if !ok {
+		br.Msg = "没有该图表的操作权限"
+		br.ErrMsg = "没有该图表的操作权限"
+		return
+	}
+
+	myIds := make([]int, 0)
+	{
+		// 获取引用该图表的MyCharts, 用于ES删除
+		var myCond string
+		var myPars []interface{}
+		myCond += ` AND a.chart_info_id = ? `
+		myPars = append(myPars, req.ChartInfoId)
+		myCharts, e := data_manage.GetMyChartListGroupByCharyInfoIdAndAdminIdByCondition(myCond, myPars)
+		if e != nil {
+			br.Msg = "删除失败"
+			br.ErrMsg = "获取引用图表的MyChats失败, Err: " + e.Error()
+			return
+		}
+		for _, m := range myCharts {
+			myIds = append(myIds, m.MyChartId)
+		}
+	}
+	//删除图表及关联指标
+	err = data_manage.DeleteChartInfoAndData(chartInfo.ChartInfoId)
+	if err != nil {
+		br.Msg = "删除失败"
+		br.ErrMsg = "删除失败,Err:" + err.Error()
+		return
+	}
+	//删除ES
+	{
+		go data.EsDeleteChartInfo(chartInfo.ChartInfoId)
+		// 删除MY ETA 图表 es数据
+		go data.EsDeleteMyChartInfoByMyChartIds(myIds)
+	}
+
+	source := chartInfo.Source // 跨品种分析
+	var condition string
+	var pars []interface{}
+	condition += " AND chart_classify_id=? AND source = ? "
+	pars = append(pars, chartInfo.ChartClassifyId, source)
+
+	condition += " AND chart_info_id>? ORDER BY create_time ASC LIMIT 1 "
+	pars = append(pars, req.ChartInfoId)
+
+	nextItem, err := data_manage.GetChartInfoByCondition(condition, pars)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		br.Msg = "删除失败"
+		br.ErrMsg = "获取下一级图库信息失败,Err:" + err.Error()
+		return
+	}
+
+	if nextItem != nil {
+		resp.UniqueCode = nextItem.UniqueCode
+		resp.ChartInfoId = nextItem.ChartInfoId
+	} else {
+		var tmpCondition string
+		var tmpPars []interface{}
+
+		tmpCondition += " AND level=1 "
+		//pars = append(pars, chartInfo.ChartClassifyId)
+
+		tmpCondition += " AND chart_classify_id>? ORDER BY chart_classify_id ASC LIMIT 1 "
+		tmpPars = append(tmpPars, chartInfo.ChartClassifyId)
+
+		classifyItem, err := data_manage.GetChartClassifyByCondition(tmpCondition, tmpPars)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			br.Msg = "删除失败"
+			br.ErrMsg = "获取下一级图库分类信息失败,Err:" + err.Error()
+			return
+		}
+		if classifyItem != nil {
+			nextItem, err = data_manage.GetNextChartInfo(chartInfo.ChartClassifyId)
+			if err != nil && err.Error() != utils.ErrNoRow() {
+				br.Msg = "删除失败"
+				br.ErrMsg = "获取下一级图库信息失败,Err:" + err.Error()
+				return
+			}
+			if nextItem != nil {
+				resp.UniqueCode = nextItem.UniqueCode
+				resp.ChartInfoId = nextItem.ChartInfoId
+			}
+		}
+	}
+	//新增操作日志
+	{
+		chartLog := new(data_manage.ChartInfoLog)
+		chartLog.ChartName = chartInfo.ChartName
+		chartLog.ChartInfoId = req.ChartInfoId
+		chartLog.ChartClassifyId = chartInfo.ChartClassifyId
+		chartLog.SysUserId = sysUser.AdminId
+		chartLog.SysUserRealName = sysUser.RealName
+		chartLog.UniqueCode = chartInfo.UniqueCode
+		chartLog.CreateTime = time.Now()
+		chartLog.Content = string(c.Ctx.Input.RequestBody)
+		chartLog.Status = "删除图表"
+		chartLog.Method = c.Ctx.Input.URI()
+		go data_manage.AddChartInfoLog(chartLog)
+	}
+
+	br.Ret = 200
+	br.Msg = "删除成功"
+	br.Success = true
+	br.Data = resp
+	br.IsAddLog = true
+}
+
+// SearchByEs
+// @Title 图表模糊搜索(从es获取)
+// @Description  图表模糊搜索(从es获取)
+// @Param   Keyword   query   string  true       "图表名称"
+// @Param   IsShowMe   query   bool  true       "是否只看我的,true、false"
+// @Param   Source   query   int  true       "来源,3:拟合方程,4:滚动拟合方程,默认0:全部"
+// @Success 200 {object} data_manage.ChartInfo
+// @router /chart_info/search_by_es [get]
+func (c *ChartInfoController) SearchByEs() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		c.Data["json"] = br
+		c.ServeJSON()
+	}()
+
+	sysUser := c.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+	pageSize, _ := c.GetInt("PageSize")
+	currentIndex, _ := c.GetInt("CurrentIndex")
+
+	var startSize int
+	if pageSize <= 0 {
+		pageSize = utils.PageSize20
+	}
+	if currentIndex <= 0 {
+		currentIndex = 1
+	}
+	startSize = paging.StartIndex(currentIndex, pageSize)
+
+	keyword := c.GetString("Keyword")
+
+	//只看我的
+	isShowMe, _ := c.GetBool("IsShowMe")
+	showSysId := 0
+	if isShowMe {
+		showSysId = sysUser.AdminId
+	}
+
+	sourceList := []int{utils.CHART_SOURCE_CROSS_HEDGING}
+
+	var searchList []*data_manage.ChartInfo
+	var total int64
+	var err error
+
+	// 获取当前账号的不可见指标
+	noPermissionChartIdList := make([]int, 0)
+	{
+		obj := data_manage.EdbInfoNoPermissionAdmin{}
+		confList, err := obj.GetAllChartListByAdminId(c.SysUser.AdminId)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取不可见指标配置数据失败,Err:" + err.Error()
+			return
+		}
+		for _, v := range confList {
+			noPermissionChartIdList = append(noPermissionChartIdList, v.ChartInfoId)
+		}
+	}
+
+	if keyword != "" {
+		searchList, total, err = data.EsSearchChartInfo(keyword, showSysId, sourceList, noPermissionChartIdList, startSize, pageSize)
+	} else {
+		total, searchList, err = data_manage.ChartInfoSearchByEmptyKeyWord(showSysId, sourceList, noPermissionChartIdList)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取图表信息失败,Err:" + err.Error()
+			return
+		}
+	}
+
+	finalList := make([]*data_manage.ChartInfoMore, 0)
+	if len(searchList) > 0 {
+		chartInfoIds := ""
+		chartEdbMap := make(map[int][]*data_manage.ChartEdbInfoMapping)
+		for _, v := range searchList {
+			chartInfoIds += strconv.Itoa(v.ChartInfoId) + ","
+		}
+		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 searchList {
+			tmp := new(data_manage.ChartInfoMore)
+			tmp.ChartInfo = *v
+			//判断是否需要展示英文标识
+			if _, ok := chartEdbMap[v.ChartInfoId]; ok {
+				tmp.IsEnChart = data.CheckIsEnChart(v.ChartNameEn, []*data_manage.ChartEdbInfoMapping{}, v.Source, v.ChartType)
+			}
+			finalList = append(finalList, tmp)
+		}
+	}
+	//新增搜索词记录
+	{
+		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{
+		Paging: page,
+		List:   finalList,
+	}
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}
+
 // GetChartInfoDetailFromUniqueCode 根据编码获取图表详情
 func GetChartInfoDetailFromUniqueCode(chartInfo *data_manage.ChartInfoView, isCache bool, sysUser *system.Admin) (resp *data_manage.ChartInfoDetailFromUniqueCodeResp, isOk bool, msg, errMsg string) {
 	resp = new(data_manage.ChartInfoDetailFromUniqueCodeResp)

+ 7 - 0
models/data_manage/cross_variety/request/chart.go

@@ -55,3 +55,10 @@ type CopyAddChartInfoReq struct {
 	ChartInfoId int    `description:"待复制的图表id"`
 	ChartName   string `description:"图表名称"`
 }
+
+// EditChartEnInfoReq
+// @Description: 编辑图表英文信息
+type EditChartEnInfoReq struct {
+	ChartInfoId int    `description:"图表ID"`
+	ChartNameEn string `description:"英文图表名称"`
+}

+ 36 - 0
routers/commentsRouter.go

@@ -196,6 +196,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/cross_variety:ChartInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/cross_variety:ChartInfoController"],
+        beego.ControllerComments{
+            Method: "DeleteChartClassify",
+            Router: `/chart_info/delete`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/cross_variety:ChartInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/cross_variety:ChartInfoController"],
         beego.ControllerComments{
             Method: "Detail",
@@ -214,6 +223,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/cross_variety:ChartInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/cross_variety:ChartInfoController"],
+        beego.ControllerComments{
+            Method: "EnInfoEdit",
+            Router: `/chart_info/en/edit`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/cross_variety:ChartInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/cross_variety:ChartInfoController"],
         beego.ControllerComments{
             Method: "List",
@@ -241,6 +259,24 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/cross_variety:ChartInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/cross_variety:ChartInfoController"],
+        beego.ControllerComments{
+            Method: "Refresh",
+            Router: `/chart_info/refresh`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/cross_variety:ChartInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/cross_variety:ChartInfoController"],
+        beego.ControllerComments{
+            Method: "SearchByEs",
+            Router: `/chart_info/search_by_es`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/cross_variety:ClassifyController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/cross_variety:ClassifyController"],
         beego.ControllerComments{
             Method: "DeleteChartClassify",

+ 58 - 22
services/data/cross_variety/chart.go

@@ -148,31 +148,10 @@ func GetChartData(chartInfoId int, config request.ChartConfigReq) (edbList []*da
 		return
 	}
 
-	xVarietyEdbMap := make(map[int]int)
-	yVarietyEdbMap := make(map[int]int)
-	xList, err := cross_varietyModel.GetChartTagVarietyListByTagAndVariety(config.TagX, config.VarietyList)
+	xVarietyEdbMap, yVarietyEdbMap, edbInfoIdList, err := GetXYEdbIdList(config.TagX, config.TagY, config.VarietyList)
 	if err != nil {
-		errMsg = "获取失败"
-		err = errors.New("获取X轴的品种指标配置信息失败,Err:" + err.Error())
-		return
-	}
-	yList, err := cross_varietyModel.GetChartTagVarietyListByTagAndVariety(config.TagY, config.VarietyList)
-	if err != nil {
-		errMsg = "获取失败"
-		err = errors.New("获取Y轴的品种指标配置信息失败,Err:" + err.Error())
 		return
 	}
-	edbInfoIdList := make([]int, 0)
-	for _, v := range xList {
-		edbInfoIdList = append(edbInfoIdList, v.EdbInfoId)
-		xVarietyEdbMap[v.ChartVarietyId] = v.EdbInfoId
-	}
-	for _, v := range yList {
-		edbInfoIdList = append(edbInfoIdList, v.EdbInfoId)
-		yVarietyEdbMap[v.ChartVarietyId] = v.EdbInfoId
-	}
-
-	// todo 需要取交集
 
 	if len(edbInfoIdList) <= 0 {
 		errMsg = "品种未配置指标"
@@ -411,6 +390,63 @@ func GetChartData(chartInfoId int, config request.ChartConfigReq) (edbList []*da
 	return
 }
 
+// GetXYEdbIdList
+// @Description: 根据标签id和品种获取指标列表信息
+// @author: Roc
+// @datetime 2023-11-27 14:31:23
+// @param tagX int
+// @param tagY int
+// @param varietyList []int
+// @return xVarietyEdbMap map[int]int
+// @return yVarietyEdbMap map[int]int
+// @return edbInfoIdList []int
+// @return errMsg string
+// @return err error
+func GetXYEdbIdList(tagX, tagY int, varietyList []int) (xVarietyEdbMap, yVarietyEdbMap map[int]int, edbInfoIdList []int, err error) {
+	edbInfoIdList = make([]int, 0)
+	xVarietyEdbMap = make(map[int]int)
+	yVarietyEdbMap = make(map[int]int)
+	xList, err := cross_varietyModel.GetChartTagVarietyListByTagAndVariety(tagX, varietyList)
+	if err != nil {
+		err = errors.New("获取X轴的品种指标配置信息失败,Err:" + err.Error())
+		return
+	}
+	yList, err := cross_varietyModel.GetChartTagVarietyListByTagAndVariety(tagY, varietyList)
+	if err != nil {
+		err = errors.New("获取Y轴的品种指标配置信息失败,Err:" + err.Error())
+		return
+	}
+
+	baseVarietyIdMap := make(map[int]int)
+	for _, v := range xList {
+		baseVarietyIdMap[v.ChartVarietyId] = v.ChartVarietyId
+	}
+
+	// 两个标签里面的品种并集
+	needVarietyIdMap := make(map[int]int)
+	for _, v := range yList {
+		if val, ok := baseVarietyIdMap[v.ChartVarietyId]; ok {
+			// 如果在 map2 中存在相同的键,则将键和值添加到结果中
+			needVarietyIdMap[v.ChartVarietyId] = val
+		}
+	}
+
+	for _, v := range xList {
+		if _, ok := needVarietyIdMap[v.ChartVarietyId]; ok {
+			xVarietyEdbMap[v.ChartVarietyId] = v.EdbInfoId
+			edbInfoIdList = append(edbInfoIdList, v.EdbInfoId)
+		}
+	}
+	for _, v := range yList {
+		if _, ok := needVarietyIdMap[v.ChartVarietyId]; ok {
+			yVarietyEdbMap[v.ChartVarietyId] = v.EdbInfoId
+			edbInfoIdList = append(edbInfoIdList, v.EdbInfoId)
+		}
+	}
+
+	return
+}
+
 // AddChartInfo
 // @Description: AddChartInfo
 // @author: Roc