Browse Source

Merge branch 'hotfix/table_classify' of eta_server/eta_api into master

xyxie 1 year ago
parent
commit
065d5c8bb5

+ 10 - 39
controllers/data_manage/excel/excel_classify.go

@@ -78,31 +78,17 @@ func (this *ExcelClassifyController) List() {
 			classifyMap[v.ParentId] = append(classifyMap[v.ParentId], v)
 		}
 	}
-	// todo 整理第三层
 	//组装三级分类
 	for key, classify := range classifyList {
 		subList, ok := classifyMap[classify.ExcelClassifyId]
-		if ok && classify.Level == 3 {
-			classifyList[key].Children = append(classifyList[key].Children, subList...)
-		}
-	}
-	// todo 整理第二层
-	for key, classify := range classifyList {
-		subList, ok := classifyMap[classify.ExcelClassifyId]
-		// 调用sort.Slice函数,传入切片、比较函数作为参数
-		sort.Slice(subList, func(i, j int) bool { return excel.ExcelClassifyItemBySort(subList[i], subList[j]) })
-		if ok && classify.Level == 2 {
-			classifyList[key].Children = append(classifyList[key].Children, subList...)
-		}
-	}
-	// todo 整理第一层
-	for key, classify := range classifyList {
-		subList, ok := classifyMap[classify.ExcelClassifyId]
-		sort.Slice(subList, func(i, j int) bool { return excel.ExcelClassifyItemBySort(subList[i], subList[j]) })
-		if ok && classify.Level == 1 {
+		if ok {
 			classifyList[key].Children = append(classifyList[key].Children, subList...)
+			sort.Slice(classifyList[key].Children, func(i, j int) bool {
+				return excel.ExcelClassifyItemBySort(classifyList[key].Children[i], classifyList[key].Children[j])
+			})
 		}
 	}
+
 	nodeAll := make([]*excel.ExcelClassifyItems, 0)
 	for _, v := range classifyList {
 		if v.ParentId == 0 {
@@ -151,28 +137,14 @@ func (this *ExcelClassifyController) ExcelClassifyItems() {
 			classifyMap[v.ParentId] = append(classifyMap[v.ParentId], v)
 		}
 	}
-	// todo 整理第三层
 	//组装三级分类
 	for key, classify := range classifyList {
 		subList, ok := classifyMap[classify.ExcelClassifyId]
-		if ok && classify.Level == 3 {
-			classifyList[key].Children = append(classifyList[key].Children, subList...)
-		}
-	}
-	// todo 整理第二层
-	for key, classify := range classifyList {
-		subList, ok := classifyMap[classify.ExcelClassifyId]
-		if ok && classify.Level == 2 {
-			classifyList[key].Children = append(classifyList[key].Children, subList...)
-		}
-	}
-	// todo 整理第一层
-	for key, classify := range classifyList {
-		subList, ok := classifyMap[classify.ExcelClassifyId]
-		if ok && classify.Level == 1 {
+		if ok {
 			classifyList[key].Children = append(classifyList[key].Children, subList...)
 		}
 	}
+
 	nodeAll := make([]*excel.ExcelClassifyItems, 0)
 	for _, v := range classifyList {
 		if v.ParentId == 0 {
@@ -242,9 +214,8 @@ func (this *ExcelClassifyController) AddExcelClassify() {
 		br.ErrMsg = "查询排序信息失败,Err:" + err.Error()
 		return
 	}
-
+	level := 1
 	// 查询父级分类是否存在
-
 	if req.ParentId > 0 {
 		var parent *excel.ExcelClassify
 		parent, err = excel.GetExcelClassifyById(req.ParentId)
@@ -257,7 +228,7 @@ func (this *ExcelClassifyController) AddExcelClassify() {
 			br.ErrMsg = "查询父级分类信息失败,Err:" + err.Error()
 			return
 		}
-		req.Level = parent.Level + 1
+		level = parent.Level + 1
 	}
 	// 入库
 	timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
@@ -268,7 +239,7 @@ func (this *ExcelClassifyController) AddExcelClassify() {
 		Source:            source,
 		SysUserId:         this.SysUser.AdminId,
 		SysUserRealName:   this.SysUser.RealName,
-		Level:             req.Level,
+		Level:             level,
 		UniqueCode:        utils.MD5(utils.EXCEL_DATA_PREFIX + "_" + timestamp),
 		Sort:              maxSort + 1,
 		CreateTime:        time.Now(),

+ 1 - 1
controllers/data_manage/excel/excel_info.go

@@ -355,7 +355,7 @@ func (c *ExcelInfoController) List() {
 			return
 		}
 
-		childClassify, e := excel3.GetChildClassifyById(excelClassifyId)
+		childClassify, e, _ := excel2.GetChildClassifyByClassifyId(excelClassifyId, source)
 		if e != nil && e.Error() != utils.ErrNoRow() {
 			br.Msg = "获取失败"
 			br.ErrMsg = "获取分类信息失败, GetEdbClassify,Err:" + e.Error()

+ 6 - 0
models/data_manage/excel/excel_classify.go

@@ -70,6 +70,12 @@ func GetExcelClassifyBySource(source int) (items []*ExcelClassifyItems, err erro
 	return
 }
 
+func GetExcelClassifyBySourceOrderByLevel(source int) (items []*ExcelClassifyItems, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT * FROM excel_classify WHERE  source = ? AND is_delete=0 order by level asc, sort asc,excel_classify_id asc`
+	_, err = o.Raw(sql, source).QueryRows(&items)
+	return
+}
 func GetExcelClassifyAll() (items []*ExcelClassifyItems, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := ` SELECT * FROM excel_classify WHERE parent_id<>0 AND is_delete=0 order by sort asc,excel_classify_id asc`

+ 46 - 0
services/data/excel/excel_classify.go

@@ -427,3 +427,49 @@ func moveExcelClassify(parentExcelClassifyInfo, excelClassifyInfo, prevClassify,
 	}
 	return
 }
+
+func GetChildClassifyByClassifyId(targetClassifyId int, source int) (targetList []*excel.ExcelClassifyItems, err error, errMsg string) {
+	//判断是否是挂在顶级目录下
+	targetClassify, err := excel.GetExcelClassifyById(targetClassifyId)
+	if err != nil {
+		if err.Error() == utils.ErrNoRow() {
+			errMsg = "当前分类不存在"
+			err = errors.New(errMsg)
+			return
+		}
+		errMsg = "获取失败"
+		err = errors.New("获取分类信息失败,Err:" + err.Error())
+		return
+	}
+	tmpList, err := excel.GetExcelClassifyBySourceOrderByLevel(source)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		errMsg = "获取失败"
+		err = errors.New("获取数据失败,Err:" + err.Error())
+		return
+	}
+	idMap := make(map[int]struct{})
+	if len(tmpList) > 0 {
+		for _, v := range tmpList {
+			if v.ExcelClassifyId == targetClassify.ExcelClassifyId {
+				idMap[v.ExcelClassifyId] = struct{}{}
+			}
+		}
+		for _, v := range tmpList {
+			if _, ok := idMap[v.ParentId]; ok {
+				idMap[v.ExcelClassifyId] = struct{}{}
+			}
+		}
+		for _, v := range tmpList {
+			if _, ok := idMap[v.ExcelClassifyId]; ok {
+				targetItem := new(excel.ExcelClassifyItems)
+				targetItem.ExcelClassifyId = v.ExcelClassifyId
+				targetItem.ParentId = v.ParentId
+				targetItem.UniqueCode = v.UniqueCode
+				targetItem.Level = v.Level
+				targetList = append(targetList, targetItem)
+			}
+		}
+	}
+
+	return
+}