package com.xinquan.system.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.xinquan.common.core.domain.R; import com.xinquan.common.core.utils.page.PageDTO; import com.xinquan.common.core.web.controller.BaseController; import com.xinquan.common.core.web.domain.AjaxResult; import com.xinquan.common.core.web.page.PageInfo; import com.xinquan.common.log.annotation.Log; import com.xinquan.common.log.enums.BusinessType; import com.xinquan.common.security.annotation.RequiresPermissions; import com.xinquan.common.security.service.TokenService; import com.xinquan.common.security.utils.SecurityUtils; import com.xinquan.system.api.domain.SysDept; import com.xinquan.system.api.domain.SysRole; import com.xinquan.system.api.domain.SysUser; import com.xinquan.system.domain.SysUserDept; import com.xinquan.system.domain.dto.SysDeptUpdateStatusDTO; import com.xinquan.system.domain.dto.SysUserUpdateStatusDTO; import com.xinquan.system.domain.dto.UnfreeDto; import com.xinquan.system.service.ISysDeptService; import com.xinquan.system.service.ISysUserDeptService; import com.xinquan.system.service.ISysUserService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.util.Date; import java.util.List; /** * 部门信息 * * @author ruoyi */ @RestController @RequestMapping("/dept") @Api(tags = "部门管理") public class SysDeptController extends BaseController { @Autowired private ISysDeptService deptService; @Autowired private ISysUserDeptService userDeptService; @GetMapping("/list") @ApiOperation("部门列表") public R> list(String deptName, int pageCurr, int pageSize) { Page res = new Page<>(pageCurr, pageSize); PageInfo pageInfo = new PageInfo<>(pageCurr, pageSize); List page = deptService.getList(pageInfo, deptName); for (SysDept sysDept : page) { int size = userDeptService.lambdaQuery().eq(SysUserDept::getDeptId, sysDept.getDeptId()).list().size(); sysDept.setUserCount(size); } pageInfo.setRecords(page); res.setRecords(page); PageDTO sysUserVOPageDTO = PageDTO.of(res, SysDept.class); return R.ok(sysUserVOPageDTO); } /** * 新增部门 */ @PostMapping("/add") @ApiOperation("部门添加") @Log(title = "【部门管理】添加", businessType = BusinessType.INSERT) public AjaxResult add(@Validated @RequestBody SysDept dto) { dto.setCreateTime(LocalDateTime.now()); if (!deptService.checkDeptNameUnique(dto)){ return error("新增部门失败,部门ID已存在"); } dto.setCreateBy(SecurityUtils.getUsername()); return toAjax(deptService.insertDept(dto)); } @Resource private TokenService tokenService; @Resource private ISysUserService service; /** * 修改部门 */ @PostMapping("/edit") @ApiOperation("部门修改") @Log(title = "【部门管理】修改", businessType = BusinessType.UPDATE) public R edit(@Validated @RequestBody SysDept dept) { if (!deptService.checkDeptNameUnique1(dept)){ return R.fail("修改部门失败,部门ID已存在"); } Long userid = tokenService.getLoginUser().getUserid(); SysUser byId = service.getById(userid); dept.setUpdateBy(byId.getNickName()+"("+byId.getUserName()+")"); dept.setHandleName(byId.getNickName()+"("+byId.getUserName()+")"); return R.ok(deptService.updateDept(dept)); } @Autowired private ISysUserService userService; @ApiOperation(value = "禁用启用") @PutMapping("/changeStatus") @Log(title = "【部门管理】修改状态", businessType = BusinessType.UPDATE) public AjaxResult changeStatus(@RequestBody SysDeptUpdateStatusDTO dto) { SysDept user = new SysDept(); user.setDeptId(dto.getDeptId()); user.setStatus(String.valueOf(dto.getStatus())); user.setReason(dto.getReason()); user.setDisableTime(LocalDateTime.now()); Long userid = tokenService.getLoginUser().getUserid(); SysUser sysUser = userService.selectUserById(userid); user.setUpdateBy(sysUser.getNickName()+"("+sysUser.getUserName()+")"); user.setHandleName(sysUser.getNickName()+"("+sysUser.getUserName()+")"); return AjaxResult.success(userService.updateDeptStatus(user)); } /** * 删除部门 */ @DeleteMapping("/{deptId}") @ApiOperation("删除部门") @Log(title = "【部门管理】删除", businessType = BusinessType.DELETE) public AjaxResult remove(@PathVariable Long deptId) { return toAjax(deptService.deleteDeptById(deptId)); } }