Pu Zhibing
2025-02-25 a7dc3517b3c028eab02cdde35a57389278217ed2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
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("/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);
        }
        long 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);
        }
        long 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){
        long 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);
    }
}