package com.ruoyi.project.system.dept.controller; import java.util.List; import com.ruoyi.common.utils.security.ShiroUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.controller.BaseController; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.framework.web.domain.Ztree; import com.ruoyi.project.system.dept.domain.Dept; import com.ruoyi.project.system.dept.service.IDeptService; import com.ruoyi.project.system.role.domain.Role; /** * 部门信息 * * @author ruoyi */ @Controller @RequestMapping("/system/dept") public class DeptController extends BaseController { private String prefix = "system/dept"; @Autowired private IDeptService deptService; @RequiresPermissions("system:dept:view") @GetMapping() public String dept() { return prefix + "/dept"; } @RequiresPermissions("system:dept:list") @PostMapping("/list") @ResponseBody public List list(Dept dept) { List deptList = deptService.selectDeptList(dept); return deptList; } @PostMapping("/listByCompanyId") @ResponseBody public List listByCompanyId(Dept dept){ dept.setCompanyId(ShiroUtils.getSysUser().getCompanyId()); List deptList = deptService.selectDeptList(dept); return deptList; } /** * 新增部门 */ @GetMapping("/add/{parentId}") public String add(@PathVariable("parentId") Long parentId, ModelMap mmap) { mmap.put("dept", deptService.selectDeptById(parentId)); return prefix + "/add"; } /** * 新增保存部门 */ @Log(title = "部门管理", businessType = BusinessType.INSERT) @RequiresPermissions("system:dept:add") @PostMapping("/add") @ResponseBody public AjaxResult addSave(@Validated Dept dept) { if (UserConstants.DEPT_NAME_NOT_UNIQUE.equals(deptService.checkDeptNameUnique(dept))) { return error("新增部门'" + dept.getDeptName() + "'失败,部门名称已存在"); } return toAjax(deptService.insertDept(dept)); } /** * 修改 */ @GetMapping("/edit/{deptId}") public String edit(@PathVariable("deptId") Long deptId, ModelMap mmap) { Dept dept = deptService.selectDeptById(deptId); if (StringUtils.isNotNull(dept) && 100L == deptId) { dept.setParentName("无"); } mmap.put("dept", dept); return prefix + "/edit"; } /** * 保存 */ @Log(title = "部门管理", businessType = BusinessType.UPDATE) @RequiresPermissions("system:dept:edit") @PostMapping("/edit") @ResponseBody public AjaxResult editSave(@Validated Dept dept) { if (UserConstants.DEPT_NAME_NOT_UNIQUE.equals(deptService.checkDeptNameUnique(dept))) { return error("修改部门'" + dept.getDeptName() + "'失败,部门名称已存在"); } else if(dept.getParentId().equals(dept.getDeptId())) { return error("修改部门'" + dept.getDeptName() + "'失败,上级部门不能是自己"); } return toAjax(deptService.updateDept(dept)); } /** * 删除 */ @Log(title = "部门管理", businessType = BusinessType.DELETE) @RequiresPermissions("system:dept:remove") @GetMapping("/remove/{deptId}") @ResponseBody public AjaxResult remove(@PathVariable("deptId") Long deptId) { if (deptService.selectDeptCount(deptId) > 0) { return AjaxResult.warn("存在下级部门,不允许删除"); } if (deptService.checkDeptExistUser(deptId)) { return AjaxResult.warn("部门存在用户,不允许删除"); } return toAjax(deptService.deleteDeptById(deptId)); } /** * 校验部门名称 */ @PostMapping("/checkDeptNameUnique") @ResponseBody public String checkDeptNameUnique(Dept dept) { return deptService.checkDeptNameUnique(dept); } /** * 选择部门树 */ @GetMapping("/selectDeptTree/{deptId}") public String selectDeptTree(@PathVariable("deptId") Long deptId, ModelMap mmap) { mmap.put("dept", deptService.selectDeptById(deptId)); return prefix + "/tree"; } @GetMapping("/selectDeptTreeByCompanyId/{deptId}") public String selectDeptTreeByCompanyId(@PathVariable("deptId") Long deptId, ModelMap mmap) { mmap.put("dept", deptService.selectDeptById(deptId)); return prefix + "/treeByCompanyId"; } /** * * 自定义选择部门树 */ @GetMapping("/chooseDeptTree/{deptId}") public String selectDeptTree(@PathVariable("deptId") int deptId, ModelMap mmap) { Dept dept = new Dept(); if (deptId == -1) { dept.setParentId(0l); } dept.setDeptId((long)deptId); dept.setCompanyId(getSysUser().getCompanyId()); mmap.put("dept", deptService.selectDeptList(dept).get(0)); return prefix + "/tree"; } /** * 加载部门列表树 */ @GetMapping("/treeData") @ResponseBody public List treeData() { List ztrees = deptService.selectDeptTree(new Dept()); return ztrees; } @GetMapping("/treeDataByCompanyId") @ResponseBody public List treeDataByCompanyId() { Dept dept = new Dept(); dept.setCompanyId(ShiroUtils.getSysUser().getCompanyId()); List ztrees = deptService.selectDeptTree(dept); return ztrees; } /** * 加载角色部门(数据权限)列表树 */ @GetMapping("/roleDeptTreeData") @ResponseBody public List deptTreeData(Role role) { List ztrees = deptService.roleDeptTreeData(role); return ztrees; } @GetMapping("/deptByCompanyId") public String deptByCompanyId(ModelMap modelMap) { modelMap.put("companyId",ShiroUtils.getSysUser().getCompanyId()); return prefix + "/deptByCompanyId"; } @GetMapping("/addByCompanyId/{parentId}") public String addByCompanyId(@PathVariable("parentId") Long parentId, ModelMap mmap) { mmap.put("dept", deptService.selectDeptById(parentId)); mmap.put("companyId",ShiroUtils.getSysUser().getCompanyId()); return prefix + "/addByCompanyId"; } @GetMapping("/editByCompanyId/{deptId}") public String editByCompanyId(@PathVariable("deptId") Long deptId, ModelMap mmap){ Dept dept = deptService.selectDeptById(deptId); if (StringUtils.isNotNull(dept) && 100L == deptId) { dept.setParentName("无"); } mmap.put("dept", dept); return prefix + "/editByCompanyId"; } }