hsun hai 1 ano
pai
achega
a554f681bc

+ 64 - 6
controllers/data_manage/chart_framework.go

@@ -5,6 +5,7 @@ import (
 	"eta/eta_api/controllers"
 	"eta/eta_api/models"
 	"eta/eta_api/models/data_manage"
+	"eta/eta_api/services/data"
 	"eta/eta_api/utils"
 	"fmt"
 	"strings"
@@ -75,7 +76,7 @@ func (this *ChartFrameworkController) List() {
 	}
 	resp := make([]*data_manage.ChartFrameworkItem, 0)
 	for _, v := range list {
-		t := data_manage.FormatChartFramework2Item(v)
+		t := data_manage.FormatChartFramework2Item(v, make([]*data_manage.ChartFrameworkNodeItem, 0))
 		resp = append(resp, t)
 	}
 
@@ -130,7 +131,7 @@ func (this *ChartFrameworkController) PublicMenu() {
 			resp = append(resp, u)
 			userExist[v.AdminId] = true
 		}
-		t := data_manage.FormatChartFramework2Item(v)
+		t := data_manage.FormatChartFramework2Item(v, make([]*data_manage.ChartFrameworkNodeItem, 0))
 		if userFrameworks[v.AdminId] == nil {
 			userFrameworks[v.AdminId] = make([]*data_manage.ChartFrameworkItem, 0)
 		}
@@ -199,6 +200,14 @@ func (this *ChartFrameworkController) Add() {
 		}
 	}
 
+	// 获取图表分类下各自的图表数
+	chartsNumMap, e := data.GetMyChartClassifyIdNumMap(sysUser.AdminId)
+	if e != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败, GetMyChartClassifyIdNumMap Err: " + e.Error()
+		return
+	}
+
 	now := time.Now().Local()
 	frameworkCode := utils.MD5(fmt.Sprint(now.UnixMilli()))
 	item := new(data_manage.ChartFramework)
