| | |
| | | package com.linghu.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.linghu.mapper.SectionalizationMapper; |
| | | import com.linghu.mapper.UserMapper; |
| | | import com.linghu.model.entity.Sectionalization; |
| | | import com.linghu.model.entity.User; |
| | | import com.linghu.model.vo.SectionalizationUserVO; |
| | | import com.linghu.service.SectionalizationService; |
| | | import com.linghu.service.UserService; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * @author xy |
| | |
| | | public class SectionalizationServiceImpl extends ServiceImpl<SectionalizationMapper, Sectionalization> |
| | | implements SectionalizationService { |
| | | |
| | | @Autowired |
| | | private UserMapper userMapper; |
| | | @Override |
| | | public List<SectionalizationUserVO> SectionalizationUser() { |
| | | // 1. 查询所有状态为"正常"的用户 |
| | | List<User> userList = userMapper.selectList( |
| | | new LambdaQueryWrapper<User>() |
| | | .eq(User::getStatus, "正常") |
| | | ); |
| | | |
| | | // 2. 提取所有分组ID并去重 |
| | | List<Integer> sectionalizationIdList = userList.stream() |
| | | .map(User::getSectionalization_id) |
| | | .distinct() |
| | | .collect(Collectors.toList()); |
| | | |
| | | // 3. 查询这些分组的基本信息 |
| | | List<Sectionalization> sectionalizationList = this.baseMapper.selectList( |
| | | new LambdaQueryWrapper<Sectionalization>() |
| | | .in(Sectionalization::getSectionalization_id, sectionalizationIdList) |
| | | ); |
| | | |
| | | // 4. 创建分组ID到分组名称的映射 |
| | | Map<Integer, String> sectionalizationNameMap = sectionalizationList.stream() |
| | | .collect(Collectors.toMap( |
| | | Sectionalization::getSectionalization_id, |
| | | Sectionalization::getSectionalization_name |
| | | )); |
| | | |
| | | // 5. 按分组ID对用户进行分组 |
| | | Map<Integer, List<User>> usersBySectionalization = userList.stream() |
| | | .collect(Collectors.groupingBy(User::getSectionalization_id)); |
| | | |
| | | // 6. 构建最终返回结果 |
| | | return sectionalizationIdList.stream() |
| | | .map(id -> { |
| | | SectionalizationUserVO vo = new SectionalizationUserVO(); |
| | | vo.setSectionalization_id(id); |
| | | vo.setSectionalization_name(sectionalizationNameMap.get(id)); |
| | | vo.setSectionalization_users(usersBySectionalization.getOrDefault(id, Collections.emptyList())); |
| | | return vo; |
| | | }) |
| | | .collect(Collectors.toList()); |
| | | } |
| | | } |
| | | |
| | | |