| | |
| | | import org.springframework.beans.factory.annotation.Autowired;
|
| | | import org.springframework.stereotype.Service;
|
| | | import com.ruoyi.common.constant.UserConstants;
|
| | | import com.ruoyi.common.exception.CustomException;
|
| | | import com.ruoyi.common.core.text.Convert;
|
| | | import com.ruoyi.common.exception.ServiceException;
|
| | | import com.ruoyi.common.utils.SecurityUtils;
|
| | | import com.ruoyi.common.utils.StringUtils;
|
| | | import com.ruoyi.common.utils.spring.SpringUtils;
|
| | | import com.ruoyi.framework.aspectj.lang.annotation.DataScope;
|
| | | import com.ruoyi.framework.web.domain.TreeSelect;
|
| | | import com.ruoyi.project.system.domain.SysDept;
|
| | | import com.ruoyi.project.system.domain.SysRole;
|
| | | import com.ruoyi.project.system.domain.SysUser;
|
| | | import com.ruoyi.project.system.mapper.SysDeptMapper;
|
| | | import com.ruoyi.project.system.mapper.SysRoleMapper;
|
| | | import com.ruoyi.project.system.service.ISysDeptService;
|
| | |
|
| | | /**
|
| | |
| | | {
|
| | | @Autowired
|
| | | private SysDeptMapper deptMapper;
|
| | | |
| | | @Autowired
|
| | | private SysRoleMapper roleMapper;
|
| | |
|
| | | /**
|
| | | * 查询部门管理数据
|
| | |
| | | {
|
| | | return deptMapper.selectDeptList(dept);
|
| | | }
|
| | | |
| | | /**
|
| | | * 查询部门树结构信息
|
| | | * |
| | | * @param dept 部门信息
|
| | | * @return 部门树信息集合
|
| | | */
|
| | | @Override
|
| | | public List<TreeSelect> selectDeptTreeList(SysDept dept)
|
| | | {
|
| | | List<SysDept> depts = SpringUtils.getAopProxy(this).selectDeptList(dept);
|
| | | return buildDeptTreeSelect(depts);
|
| | | }
|
| | |
|
| | | /**
|
| | | * 构建前端所需要树结构
|
| | |
| | | public List<SysDept> buildDeptTree(List<SysDept> depts)
|
| | | {
|
| | | List<SysDept> returnList = new ArrayList<SysDept>();
|
| | | List<Long> tempList = new ArrayList<Long>();
|
| | | List<Long> tempList = depts.stream().map(SysDept::getDeptId).collect(Collectors.toList());
|
| | | for (SysDept dept : depts)
|
| | | {
|
| | | tempList.add(dept.getDeptId());
|
| | | }
|
| | | for (Iterator<SysDept> iterator = depts.iterator(); iterator.hasNext();)
|
| | | {
|
| | | SysDept dept = (SysDept) iterator.next();
|
| | | // 如果是顶级节点, 遍历该父节点的所有子节点
|
| | | if (!tempList.contains(dept.getParentId()))
|
| | | {
|
| | |
| | | * @return 选中部门列表
|
| | | */
|
| | | @Override
|
| | | public List<Integer> selectDeptListByRoleId(Long roleId)
|
| | | public List<Long> selectDeptListByRoleId(Long roleId)
|
| | | {
|
| | | return deptMapper.selectDeptListByRoleId(roleId);
|
| | | SysRole role = roleMapper.selectRoleById(roleId);
|
| | | return deptMapper.selectDeptListByRoleId(roleId, role.isDeptCheckStrictly());
|
| | | }
|
| | |
|
| | | /**
|
| | |
| | | public boolean hasChildByDeptId(Long deptId)
|
| | | {
|
| | | int result = deptMapper.hasChildByDeptId(deptId);
|
| | | return result > 0 ? true : false;
|
| | | return result > 0;
|
| | | }
|
| | |
|
| | | /**
|
| | |
| | | public boolean checkDeptExistUser(Long deptId)
|
| | | {
|
| | | int result = deptMapper.checkDeptExistUser(deptId);
|
| | | return result > 0 ? true : false;
|
| | | return result > 0;
|
| | | }
|
| | |
|
| | | /**
|
| | |
| | | * @return 结果
|
| | | */
|
| | | @Override
|
| | | public String checkDeptNameUnique(SysDept dept)
|
| | | public boolean checkDeptNameUnique(SysDept dept)
|
| | | {
|
| | | Long deptId = StringUtils.isNull(dept.getDeptId()) ? -1L : dept.getDeptId();
|
| | | SysDept info = deptMapper.checkDeptNameUnique(dept.getDeptName(), dept.getParentId());
|
| | |
| | | return UserConstants.NOT_UNIQUE;
|
| | | }
|
| | | return UserConstants.UNIQUE;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 校验部门是否有数据权限
|
| | | * |
| | | * @param deptId 部门id
|
| | | */
|
| | | @Override
|
| | | public void checkDeptDataScope(Long deptId)
|
| | | {
|
| | | if (!SysUser.isAdmin(SecurityUtils.getUserId()) && StringUtils.isNotNull(deptId))
|
| | | {
|
| | | SysDept dept = new SysDept();
|
| | | dept.setDeptId(deptId);
|
| | | List<SysDept> depts = SpringUtils.getAopProxy(this).selectDeptList(dept);
|
| | | if (StringUtils.isEmpty(depts))
|
| | | {
|
| | | throw new ServiceException("没有权限访问部门数据!");
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | /**
|
| | |
| | | // 如果父节点不为正常状态,则不允许新增子节点
|
| | | if (!UserConstants.DEPT_NORMAL.equals(info.getStatus()))
|
| | | {
|
| | | throw new CustomException("部门停用,不允许新增");
|
| | | throw new ServiceException("部门停用,不允许新增");
|
| | | }
|
| | | dept.setAncestors(info.getAncestors() + "," + dept.getParentId());
|
| | | return deptMapper.insertDept(dept);
|
| | |
| | | updateDeptChildren(dept.getDeptId(), newAncestors, oldAncestors);
|
| | | }
|
| | | int result = deptMapper.updateDept(dept);
|
| | | if (UserConstants.DEPT_NORMAL.equals(dept.getStatus()))
|
| | | if (UserConstants.DEPT_NORMAL.equals(dept.getStatus()) && StringUtils.isNotEmpty(dept.getAncestors())
|
| | | && !StringUtils.equals("0", dept.getAncestors()))
|
| | | {
|
| | | // 如果该部门是启用状态,则启用该部门的所有上级部门
|
| | | updateParentDeptStatus(dept);
|
| | | updateParentDeptStatusNormal(dept);
|
| | | }
|
| | | return result;
|
| | | }
|
| | |
| | | *
|
| | | * @param dept 当前部门
|
| | | */
|
| | | private void updateParentDeptStatus(SysDept dept)
|
| | | private void updateParentDeptStatusNormal(SysDept dept)
|
| | | {
|
| | | String updateBy = dept.getUpdateBy();
|
| | | dept = deptMapper.selectDeptById(dept.getDeptId());
|
| | | dept.setUpdateBy(updateBy);
|
| | | deptMapper.updateDeptStatus(dept);
|
| | | String ancestors = dept.getAncestors();
|
| | | Long[] deptIds = Convert.toLongArray(ancestors);
|
| | | deptMapper.updateDeptStatusNormal(deptIds);
|
| | | }
|
| | |
|
| | | /**
|
| | |
| | | List<SysDept> children = deptMapper.selectChildrenDeptById(deptId);
|
| | | for (SysDept child : children)
|
| | | {
|
| | | child.setAncestors(child.getAncestors().replace(oldAncestors, newAncestors));
|
| | | child.setAncestors(child.getAncestors().replaceFirst(oldAncestors, newAncestors));
|
| | | }
|
| | | if (children.size() > 0)
|
| | | {
|
| | |
| | | }
|
| | |
|
| | | /**
|
| | | * 查询顶层部门id
|
| | | * @param deptId
|
| | | * @return
|
| | | */
|
| | | @Override
|
| | | public Long maxLevelDeptId(Long deptId) {
|
| | | return deptMapper.maxLevelDeptId(deptId);
|
| | | }
|
| | |
|
| | | /**
|
| | | * 递归列表
|
| | | */
|
| | | private void recursionFn(List<SysDept> list, SysDept t)
|
| | |
| | | {
|
| | | if (hasChild(list, tChild))
|
| | | {
|
| | | // 判断是否有子节点
|
| | | Iterator<SysDept> it = childList.iterator();
|
| | | while (it.hasNext())
|
| | | {
|
| | | SysDept n = (SysDept) it.next();
|
| | | recursionFn(list, n);
|
| | | }
|
| | | recursionFn(list, tChild);
|
| | | }
|
| | | }
|
| | | }
|