Browse Source

用户部门信息构建

master
luoweijian 2 weeks ago
parent
commit
ad057c6b43
  1. 2
      src/main/java/com/project/ding/domain/dto/DepartmentDTO.java
  2. 4
      src/main/java/com/project/ding/domain/dto/UserDTO.java
  3. 33
      src/main/java/com/project/ding/domain/service/impl/SearchUserDomainServiceImpl.java
  4. 2
      src/main/java/com/project/task/domain/dto/TaskDTO.java
  5. 3
      src/main/java/com/project/task/domain/param/TaskParam.java
  6. 4
      src/main/java/com/project/task/domain/service/impl/SearchTaskDomainServiceImpl.java

2
src/main/java/com/project/ding/domain/dto/DepartmentDTO.java

@ -19,4 +19,6 @@ public class DepartmentDTO extends BaseDTO {
private List<Long> deptIdPath;
private List<String> deptNamePath;
}

4
src/main/java/com/project/ding/domain/dto/UserDTO.java

@ -32,6 +32,8 @@ public class UserDTO extends BaseDTO {
private String deptIdStr;
private String deptNameStr;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date hiredDate;
@ -72,7 +74,7 @@ public class UserDTO extends BaseDTO {
public UserDTO desensitize() {
this.mobile = DesensitizedUtil.mobilePhone(this.getMobile());
this.setName(DesensitizedUtil.chineseName(this.getMobile()));
this.setName(DesensitizedUtil.chineseName(this.getName()));
return this;
}
}

33
src/main/java/com/project/ding/domain/service/impl/SearchUserDomainServiceImpl.java

@ -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;
}

2
src/main/java/com/project/task/domain/dto/TaskDTO.java

@ -57,4 +57,6 @@ public class TaskDTO extends BaseDTO {
private Long businessId;
private List<UserDTO> participantUserDTOList;
private Integer totalQuestionNum;
}

3
src/main/java/com/project/task/domain/param/TaskParam.java

@ -11,6 +11,9 @@ public class TaskParam extends BaseParam {
private Long subLineId;
private Long businessId;
private String candidateTaskStatus;
private Integer sortType;

4
src/main/java/com/project/task/domain/service/impl/SearchTaskDomainServiceImpl.java

@ -43,6 +43,9 @@ public class SearchTaskDomainServiceImpl implements SearchTaskDomainService {
if (Objects.nonNull(param.getSubLineId())) {
queryWrapper.eq(TaskEntity::getSubLineId , param.getSubLineId());
}
if (Objects.nonNull(param.getBusinessId())) {
queryWrapper.eq(TaskEntity::getBusinessId , param.getBusinessId());
}
queryWrapper.orderByDesc(TaskEntity::getId);
IPage<TaskEntity> taskEntityPage = taskMapper.selectPage(
PageConverter.toMpPage(param),
@ -70,6 +73,7 @@ public class SearchTaskDomainServiceImpl implements SearchTaskDomainService {
return userDTO;
}).toList();
dto.setParticipantUserDTOList(participantUserDTOList);
dto.setTotalQuestionNum(dto.getSingleChoiceNum() + dto.getMultipleChoiceNum() + dto.getTrueFalseNum());
return dto;
}

Loading…
Cancel
Save