package com.ruoyi.sange.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.common.core.domain.R; import com.ruoyi.sange.domain.Department; import com.ruoyi.sange.domain.SystemUser; import com.ruoyi.sange.service.IDepartmentService; import com.ruoyi.sange.service.ISystemUserService; 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 zhibing.pu * @Date 2025/2/19 17:44 */ @RestController @RequestMapping("/api/department") public class DepartmentController { @Resource private IDepartmentService departmentService; @Resource private ISystemUserService systemUserService; @GetMapping("/list") @ApiOperation(value = "获取单位列表", tags = {"管理后台-用户管理"}) public R> list(){ List list = departmentService.list(); List departmentList1 = list.stream().filter(s -> s.getPid() == 0).collect(Collectors.toList()); for (Department department : departmentList1) { List departmentList2 = list.stream().filter(s -> s.getPid().equals(department.getId())).collect(Collectors.toList()); for (Department department1 : departmentList2) { List departmentList3 = list.stream().filter(s -> s.getPid().equals(department1.getId())).collect(Collectors.toList()); for (Department department2 : departmentList3) { List departmentList4 = list.stream().filter(s -> s.getPid().equals(department2.getId())).collect(Collectors.toList()); department2.setChild(departmentList4); } department1.setChild(departmentList3); } department.setChild(departmentList2); } return R.ok(departmentList1); } @PostMapping("/add") @ApiOperation(value = "添加单位信息", tags = {"管理后台-用户管理"}) public R add(@RequestBody Department department){ if(null == department.getPid()){ department.setPid(0); } int count = departmentService.count(new LambdaQueryWrapper().eq(Department::getPid, department.getPid()).eq(Department::getName, department.getName())); if(0 < count){ return R.fail("单位名称重复。"); } Department department1 = departmentService.getById(department.getPid()); if(null != department1 && 4 == department1.getTier()){ return R.fail("层级超过4级,保存失败。"); } department.setTier(null == department1 ? 1 : department1.getTier() + 1); departmentService.save(department); return R.ok(); } @PutMapping("/edit") @ApiOperation(value = "编辑单位信息", tags = {"管理后台-用户管理"}) public R edit(@RequestBody Department department){ if(null == department.getPid()){ department.setPid(0); } int count = departmentService.count(new LambdaQueryWrapper().eq(Department::getPid, department.getPid()) .eq(Department::getName, department.getName()).ne(Department::getId, department.getId())); if(0 < count){ return R.fail("单位名称重复。"); } Department department1 = departmentService.getById(department.getPid()); if(null != department1 && 4 == department1.getTier()){ return R.fail("层级超过4级,保存失败。"); } department.setTier(null == department1 ? 1 : department1.getTier() + 1); departmentService.updateById(department); return R.ok(); } @DeleteMapping("/delete/{id}") @ApiOperation(value = "删除单位信息", tags = {"管理后台-用户管理"}) public R delete(@PathVariable("id") Integer id){ int count = systemUserService.count(new LambdaQueryWrapper().eq(SystemUser::getOneDepartmentId, id).or().eq(SystemUser::getTwoDepartmentId, id) .or().eq(SystemUser::getThreeDepartmentId, id).or().eq(SystemUser::getFourDepartmentId, id).ne(SystemUser::getStatus, 3)); if(0 < count){ return R.fail("该单位已被使用,删除失败。"); } departmentService.removeById(id); return R.ok(); } }