Browse Source

fix:分享的树形结构调整

Roc 2 months ago
parent
commit
7d211edbed

+ 8 - 7
controllers/data_manage/chart_info_share.go

@@ -199,7 +199,7 @@ func (c *ChartInfoShareController) Tree() {
 			return
 		}
 
-		var sortList data_manage.ChartClassifyItemList
+		var sortList data_manage.UserShareChartClassifyItemList
 		sortList = nodeList
 
 		sort.Sort(sortList)
@@ -223,15 +223,15 @@ func (c *ChartInfoShareController) Tree() {
 		}
 
 		receivedMap := make(map[int]int)
-		var receivedList data_manage.ChartClassifyItemList
+		var receivedList data_manage.UserShareChartClassifyItemList
 		for _, v := range nodeList {
 			index, ok := receivedMap[v.SysUserId]
 			if !ok {
 				index = len(receivedMap)
-				item := &data_manage.ChartClassifyItems{
-					ChartClassifyId:     v.SysUserId,
+				item := &data_manage.UserShareChartClassifyItem{
+					UserId:              v.SysUserId,
 					ChartInfoId:         0,
-					ChartClassifyName:   v.SysUserRealName,
+					UserName:            v.SysUserRealName,
 					ChartClassifyNameEn: v.SysUserRealName,
 					ParentId:            0,
 					Level:               0,
@@ -248,15 +248,16 @@ func (c *ChartInfoShareController) Tree() {
 					Calendar:            "",
 					SeasonStartDate:     "",
 					SeasonEndDate:       "",
-					Children:            []*data_manage.ChartClassifyItems{},
+					Children:            []*data_manage.UserShareChartClassifyItem{},
 					Button:              data_manage.ChartClassifyItemsButton{},
 					IsJoinPermission:    0,
-					HaveOperaAuth:       false,
+					HaveOperaAuth:       true,
 					ChartClassifyIdPath: "",
 				}
 				receivedList = append(receivedList, item)
 			}
 			receivedList[index].Children = append(receivedList[index].Children, v)
+			receivedMap[v.SysUserId] = index
 		}
 		sort.Sort(receivedList)
 		resp.Received = receivedList

+ 7 - 6
controllers/data_manage/edb_info_share.go

@@ -216,16 +216,16 @@ func (c *EdbInfoShareController) Tree() {
 		}
 
 		receivedMap := make(map[int]int)
-		var receivedList data_manage.EdbClassifyItemList
+		var receivedList data_manage.UserShareEdbClassifyItemList
 		for _, v := range nodeList {
 			index, ok := receivedMap[v.SysUserId]
 			if !ok {
 				index = len(receivedMap)
-				item := &data_manage.EdbClassifyItems{
-					ClassifyId:       v.SysUserId,
+				item := &data_manage.UserShareEdbClassifyItem{
+					UserId:           v.SysUserId,
 					EdbInfoId:        0,
 					ClassifyType:     0,
-					ClassifyName:     v.SysUserRealName,
+					UserName:         v.SysUserRealName,
 					ClassifyNameEn:   "",
 					ParentId:         0,
 					RootId:           0,
@@ -239,15 +239,16 @@ func (c *EdbInfoShareController) Tree() {
 					StartDate:        "",
 					EdbCode:          "",
 					EdbType:          0,
-					Children:         []*data_manage.EdbClassifyItems{},
+					Children:         []*data_manage.UserShareEdbClassifyItem{},
 					Button:           data_manage.EdbClassifyItemsButton{},
 					IsJoinPermission: 0,
-					HaveOperaAuth:    false,
+					HaveOperaAuth:    true,
 					ClassifyIdPath:   "",
 				}
 				receivedList = append(receivedList, item)
 			}
 			receivedList[index].Children = append(receivedList[index].Children, v)
+			receivedMap[v.SysUserId] = index
 		}
 
 		resp.Received = receivedList

+ 41 - 0
models/data_manage/chart_classify.go

@@ -586,3 +586,44 @@ func (m ChartClassifyItemList) Less(i, j int) bool {
 func (m ChartClassifyItemList) Swap(i, j int) {
 	m[i], m[j] = m[j], m[i]
 }
+
+func (m *ChartClassifyItems) ToUserShareChartClassifyItem() (item *UserShareChartClassifyItem) {
+	return &UserShareChartClassifyItem{
+		ChartClassifyId:     m.ChartClassifyId,
+		ChartInfoId:         m.ChartInfoId,
+		ChartClassifyName:   m.ChartClassifyName,
+		ChartClassifyNameEn: m.ChartClassifyNameEn,
+		ParentId:            m.ParentId,
+		Level:               m.Level,
+		Sort:                m.Sort,
+		UniqueCode:          m.UniqueCode,
+		Source:              m.Source,
+		SourceName:          m.SourceName,
+		SysUserId:           m.SysUserId,
+		SysUserRealName:     m.SysUserRealName,
+		DateType:            m.DateType,
+		StartDate:           m.StartDate,
+		EndDate:             m.EndDate,
+		ChartType:           m.ChartType,
+		Calendar:            m.Calendar,
+		SeasonStartDate:     m.SeasonStartDate,
+		SeasonEndDate:       m.SeasonEndDate,
+		Children:            m.ToUserShareChartClassifyItemByList(m.Children),
+		Button:              ChartClassifyItemsButton{},
+		IsJoinPermission:    m.IsJoinPermission,
+		HaveOperaAuth:       true,
+		ChartClassifyIdPath: m.ChartClassifyIdPath,
+	}
+}
+
+func (m *ChartClassifyItems) ToUserShareChartClassifyItemByList(list []*ChartClassifyItems) (items []*UserShareChartClassifyItem) {
+	items = make([]*UserShareChartClassifyItem, 0)
+	if list == nil {
+		return
+	}
+
+	for _, v := range list {
+		items = append(items, v.ToUserShareChartClassifyItem())
+	}
+	return
+}

+ 43 - 0
models/data_manage/chart_info_share.go

@@ -224,3 +224,46 @@ MAX(b."sort") AS "sort"
 
 	return
 }
+
+type UserShareChartClassifyItem struct {
+	UserId              int    `description:"用户id"`
+	UserName            string `description:"用户名称"`
+	ChartClassifyId     int    `description:"分类id"`
+	ChartInfoId         int    `description:"指标id"`
+	ChartClassifyName   string
+	ChartClassifyNameEn string
+	ParentId            int
+	Level               int                           `description:"层级"`
+	Sort                int                           `description:"排序字段,越小越靠前,默认值:10"`
+	UniqueCode          string                        `description:"唯一编码"`
+	Source              int                           `description:"来源id"`
+	SourceName          string                        `description:"来源名称"`
+	SysUserId           int                           `description:"创建人id"`
+	SysUserRealName     string                        `description:"创建人姓名"`
+	DateType            int                           `description:"日期类型:1:00年至今,2:10年至今,3:15年至今,4:年初至今,5:自定义时间"`
+	StartDate           string                        `description:"自定义开始日期"`
+	EndDate             string                        `description:"自定义结束日期"`
+	ChartType           int                           `description:"生成样式:1:曲线图,2:季节性图"`
+	Calendar            string                        `description:"公历/农历"`
+	SeasonStartDate     string                        `description:"季节性图开始日期"`
+	SeasonEndDate       string                        `description:"季节性图开始日期"`
+	Children            []*UserShareChartClassifyItem `gorm:"-"`
+	Button              ChartClassifyItemsButton      `gorm:"-" description:"按钮权限"`
+	IsJoinPermission    int                           `description:"是否加入权限管控,0:不加入;1:加入;默认:0"`
+	HaveOperaAuth       bool                          `description:"是否有数据权限,默认:false"`
+	ChartClassifyIdPath string                        `description:"分类的完整路径,格式为:父级ID,当前ID"`
+}
+
+type UserShareChartClassifyItemList []*UserShareChartClassifyItem
+
+func (m UserShareChartClassifyItemList) Len() int {
+	return len(m)
+}
+
+func (m UserShareChartClassifyItemList) Less(i, j int) bool {
+	return m[i].Sort < m[j].Sort
+}
+
+func (m UserShareChartClassifyItemList) Swap(i, j int) {
+	m[i], m[j] = m[j], m[i]
+}

+ 37 - 0
models/data_manage/edb_classify.go

@@ -702,3 +702,40 @@ func GetEdbClassifyItemsByIdList(classifyIdList []int) (item []*EdbClassifyItems
 
 	return
 }
+
+func (m *EdbClassifyItems) ToUserShareEdbClassifyItem() (item *UserShareEdbClassifyItem) {
+	return &UserShareEdbClassifyItem{
+		ClassifyId:       m.ClassifyId,
+		EdbInfoId:        m.EdbInfoId,
+		ParentId:         m.ClassifyId,
+		ClassifyType:     m.ClassifyType,
+		ClassifyName:     m.ClassifyName,
+		ClassifyNameEn:   m.ClassifyNameEn,
+		Sort:             m.Sort,
+		UniqueCode:       m.UniqueCode,
+		Source:           m.Source,
+		SourceName:       m.SourceName,
+		SysUserId:        m.SysUserId,
+		SysUserRealName:  m.SysUserRealName,
+		StartDate:        m.StartDate,
+		EdbCode:          m.EdbCode,
+		EdbType:          m.EdbType,
+		Children:         m.ToUserShareEdbClassifyItemByList(m.Children),
+		Button:           EdbClassifyItemsButton{},
+		IsJoinPermission: m.IsJoinPermission,
+		HaveOperaAuth:    m.HaveOperaAuth,
+		ClassifyIdPath:   "",
+	}
+}
+
+func (m *EdbClassifyItems) ToUserShareEdbClassifyItemByList(list []*EdbClassifyItems) (items []*UserShareEdbClassifyItem) {
+	items = make([]*UserShareEdbClassifyItem, 0)
+	if list == nil {
+		return
+	}
+
+	for _, v := range list {
+		items = append(items, v.ToUserShareEdbClassifyItem())
+	}
+	return
+}

+ 43 - 0
models/data_manage/edb_info_share.go

@@ -243,3 +243,46 @@ MAX(b."sort") AS "sort"
 
 	return
 }
+
+// UserShareEdbClassifyItem
+// @Description: 用户分享的指标分类列表
+type UserShareEdbClassifyItem struct {
+	UserId           int    `description:"用户id"`
+	UserName         string `description:"用户名称"`
+	ClassifyId       int    `description:"分类id"`
+	EdbInfoId        int    `description:"指标id"`
+	ClassifyType     uint8  `description:"分类类型,0:普通指标分类,1:预测指标分类"`
+	ClassifyName     string
+	ClassifyNameEn   string
+	ParentId         int
+	RootId           int    `description:"顶级id"`
+	Level            int    `description:"层级"`
+	Sort             int    `description:"排序字段,越小越靠前,默认值:10"`
+	UniqueCode       string `description:"唯一编码"`
+	Source           int    `description:"来源id"`
+	SourceName       string `description:"来源名称"`
+	SysUserId        int    `description:"创建人id"`
+	SysUserRealName  string `description:"创建人姓名"`
+	StartDate        string
+	EdbCode          string
+	EdbType          int                         `description:"指标类型:1:基础指标,2:计算指标"`
+	Children         []*UserShareEdbClassifyItem `gorm:"-"`
+	Button           EdbClassifyItemsButton      `gorm:"-" description:"操作权限"`
+	IsJoinPermission int                         `description:"是否加入权限管控,0:不加入;1:加入;默认:0"`
+	HaveOperaAuth    bool                        `description:"是否有数据权限"`
+	ClassifyIdPath   string                      `description:"分类的完整路径,格式为:父级ID,当前ID"`
+}
+
+type UserShareEdbClassifyItemList []*UserShareEdbClassifyItem
+
+func (m UserShareEdbClassifyItemList) Len() int {
+	return len(m)
+}
+
+func (m UserShareEdbClassifyItemList) Less(i, j int) bool {
+	return m[i].Sort < m[j].Sort
+}
+
+func (m UserShareEdbClassifyItemList) Swap(i, j int) {
+	m[i], m[j] = m[j], m[i]
+}

+ 2 - 2
models/data_manage/response/chart_info_share.go

@@ -12,6 +12,6 @@ type ChartInfoShareUserResp struct {
 // ChartShareListResp
 // @Description: 共享列表
 type ChartShareListResp struct {
-	Send     []*data_manage.ChartClassifyItems
-	Received []*data_manage.ChartClassifyItems `description:"收到的共享"`
+	Send     []*data_manage.UserShareChartClassifyItem
+	Received []*data_manage.UserShareChartClassifyItem `description:"收到的共享"`
 }

+ 2 - 2
models/data_manage/response/edb_info_share.go

@@ -12,6 +12,6 @@ type EdbInfoShareUserResp struct {
 // EdbShareListResp
 // @Description: 共享列表
 type EdbShareListResp struct {
-	Send     data_manage.EdbClassifyItemList
-	Received data_manage.EdbClassifyItemList `description:"收到的共享"`
+	Send     data_manage.UserShareEdbClassifyItemList
+	Received data_manage.UserShareEdbClassifyItemList `description:"收到的共享"`
 }

+ 8 - 3
services/data/chart_info_share.go

@@ -47,7 +47,7 @@ func GetAllShareChartListByReceivedUserId(sysUserId int) (item []*data_manage.Sh
 // @param items []*data_manage.ShareChartInfoQuery
 // @return item data_manage.ChartClassifyItemList
 // @return err error
-func GetChartClassifyItemListByShareChartInfoQueryList(items []*data_manage.ShareChartInfoQuery) (item []*data_manage.ChartClassifyItems, err error) {
+func GetChartClassifyItemListByShareChartInfoQueryList(items []*data_manage.ShareChartInfoQuery) (item []*data_manage.UserShareChartClassifyItem, err error) {
 	// 所有分类
 	chartClassifyItemListMap := make(map[int][]*data_manage.ChartClassifyItems)
 	classifyIdList := make([]int, 0)
@@ -76,7 +76,7 @@ func GetChartClassifyItemListByShareChartInfoQueryList(items []*data_manage.Shar
 			//Children:            nil,
 			Button:           data_manage.ChartClassifyItemsButton{},
 			IsJoinPermission: v.IsJoinPermission,
-			//HaveOperaAuth:       false,
+			HaveOperaAuth:    true,
 			//ChartClassifyIdPath: "",
 		}
 		chartClassifyItemList, ok := chartClassifyItemListMap[v.ChartClassifyId]
@@ -119,7 +119,12 @@ func GetChartClassifyItemListByShareChartInfoQueryList(items []*data_manage.Shar
 			return
 		}
 
-		item = GetChartClassifyTreeRecursiveAndInsert(classifyItemsList, 0, chartClassifyItemListMap)
+		tmpList := GetChartClassifyTreeRecursiveAndInsert(classifyItemsList, 0, chartClassifyItemListMap)
+
+		// 再转一下就好了
+		obj := data_manage.ChartClassifyItems{}
+		item = obj.ToUserShareChartClassifyItemByList(tmpList)
+
 		//根据sort值排序
 		//sort.Sort(item)
 	}

+ 6 - 3
services/data/edb_info_share.go

@@ -49,7 +49,7 @@ func GetAllShareEdbListByReceivedUserId(sysUserId int) (item []*data_manage.Shar
 // @param items []*data_manage.ShareEdbInfoQuery
 // @return item data_manage.EdbClassifyItemList
 // @return err error
-func GetEdbClassifyItemListByShareEdbInfoQueryList(items []*data_manage.ShareEdbInfoQuery) (item data_manage.EdbClassifyItemList, err error) {
+func GetEdbClassifyItemListByShareEdbInfoQueryList(items []*data_manage.ShareEdbInfoQuery) (item data_manage.UserShareEdbClassifyItemList, err error) {
 	// 所有分类
 	edbClassifyItemListMap := make(map[int][]*data_manage.EdbClassifyItems)
 	classifyIdList := make([]int, 0)
@@ -74,7 +74,7 @@ func GetEdbClassifyItemListByShareEdbInfoQueryList(items []*data_manage.ShareEdb
 			//Children:         nil,
 			Button:           data_manage.EdbClassifyItemsButton{},
 			IsJoinPermission: v.IsJoinPermission,
-			HaveOperaAuth:    false,
+			HaveOperaAuth:    true,
 			ClassifyIdPath:   "",
 		}
 		edbClassifyItemList, ok := edbClassifyItemListMap[v.ClassifyId]
@@ -116,8 +116,11 @@ func GetEdbClassifyItemListByShareEdbInfoQueryList(items []*data_manage.ShareEdb
 		if err != nil {
 			return
 		}
+		tmpItem := GetClassifyTreeRecursiveAndInsert(classifyItemsList, 0, edbClassifyItemListMap)
 
-		item = GetClassifyTreeRecursiveAndInsert(classifyItemsList, 0, edbClassifyItemListMap)
+		// 再转一下就好了
+		obj := data_manage.EdbClassifyItems{}
+		item = obj.ToUserShareEdbClassifyItemByList(tmpItem)
 		//根据sort值排序
 		sort.Sort(item)
 	}

+ 1 - 0
services/edb_info_replace.go

@@ -76,6 +76,7 @@ func DealReplaceEdbCache() {
 			}
 
 			// todo 重置指标引用表
+			// TODO 只是替换部分指标,该怎么处理 ---- Roc
 			ReplaceEdbInRelation(oldEdbInfo, newEdbInfo)
 		})
 	}