diff --git a/dms-dormitory/src/main/java/com/srs/dormitory/mapper/DmsManageApplicationMapper.java b/dms-dormitory/src/main/java/com/srs/dormitory/mapper/DmsManageApplicationMapper.java index e5ceef9..e520e4c 100644 --- a/dms-dormitory/src/main/java/com/srs/dormitory/mapper/DmsManageApplicationMapper.java +++ b/dms-dormitory/src/main/java/com/srs/dormitory/mapper/DmsManageApplicationMapper.java @@ -28,6 +28,8 @@ public interface DmsManageApplicationMapper extends BaseMapper dormStuQuery = new QueryWrapper<>(); + dormStuQuery.eq("stu_no", studentNo) + .last("limit 1"); + + SrsDormitoryStudent dormStu = _dormStuMapper.selectOne(dormStuQuery); + if (dormStu == null) { + return AjaxResult.error("该学生不在住宿记录表中,可能已退宿"); + } + + // 获取宿舍详细信息 + DmsDormitory dormitory = dormitoryMapper.selectById(dormStu.getDormitoryId()); + if (dormitory == null) { + return AjaxResult.error("未找到学生宿舍信息"); + } + + // 使用新添加的Mapper方法直接获取学生宿舍完整信息 + DomInfo studentDormInfo = dmsManageApplicationMapper.selectStudentDormitoryInfoByStuNo(studentNo); + + if (studentDormInfo == null) { + return AjaxResult.error("未找到该学生的宿舍信息"); + } + + // 返回学生宿舍完整信息 + return AjaxResult.success(studentDormInfo); + } catch (Exception e) { + return AjaxResult.error("查询学生宿舍信息失败: " + e.getMessage()); + } + } + /** * 新增宿舍管理申请 * @@ -152,6 +190,84 @@ public class DmsManageApplicationServiceImpl extends ServiceImpl dormStuQuery = new QueryWrapper<>(); + dormStuQuery.eq("stu_no", dmsManageApplication.getStuNo()) + .last("limit 1"); + + SrsDormitoryStudent dormStu = _dormStuMapper.selectOne(dormStuQuery); + if (dormStu == null) { + throw new Exception("该学生已退宿(不在住宿记录表中)"); + } + + // 检查该学生是否已存在未完成的申请 + List isExistStatus = new ArrayList<>(); + isExistStatus.add("0"); + isExistStatus.add("1"); + isExistStatus.add("2"); + + QueryWrapper applyQuery = new QueryWrapper<>(); + applyQuery.eq("stu_no", dmsManageApplication.getStuNo()) + .in("status", isExistStatus); + + List isExist = dmsManageApplicationMapper.selectList(applyQuery); + + if (isExist.size() > 0) { + throw new RuntimeException("该学生当前存在未审核完成的流程"); + } + + QueryWrapper recordQueryWrapper = new QueryWrapper<>(); + recordQueryWrapper.eq("stu_no", dmsManageApplication.getStuNo()) + .orderByDesc("id"); + List records = _newRecordMapper.selectList(recordQueryWrapper); + + QueryWrapper taskQuery = new QueryWrapper<>(); + taskQuery.eq("stu_no", dmsManageApplication.getStuNo()) + .eq("task_status", "2"); + List taskList = _taskMapper.selectList(taskQuery); + if (taskList.size() != 0) { + throw new Exception("该学生当前存在未执行的调宿计划任务,建议调宿任务执行后再申请"); + } + + if (records.size() == 0) { + throw new RuntimeException("该学生没有住宿记录"); + } + + dmsManageApplication.setCurrentDormId(records.get(0).getRoomId()); + dmsManageApplication.setCreateTime(getNowDate()); + // 辅导员发起的申请直接进入下一审批环节(状态为1) + dmsManageApplication.setStatus(1L); + + int i1 = dmsManageApplicationMapper.insertDmsManageApplication(dmsManageApplication); + DmsApprovalProcess approvalProcess = new DmsApprovalProcess(); + approvalProcess.setApplyId(dmsManageApplication.getId()); + approvalProcess.setCreateTime(getNowDate()); + // 自动设置辅导员审批信息 + approvalProcess.setFdyTime(getNowDate()); + approvalProcess.setFdyNo(username); + approvalProcess.setFdyStatus("6"); // 辅导员审批通过 + int i2 = approvalProcessMapper.insert(approvalProcess); + if (i1 + i2 != 2) { + throw new Exception("操作失败"); + } + transactionManager.commit(status); + return AjaxResult.success("宿舍申请已成功发起并通过辅导员审批"); + } catch (Exception ex) { + transactionManager.rollback(status); + return AjaxResult.error(ex.getMessage()); + } + } + /*@Override public AjaxResult insertDmsManageApplication(DmsManageApplication dmsManageApplication) { TransactionDefinition def = new DefaultTransactionDefinition(); TransactionStatus status = transactionManager.getTransaction(def); @@ -218,7 +334,7 @@ public class DmsManageApplicationServiceImpl extends ServiceImpl + + + + + + + + + select id, stu_no, time, current_dorm_id, target_dorm_id, reason, type, status, create_time, create_by, update_time, update_by, start_time, end_time, del_flag from dms_manage_application @@ -102,6 +111,23 @@ where a.id = #{id} + + insert into dms_manage_application @@ -199,7 +225,38 @@ order by a.id desc + - - + \ No newline at end of file diff --git a/srs-admin/src/main/java/com/srs/web/controller/dormitory/DmsManageApplicationController.java b/srs-admin/src/main/java/com/srs/web/controller/dormitory/DmsManageApplicationController.java index 7a919aa..4659410 100644 --- a/srs-admin/src/main/java/com/srs/web/controller/dormitory/DmsManageApplicationController.java +++ b/srs-admin/src/main/java/com/srs/web/controller/dormitory/DmsManageApplicationController.java @@ -11,12 +11,7 @@ import com.srs.system.service.ISysDeptMapService; import com.srs.system.service.ISysPostService; import com.srs.web.controller.common.RoleBool; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import io.swagger.annotations.*; import org.springframework.security.access.prepost.PreAuthorize; @@ -64,6 +59,8 @@ public class DmsManageApplicationController extends BaseController { } + + @PostMapping("/stuChange") public AjaxResult stuChange(@RequestBody DmsManageApplication param) { return dmsManageApplicationService.stuChange(param); @@ -173,5 +170,15 @@ public class DmsManageApplicationController extends BaseController { return dmsManageApplicationService.stuDel(ids); } + /** + * 根据学号获取学生当前宿舍信息 + */ + @GetMapping("/studentDormitoryInfo") + @ApiOperation("根据学号获取学生当前宿舍信息") + public AjaxResult getStudentDormitoryInfo(@RequestParam String studentNo) { + // 调用service层方法获取学生宿舍信息 + return dmsManageApplicationService.getStudentDormitoryInfo(studentNo); + } + }