From a5a549ba25b95772a7b09cb2a51431cca0d9bdd2 Mon Sep 17 00:00:00 2001 From: Qi <3194726156@qq.com> Date: Mon, 26 May 2025 23:02:49 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=AE=BF=E8=88=8D=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E5=8A=9F=E8=83=BD=E5=92=8C=E6=9B=B4=E6=8D=A2=E5=AE=BF?= =?UTF-8?q?=E8=88=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CeesDormitoryInfoController.java | 59 +++++++++++++++++-- .../impl/CeesWaiTeacherServiceImpl.java | 12 ++++ 2 files changed, 67 insertions(+), 4 deletions(-) diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/contoller/CeesDormitoryInfoController.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/contoller/CeesDormitoryInfoController.java index 2fb78b63..2b95e2a0 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/contoller/CeesDormitoryInfoController.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/contoller/CeesDormitoryInfoController.java @@ -2,7 +2,9 @@ package org.jeecg.modules.contoller; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.annotations.Api; @@ -14,6 +16,8 @@ import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.modules.entity.CeesDormitoryInfo; +import org.jeecg.modules.entity.CeesWaiTeacher; +import org.jeecg.modules.mapper.CeesWaiTeacherMapper; import org.jeecg.modules.service.ICeesDormitoryInfoService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -23,6 +27,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; /** * @Description: 宿舍信息表 @@ -37,6 +42,8 @@ import java.util.List; public class CeesDormitoryInfoController extends JeecgController { @Autowired private ICeesDormitoryInfoService ceesDormitoryInfoService; + @Autowired + CeesWaiTeacherMapper ceesWaiTeacherMapper; /** * 分页列表查询 @@ -109,8 +116,30 @@ public class CeesDormitoryInfoController extends JeecgController delete(@RequestParam(name="id",required=true) String id) { - ceesDormitoryInfoService.removeById(id); - return Result.OK("删除成功!"); + try { + // 1. 查询所有关联该宿舍的用户 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(CeesWaiTeacher::getDormitoryId, id); + List teachers = ceesWaiTeacherMapper.selectList(queryWrapper); + // 2. 清空这些用户的宿舍信息 + if (!teachers.isEmpty()) { + List teacherIds = teachers.stream() + .map(CeesWaiTeacher::getId) + .collect(Collectors.toList()); + + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.in(CeesWaiTeacher::getId, teacherIds) + .set(CeesWaiTeacher::getDormitoryId, null); + + ceesWaiTeacherMapper.update(null, updateWrapper); + } + // 3. 删除宿舍记录 + ceesDormitoryInfoService.removeById(id); + return Result.OK("删除成功!"); + } catch (Exception e) { + log.error("删除宿舍失败", e); + return Result.error("删除宿舍失败: " + e.getMessage()); + } } /** @@ -123,8 +152,30 @@ public class CeesDormitoryInfoController extends JeecgController deleteBatch(@RequestParam(name="ids",required=true) String ids) { - this.ceesDormitoryInfoService.removeByIds(Arrays.asList(ids.split(","))); - return Result.OK("批量删除成功!"); + try { + // 1. 将逗号分隔的ID转换为列表 + List dormitoryIds = Arrays.asList(ids.split(",")); + // 2. 检查是否有无效的宿舍ID + List existingDormitories = ceesDormitoryInfoService.listByIds(dormitoryIds); + if (existingDormitories.size() != dormitoryIds.size()) { + return Result.error("部分宿舍ID不存在"); + } + // 3. 查询所有关联这些宿舍的用户并清空宿舍信息 + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.in(CeesWaiTeacher::getDormitoryId, dormitoryIds) + .set(CeesWaiTeacher::getDormitoryId, null); + int affectedUsers = ceesWaiTeacherMapper.update(null, updateWrapper); + log.info("清空了{}位用户的宿舍信息", affectedUsers); + // 4. 批量删除宿舍记录 + boolean removeSuccess = ceesDormitoryInfoService.removeByIds(dormitoryIds); + if (!removeSuccess) { + throw new RuntimeException("批量删除宿舍记录失败"); + } + return Result.OK("批量删除成功,并清空了" + affectedUsers + "位用户的宿舍信息"); + } catch (Exception e) { + log.error("批量删除宿舍失败", e); + return Result.error("批量删除失败: " + e.getMessage()); + } } /** diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CeesWaiTeacherServiceImpl.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CeesWaiTeacherServiceImpl.java index a624abd9..038516fb 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CeesWaiTeacherServiceImpl.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CeesWaiTeacherServiceImpl.java @@ -69,6 +69,10 @@ public class CeesWaiTeacherServiceImpl extends ServiceImpl wrapper = new LambdaQueryWrapper(); wrapper.eq(CeesWaiTeacher::getUserId, id); CeesWaiTeacher ceesWaiTeacher = ceesWaiTeacherMapper.selectOne(wrapper); + // 2. 获取旧宿舍ID + String oldDormitoryId = ceesWaiTeacher.getDormitoryId(); + + ceesWaiTeacher.setDormitoryId(dormitoryId); // 外校数据更新 int result = ceesWaiTeacherMapper.updateById(ceesWaiTeacher); @@ -79,6 +83,14 @@ public class CeesWaiTeacherServiceImpl extends ServiceImpl 0) { ceesDormitoryInfo.setDormitoryNum(ceesDormitoryInfo.getDormitoryNum() - 1); ceesDormitoryInfoMapper.updateById(ceesDormitoryInfo); + // 4. 处理宿舍人数变更 + if (oldDormitoryId != null) { + // 4.1 减少旧宿舍人数 + LambdaUpdateWrapper decreaseWrapper = new LambdaUpdateWrapper<>(); + decreaseWrapper.eq(CeesDormitoryInfo::getId, oldDormitoryId) + .setSql("dormitory_num = dormitory_num + 1"); + ceesDormitoryInfoMapper.update(null, decreaseWrapper); + } } else { return Result.error("宿舍人数已满"); }