|
|
package com.yanzhen.controller; // 定义包名
|
|
|
|
|
|
import com.github.pagehelper.PageInfo; // 导入分页插件
|
|
|
import com.yanzhen.entity.*; // 导入实体类
|
|
|
import com.yanzhen.service.*; // 导入服务接口
|
|
|
import com.yanzhen.utils.Result; // 导入结果封装类
|
|
|
import org.springframework.beans.factory.annotation.Autowired; // 导入自动装配注解
|
|
|
import org.springframework.web.bind.annotation.*; // 导入Spring MVC相关注解
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest; // 导入HttpServletRequest类
|
|
|
import java.util.ArrayList; // 导入ArrayList类
|
|
|
import java.util.Date; // 导入Date类
|
|
|
import java.util.HashMap; // 导入HashMap类
|
|
|
import java.util.List; // 导入List接口
|
|
|
import java.util.Map; // 导入Map接口
|
|
|
|
|
|
@RestController // 声明这是一个控制器,并且返回的数据直接写入HTTP响应体中
|
|
|
@RequestMapping("/stu") // 设置请求路径前缀
|
|
|
public class StuController {
|
|
|
|
|
|
@Autowired // 自动注入StudentService实例
|
|
|
private StudentService学生管理 studentService;
|
|
|
|
|
|
@Autowired // 自动注入OrgService实例
|
|
|
private OrgService机构管理 orgService;
|
|
|
|
|
|
@Autowired // 自动注入GradeService实例
|
|
|
private GradeService年级管理 gradeService;
|
|
|
|
|
|
@Autowired // 自动注入SelectionDormitoryService实例
|
|
|
private SelectionDormitoryService宿舍管理 selectionDormitoryService;
|
|
|
|
|
|
@Autowired // 自动注入DormitoryService实例
|
|
|
private DormitoryService宿舍编号设置 dormitoryService;
|
|
|
|
|
|
@Autowired // 自动注入DormitoryStudentService实例
|
|
|
private DormitoryStudentService宿舍预选设置 dormitoryStudentService;
|
|
|
|
|
|
@Autowired // 自动注入AbsenceService实例
|
|
|
private AbsenceService缺勤管理 absenceService;
|
|
|
|
|
|
@Autowired // 自动注入RepairService实例
|
|
|
private RepairService报修管理 repairService;
|
|
|
|
|
|
@Autowired // 自动注入NoticeService实例
|
|
|
private NoticeService公告管理 noticeService;
|
|
|
|
|
|
@Autowired // 自动注入UserService实例
|
|
|
private UserService用户管理 userService;
|
|
|
|
|
|
@Autowired // 自动注入BuildingService实例
|
|
|
private BuildingService楼层设置 buildingService;
|
|
|
|
|
|
@Autowired // 自动注入SelectionService实例
|
|
|
private SelectionService学生查询管理 selectionService;
|
|
|
|
|
|
@GetMapping("/info") // 映射GET请求到/info路径
|
|
|
public Result info(HttpServletRequest request) { // 定义info方法,参数为HttpServletRequest对象
|
|
|
Student param = (Student)request.getAttribute("student"); // 从请求属性中获取学生信息
|
|
|
Student student = studentService.detail(param.getId()); // 根据学生ID获取学生详细信息
|
|
|
student.setOrg(orgService.detail(student.getClazzId())); // 设置学生所属组织信息
|
|
|
student.setGrade(gradeService.detail(student.getGradeId())); // 设置学生所在年级信息
|
|
|
return Result.ok(student); // 返回包含学生信息的Result对象
|
|
|
}
|
|
|
|
|
|
@GetMapping("/select_dormitory") // 映射GET请求到/select_dormitory路径
|
|
|
public Result select_dormitory(HttpServletRequest request) { // 定义select_dormitory方法,参数为HttpServletRequest对象
|
|
|
Student param = (Student)request.getAttribute("student"); // 从请求属性中获取学生信息
|
|
|
Student student = studentService.detail(param.getId()); // 根据学生ID获取学生详细信息
|
|
|
|
|
|
SelectionDormitory selectionDormitory = new SelectionDormitory(); // 创建SelectionDormitory对象
|
|
|
selectionDormitory.setClazzId(student.getClazzId()); // 设置班级ID
|
|
|
selectionDormitory.setLimit(1000); // 设置查询限制条数
|
|
|
PageInfo<SelectionDormitory> pageInfo = selectionDormitoryService.query(selectionDormitory); // 查询可选宿舍列表
|
|
|
|
|
|
List<Map<String,Object>> list = new ArrayList<>(); // 创建用于存储宿舍信息的列表
|
|
|
List<SelectionDormitory> selectionDormitorys = pageInfo.getList(); // 获取查询结果列表
|
|
|
for (SelectionDormitory sd : selectionDormitorys) { // 遍历查询结果列表
|
|
|
Map<String,Object> map = new HashMap<>(); // 创建用于存储单个宿舍信息的Map对象
|
|
|
//查询宿舍的基本信息
|
|
|
Dormitory dormitory = dormitoryService.detail(sd.getDormitoryId()); // 根据宿舍ID获取宿舍详细信息
|
|
|
map.put("capacity",dormitory.getCapacity()); // 设置宿舍容量
|
|
|
map.put("id",dormitory.getId()); // 设置宿舍ID
|
|
|
map.put("no",dormitory.getNo()); // 设置宿舍编号
|
|
|
map.put("sex",dormitory.getSex()); // 设置宿舍性别要求
|
|
|
map.put("buildingName",buildingService.detail(dormitory.getBuildingId()).getName()); // 设置宿舍所在建筑名称
|
|
|
//查询已选择的所有学生
|
|
|
DormitoryStudent ds = new DormitoryStudent(); // 创建DormitoryStudent对象
|
|
|
ds.setDormitoryId(sd.getDormitoryId()); // 设置宿舍ID
|
|
|
ds.setLimit(1000); // 设置查询限制条数
|
|
|
PageInfo<DormitoryStudent> pageInfo1 = dormitoryStudentService.query(ds); // 查询已选择的学生列表
|
|
|
map.put("selected",pageInfo1.getTotal()); // 设置已选择的学生数量
|
|
|
//构造已经选择的同学信息
|
|
|
List<Map<String,Object>> studentList = new ArrayList<>(); // 创建用于存储已选择学生信息的列表
|
|
|
List<DormitoryStudent> list1 = pageInfo1.getList(); // 获取已选择学生列表
|
|
|
for(DormitoryStudent ds1 : list1){ // 遍历已选择学生列表
|
|
|
Map<String,Object> studentMap = new HashMap<>(); // 创建用于存储单个学生信息的Map对象
|
|
|
Student detail = studentService.detail(ds1.getStudentId()); // 根据学生ID获取学生详细信息
|
|
|
studentMap.put("stuNo",detail.getStuNo()); // 设置学生学号
|
|
|
studentMap.put("name",detail.getName()); // 设置学生姓名
|
|
|
studentMap.put("bedId",ds1.getBedId()); // 设置学生床位ID
|
|
|
studentList.add(studentMap); // 将学生信息添加到列表中
|
|
|
}
|
|
|
map.put("studentList",studentList); // 将已选择学生信息列表添加到宿舍信息Map中
|
|
|
list.add(map); // 将宿舍信息添加到最终列表中
|
|
|
}
|
|
|
return Result.ok(list); // 返回包含宿舍信息的Result对象
|
|
|
}
|
|
|
|
|
|
@PostMapping("select_dormitory_submit") // 映射POST请求到/select_dormitory_submit路径
|
|
|
public Result select_dormitory(@RequestBody Map<String,String> map, HttpServletRequest request){ // 定义select_dormitory方法,参数为请求体中的Map和HttpServletRequest对象
|
|
|
Student param = (Student)request.getAttribute("student"); // 从请求属性中获取学生信息
|
|
|
Student student = studentService.detail(param.getId()); // 根据学生ID获取学生详细信息
|
|
|
|
|
|
List<Selection> selections = selectionService.queryByClazzId(student.getClazzId()); // 根据班级ID查询可选时间段列表
|
|
|
if(selections != null && selections.size()==0){ // 如果未设置或没有可选时间段
|
|
|
return Result.fail("操作失败,未设置!请联系管理员"); // 返回失败结果
|
|
|
}
|
|
|
Selection selection = selections.get(0); // 获取第一个可选时间段
|
|
|
if(selection.getStartTime().getTime() > System.currentTimeMillis() || System.currentTimeMillis() > selection.getEndTime().getTime()){ // 如果当前时间不在可选时间段内
|
|
|
return Result.fail("操作失败,不在时间段内选择"); // 返回失败结果
|
|
|
}
|
|
|
String bedId = map.get("bedId"); // 从请求体中获取床位ID
|
|
|
String dormitoryId = map.get("dormitoryId"); // 从请求体中获取宿舍ID
|
|
|
int row = dormitoryStudentService.select_dormitory_submit(student.getId(),Integer.parseInt(dormitoryId),Integer.parseInt(bedId)); // 根据学生ID、宿舍ID和床位ID提交选择宿舍请求
|
|
|
if(row > 0){ // 如果提交成功
|
|
|
return Result.ok(); // 返回成功结果
|
|
|
}else{
|
|
|
return Result.fail(); // 如果提交失败,返回失败结果
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@PostMapping("repair_create") // 映射POST请求到/repair_create路径
|
|
|
public Result repair_create(@RequestBody Repair repair,HttpServletRequest request){ // 定义repair_create方法,参数为请求体中的Repair对象和HttpServletRequest对象
|
|
|
Student param = (Student)request.getAttribute("student"); // 从请求属性中获取学生信息
|
|
|
DormitoryStudent ds = new DormitoryStudent(); // 创建DormitoryStudent对象
|
|
|
ds.setStudentId(param.getId()); // 设置学生ID
|
|
|
PageInfo<DormitoryStudent> pageInfo = dormitoryStudentService.query(ds); // 查询学生关联的宿舍信息
|
|
|
PageInfo<Notice> noticePageInfo = null; // 初始化通知信息分页对象
|
|
|
if(pageInfo.getList() != null && pageInfo.getList().size() > 0){ // 如果存在关联的宿舍信息
|
|
|
DormitoryStudent dormitoryStudent = pageInfo.getList().get(0); // 获取第一个关联的宿舍信息
|
|
|
Dormitory detail = dormitoryService.detail(dormitoryStudent.getDormitoryId()); // 根据宿舍ID获取宿舍详细信息
|
|
|
repair.setBuildingId(detail.getBuildingId()); // 设置维修记录的建筑ID
|
|
|
repair.setDormitoryId(dormitoryStudent.getDormitoryId()); // 设置维修记录的宿舍ID
|
|
|
repair.setStudentId(param.getId()); // 设置维修记录的学生ID
|
|
|
repair.setCreateDate(new Date()); // 设置维修记录的创建日期
|
|
|
repair.setStatus(0); // 设置维修记录的状态为0(未完成)
|
|
|
int flag = repairService.create(repair); // 提交维修记录并获取操作结果标志
|
|
|
if(flag > 0){ // 如果提交成功
|
|
|
return Result.ok(); // 返回成功结果
|
|
|
}else{
|
|
|
return Result.fail(); // 如果提交失败,返回失败结果
|
|
|
}
|
|
|
}else{
|
|
|
return Result.fail("操作失败,没有关联的宿舍"); // 如果不存在关联的宿舍信息,返回失败结果
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@PostMapping("notice_query") // 映射POST请求到/notice_query路径
|
|
|
public Map<String, Object> notice_query(@RequestBody Notice notice,HttpServletRequest request){ // 定义notice_query方法,参数为请求体中的Notice对象和HttpServletRequest对象
|
|
|
Student param = (Student)request.getAttribute("student"); // 从请求属性中获取学生信息
|
|
|
DormitoryStudent ds = new DormitoryStudent(); // 创建DormitoryStudent对象
|
|
|
ds.setStudentId(param.getId()); // 设置学生ID
|
|
|
PageInfo<DormitoryStudent> pageInfo = dormitoryStudentService.query(ds); // 查询学生关联的宿舍信息
|
|
|
PageInfo<Notice> noticePageInfo = null; // 初始化通知信息分页对象
|
|
|
if(pageInfo.getList() != null && pageInfo.getList().size() > 0){ // 如果存在关联的宿舍信息
|
|
|
DormitoryStudent dormitoryStudent = pageInfo.getList().get(0); // 获取第一个关联的宿舍信息
|
|
|
Dormitory detail = dormitoryService.detail(dormitoryStudent.getDormitoryId()); // 根据宿舍ID获取宿舍详细信息
|
|
|
notice.setBuildingId(detail.getBuildingId()); // 设置通知的建筑ID
|
|
|
noticePageInfo = noticeService.queryByBuildingId(notice); // 根据建筑ID查询通知列表
|
|
|
noticePageInfo.getList().forEach(entity->{ // 遍历通知列表
|
|
|
entity.setUser(userService.detail(entity.getUserId())); // 根据用户ID获取用户详细信息并设置到通知对象中
|
|
|
});
|
|
|
}else{
|
|
|
noticePageInfo = new PageInfo<>(null); // 如果不存在关联的宿舍信息,初始化空的通知分页对象
|
|
|
}
|
|
|
return Result.ok(noticePageInfo); // 返回包含通知信息的Result对象
|
|
|
}
|
|
|
} |