chart_classify.go 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package data
  2. import (
  3. "fmt"
  4. "hongze/hongze_chart_lib/models/data_manage"
  5. )
  6. func ChartClassifyListMakeTree(allNode []*data_manage.ChartClassifyItems, node *data_manage.ChartClassifyItems) {
  7. childs, _ := chartClassifyHaveChild(allNode, node) //判断节点是否有子节点并返回
  8. allChartInfo, _ := GetChartClassifyChartInfo()
  9. if len(childs) > 0 {
  10. node.Children = append(node.Children, childs[0:]...) //添加子节点
  11. for _, v := range childs { //查询子节点的子节点,并添加到子节点
  12. _, has := chartClassifyHaveChild(allNode, v)
  13. if has {
  14. ChartClassifyListMakeTree(allNode, v) //递归添加节点
  15. } else {
  16. fmt.Println(v.ChartClassifyId)
  17. edbInfoList := allChartInfo[v.ChartClassifyId]
  18. v.Children = edbInfoList
  19. if v.Children == nil {
  20. childrenArr := make([]*data_manage.ChartClassifyItems, 0)
  21. v.Children = childrenArr
  22. }
  23. }
  24. }
  25. } else {
  26. childrenArr := make([]*data_manage.ChartClassifyItems, 0)
  27. node.Children = childrenArr
  28. }
  29. }
  30. func chartClassifyHaveChild(allNode []*data_manage.ChartClassifyItems, node *data_manage.ChartClassifyItems) (childs []*data_manage.ChartClassifyItems, yes bool) {
  31. for _, v := range allNode {
  32. if v.ParentId == node.ChartClassifyId {
  33. childs = append(childs, v)
  34. }
  35. }
  36. if len(childs) > 0 {
  37. yes = true
  38. }
  39. return
  40. }
  41. func GetChartClassifyChartInfo() (result map[int][]*data_manage.ChartClassifyItems, err error) {
  42. cMap := make(map[int][]*data_manage.ChartClassifyItems)
  43. items, err := data_manage.GetChartInfoAll()
  44. if err != nil {
  45. return
  46. }
  47. for _, v := range items {
  48. childrenArr := make([]*data_manage.ChartClassifyItems, 0)
  49. v.Children = childrenArr
  50. if items, ok := cMap[v.ChartClassifyId]; ok {
  51. items = append(items, v)
  52. cMap[v.ChartClassifyId] = items
  53. } else {
  54. infoList := make([]*data_manage.ChartClassifyItems, 0)
  55. infoList = append(infoList, v)
  56. cMap[v.ChartClassifyId] = infoList
  57. }
  58. }
  59. result = cMap
  60. return
  61. }
  62. func ChartClassifyItemsMakeTree(allNode []*data_manage.ChartClassifyItems, node *data_manage.ChartClassifyItems) {
  63. childs, _ := chartClassifyHaveChild(allNode, node) //判断节点是否有子节点并返回
  64. if len(childs) > 0 {
  65. node.Children = append(node.Children, childs[0:]...) //添加子节点
  66. for _, v := range childs { //查询子节点的子节点,并添加到子节点
  67. _, has := chartClassifyHaveChild(allNode, v)
  68. if has {
  69. ChartClassifyItemsMakeTree(allNode, v) //递归添加节点
  70. } else {
  71. childrenArr := make([]*data_manage.ChartClassifyItems, 0)
  72. v.Children = childrenArr
  73. }
  74. }
  75. } else {
  76. childrenArr := make([]*data_manage.ChartClassifyItems, 0)
  77. node.Children = childrenArr
  78. }
  79. }