package com.dgtly.web.controller.system; import com.dgtly.common.annotation.Log; import com.dgtly.common.constant.UserConstants; import com.dgtly.common.core.controller.BaseController; import com.dgtly.common.core.domain.AjaxResult; import com.dgtly.common.core.domain.Ztree; import com.dgtly.common.enums.BusinessType; import com.dgtly.common.exception.BusinessException; import com.dgtly.common.utils.StringUtils; import com.dgtly.framework.util.ShiroUtils; import com.dgtly.system.domain.SysDept; import com.dgtly.system.domain.SysRole; import com.dgtly.system.domain.SysUser; import com.dgtly.system.service.ISysConfigService; import com.dgtly.system.service.ISysDeptService; 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.*; import java.util.List; /** * 部门信息 * * @author ruoyi */ @Controller @RequestMapping("/system/dept") public class SysDeptController extends BaseController { private String prefix = "system/dept"; @Autowired private ISysDeptService deptService; @Autowired private ISysConfigService configService; @RequiresPermissions("system:dept:view") @GetMapping() public String dept(ModelMap mmap) { // 取身份信息 SysUser user = ShiroUtils.getSysUser(); mmap.put("user",user); return prefix + "/dept"; } @RequiresPermissions("system:dept:list") @PostMapping("/list") @ResponseBody public List<SysDept> list(SysDept dept) { SysUser user = ShiroUtils.getSysUser(); dept.setCompanyId(user.getCompanyId()); List<SysDept> deptList = deptService.selectDeptList(dept); return deptList; } /** * 新增部门 */ @GetMapping("/add/{deptId}") public String add(@PathVariable("deptId") Long deptId, ModelMap mmap) { SysDept info =deptService.selectDeptById(deptId); SysDept dept = new SysDept(); if(info.getParentId()==0){ dept.setDeptId(info.getDeptId()); dept.setDeptName(info.getDeptName()); }else{ dept.setDeptId(info.getParentId()); dept.setDeptName(info.getParentName()); } mmap.put("dept",dept); return prefix + "/add"; } /** * 新增保存部门 */ @Log(title = "部门管理", businessType = BusinessType.INSERT) @RequiresPermissions("system:dept:add") @PostMapping("/add") @ResponseBody public AjaxResult addSave(@Validated SysDept dept) { SysUser user = ShiroUtils.getSysUser(); if (UserConstants.DEPT_NAME_NOT_UNIQUE.equals(deptService.checkDeptNameUnique(dept))) { return error("新增部门'" + dept.getDeptName() + "'失败,部门名称已存在"); }else if(dept.getDeptName().length()>9){ return error("修改部门'" + dept.getDeptName() + "'失败,部门名称长度过长(9个字符)"); } dept.setCompanyId(user.getCompanyId()); dept.setCreateBy(user.getUserId().toString()); dept.setDeptId(dept.getDeptId()); SysDept parent = deptService.selectDeptById(dept.getParentId()); return toAjax(deptService.insertDept(dept)); } /** * 修改 */ @GetMapping("/edit/{deptId}") public String edit(@PathVariable("deptId") Long deptId, ModelMap mmap) { SysDept 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 SysDept 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() + "'失败,上级部门不能是自己"); }else if(dept.getDeptName().length()>9){ return error("修改部门'" + dept.getDeptName() + "'失败,部门名称长度过长(9个字符)"); } dept.setUpdateBy(ShiroUtils.getUserId().toString()); 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) { throw new BusinessException("存在下级部门,不允许删除"); } if (deptService.checkDeptExistUser(deptId)) { throw new BusinessException("部门存在用户,不允许删除"); } return toAjax(deptService.deleteDeptById(deptId)); } /** * 校验部门名称 */ @PostMapping("/checkDeptNameUnique") @ResponseBody public String checkDeptNameUnique(SysDept 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("/treeData") @ResponseBody public List<Ztree> treeData() { SysUser user = ShiroUtils.getSysUser(); List<Ztree> ztrees; SysDept dept = new SysDept(); /*判断是否是系统内部人员*/ SysRole role = new SysRole(); role.setRoleId(user.getRoleId()); ztrees= deptService.roleDeptTreeData(role); /*if(ShiroUtils.getCompanyId()==Long.parseLong(configService.selectConfigByKey("sys.company.id"))){ ztrees= deptService.selectDeptTree(dept); }else{ ztrees= deptService.roleDeptTreeData(role); }*/ return ztrees; } /** * 加载角色部门(数据权限)列表树 */ @GetMapping("/roleDeptTreeData") @ResponseBody public List<Ztree> deptTreeData(SysRole role) { List<Ztree> ztrees = deptService.roleDeptTreeData(role); return ztrees; } }