package com.ruoyi.web.controller.system;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.entity.TDept;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.system.domain.vo.TDeptVO;
import com.ruoyi.system.dto.AddDeptDTO;
import com.ruoyi.system.mapper.SysUserMapper;
import com.ruoyi.system.service.ISysUserService;
import com.ruoyi.system.service.TDeptService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
/**
*
* 通知设置 前端控制器
*
*
* @author xiaochen
* @since 2025-05-28
*/
@Api(tags = "部门管理")
@RestController
@RequestMapping("/tDept")
public class TDeptController {
@Resource
private TDeptService deptService;
@Resource
private ISysUserService sysUserService;
@Resource
private SysUserMapper sysUserMapper;
/**
* 获取部门树列表
*/
@ApiOperation("获取部门树列表")
@GetMapping("/tree")
public R> tree() {
List deptTree = deptService.selectDeptTreeList();
return R.ok(deptTree);
}
@Log(title = "新增部门", businessType = BusinessType.INSERT)
@ApiOperation(value = "新增部门")
@PostMapping(value = "/add")
public R add(@RequestBody AddDeptDTO dto) {
deptService.save(dto);
return R.ok();
}
@Log(title = "编辑部门", businessType = BusinessType.UPDATE)
@ApiOperation(value = "编辑部门")
@PostMapping(value = "/edit")
public R edit(@RequestBody AddDeptDTO dto) {
deptService.updateById(dto);
return R.ok();
}
@ApiOperation(value = "部门详情")
@GetMapping(value = "/detail")
public R edit(@RequestParam String id) {
return R.ok(deptService.getById(id));
}
@ApiOperation(value = "部门删除")
@DeleteMapping(value = "/delete")
@Log(title = "删除部门", businessType = BusinessType.DELETE)
public R delete(@RequestParam String id) {
Long count = deptService.lambdaQuery().eq(TDept::getParentId, id).count();
if (count>0){
return R.fail("当前部门存在下级部门,不可删除!");
}
List users = sysUserMapper.selectAllList().stream().filter(e -> e.getDelFlag().equals("0") && e.getDeptId().equals(id)).collect(Collectors.toList());
if (!users.isEmpty()){
return R.fail("当前部门存在用户,不可删除!");
}
deptService.removeById(id);
return R.ok();
}
}