优化宿舍删除功能和更换宿舍
This commit is contained in:
parent
e0cfa9a94a
commit
a5a549ba25
|
@ -2,7 +2,9 @@ package org.jeecg.modules.contoller;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
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.query.QueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import io.swagger.annotations.Api;
|
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.base.controller.JeecgController;
|
||||||
import org.jeecg.common.system.query.QueryGenerator;
|
import org.jeecg.common.system.query.QueryGenerator;
|
||||||
import org.jeecg.modules.entity.CeesDormitoryInfo;
|
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.jeecg.modules.service.ICeesDormitoryInfoService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
@ -23,6 +27,7 @@ import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 宿舍信息表
|
* @Description: 宿舍信息表
|
||||||
|
@ -37,6 +42,8 @@ import java.util.List;
|
||||||
public class CeesDormitoryInfoController extends JeecgController<CeesDormitoryInfo, ICeesDormitoryInfoService> {
|
public class CeesDormitoryInfoController extends JeecgController<CeesDormitoryInfo, ICeesDormitoryInfoService> {
|
||||||
@Autowired
|
@Autowired
|
||||||
private ICeesDormitoryInfoService ceesDormitoryInfoService;
|
private ICeesDormitoryInfoService ceesDormitoryInfoService;
|
||||||
|
@Autowired
|
||||||
|
CeesWaiTeacherMapper ceesWaiTeacherMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分页列表查询
|
* 分页列表查询
|
||||||
|
@ -109,8 +116,30 @@ public class CeesDormitoryInfoController extends JeecgController<CeesDormitoryIn
|
||||||
@ApiOperation(value="宿舍信息表-通过id删除", notes="宿舍信息表-通过id删除")
|
@ApiOperation(value="宿舍信息表-通过id删除", notes="宿舍信息表-通过id删除")
|
||||||
@DeleteMapping(value = "/delete")
|
@DeleteMapping(value = "/delete")
|
||||||
public Result<String> delete(@RequestParam(name="id",required=true) String id) {
|
public Result<String> delete(@RequestParam(name="id",required=true) String id) {
|
||||||
|
try {
|
||||||
|
// 1. 查询所有关联该宿舍的用户
|
||||||
|
LambdaQueryWrapper<CeesWaiTeacher> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
queryWrapper.eq(CeesWaiTeacher::getDormitoryId, id);
|
||||||
|
List<CeesWaiTeacher> teachers = ceesWaiTeacherMapper.selectList(queryWrapper);
|
||||||
|
// 2. 清空这些用户的宿舍信息
|
||||||
|
if (!teachers.isEmpty()) {
|
||||||
|
List<String> teacherIds = teachers.stream()
|
||||||
|
.map(CeesWaiTeacher::getId)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
LambdaUpdateWrapper<CeesWaiTeacher> updateWrapper = new LambdaUpdateWrapper<>();
|
||||||
|
updateWrapper.in(CeesWaiTeacher::getId, teacherIds)
|
||||||
|
.set(CeesWaiTeacher::getDormitoryId, null);
|
||||||
|
|
||||||
|
ceesWaiTeacherMapper.update(null, updateWrapper);
|
||||||
|
}
|
||||||
|
// 3. 删除宿舍记录
|
||||||
ceesDormitoryInfoService.removeById(id);
|
ceesDormitoryInfoService.removeById(id);
|
||||||
return Result.OK("删除成功!");
|
return Result.OK("删除成功!");
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("删除宿舍失败", e);
|
||||||
|
return Result.error("删除宿舍失败: " + e.getMessage());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -123,8 +152,30 @@ public class CeesDormitoryInfoController extends JeecgController<CeesDormitoryIn
|
||||||
@ApiOperation(value="宿舍信息表-批量删除", notes="宿舍信息表-批量删除")
|
@ApiOperation(value="宿舍信息表-批量删除", notes="宿舍信息表-批量删除")
|
||||||
@DeleteMapping(value = "/deleteBatch")
|
@DeleteMapping(value = "/deleteBatch")
|
||||||
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
|
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
|
||||||
this.ceesDormitoryInfoService.removeByIds(Arrays.asList(ids.split(",")));
|
try {
|
||||||
return Result.OK("批量删除成功!");
|
// 1. 将逗号分隔的ID转换为列表
|
||||||
|
List<String> dormitoryIds = Arrays.asList(ids.split(","));
|
||||||
|
// 2. 检查是否有无效的宿舍ID
|
||||||
|
List<CeesDormitoryInfo> existingDormitories = ceesDormitoryInfoService.listByIds(dormitoryIds);
|
||||||
|
if (existingDormitories.size() != dormitoryIds.size()) {
|
||||||
|
return Result.error("部分宿舍ID不存在");
|
||||||
|
}
|
||||||
|
// 3. 查询所有关联这些宿舍的用户并清空宿舍信息
|
||||||
|
LambdaUpdateWrapper<CeesWaiTeacher> 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());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -69,6 +69,10 @@ public class CeesWaiTeacherServiceImpl extends ServiceImpl<CeesWaiTeacherMapper,
|
||||||
LambdaQueryWrapper<CeesWaiTeacher> wrapper = new LambdaQueryWrapper();
|
LambdaQueryWrapper<CeesWaiTeacher> wrapper = new LambdaQueryWrapper();
|
||||||
wrapper.eq(CeesWaiTeacher::getUserId, id);
|
wrapper.eq(CeesWaiTeacher::getUserId, id);
|
||||||
CeesWaiTeacher ceesWaiTeacher = ceesWaiTeacherMapper.selectOne(wrapper);
|
CeesWaiTeacher ceesWaiTeacher = ceesWaiTeacherMapper.selectOne(wrapper);
|
||||||
|
// 2. 获取旧宿舍ID
|
||||||
|
String oldDormitoryId = ceesWaiTeacher.getDormitoryId();
|
||||||
|
|
||||||
|
|
||||||
ceesWaiTeacher.setDormitoryId(dormitoryId);
|
ceesWaiTeacher.setDormitoryId(dormitoryId);
|
||||||
// 外校数据更新
|
// 外校数据更新
|
||||||
int result = ceesWaiTeacherMapper.updateById(ceesWaiTeacher);
|
int result = ceesWaiTeacherMapper.updateById(ceesWaiTeacher);
|
||||||
|
@ -79,6 +83,14 @@ public class CeesWaiTeacherServiceImpl extends ServiceImpl<CeesWaiTeacherMapper,
|
||||||
if (ceesDormitoryInfo.getDormitoryNum() > 0) {
|
if (ceesDormitoryInfo.getDormitoryNum() > 0) {
|
||||||
ceesDormitoryInfo.setDormitoryNum(ceesDormitoryInfo.getDormitoryNum() - 1);
|
ceesDormitoryInfo.setDormitoryNum(ceesDormitoryInfo.getDormitoryNum() - 1);
|
||||||
ceesDormitoryInfoMapper.updateById(ceesDormitoryInfo);
|
ceesDormitoryInfoMapper.updateById(ceesDormitoryInfo);
|
||||||
|
// 4. 处理宿舍人数变更
|
||||||
|
if (oldDormitoryId != null) {
|
||||||
|
// 4.1 减少旧宿舍人数
|
||||||
|
LambdaUpdateWrapper<CeesDormitoryInfo> decreaseWrapper = new LambdaUpdateWrapper<>();
|
||||||
|
decreaseWrapper.eq(CeesDormitoryInfo::getId, oldDormitoryId)
|
||||||
|
.setSql("dormitory_num = dormitory_num + 1");
|
||||||
|
ceesDormitoryInfoMapper.update(null, decreaseWrapper);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
return Result.error("宿舍人数已满");
|
return Result.error("宿舍人数已满");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue