龚焕茏
2024-07-19 2d928646669fe6026c7d63f6b409d9b2790aa65e
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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
package com.mindskip.xzs.controller.admin;
 
import com.mindskip.xzs.base.BaseApiController;
import com.mindskip.xzs.base.RestResponse;
import com.mindskip.xzs.domain.Department;
import com.mindskip.xzs.domain.ExamPaper;
import com.mindskip.xzs.domain.User;
import com.mindskip.xzs.domain.UserDepartment;
import com.mindskip.xzs.domain.vo.BaseSelect;
import com.mindskip.xzs.domain.vo.CascaderDataVO;
import com.mindskip.xzs.domain.vo.DepartmentVO;
import com.mindskip.xzs.domain.vo.UpdateDeptAdminVO;
import com.mindskip.xzs.repository.DepartmentMapper;
import com.mindskip.xzs.repository.UserDepartmentMapper;
import com.mindskip.xzs.service.DepartmentService;
import com.mindskip.xzs.service.UserService;
import com.mindskip.xzs.viewmodel.admin.department.DepartmentResponseVM;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.web.bind.annotation.*;
 
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
 
 
@RestController("AdminDepartmentController")
@RequestMapping("/api/admin/department")
@RequiredArgsConstructor
public class DepartmentController extends BaseApiController {
 
    private final DepartmentService departmentService;
    private final UserService userService;
    private final UserDepartmentMapper userDepartmentMapper;
    private final DepartmentMapper departmentMapper;
 
    /**
     * 获取部门下用户列表(下拉)
     * @param deptId
     * @return
     */
    @GetMapping("/{id}/user-list")
    public RestResponse<List<BaseSelect>> getDeptUserList(@PathVariable("id") Integer deptId) {
        List<BaseSelect> data = departmentService.getDeptUserList(deptId);
        return RestResponse.ok(data);
    }
 
 
    @PostMapping("/update-admin")
    public RestResponse updateAdmin(@RequestBody UpdateDeptAdminVO form) {
        departmentService.updateAdmin(form);
        return RestResponse.ok();
    }
 
    @RequestMapping(value = "/list", method = RequestMethod.POST)
    public RestResponse<List<Department>> getAll(){
        List<Department> res = departmentService.gets(new ArrayList<>());
        return RestResponse.ok(res);
    }
 
 
    @RequestMapping(value = "/page/list", method = RequestMethod.POST)
    public RestResponse<List<DepartmentResponseVM>> pageList(@RequestBody DepartmentResponseVM model) {
        List<DepartmentResponseVM> pageInfo = departmentService.gets(model);
        return RestResponse.ok(pageInfo);
    }
 
    @RequestMapping(value = "/add", method = RequestMethod.POST)
    public RestResponse add(@RequestBody @Valid Department  model) {
        return RestResponse.ok(departmentService.add(model));
    }
 
    @RequestMapping(value = "/update", method = RequestMethod.POST)
    public RestResponse update(@RequestBody @Valid Department  model) {
        return RestResponse.ok(departmentService.update(model));
    }
 
    @RequestMapping(value = "/get/{id}", method = RequestMethod.POST)
    public RestResponse update(@PathVariable Integer id) {
        return RestResponse.ok(departmentService.getByIdVO(id));
    }
 
    @RequestMapping(value = "/getUserByDepartment/{id}", method = RequestMethod.POST)
    public RestResponse<List<User>> getUserByDepartment(@PathVariable Integer id){
        return RestResponse.ok(userService.getUserByLevel(id));
    }
 
    @RequestMapping(value = "/getDepartmentUser", method = RequestMethod.POST)
    public RestResponse<List<DepartmentVO>> getUserDepartment(Integer examPaperId){
        List<DepartmentVO> res = departmentService.gets(isDeptAdmin() ? getAdminDeptIds() : null)
                .stream().map(e->{
                    DepartmentVO departmentVO = new DepartmentVO();
                    List<UserDepartment> userDepartments = userDepartmentMapper.selectByDepartmentId(e.getId());
                    List<User> list = new ArrayList<>();
                    for (UserDepartment userDepartment : userDepartments) {
                        User user;
                        // 选择补考用户时查询符合补考条件的用户
                        if (examPaperId != null) {
                            ExamPaper examPaper = new ExamPaper();
                            examPaper.setCreateUser(userDepartment.getUserId());
                            examPaper.setId(examPaperId);
                            user = userService.getUserByExam(examPaper);
                        } else {
                            user = userService.getUserById(userDepartment.getUserId());
                        }
                        if (ObjectUtils.isNotEmpty(user)) {
                            list.add(user);
                        }
                    }
                    departmentVO.setUserList(list);
                    departmentVO.setDepartment(e);
                    return departmentVO;
                }).collect(Collectors.toList());
        return RestResponse.ok(res);
    }
 
    @RequestMapping(value = "/getDepartmentUserByTemplateId", method = RequestMethod.POST)
    public RestResponse<List<DepartmentVO>> getDepartmentUserByTemplateId(Integer templateId){
        List<DepartmentVO> res = departmentService.gets(isDeptAdmin() ? getAdminDeptIds() : null)
                .stream().map(e->{
                    DepartmentVO departmentVO = new DepartmentVO();
                    List<UserDepartment> userDepartments = userDepartmentMapper.selectByDepartmentId(e.getId());
                    List<User> list = new ArrayList<>();
                    for (UserDepartment userDepartment : userDepartments) {
                        User user;
                        // 选择补考用户时查询符合补考条件的用户
                        if (templateId != null) {
                            ExamPaper examPaper = new ExamPaper();
                            examPaper.setCreateUser(userDepartment.getUserId());
                            examPaper.setId(templateId);
                            user = userService.getUserByExamByTemplateId(examPaper);
                        } else {
                            user = userService.getUserById(userDepartment.getUserId());
                        }
                        if (ObjectUtils.isNotEmpty(user)) {
                            list.add(user);
                        }
                    }
                    departmentVO.setUserList(list);
                    departmentVO.setDepartment(e);
                    return departmentVO;
                }).collect(Collectors.toList());
        return RestResponse.ok(res);
    }
 
    @RequestMapping(value = "/getDeptAdmins", method = RequestMethod.GET)
    public RestResponse<List<Department>> getDeptAdmins(){
        return RestResponse.ok(userService.getDeptAdmins(isDeptAdmin() ? getAdminDeptIds() : null));
    }
 
    @GetMapping("/cascader")
    public RestResponse<List<CascaderDataVO>> cascader(){
        return RestResponse.ok(departmentService.cascader());
    }
 
    @GetMapping("/getCurrentDeptId")
    public RestResponse<List<Integer>> getCurrentDeptIds(){
        return RestResponse.ok(getAdminDeptIds());
    }
 
}