package com.panzhihua.sangeshenbian.api; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.panzhihua.common.interfaces.OperLog; import com.panzhihua.common.model.vos.R; import com.panzhihua.sangeshenbian.model.entity.Department; import com.panzhihua.sangeshenbian.model.entity.SystemUser; import com.panzhihua.sangeshenbian.service.IDepartmentService; import com.panzhihua.sangeshenbian.service.ISystemUserService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; 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 */ @Api @RestController @RequestMapping("/sangeshenbian/department") public class DepartmentController { @Resource private IDepartmentService departmentService; @Resource private ISystemUserService systemUserService; @GetMapping("/list") @ApiOperation(value = "获取单位列表", tags = {"三个身边后台-用户管理"}) @OperLog(operModul = "三个身边后台",operType = 0, businessType = "获取单位列表") 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 = {"三个身边后台-用户管理"}) @OperLog(operModul = "三个身边后台",operType = 1, businessType = "添加单位信息") 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(); } @PostMapping("/edit") @ApiOperation(value = "编辑单位信息", tags = {"三个身边后台-用户管理"}) @OperLog(operModul = "三个身边后台",operType = 2, businessType = "编辑单位信息") 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 = {"三个身边后台-用户管理"}) @OperLog(operModul = "三个身边后台",operType = 3, businessType = "删除单位信息") 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(); } @GetMapping("/getDepartmentList/{tier}") @ApiOperation(value = "根据单位层级查询单位数据", tags = {"三个身边后台-用户管理"}) @ApiImplicitParams({ @ApiImplicitParam(name = "tier", value = "单位层级", required = true, dataType = "Integer") }) @OperLog(operModul = "三个身边后台",operType = 0, businessType = "根据单位层级查询单位数据") public R> getDepartmentList(@PathVariable("tier") Integer tier){ List list = departmentService.list(new LambdaQueryWrapper().eq(Department::getTier, tier)); return R.ok(list); } }