package com.fzzy.sys.controller.system; import com.fzzy.igds.constant.Constant; import com.fzzy.igds.service.CoreCompanyService; import com.fzzy.igds.service.CoreDeptService; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.Ztree; import com.ruoyi.common.core.domain.entity.SysDept; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.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-new") public class SysDeptNewController extends BaseController { private String prefix = "system/dept"; @Autowired private ISysDeptService deptService; @Autowired private CoreCompanyService coreCompanyService; @Autowired private CoreDeptService coreDeptService; @RequiresPermissions("system:dept:view") @GetMapping() public String dept() { return prefix + "/dept"; } @RequiresPermissions("system:dept:list") @PostMapping("/list") @ResponseBody public List list(SysDept dept) { List deptList = deptService.selectDeptList(dept); return deptList; } /** * 新增部门 */ @GetMapping("/add/{parentId}") public String add(@PathVariable("parentId") Long parentId, ModelMap mmap) { if (!getSysUser().isAdmin()) { parentId = getSysUser().getDeptId(); } SysDept dept = deptService.selectDeptById(parentId); if(dept == null){ parentId = Long.valueOf(getSysUser().getCompanyId()); dept = deptService.selectDeptById(parentId); } 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) { if (!deptService.checkDeptNameUnique(dept)) { return error("新增部门'" + dept.getDeptName() + "'失败,部门名称已存在"); } dept.setCreateBy(getLoginName()); int i = deptService.insertDept(dept); if(i > 0){ if (Constant.DEPT_TYPE_10.equals(dept.getType())) { //新增公司信息 coreCompanyService.saveOrUpdate(dept, true); } if (Constant.DEPT_TYPE_20.equals(dept.getType())) { //新增库区信息 coreDeptService.saveOrUpdate(dept, true); } } return toAjax(i); } /** * 修改部门 */ @RequiresPermissions("system:dept:edit") @GetMapping("/edit/{deptId}") public String edit(@PathVariable("deptId") Long deptId, ModelMap mmap) { deptService.checkDeptDataScope(deptId); 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) { Long deptId = dept.getDeptId(); deptService.checkDeptDataScope(deptId); if (!deptService.checkDeptNameUnique(dept)) { return error("修改部门'" + dept.getDeptName() + "'失败,部门名称已存在"); } else if (dept.getParentId().equals(deptId)) { return error("修改部门'" + dept.getDeptName() + "'失败,上级部门不能是自己"); } else if (StringUtils.equals(UserConstants.DEPT_DISABLE, dept.getStatus()) && deptService.selectNormalChildrenDeptById(deptId) > 0) { return AjaxResult.error("该部门包含未停用的子部门!"); } dept.setUpdateBy(getLoginName()); int i = deptService.updateDept(dept); if(i > 0){ if (Constant.DEPT_TYPE_10.equals(dept.getType())) { //新增公司信息 coreCompanyService.saveOrUpdate(dept, false); } if (Constant.DEPT_TYPE_20.equals(dept.getType())) { //新增库区信息 coreDeptService.saveOrUpdate(dept, false); } } return toAjax(i); } /** * 删除 */ @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("部门存在用户,不允许删除"); } deptService.checkDeptDataScope(deptId); int i = deptService.deleteDeptById(deptId); if(i > 0){ coreCompanyService.delData(deptId + ""); coreDeptService.delData(deptId + ""); } return toAjax(i); } /** * 校验部门名称 */ @PostMapping("/checkDeptNameUnique") @ResponseBody public boolean checkDeptNameUnique(SysDept dept) { return deptService.checkDeptNameUnique(dept); } /** * 选择部门树 * * @param deptId 部门ID * @param excludeId 排除ID */ @GetMapping(value = {"/selectDeptTree/{deptId}", "/selectDeptTree/{deptId}/{excludeId}"}) public String selectDeptTree(@PathVariable("deptId") Long deptId, @PathVariable(value = "excludeId", required = false) Long excludeId, ModelMap mmap) { mmap.put("dept", deptService.selectDeptById(deptId)); mmap.put("excludeId", excludeId); return prefix + "/tree"; } /** * 加载部门列表树(排除下级) */ @GetMapping("/treeData/{excludeId}") @ResponseBody public List treeDataExcludeChild(@PathVariable(value = "excludeId", required = false) Long excludeId) { SysDept dept = new SysDept(); dept.setExcludeId(excludeId); List ztrees = deptService.selectDeptTreeExcludeChild(dept); return ztrees; } }