|
|
|
@ -1,14 +1,19 @@ |
|
|
|
package com.project.ding.domain.service.impl; |
|
|
|
|
|
|
|
import cn.hutool.core.util.BooleanUtil; |
|
|
|
import cn.hutool.core.util.StrUtil; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
|
import com.project.base.domain.result.PageResult; |
|
|
|
import com.project.base.domain.result.Result; |
|
|
|
import com.project.base.domain.utils.PageConverter; |
|
|
|
import com.project.base.domain.utils.TreeUtils; |
|
|
|
import com.project.ding.domain.dto.DepartmentDTO; |
|
|
|
import com.project.ding.domain.dto.UserDTO; |
|
|
|
import com.project.ding.domain.entity.DepartmentEntity; |
|
|
|
import com.project.ding.domain.entity.UserEntity; |
|
|
|
import com.project.ding.domain.param.UserParam; |
|
|
|
import com.project.ding.domain.service.DepartmentBaseService; |
|
|
|
import com.project.ding.domain.service.SearchUserDomainService; |
|
|
|
import com.project.ding.mapper.UserMapper; |
|
|
|
import com.project.task.domain.entity.TaskUserEntity; |
|
|
|
@ -16,9 +21,8 @@ import com.project.task.domain.enums.TaskUserStatusEnum; |
|
|
|
import com.project.task.domain.service.TaskUserBaseService; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Objects; |
|
|
|
import java.util.Set; |
|
|
|
|
|
|
|
import java.util.*; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
@Service |
|
|
|
@ -30,6 +34,9 @@ public class SearchUserDomainServiceImpl implements SearchUserDomainService { |
|
|
|
@Autowired |
|
|
|
private TaskUserBaseService taskUserBaseService; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private DepartmentBaseService departmentBaseService; |
|
|
|
|
|
|
|
@Override |
|
|
|
public Result<PageResult<UserDTO>> search(UserParam param) throws Exception { |
|
|
|
LambdaQueryWrapper<UserEntity> queryWrapper = new LambdaQueryWrapper<>(); |
|
|
|
@ -63,7 +70,25 @@ public class SearchUserDomainServiceImpl implements SearchUserDomainService { |
|
|
|
dto.setPassedExamTaskCount(Long.valueOf(taskUserBaseService.count(new LambdaQueryWrapper<TaskUserEntity>() |
|
|
|
.eq(TaskUserEntity::getUserId, dto.getId()) |
|
|
|
.in(TaskUserEntity::getStatus, List.of(TaskUserStatusEnum.Pass.getValue())))).intValue()); |
|
|
|
|
|
|
|
// 构建部门信息
|
|
|
|
List<String> deptNameList = new ArrayList<>(); |
|
|
|
for (String singleDeptIdStr : dto.getDeptIdStr().split(",")) { |
|
|
|
Long singleDeptId = Long.valueOf(singleDeptIdStr); |
|
|
|
DepartmentDTO departmentDTO = departmentBaseService.getById(singleDeptId).toDTO(DepartmentDTO::new); |
|
|
|
List<DepartmentDTO> departmentDTOPathList = departmentBaseService.lambdaQuery().in(DepartmentEntity::getId, departmentDTO.getDeptIdPath()).list() |
|
|
|
.stream().map(departmentEntity -> departmentEntity.toDTO(DepartmentDTO::new)).toList(); |
|
|
|
departmentDTOPathList.forEach(depDTO -> |
|
|
|
depDTO.setDeptNamePath(new ArrayList<>(Collections.singletonList(depDTO.getName())))); |
|
|
|
departmentDTOPathList = TreeUtils.buildLongTree(departmentDTOPathList , DepartmentDTO::getId , DepartmentDTO::getParentId , (parentDTO , childrenList) -> { |
|
|
|
parentDTO.setChildrenList(childrenList); |
|
|
|
parentDTO.setLeaf(Boolean.FALSE); |
|
|
|
childrenList.forEach(childDTO -> childDTO.getDeptNamePath().addAll(0, parentDTO.getDeptNamePath())); |
|
|
|
}); |
|
|
|
departmentDTOPathList = TreeUtils.tree2List(departmentDTOPathList, DepartmentDTO::getChildrenList); |
|
|
|
deptNameList.add(String.join("-" , departmentDTOPathList.stream().filter(DepartmentDTO::getLeaf) |
|
|
|
.findAny().orElse(new DepartmentDTO()).getDeptNamePath())); |
|
|
|
} |
|
|
|
dto.setDeptNameStr(String.join("," , deptNameList)); |
|
|
|
return dto; |
|
|
|
} |
|
|
|
|
|
|
|
|