From 2c51e0ec3b885251ed6eb1fb95ecdfb17e6a50f1 Mon Sep 17 00:00:00 2001 From: zlwu <704541015@qq.com> Date: Mon, 1 Sep 2025 14:33:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/XgStudentMsgServiceImpl.java | 59 ++++++--- .../xg/xsjcxx/studentMsg/studentMsg/index.vue | 112 ++++++++++++++++-- 2 files changed, 147 insertions(+), 24 deletions(-) diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgStudentMsgServiceImpl.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgStudentMsgServiceImpl.java index 14be9ddd..654d757e 100644 --- a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgStudentMsgServiceImpl.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgStudentMsgServiceImpl.java @@ -1136,29 +1136,60 @@ public class XgStudentMsgServiceImpl implements IXgStudentMsgService { return; } - // 1. 批量更新学生信息表的is_boarder字段为0,同时清空宿舍楼栋和房间号 + // 1. 查询学生信息,检查哪些学生已经分配了宿舍 + List students = baseMapper.selectList( + Wrappers.lambdaQuery(XgStudentMsg.class) + .in(XgStudentMsg::getId, studentIds) + .eq(XgStudentMsg::getDeleted, 0)); + + // 2. 过滤出可以取消床位申请的学生(宿舍楼栋、房间号、床位号都为空的学生) + List allowedStudentIds = new ArrayList<>(); + List skippedStudentIds = new ArrayList<>(); + + for (XgStudentMsg student : students) { + // 检查宿舍楼栋、房间号、床位号是否都不为空 + boolean hasAssignedBed = StringUtils.isNotBlank(student.getDormitoryBuilding()) || + StringUtils.isNotBlank(student.getDormitoryRoom()) || + StringUtils.isNotBlank(student.getExtField1()); // 床位号字段 + + if (hasAssignedBed) { + skippedStudentIds.add(student.getId()); + log.warn("学生 {} (ID: {}) 已分配宿舍,跳过取消床位申请操作", student.getName(), student.getId()); + } else { + allowedStudentIds.add(student.getId()); + } + } + + // 3. 如果没有学生可以取消床位申请,直接返回 + if (allowedStudentIds.isEmpty()) { + log.warn("所有学生都已分配宿舍,无法执行取消床位申请操作"); + return; + } + + // 4. 批量更新允许取消床位申请的学生信息 LambdaQueryWrapper updateWrapper = Wrappers.lambdaQuery(); - updateWrapper.in(XgStudentMsg::getId, studentIds); + updateWrapper.in(XgStudentMsg::getId, allowedStudentIds); XgStudentMsg updateEntity = new XgStudentMsg(); updateEntity.setIsBoarder(0L); - updateEntity.setDormitoryBuilding(null); // 清空宿舍楼栋 - updateEntity.setDormitoryRoom(null); // 清空宿舍房间号 int updateCount = baseMapper.update(updateEntity, updateWrapper); - log.info("批量取消床位 - 更新学生住宿状态并清空宿舍信息完成,共更新 {} 条学生记录", updateCount); + log.info("批量取消床位 - 更新学生住宿状态完成,共更新 {} 条学生记录,跳过 {} 条已分配宿舍的学生记录", + updateCount, skippedStudentIds.size()); - // 2. 更新宿舍床位学生表,将状态改为1(已退宿),设置退宿时间为当前时间 - LambdaQueryWrapper bedUpdateWrapper = Wrappers.lambdaQuery(); - bedUpdateWrapper.in(XgDormBedStudent::getStudentId, studentIds); - bedUpdateWrapper.eq(XgDormBedStudent::getStatus, "0"); // 只更新状态为正常的记录 + // 5. 更新宿舍床位学生表,将状态改为1(已退宿),设置退宿时间为当前时间 + // LambdaQueryWrapper bedUpdateWrapper = + // Wrappers.lambdaQuery(); + // bedUpdateWrapper.in(XgDormBedStudent::getStudentId, studentIds); + // bedUpdateWrapper.eq(XgDormBedStudent::getStatus, "0"); // 只更新状态为正常的记录 - XgDormBedStudent bedUpdateEntity = new XgDormBedStudent(); - bedUpdateEntity.setStatus("1"); // 设置为已退宿 - bedUpdateEntity.setCheckoutTime(new Date()); // 设置退宿时间为当前时间 + // XgDormBedStudent bedUpdateEntity = new XgDormBedStudent(); + // bedUpdateEntity.setStatus("1"); // 设置为已退宿 + // bedUpdateEntity.setCheckoutTime(new Date()); // 设置退宿时间为当前时间 - int bedUpdateCount = xgDormBedStudentMapper.update(bedUpdateEntity, bedUpdateWrapper); - log.info("批量取消床位 - 更新宿舍床位状态完成,共更新 {} 条床位记录", bedUpdateCount); + // int bedUpdateCount = xgDormBedStudentMapper.update(bedUpdateEntity, + // bedUpdateWrapper); + // log.info("批量取消床位 - 更新宿舍床位状态完成,共更新 {} 条床位记录", bedUpdateCount); } /** diff --git a/web/src/views/xg/xsjcxx/studentMsg/studentMsg/index.vue b/web/src/views/xg/xsjcxx/studentMsg/studentMsg/index.vue index 545330e1..7588831d 100644 --- a/web/src/views/xg/xsjcxx/studentMsg/studentMsg/index.vue +++ b/web/src/views/xg/xsjcxx/studentMsg/studentMsg/index.vue @@ -91,7 +91,7 @@ 批量申请床位 - 批量取消床位 + 批量取消床位申请