Explorar el Código

指标分类添加时,修改排序

xyxie hace 1 año
padre
commit
e2ec54ad68

+ 11 - 2
controllers/data_manage/edb_info.go

@@ -2995,8 +2995,17 @@ func (this *ChartInfoController) EdbInfoData() {
 		br.ErrMsg = "获取失败,Err:" + err.Error()
 		return
 	}
-	resp := new(data_manage.EdbInfoDataResp)
-	resp.EdbInfo = edbInfo
+	fullEdb := new(data_manage.EdbInfoFullClassify)
+	resp := new(data_manage.EdbInfoDataFullClassifyResp)
+	parentClassify, err, errMsg := data.GetFullClassifyByClassifyId(edbInfo.ClassifyId)
+	if err != nil {
+		br.Msg = err.Error()
+		br.ErrMsg = errMsg
+		return
+	}
+	fullEdb.EdbInfo = edbInfo
+	fullEdb.ParentClassify = parentClassify
+	resp.EdbInfo = fullEdb
 	resp.DataList = dataList
 	br.Ret = 200
 	br.Success = true

+ 8 - 0
models/data_manage/edb_classify.go

@@ -308,6 +308,14 @@ func GetEdbClassifyMaxSort(parentId int, classifyType uint8) (sort int, err erro
 	return
 }
 
+// GetEdbInfoMaxSortByClassifyId 获取分类下指标的最大的排序数
+func GetEdbInfoMaxSortByClassifyId(classifyId int) (sort int, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT Max(sort) AS sort FROM edb_info WHERE classify_id=? `
+	err = o.Raw(sql, classifyId).QueryRow(&sort)
+	return
+}
+
 type ClassifyEdbInfoListResp struct {
 	EdbInfoList []*EdbClassifyItems
 }

+ 5 - 0
models/data_manage/edb_info.go

@@ -751,6 +751,11 @@ type EdbInfoDataResp struct {
 	DataList []*EdbDataList
 }
 
+type EdbInfoDataFullClassifyResp struct {
+	EdbInfo  *EdbInfoFullClassify
+	DataList []*EdbDataList
+}
+
 type EdbInfoReplaceReq struct {
 	OldEdbInfoId int `description:"原指标ID"`
 	NewEdbInfoId int `description:"替换为指标ID"`

+ 45 - 3
services/data/edb_classify.go

@@ -74,7 +74,14 @@ func GetFullClassifyByClassifyId(targetClassifyId int) (targetList []*data_manag
 		return
 	}
 	if targetClassify.ParentId == 0 {
-		targetList = make([]*data_manage.EdbClassifyIdItems, 0)
+		targetItem := new(data_manage.EdbClassifyIdItems)
+		targetItem.ClassifyId = targetClassify.ClassifyId
+		targetItem.ParentId = targetClassify.ParentId
+		targetItem.RootId = targetClassify.RootId
+		targetItem.UniqueCode = targetClassify.UniqueCode
+		targetItem.Level = targetClassify.Level
+		targetItem.ClassifyName = targetClassify.ClassifyName
+		targetList = append(targetList, targetItem)
 		return
 	}
 	tmpList, err := data_manage.GetEdbClassifyByRootIdLevel(targetClassify.RootId, targetClassify.ClassifyType, targetClassify.Level)
@@ -87,7 +94,7 @@ func GetFullClassifyByClassifyId(targetClassifyId int) (targetList []*data_manag
 	if len(tmpList) > 0 {
 		for _, v := range tmpList {
 			addFlag := false
-			if v.ClassifyId == targetClassify.ParentId {
+			if v.ClassifyId == targetClassify.ClassifyId {
 				idMap[v.ClassifyId] = struct{}{}
 				idMap[v.ParentId] = struct{}{}
 				addFlag = true
@@ -200,7 +207,24 @@ func AddEdbClassify(classifyName string, parentId, level int, classifyType uint8
 		return
 	}
 	//获取该层级下最大的排序数
-	maxSort, err := data_manage.GetEdbClassifyMaxSort(parentId, classifyType)
+	maxSort, err := GetEdbClassifyMaxSort(parentId, classifyType)
+	if err != nil {
+		errMsg = "获取失败"
+		err = errors.New("查询排序信息失败,Err:" + err.Error())
+		return
+	}
+	//查询顶级rootId
+	parentClassify, err := data_manage.GetEdbClassifyById(parentId)
+	if err != nil {
+		if err.Error() == utils.ErrNoRow() {
+			errMsg = "父级分类不存在"
+			err = errors.New(errMsg)
+			return
+		}
+		errMsg = "获取失败"
+		err = errors.New("获取分类信息失败,Err:" + err.Error())
+		return
+	}
 
 	timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
 	classifyInfo = &data_manage.EdbClassify{
@@ -208,6 +232,7 @@ func AddEdbClassify(classifyName string, parentId, level int, classifyType uint8
 		ClassifyType:    classifyType,
 		ClassifyName:    classifyName,
 		ParentId:        parentId,
+		RootId:          parentClassify.RootId,
 		HasData:         0,
 		CreateTime:      time.Now(),
 		ModifyTime:      time.Now(),
@@ -1048,3 +1073,20 @@ func GetPredictEdbClassifyOpButton(sysUser *system.Admin, belongUserId int) (but
 
 	return
 }
+
+func GetEdbClassifyMaxSort(parentId int, classifyType uint8) (maxSort int, err error) {
+	//获取该层级下最大的排序数
+	classifyMaxSort, err := data_manage.GetEdbClassifyMaxSort(parentId, classifyType)
+	if err != nil {
+		return
+	}
+	maxSort = classifyMaxSort
+	edbMaxSort, err := data_manage.GetEdbInfoMaxSortByClassifyId(parentId)
+	if err != nil {
+		return
+	}
+	if maxSort < edbMaxSort {
+		maxSort = edbMaxSort
+	}
+	return
+}