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<Department>> list(){
|
List<Department> list = departmentService.list();
|
List<Department> departmentList1 = list.stream().filter(s -> s.getPid() == 0).collect(Collectors.toList());
|
for (Department department : departmentList1) {
|
List<Department> departmentList2 = list.stream().filter(s -> s.getPid().equals(department.getId())).collect(Collectors.toList());
|
for (Department department1 : departmentList2) {
|
List<Department> departmentList3 = list.stream().filter(s -> s.getPid().equals(department1.getId())).collect(Collectors.toList());
|
for (Department department2 : departmentList3) {
|
List<Department> 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<Department>().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<Department>().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<SystemUser>().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<List<Department>> getDepartmentList(@PathVariable("tier") Integer tier){
|
List<Department> list = departmentService.list(new LambdaQueryWrapper<Department>().eq(Department::getTier, tier));
|
return R.ok(list);
|
}
|
}
|