DeptServiceImpl.java 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. package com.flow.service.impl;
  2. import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
  3. import com.flow.common.core.exception.BaseException;
  4. import com.flow.common.mybatis.constant.SqlConstant;
  5. import com.flow.common.mybatis.service.impl.BaseServiceImpl;
  6. import com.flow.dao.DeptDao;
  7. import com.flow.entity.Dept;
  8. import com.flow.entity.User;
  9. import com.flow.mapstruct.DeptMapper;
  10. import com.flow.model.DeptQuery;
  11. import com.flow.service.DeptService;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.stereotype.Service;
  14. import org.springframework.transaction.annotation.Transactional;
  15. import java.util.Comparator;
  16. import java.util.List;
  17. import java.util.Optional;
  18. import java.util.Set;
  19. import java.util.stream.Collectors;
  20. @Service
  21. public class DeptServiceImpl extends BaseServiceImpl<DeptDao, Dept> implements DeptService {
  22. @Autowired
  23. private DeptDao deptDao;
  24. @Autowired
  25. private DeptMapper deptMapper;
  26. @Override
  27. public List<Dept> getList(DeptQuery deptQuery) {
  28. return deptDao.getList(deptQuery);
  29. }
  30. @Override
  31. public List<Dept> search(DeptQuery deptQuery) {
  32. Dept dept = deptMapper.toEntity(deptQuery);
  33. return deptDao.lambdaQueryChain()
  34. .setEntity(dept)
  35. .list();
  36. }
  37. @Override
  38. public List<Dept> getOptions(Set<String> deptIds) {
  39. return deptDao.lambdaQueryChain()
  40. .in(Dept::getId, deptIds)
  41. .list();
  42. }
  43. @Override
  44. public List<Dept> getTree(DeptQuery deptQuery) {
  45. List<Dept> list = this.getList(deptQuery);
  46. //构建部门树
  47. return list.stream()
  48. .filter(m -> m.getPid() == 0)
  49. .sorted(Comparator.comparingInt(Dept::getSort))
  50. .peek(m -> m.setChildren(this.getChildNode(m, list)))
  51. .collect(Collectors.toList());
  52. }
  53. private List<Dept> getChildNode(Dept root, List<Dept> allListTree) {
  54. List<Dept> collect = allListTree.stream()
  55. .filter((treeEntity) -> treeEntity.getPid().equals(root.getId()))
  56. .sorted(Comparator.comparingInt(Dept::getSort))
  57. .peek((treeEntity) -> treeEntity.setChildren(getChildNode(treeEntity, allListTree)))
  58. .collect(Collectors.toList());
  59. if(CollectionUtils.isEmpty(collect)){
  60. return null;
  61. }
  62. return collect;
  63. }
  64. @Override
  65. public List<Dept> getChild(Long pid) {
  66. return deptDao.lambdaQueryChain()
  67. .eq(Dept::getPid, pid)
  68. .list();
  69. }
  70. @Transactional(rollbackFor = Exception.class)
  71. @Override
  72. public Dept create(Dept dept) {
  73. Optional<Dept> optional = deptDao.lambdaQueryChain()
  74. .eq(Dept::getPid, dept.getPid())
  75. .eq(Dept::getName, dept.getName())
  76. .last(SqlConstant.LIMIT1)
  77. .oneOpt();
  78. if (optional.isPresent()) {
  79. throw new BaseException("部门名称已存在");
  80. }
  81. deptDao.insert(dept);
  82. return dept;
  83. }
  84. @Transactional(rollbackFor = Exception.class)
  85. @Override
  86. public Dept update(Dept dept) {
  87. deptDao.updateById(dept);
  88. List<Dept> list = deptDao.lambdaQueryChain()
  89. .select(Dept::getId)
  90. .eq(Dept::getPid, dept.getPid())
  91. .eq(Dept::getName, dept.getName())
  92. .last(SqlConstant.LIMIT2)
  93. .list();
  94. if (list.size() > 1) {
  95. throw new BaseException("部门名称已存在");
  96. }
  97. return dept;
  98. }
  99. @Transactional(rollbackFor = Exception.class)
  100. @Override
  101. public void delete(Set<Long> ids) {
  102. deptDao.deleteBatchIds(ids);
  103. }
  104. @Override
  105. public User getLeader(String id) {
  106. return deptDao.getLeader(id);
  107. }
  108. @Override
  109. public List<User> getLeader(List<String> ids) {
  110. return deptDao.getLeaders(ids);
  111. }
  112. @Override
  113. public List<User> getUsers(String id) {
  114. return deptDao.getUsers(id);
  115. }
  116. @Override
  117. public List<User> getUsers(List<String> ids) {
  118. return deptDao.getUsersByIds(ids);
  119. }
  120. @Override
  121. public List<User> getRoleUsers(List<String> ids,List<String> roleIds) {
  122. return deptDao.getRoleUsers(ids,roleIds);
  123. }
  124. }