Browse Source

fix:标签列表返回关联的品种数量

Roc 1 year ago
parent
commit
582f4b58ed

+ 20 - 3
controllers/data_manage/cross_variety/tag.go

@@ -276,15 +276,32 @@ func (c *TagController) List() {
 		c.ServeJSON()
 	}()
 	// 获取数据
-	list, err := cross_variety.GetTagList()
+	list, err := cross_variety.GetTagItemList()
 	if err != nil {
-		br.Msg = "保存失败"
-		br.ErrMsg = "保存失败,ERR:" + err.Error()
+		br.Msg = "获取标签失败"
+		br.ErrMsg = "获取标签失败,ERR:" + err.Error()
 		return
 	}
 	dataCount := len(list)
 	page := paging.GetPaging(1, dataCount, dataCount)
 
+	// 获取标签绑定的品种数量
+	tagTotalList, err := cross_variety.GetCountChartTagVarietyItemListByTag()
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取标签绑定的品种数量失败,ERR:" + err.Error()
+		return
+	}
+
+	tagTotalMap := make(map[int]int)
+	for _, v := range tagTotalList {
+		tagTotalMap[v.ChartTagId] = v.Total
+	}
+
+	for k, v := range list {
+		list[k].VarietyTotal = tagTotalMap[v.ChartTagId]
+	}
+
 	resp := response.TagListResp{
 		List:   list,
 		Paging: page,

+ 2 - 2
models/data_manage/cross_variety/chart_tag.go

@@ -125,7 +125,7 @@ type ChartTagItem struct {
 	ChartTagId      int       `orm:"column(chart_tag_id);pk"`
 	ChartTagName    string    `description:"标签名称"`
 	SysUserId       int       `description:"创建人id"`
-	HasData         bool      `description:"是否关联品种"`
+	VarietyTotal    int       `description:"配置关联品种的数量"`
 	SysUserRealName string    `description:"创建人姓名"`
 	ModifyTime      time.Time `description:"修改时间"`
 	CreateTime      time.Time `description:"创建时间"`
@@ -137,7 +137,7 @@ type ChartTagItem struct {
 // @datetime 2023-11-22 10:44:35
 // @return items []*ChartTag
 // @return err error
-func GetTagItemList() (items []*ChartTag, err error) {
+func GetTagItemList() (items []*ChartTagItem, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := `SELECT * FROM chart_tag WHERE 1 = 1 `
 	_, err = o.Raw(sql).QueryRows(&items)

+ 22 - 0
models/data_manage/cross_variety/chart_tag_variety.go

@@ -104,6 +104,28 @@ func GetChartTagVarietyItemListByTag(chartTagId int) (items []*ChartTagVarietyIt
 	return
 }
 
+// ChartTagVarietyCount
+// @Description: 签绑定的品种数量
+type ChartTagVarietyCount struct {
+	ChartTagId int `description:"标签id"`
+	Total      int `description:"标签配置的品种数量"`
+}
+
+// GetCountChartTagVarietyItemListByTag
+// @Description: 获取所有标签绑定的品种数量
+// @author: Roc
+// @datetime 2023-11-22 10:44:35
+// @return items []*ChartTagVarietyCount
+// @return err error
+func GetCountChartTagVarietyItemListByTag() (items []*ChartTagVarietyCount, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT chart_tag_id,count(1) total FROM chart_tag_variety a 
+         join edb_info b on a.edb_info_id=b.edb_info_id  group by chart_tag_id`
+	_, err = o.Raw(sql).QueryRows(&items)
+
+	return
+}
+
 // SaveVarietyEdb
 // @Description: 配置标签中的指标与品种的映射关系
 // @author: Roc

+ 1 - 1
models/data_manage/cross_variety/response/tag.go

@@ -14,7 +14,7 @@ type TagDeleteCheckResp struct {
 // TagListResp
 // @Description: 标签列表数据
 type TagListResp struct {
-	List   []*cross_variety.ChartTag `description:"列表数据"`
+	List   []*cross_variety.ChartTagItem `description:"列表数据"`
 	Paging *paging.PagingItem
 }