123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- package com.flow.service.impl;
- import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
- import com.flow.common.core.exception.BaseException;
- import com.flow.common.mybatis.constant.SqlConstant;
- import com.flow.common.mybatis.service.impl.BaseServiceImpl;
- import com.flow.dao.DeptDao;
- import com.flow.entity.Dept;
- import com.flow.entity.User;
- import com.flow.mapstruct.DeptMapper;
- import com.flow.model.DeptQuery;
- import com.flow.service.DeptService;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import java.util.Comparator;
- import java.util.List;
- import java.util.Optional;
- import java.util.Set;
- import java.util.stream.Collectors;
- @Service
- public class DeptServiceImpl extends BaseServiceImpl<DeptDao, Dept> implements DeptService {
- @Autowired
- private DeptDao deptDao;
- @Autowired
- private DeptMapper deptMapper;
- @Override
- public List<Dept> getList(DeptQuery deptQuery) {
- return deptDao.getList(deptQuery);
- }
- @Override
- public List<Dept> search(DeptQuery deptQuery) {
- Dept dept = deptMapper.toEntity(deptQuery);
- return deptDao.lambdaQueryChain()
- .setEntity(dept)
- .list();
- }
- @Override
- public List<Dept> getOptions(Set<String> deptIds) {
- return deptDao.lambdaQueryChain()
- .in(Dept::getId, deptIds)
- .list();
- }
- @Override
- public List<Dept> getTree(DeptQuery deptQuery) {
- List<Dept> list = this.getList(deptQuery);
- //构建部门树
- return list.stream()
- .filter(m -> m.getPid() == 0)
- .sorted(Comparator.comparingInt(Dept::getSort))
- .peek(m -> m.setChildren(this.getChildNode(m, list)))
- .collect(Collectors.toList());
- }
- private List<Dept> getChildNode(Dept root, List<Dept> allListTree) {
- List<Dept> collect = allListTree.stream()
- .filter((treeEntity) -> treeEntity.getPid().equals(root.getId()))
- .sorted(Comparator.comparingInt(Dept::getSort))
- .peek((treeEntity) -> treeEntity.setChildren(getChildNode(treeEntity, allListTree)))
- .collect(Collectors.toList());
- if(CollectionUtils.isEmpty(collect)){
- return null;
- }
- return collect;
- }
- @Override
- public List<Dept> getChild(Long pid) {
- return deptDao.lambdaQueryChain()
- .eq(Dept::getPid, pid)
- .list();
- }
- @Transactional(rollbackFor = Exception.class)
- @Override
- public Dept create(Dept dept) {
- Optional<Dept> optional = deptDao.lambdaQueryChain()
- .eq(Dept::getPid, dept.getPid())
- .eq(Dept::getName, dept.getName())
- .last(SqlConstant.LIMIT1)
- .oneOpt();
- if (optional.isPresent()) {
- throw new BaseException("部门名称已存在");
- }
- deptDao.insert(dept);
- return dept;
- }
- @Transactional(rollbackFor = Exception.class)
- @Override
- public Dept update(Dept dept) {
- deptDao.updateById(dept);
- List<Dept> list = deptDao.lambdaQueryChain()
- .select(Dept::getId)
- .eq(Dept::getPid, dept.getPid())
- .eq(Dept::getName, dept.getName())
- .last(SqlConstant.LIMIT2)
- .list();
- if (list.size() > 1) {
- throw new BaseException("部门名称已存在");
- }
- return dept;
- }
- @Transactional(rollbackFor = Exception.class)
- @Override
- public void delete(Set<Long> ids) {
- deptDao.deleteBatchIds(ids);
- }
- @Override
- public User getLeader(String id) {
- return deptDao.getLeader(id);
- }
- @Override
- public List<User> getLeader(List<String> ids) {
- return deptDao.getLeaders(ids);
- }
- @Override
- public List<User> getUsers(String id) {
- return deptDao.getUsers(id);
- }
- @Override
- public List<User> getUsers(List<String> ids) {
- return deptDao.getUsersByIds(ids);
- }
- @Override
- public List<User> getRoleUsers(List<String> ids,List<String> roleIds) {
- return deptDao.getRoleUsers(ids,roleIds);
- }
- }
|