1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- // Package data
- // @Author gmy 2024/8/12 16:09:00
- package data
- import "eta/eta_api/models/data_manage"
- // RzdClassifyList 获取分类列表 包含 分类下的指标名称
- func RzdClassifyList() ([]*data_manage.BaseFromRzdClassifyResponse, error) {
- // step_1 获取分类列表
- rzdClassify, err := data_manage.GetAllRzdClassify()
- if err != nil {
- return nil, err
- }
- // step_2 分类id列表
- classifyIds := make([]int, 0)
- for _, v := range rzdClassify {
- classifyIds = append(classifyIds, v.BaseFromRzdClassifyId)
- }
- // step_3 获取分类下的指标
- rzdIndices, err := data_manage.GetRzdIndexByClassifyIds(classifyIds)
- if err != nil {
- return nil, err
- }
- // step_4 封装返回
- classifyMap := make(map[int]*data_manage.BaseFromRzdClassifyResponse)
- indexMap := make(map[int][]*data_manage.BaseFromRzdIndex)
- // 创建分类响应映射
- for _, classify := range rzdClassify {
- classifyMap[classify.BaseFromRzdClassifyId] = &data_manage.BaseFromRzdClassifyResponse{
- BaseFromRzdClassifyId: classify.BaseFromRzdClassifyId,
- CreateTime: classify.CreateTime,
- ModifyTime: classify.ModifyTime,
- ClassifyName: classify.ClassifyName,
- ParentId: classify.ParentId,
- Sort: classify.Sort,
- ClassifyNameEn: classify.ClassifyNameEn,
- }
- }
- // 将指标归类到各自的分类
- for _, index := range rzdIndices {
- indexMap[index.BaseFromRzdClassifyId] = append(indexMap[index.BaseFromRzdClassifyId], index)
- }
- // step_5 组装最终结果
- rzdClassifyAndIndexInfos := make([]*data_manage.BaseFromRzdClassifyResponse, 0)
- for _, classifyResponse := range classifyMap {
- if classifyResponse.ParentId == 0 { // 根分类
- // 添加指标信息
- if indices, exists := indexMap[classifyResponse.BaseFromRzdClassifyId]; exists {
- classifyResponse.IndexInfo = indices
- }
- rzdClassifyAndIndexInfos = append(rzdClassifyAndIndexInfos, classifyResponse)
- } else {
- // 查找父分类并添加到其子分类中
- if parent, exists := classifyMap[classifyResponse.ParentId]; exists {
- // 添加指标信息
- if indices, exists := indexMap[classifyResponse.BaseFromRzdClassifyId]; exists {
- classifyResponse.IndexInfo = indices
- }
- parent.Child = append(parent.Child, classifyResponse)
- }
- }
- }
- return rzdClassifyAndIndexInfos, nil
- }
|