base_from_rzd_classify_service.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. // Package data
  2. // @Author gmy 2024/8/12 16:09:00
  3. package data
  4. import "eta/eta_api/models/data_manage"
  5. // RzdClassifyList 获取分类列表 包含 分类下的指标名称
  6. func RzdClassifyList() ([]*data_manage.BaseFromRzdClassifyResponse, error) {
  7. // step_1 获取分类列表
  8. rzdClassify, err := data_manage.GetAllRzdClassify()
  9. if err != nil {
  10. return nil, err
  11. }
  12. // step_2 分类id列表
  13. classifyIds := make([]int, 0)
  14. for _, v := range rzdClassify {
  15. classifyIds = append(classifyIds, v.BaseFromRzdClassifyId)
  16. }
  17. // step_3 获取分类下的指标
  18. rzdIndices, err := data_manage.GetRzdIndexByClassifyIds(classifyIds)
  19. if err != nil {
  20. return nil, err
  21. }
  22. // step_4 封装返回
  23. classifyMap := make(map[int]*data_manage.BaseFromRzdClassifyResponse)
  24. indexMap := make(map[int][]*data_manage.BaseFromRzdIndex)
  25. // 创建分类响应映射
  26. for _, classify := range rzdClassify {
  27. classifyMap[classify.BaseFromRzdClassifyId] = &data_manage.BaseFromRzdClassifyResponse{
  28. BaseFromRzdClassifyId: classify.BaseFromRzdClassifyId,
  29. CreateTime: classify.CreateTime,
  30. ModifyTime: classify.ModifyTime,
  31. ClassifyName: classify.ClassifyName,
  32. ParentId: classify.ParentId,
  33. Sort: classify.Sort,
  34. ClassifyNameEn: classify.ClassifyNameEn,
  35. }
  36. }
  37. // 将指标归类到各自的分类
  38. for _, index := range rzdIndices {
  39. indexMap[index.BaseFromRzdClassifyId] = append(indexMap[index.BaseFromRzdClassifyId], index)
  40. }
  41. // step_5 组装最终结果
  42. rzdClassifyAndIndexInfos := make([]*data_manage.BaseFromRzdClassifyResponse, 0)
  43. for _, classifyResponse := range classifyMap {
  44. if classifyResponse.ParentId == 0 { // 根分类
  45. // 添加指标信息
  46. if indices, exists := indexMap[classifyResponse.BaseFromRzdClassifyId]; exists {
  47. classifyResponse.IndexInfo = indices
  48. }
  49. rzdClassifyAndIndexInfos = append(rzdClassifyAndIndexInfos, classifyResponse)
  50. } else {
  51. // 查找父分类并添加到其子分类中
  52. if parent, exists := classifyMap[classifyResponse.ParentId]; exists {
  53. // 添加指标信息
  54. if indices, exists := indexMap[classifyResponse.BaseFromRzdClassifyId]; exists {
  55. classifyResponse.IndexInfo = indices
  56. }
  57. parent.Child = append(parent.Child, classifyResponse)
  58. }
  59. }
  60. }
  61. return rzdClassifyAndIndexInfos, nil
  62. }
  63. // GetRzdClassifyItemByParentId 根据分类id获取分类信息
  64. func GetRzdClassifyItemByParentId(classifyId int) ([]*data_manage.BaseFromRzdClassify, error) {
  65. rzdClassify, err := data_manage.GetRzdClassifyItemByParentId(classifyId)
  66. if err != nil {
  67. return nil, err
  68. }
  69. return rzdClassify, nil
  70. }