@@ -211,6 +220,7 @@ func (this *ChartFrameworkController) Add() {
 	item.CreateTime = now
 	item.ModifyTime = now
 	nodes := make([]*data_manage.ChartFrameworkNode, 0)
+	itemNodes := make([]*data_manage.ChartFrameworkNodeItem, 0)
 	if len(req.Nodes) > 0 {
 		for _, v := range req.Nodes {
 			if v.MyChartClassifyId <= 0 {
@@ -218,10 +228,15 @@ func (this *ChartFrameworkController) Add() {
 			}
 			t := new(data_manage.ChartFrameworkNode)
 			t.FrameworkName = req.FrameworkName
+			t.NodeId = v.NodeId
 			t.NodeName = v.NodeName
 			t.MyChartClassifyId = v.MyChartClassifyId
 			t.CreateTime = now
 			nodes = append(nodes, t)
+
+			// 响应节点数据
+			td := data_manage.FormatChartFrameworkNode2Item(t, chartsNumMap[t.MyChartClassifyId])
+			itemNodes = append(itemNodes, td)
 		}
 	}
 	if e := item.CreateFrameworkAndNodes(item, nodes); e != nil {
@@ -229,7 +244,7 @@ func (this *ChartFrameworkController) Add() {
 		br.ErrMsg = "新增框架及节点失败, Err: " + e.Error()
 		return
 	}
-	detail := data_manage.FormatChartFramework2Item(item)
+	detail := data_manage.FormatChartFramework2Item(item, itemNodes)
 
 	br.Data = detail
 	br.Ret = 200
@@ -308,6 +323,14 @@ func (this *ChartFrameworkController) Edit() {
 		}
 	}
 
+	// 获取图表分类下各自的图表数
+	chartsNumMap, e := data.GetMyChartClassifyIdNumMap(sysUser.AdminId)
+	if e != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败, GetMyChartClassifyIdNumMap Err: " + e.Error()
+		return
+	}
+
 	now := time.Now().Local()
 	item.FrameworkName = req.FrameworkName
 	item.FrameworkImg = req.FrameworkImg
@@ -315,6 +338,7 @@ func (this *ChartFrameworkController) Edit() {
 	item.ModifyTime = now
 	updateCols := []string{"FrameworkName", "FrameworkImg", "FrameworkContent", "ModifyTime"}
 	nodes := make([]*data_manage.ChartFrameworkNode, 0)
+	itemNodes := make([]*data_manage.ChartFrameworkNodeItem, 0)
 	if len(req.Nodes) > 0 {
 		for _, v := range req.Nodes {
 			if v.MyChartClassifyId <= 0 {
@@ -323,10 +347,15 @@ func (this *ChartFrameworkController) Edit() {
 			t := new(data_manage.ChartFrameworkNode)
 			t.ChartFrameworkId = req.ChartFrameworkId
 			t.FrameworkName = req.FrameworkName
+			t.NodeId = v.NodeId
 			t.NodeName = v.NodeName
 			t.MyChartClassifyId = v.MyChartClassifyId
 			t.CreateTime = now
 			nodes = append(nodes, t)
+
+			// 响应节点数据
+			td := data_manage.FormatChartFrameworkNode2Item(t, chartsNumMap[t.MyChartClassifyId])
+			itemNodes = append(itemNodes, td)
 		}
 	}
 	if e := item.EditFrameworkAndNodes(item, updateCols, nodes); e != nil {
@@ -334,7 +363,7 @@ func (this *ChartFrameworkController) Edit() {
 		br.ErrMsg = "编辑框架及节点失败, Err: " + e.Error()
 		return
 	}
-	detail := data_manage.FormatChartFramework2Item(item)
+	detail := data_manage.FormatChartFramework2Item(item, itemNodes)
 
 	br.Data = detail
 	br.Ret = 200
@@ -715,11 +744,40 @@ func (this *ChartFrameworkController) Detail() {
 			br.Msg = "框架不存在, 请刷新页面"
 			return
 		}
-		br.Msg = "操作失败"
+		br.Msg = "获取失败"
 		br.ErrMsg = "获取框架失败, Err: " + e.Error()
 		return
 	}
-	detail := data_manage.FormatChartFramework2Item(item)
+
+	// 获取节点
+	nodeOb := new(data_manage.ChartFrameworkNode)
+	nodeCond := ` AND chart_framework_id = ?`
+	nodePars := make([]interface{}, 0)
+	nodePars = append(nodePars, frameworkId)
+	nodes, e := nodeOb.GetItemsByCondition(nodeCond, nodePars, []string{}, "")
+	if e != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取框架节点失败, Err: " + e.Error()
+		return
+	}
+
+	// 获取图表分类下各自的图表数
+	chartsNumMap, e := data.GetMyChartClassifyIdNumMap(sysUser.AdminId)
+	if e != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败, GetMyChartClassifyIdNumMap Err: " + e.Error()
+		return
+	}
+
+	// 格式化响应数据
+	itemNodes := make([]*data_manage.ChartFrameworkNodeItem, 0)
+	for _, v := range nodes {
+		if v.NodeId == "" {
+			continue
+		}
+		itemNodes = append(itemNodes, data_manage.FormatChartFrameworkNode2Item(v, chartsNumMap[v.MyChartClassifyId]))
+	}
+	detail := data_manage.FormatChartFramework2Item(item, itemNodes)
 
 	br.Data = detail
 	br.Ret = 200

+ 26 - 5
controllers/data_manage/my_chart.go

@@ -189,6 +189,7 @@ func (this *MyChartController) ChartList() {
 	br.Data = resp
 }
 
+// ClassifyList
 // @Title 我的图表-分类列表接口
 // @Description 我的图表-分类列表接口
 // @Success 200 {object} data_manage.MyChartClassifyResp
@@ -218,14 +219,28 @@ func (this *MyChartController) ClassifyList() {
 
 	resp := new(data_manage.MyChartClassifyResp)
 	if list == nil || len(list) <= 0 || (err != nil && err.Error() == utils.ErrNoRow()) {
-		items := make([]*data_manage.MyChartClassify, 0)
+		items := make([]*data_manage.MyChartClassifyItem, 0)
 		resp.List = items
 		br.Ret = 200
 		br.Success = true
 		br.Msg = "获取成功"
 		return
 	}
-	resp.List = list
+	//resp.List = list
+
+	// 获取图表分类下各自的图表数
+	chartsNumMap, e := data.GetMyChartClassifyIdNumMap(sysUser.AdminId)
+	if e != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败, GetMyChartClassifyIdNumMap Err: " + e.Error()
+		return
+	}
+
+	results := make([]*data_manage.MyChartClassifyItem, 0)
+	for _, v := range list {
+		results = append(results, data_manage.FormatMyChartClassify2Item(v, chartsNumMap[v.MyChartClassifyId]))
+	}
+	resp.List = results
 
 	language := `CN`
 	// 指标显示的语言
@@ -1977,7 +1992,7 @@ func (this *MyChartController) CompanyPublicClassifyList() {
 
 	resp := new(data_manage.MyChartClassifyResp)
 	if list == nil || len(list) <= 0 || (err != nil && err.Error() == utils.ErrNoRow()) {
-		items := make([]*data_manage.MyChartClassify, 0)
+		items := make([]*data_manage.MyChartClassifyItem, 0)
 		resp.List = items
 		br.Ret = 200
 		br.Success = true
@@ -1985,7 +2000,13 @@ func (this *MyChartController) CompanyPublicClassifyList() {
 		return
 	}
 
-	resp.List = list
+	results := make([]*data_manage.MyChartClassifyItem, 0)
+	for _, v := range list {
+		results = append(results, data_manage.FormatMyChartClassify2Item(v, 0))
+	}
+	resp.List = results
+
+	//resp.List = list
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "获取成功"
@@ -2048,7 +2069,7 @@ func (this *MyChartController) ClassifyFrameworkNodeList() {
 	}
 	resp := make([]*data_manage.ChartFrameworkNodeItem, 0)
 	for _, v := range nodes {
-		resp = append(resp, data_manage.FormatChartFrameworkNode2Item(v))
+		resp = append(resp, data_manage.FormatChartFrameworkNode2Item(v, 0))
 	}
 
 	br.Data = resp

+ 16 - 13
models/data_manage/chart_framework.go

@@ -258,6 +258,7 @@ type ChartFrameworkAddReq struct {
 // ChartFrameworkNodeReq 图库框架节点请求体
 type ChartFrameworkNodeReq struct {
 	MyChartClassifyId int    `description:"我的图表分类ID"`
+	NodeId            string `description:"节点ID"`
 	NodeName          string `description:"节点名称"`
 }
 
@@ -312,22 +313,23 @@ func GetFirstChartFramework(adminId int) (item *ChartFramework, err error) {
 
 // ChartFrameworkItem 图库框架表信息
 type ChartFrameworkItem struct {
-	ChartFrameworkId int    `description:"框架ID"`
-	FrameworkCode    string `description:"框架唯一编码"`
-	FrameworkName    string `description:"框架名称"`
-	FrameworkImg     string `description:"框架图片"`
-	FrameworkContent string `description:"框架内容"`
-	IsPublic         int    `description:"是否公开:0-私有;1-公开"`
-	PublicTime       string `description:"公开时间"`
-	Sort             int    `description:"排序"`
-	AdminId          int    `description:"创建人ID"`
-	AdminName        string `description:"创建人姓名"`
-	CreateTime       string `description:"创建时间"`
-	ModifyTime       string `description:"更新时间"`
+	ChartFrameworkId int                       `description:"框架ID"`
+	FrameworkCode    string                    `description:"框架唯一编码"`
+	FrameworkName    string                    `description:"框架名称"`
+	FrameworkImg     string                    `description:"框架图片"`
+	FrameworkContent string                    `description:"框架内容"`
+	IsPublic         int                       `description:"是否公开:0-私有;1-公开"`
+	PublicTime       string                    `description:"公开时间"`
+	Sort             int                       `description:"排序"`
+	AdminId          int                       `description:"创建人ID"`
+	AdminName        string                    `description:"创建人姓名"`
+	CreateTime       string                    `description:"创建时间"`
+	ModifyTime       string                    `description:"更新时间"`
+	Nodes            []*ChartFrameworkNodeItem `description:"框架节点"`
 }
 
 // FormatChartFramework2Item 格式化框架信息
-func FormatChartFramework2Item(origin *ChartFramework) (item *ChartFrameworkItem) {
+func FormatChartFramework2Item(origin *ChartFramework, nodes []*ChartFrameworkNodeItem) (item *ChartFrameworkItem) {
 	if origin == nil {
 		return
 	}
@@ -344,6 +346,7 @@ func FormatChartFramework2Item(origin *ChartFramework) (item *ChartFrameworkItem
 	item.AdminName = origin.AdminName
 	item.CreateTime = utils.TimeTransferString(utils.FormatDateTime, origin.CreateTime)
 	item.ModifyTime = utils.TimeTransferString(utils.FormatDateTime, origin.ModifyTime)
+	item.Nodes = nodes
 	return
 }
 

+ 6 - 1
models/data_manage/chart_framework_node.go

@@ -13,6 +13,7 @@ type ChartFrameworkNode struct {
 	ChartFrameworkNodeId int       `orm:"column(chart_framework_node_id);pk"`
 	ChartFrameworkId     int       `description:"框架ID"`
 	FrameworkName        string    `description:"框架名称"`
+	NodeId               string    `description:"节点ID"`
 	NodeName             string    `description:"节点名称"`
 	MyChartClassifyId    int       `description:"我的图表分类ID"`
 	CreateTime           time.Time `description:"创建时间"`
@@ -114,13 +115,15 @@ type ChartFrameworkNodeItem struct {
 	ChartFrameworkNodeId int
 	ChartFrameworkId     int    `description:"框架ID"`
 	FrameworkName        string `description:"框架名称"`
+	NodeId               string `description:"节点ID"`
 	NodeName             string `description:"节点名称"`
 	MyChartClassifyId    int    `description:"我的图表分类ID"`
+	ChartNum             int    `description:"分类下的图表数"`
 	CreateTime           string `description:"创建时间"`
 }
 
 // FormatChartFrameworkNode2Item 格式化框架节点信息
-func FormatChartFrameworkNode2Item(origin *ChartFrameworkNode) (item *ChartFrameworkNodeItem) {
+func FormatChartFrameworkNode2Item(origin *ChartFrameworkNode, chartNum int) (item *ChartFrameworkNodeItem) {
 	if origin == nil {
 		return
 	}
@@ -128,8 +131,10 @@ func FormatChartFrameworkNode2Item(origin *ChartFrameworkNode) (item *ChartFrame
 	item.ChartFrameworkNodeId = origin.ChartFrameworkNodeId
 	item.ChartFrameworkId = origin.ChartFrameworkId
 	item.FrameworkName = origin.FrameworkName
+	item.NodeId = origin.NodeId
 	item.NodeName = origin.NodeName
 	item.MyChartClassifyId = origin.MyChartClassifyId
+	item.ChartNum = chartNum
 	item.CreateTime = utils.TimeTransferString(utils.FormatDateTime, origin.CreateTime)
 	return
 }

+ 51 - 1
models/data_manage/my_chart.go

@@ -71,7 +71,7 @@ func GetPublicChartClassifyAllExceptMy(adminId int) (item []*MyChartClassify, er
 }
 
 type MyChartClassifyResp struct {
-	List     []*MyChartClassify
+	List     []*MyChartClassifyItem
 	Language string `description:"指标的展示语言,CN:中文,EN:英文"`
 }
 
@@ -893,3 +893,53 @@ func GetChartInfoByIdList(chartInfoIdList []int) (items []*ChartInfo, err error)
 	_, err = o.Raw(sql, chartInfoIdList).QueryRows(&items)
 	return
 }
+
+// MyChartClassifyItem 我的图表分类信息
+type MyChartClassifyItem struct {
+	MyChartClassifyId   int    `description:"分类ID"`
+	MyChartClassifyName string `description:"分类名称"`
+	AdminId             int    `description:"创建人id"`
+	IsPublic            int    `description:"是否公共分类"`
+	IsCompanyPublic     int    `description:"是否为用户公共分类"`
+	ChartNum            int    `description:"分类下的图表数量"`
+}
+
+// FormatMyChartClassify2Item 格式化我的图表信息
+func FormatMyChartClassify2Item(origin *MyChartClassify, chartNum int) (item *MyChartClassifyItem) {
+	if origin == nil {
+		return
+	}
+	item = new(MyChartClassifyItem)
+	item.MyChartClassifyId = origin.MyChartClassifyId
+	item.MyChartClassifyName = origin.MyChartClassifyName
+	item.AdminId = origin.AdminId
+	item.IsPublic = origin.IsPublic
+	item.IsCompanyPublic = origin.IsCompanyPublic
+	item.ChartNum = chartNum
+	return
+}
+
+// MyChartClassifyIdAndNum 我的图表-分类ID及图表数
+type MyChartClassifyIdAndNum struct {
+	MyChartClassifyId int `description:"分类ID"`
+	ChartNum          int `description:"分类下的图表数量"`
+}
+
+// GetMyChartClassifyIdAndNum 我的图表-获取分类ID及图表数
+func GetMyChartClassifyIdAndNum(cond string, pars []interface{}) (items []*MyChartClassifyIdAndNum, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := fmt.Sprintf(`SELECT
+			a.my_chart_classify_id,
+			COUNT(1) AS chart_num
+		FROM
+			my_chart_classify AS a
+		INNER JOIN my_chart_classify_mapping AS b ON a.my_chart_classify_id = b.my_chart_classify_id
+		INNER JOIN my_chart AS c ON b.my_chart_id = c.my_chart_id
+		INNER JOIN chart_info AS d ON c.chart_info_id = d.chart_info_id
+		WHERE
+			1 = 1 %s
+		GROUP BY
+			a.my_chart_classify_id`, cond)
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}

+ 44 - 0
services/data/my_chart.go

@@ -0,0 +1,44 @@
+package data
+
+import (
+	"eta/eta_api/models/data_manage"
+	"eta/eta_api/utils"
+	"fmt"
+)
+
+// GetMyChartClassifyIdNumMap 我的图表-获取分类ID及图表数map
+func GetMyChartClassifyIdNumMap(adminId int) (chartsNumMap map[int]int, err error) {
+	chartsNumMap = make(map[int]int)
+
+	// 获取当前账号的不可见指标
+	chartIds := make([]int, 0)
+	obj := data_manage.EdbInfoNoPermissionAdmin{}
+	charts, e := obj.GetAllChartListByAdminId(adminId)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = fmt.Errorf("获取不可见指标配置数据失败, err: %s", e.Error())
+		return
+	}
+	for _, v := range charts {
+		chartIds = append(chartIds, v.ChartInfoId)
+	}
+
+	cond := ` AND a.admin_id = ?`
+	pars := make([]interface{}, 0)
+	pars = append(pars, adminId)
+	lenChart := len(chartIds)
+	if lenChart > 0 {
+		cond += ` AND d.chart_info_id NOT IN (` + utils.GetOrmInReplace(lenChart) + `) `
+		pars = append(pars, chartIds)
+	}
+
+	// 分类图表数
+	chartsNum, e := data_manage.GetMyChartClassifyIdAndNum(cond, pars)
+	if e != nil {
+		err = fmt.Errorf("获取分类图表数失败, err: %s", e.Error())
+		return
+	}
+	for _, v := range chartsNum {
+		chartsNumMap[v.MyChartClassifyId] = v.ChartNum
+	}
+	return
+}