|
@@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.yingpaipay.business.constant.FolderTypeConst;
|
|
import com.yingpaipay.business.constant.FolderTypeConst;
|
|
|
import com.yingpaipay.business.domain.Folder;
|
|
import com.yingpaipay.business.domain.Folder;
|
|
|
-import com.yingpaipay.business.domain.Project;
|
|
|
|
|
import com.yingpaipay.business.domain.bo.FolderBo;
|
|
import com.yingpaipay.business.domain.bo.FolderBo;
|
|
|
import com.yingpaipay.business.domain.bo.ProjectCenterListBo;
|
|
import com.yingpaipay.business.domain.bo.ProjectCenterListBo;
|
|
|
import com.yingpaipay.business.domain.bo.ProjectCenterMemberListBo;
|
|
import com.yingpaipay.business.domain.bo.ProjectCenterMemberListBo;
|
|
@@ -14,17 +13,19 @@ import com.yingpaipay.business.domain.vo.FolderListVo;
|
|
|
import com.yingpaipay.business.domain.vo.FolderVo;
|
|
import com.yingpaipay.business.domain.vo.FolderVo;
|
|
|
import com.yingpaipay.business.domain.vo.ProjectCenterListVo;
|
|
import com.yingpaipay.business.domain.vo.ProjectCenterListVo;
|
|
|
import com.yingpaipay.business.domain.vo.ProjectCenterMemberListVo;
|
|
import com.yingpaipay.business.domain.vo.ProjectCenterMemberListVo;
|
|
|
-import com.yingpaipay.system.domain.SysUserFolder;
|
|
|
|
|
-import com.yingpaipay.system.mapper.SysUserFolderMapper;
|
|
|
|
|
|
|
+import com.yingpaipay.system.domain.SysUserFolders;
|
|
|
|
|
+import com.yingpaipay.system.mapper.SysUserFoldersMapper;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.dromara.common.core.exception.BusinessException;
|
|
import org.dromara.common.core.exception.BusinessException;
|
|
|
import org.dromara.common.core.utils.MapstructUtils;
|
|
import org.dromara.common.core.utils.MapstructUtils;
|
|
|
import org.dromara.common.core.utils.MessageUtils;
|
|
import org.dromara.common.core.utils.MessageUtils;
|
|
|
import org.dromara.common.core.utils.StringUtils;
|
|
import org.dromara.common.core.utils.StringUtils;
|
|
|
|
|
+import org.dromara.common.json.utils.JsonUtils;
|
|
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
|
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|
|
import org.dromara.system.domain.SysUser;
|
|
import org.dromara.system.domain.SysUser;
|
|
|
|
|
+import org.dromara.system.domain.vo.SysUserVo;
|
|
|
import org.dromara.system.service.ISysDeptService;
|
|
import org.dromara.system.service.ISysDeptService;
|
|
|
import org.dromara.system.service.ISysUserService;
|
|
import org.dromara.system.service.ISysUserService;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
@@ -32,7 +33,6 @@ import com.yingpaipay.business.mapper.FolderMapper;
|
|
|
import com.yingpaipay.business.service.IFolderService;
|
|
import com.yingpaipay.business.service.IFolderService;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
-import java.sql.Wrapper;
|
|
|
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
@@ -49,7 +49,7 @@ import java.util.stream.Collectors;
|
|
|
public class FolderServiceImpl implements IFolderService {
|
|
public class FolderServiceImpl implements IFolderService {
|
|
|
|
|
|
|
|
private final FolderMapper baseMapper;
|
|
private final FolderMapper baseMapper;
|
|
|
- private final SysUserFolderMapper userFolderMapper;
|
|
|
|
|
|
|
+ private final SysUserFoldersMapper userFoldersMapper;
|
|
|
|
|
|
|
|
private final ISysUserService userService;
|
|
private final ISysUserService userService;
|
|
|
private final ISysDeptService deptService;
|
|
private final ISysDeptService deptService;
|
|
@@ -195,47 +195,67 @@ public class FolderServiceImpl implements IFolderService {
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public TableDataInfo<ProjectCenterMemberListVo> queryCenterMember(ProjectCenterMemberListBo bo, PageQuery pageQuery) {
|
|
public TableDataInfo<ProjectCenterMemberListVo> queryCenterMember(ProjectCenterMemberListBo bo, PageQuery pageQuery) {
|
|
|
- List<Long> folderIds = new ArrayList<>();
|
|
|
|
|
- Map<Long, String> folderMap = new HashMap<>();
|
|
|
|
|
- baseMapper.selectList(Wrappers.lambdaQuery(Folder.class)
|
|
|
|
|
- .like(StringUtils.isNotBlank(bo.getCenter()), Folder::getName, bo.getCenter())
|
|
|
|
|
- .eq(Folder::getProjectId, bo.getProjectId())
|
|
|
|
|
- ).forEach(e -> {
|
|
|
|
|
- folderIds.add(e.getId());
|
|
|
|
|
- folderMap.put(e.getId(), e.getName());
|
|
|
|
|
- });
|
|
|
|
|
- if (folderIds.isEmpty()) {
|
|
|
|
|
- return TableDataInfo.build();
|
|
|
|
|
- }
|
|
|
|
|
- List<SysUserFolder> userFolders = userFolderMapper.selectList(
|
|
|
|
|
- Wrappers.lambdaQuery(SysUserFolder.class).
|
|
|
|
|
- in(SysUserFolder::getFolderId, folderIds)
|
|
|
|
|
|
|
+ IPage<SysUserFolders> page = userFoldersMapper.selectPage(
|
|
|
|
|
+ pageQuery.build(),
|
|
|
|
|
+ Wrappers.lambdaQuery(SysUserFolders.class)
|
|
|
|
|
+ .eq(SysUserFolders::getProjectId, bo.getProjectId())
|
|
|
|
|
+ .orderByDesc(SysUserFolders::getUserId)
|
|
|
);
|
|
);
|
|
|
List<Long> userIds = new ArrayList<>();
|
|
List<Long> userIds = new ArrayList<>();
|
|
|
- userFolders.forEach(e -> userIds.add(e.getUserId()));
|
|
|
|
|
- IPage<SysUser> page = userService.selectPageByNameAndIds(bo.getName(), userIds, pageQuery);
|
|
|
|
|
List<Long> deptIds = new ArrayList<>();
|
|
List<Long> deptIds = new ArrayList<>();
|
|
|
|
|
+ Map<Long, SysUserVo> userMap = new HashMap<>();
|
|
|
Map<Long, String> deptMap = new HashMap<>();
|
|
Map<Long, String> deptMap = new HashMap<>();
|
|
|
- page.getRecords().forEach(e -> deptIds.add(e.getDeptId()));
|
|
|
|
|
- if (!deptIds.isEmpty()) {
|
|
|
|
|
- deptService.selectDeptByIds(deptIds).forEach(e -> deptMap.put(e.getDeptId(), e.getDeptName()));
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ Map<Long, Folder> folderMap = new HashMap<>();
|
|
|
|
|
+ page.getRecords().forEach(e -> userIds.add(e.getUserId()));
|
|
|
|
|
+ userService.selectUserVoByIds(userIds).forEach(e -> {
|
|
|
|
|
+ userMap.put(e.getUserId(), e);
|
|
|
|
|
+ deptIds.add(e.getDeptId());
|
|
|
|
|
+ });
|
|
|
|
|
+ deptService.selectDeptByIds(deptIds).forEach(e -> deptMap.put(e.getDeptId(), e.getDeptName()));
|
|
|
|
|
+ List<Folder> folderList = baseMapper.selectList(Wrappers.lambdaQuery(Folder.class).eq(Folder::getProjectId, bo.getProjectId()).eq(Folder::getType, FolderTypeConst.CENTER));
|
|
|
|
|
+ folderList.forEach(e -> folderMap.put(e.getId(), e));
|
|
|
|
|
+ Map<Long, List<Folder>> childerMap = folderList.stream().collect(Collectors.groupingBy(Folder::getParentId));
|
|
|
return TableDataInfo.build(page.convert(e -> {
|
|
return TableDataInfo.build(page.convert(e -> {
|
|
|
|
|
+
|
|
|
|
|
+ SysUserVo user = userMap.get(e.getUserId());
|
|
|
ProjectCenterMemberListVo vo = new ProjectCenterMemberListVo();
|
|
ProjectCenterMemberListVo vo = new ProjectCenterMemberListVo();
|
|
|
- StringBuilder centers = new StringBuilder();
|
|
|
|
|
- userFolders.stream()
|
|
|
|
|
- .filter(entity -> entity.getUserId().equals(e.getUserId()))
|
|
|
|
|
- .forEach(entity -> centers.append(folderMap.get(entity.getFolderId())).append(","));
|
|
|
|
|
- vo.setCenters(centers.toString());
|
|
|
|
|
- vo.setId(e.getUserId());
|
|
|
|
|
- vo.setName(e.getNickName());
|
|
|
|
|
- vo.setPhoneNumber(e.getPhonenumber());
|
|
|
|
|
- vo.setDept(deptMap.get(e.getDeptId()));
|
|
|
|
|
- vo.setTime(e.getCreateTime());
|
|
|
|
|
|
|
+ Set<Folder> centers= new HashSet<>();
|
|
|
|
|
+ if (e.getFolders().equals("*")) {
|
|
|
|
|
+ folderMap.forEach((k, v) -> {
|
|
|
|
|
+ if (v.getType().equals(FolderTypeConst.CENTER)) {
|
|
|
|
|
+ centers.add(v);
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ } else {
|
|
|
|
|
+ Long[] folderIds = Arrays.stream(e.getFolders().split(",")).map(Long::valueOf).toArray(Long[]::new);
|
|
|
|
|
+ for (Long folderId : folderIds) {
|
|
|
|
|
+ Folder folder = folderMap.get(folderId);
|
|
|
|
|
+ if (folder != null) {
|
|
|
|
|
+ buildCenters(folder, childerMap, centers);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ vo.setCenters(String.join(",", new TreeSet<>(centers.stream().map(Folder::getName).collect(Collectors.toSet()))));
|
|
|
|
|
+ vo.setId(user.getUserId());
|
|
|
|
|
+ vo.setName(user.getNickName());
|
|
|
|
|
+ vo.setPhoneNumber(user.getPhonenumber());
|
|
|
|
|
+ vo.setDept(deptMap.get(user.getDeptId()));
|
|
|
|
|
+ vo.setTime(user.getCreateTime());
|
|
|
return vo;
|
|
return vo;
|
|
|
}));
|
|
}));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ private void buildCenters(Folder current, Map<Long, List<Folder>> childrenMap, Set<Folder> result) {
|
|
|
|
|
+ result.add(current);
|
|
|
|
|
+ List<Folder> childrens = childrenMap.get(current.getId());
|
|
|
|
|
+ if (childrens != null) {
|
|
|
|
|
+ for (Folder children : childrens) {
|
|
|
|
|
+ buildCenters(children, childrenMap, result);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
private LambdaQueryWrapper<Folder> buildCenterQueryWrapper(ProjectCenterListBo bo) {
|
|
private LambdaQueryWrapper<Folder> buildCenterQueryWrapper(ProjectCenterListBo bo) {
|
|
|
return Wrappers.lambdaQuery(Folder.class)
|
|
return Wrappers.lambdaQuery(Folder.class)
|
|
|
.eq(Folder::getType, FolderTypeConst.CENTER)
|
|
.eq(Folder::getType, FolderTypeConst.CENTER)
|