添加宿舍中人员数据、分组根据角色查询
This commit is contained in:
parent
49d476dcc8
commit
e0cfa9a94a
|
@ -52,10 +52,12 @@ public class CeesGroupController extends JeecgController<CeesGroup, ICeesGroupSe
|
||||||
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
|
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
|
||||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
|
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
|
||||||
HttpServletRequest req) {
|
HttpServletRequest req) {
|
||||||
QueryWrapper<CeesGroup> queryWrapper = QueryGenerator.initQueryWrapper(ceesGroup, req.getParameterMap());
|
|
||||||
Page<CeesGroup> page = new Page<CeesGroup>(pageNo, pageSize);
|
return Result.OK(ceesGroupService.queryPageList(ceesGroup,pageNo,pageSize,req));
|
||||||
IPage<CeesGroup> pageList = ceesGroupService.page(page, queryWrapper);
|
// QueryWrapper<CeesGroup> queryWrapper = QueryGenerator.initQueryWrapper(ceesGroup, req.getParameterMap());
|
||||||
return Result.OK(pageList);
|
// Page<CeesGroup> page = new Page<CeesGroup>(pageNo, pageSize);
|
||||||
|
// IPage<CeesGroup> pageList = ceesGroupService.page(page, queryWrapper);
|
||||||
|
// return Result.OK(pageList);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -2,20 +2,24 @@ package org.jeecg.modules.contoller;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
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;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.jeecg.common.api.vo.Result;
|
import org.jeecg.common.api.vo.Result;
|
||||||
import org.jeecg.common.aspect.annotation.AutoLog;
|
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.CeesUser;
|
import org.jeecg.modules.entity.CeesUser;
|
||||||
import org.jeecg.modules.entity.CeesWaiTeacher;
|
import org.jeecg.modules.entity.CeesWaiTeacher;
|
||||||
import org.jeecg.modules.entity.dto.CreateAccountDto;
|
import org.jeecg.modules.entity.dto.CreateAccountDto;
|
||||||
import org.jeecg.modules.enums.IdentityEnum;
|
import org.jeecg.modules.enums.IdentityEnum;
|
||||||
import org.jeecg.modules.enums.MajorEnum;
|
import org.jeecg.modules.enums.MajorEnum;
|
||||||
|
import org.jeecg.modules.mapper.CeesDormitoryInfoMapper;
|
||||||
import org.jeecg.modules.mapper.CeesUserMapper;
|
import org.jeecg.modules.mapper.CeesUserMapper;
|
||||||
import org.jeecg.modules.service.ICeesLocalTeacherService;
|
import org.jeecg.modules.service.ICeesLocalTeacherService;
|
||||||
import org.jeecg.modules.service.ICeesUserService;
|
import org.jeecg.modules.service.ICeesUserService;
|
||||||
|
@ -27,9 +31,7 @@ import org.springframework.web.servlet.ModelAndView;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.util.Arrays;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -53,6 +55,8 @@ public class CeesUserController extends JeecgController<CeesUser, ICeesUserServi
|
||||||
private IStudentService studentService;
|
private IStudentService studentService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private CeesUserMapper ceesUserMapper;
|
private CeesUserMapper ceesUserMapper;
|
||||||
|
@Autowired
|
||||||
|
CeesDormitoryInfoMapper ceesDormitoryInfoMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分页列表查询
|
* 分页列表查询
|
||||||
|
@ -140,42 +144,67 @@ public class CeesUserController extends JeecgController<CeesUser, ICeesUserServi
|
||||||
@ApiOperation(value = "CEES用户表-通过id删除", notes = "CEES用户表-通过id删除")
|
@ApiOperation(value = "CEES用户表-通过id删除", notes = "CEES用户表-通过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) {
|
||||||
LambdaQueryWrapper<CeesUser> queryWrapper = new LambdaQueryWrapper<>();
|
// 1. 查询要删除的用户
|
||||||
queryWrapper.eq(CeesUser::getId, id);
|
CeesUser ceesUser = ceesUserService.getById(id);
|
||||||
CeesUser ceesUser = ceesUserMapper.selectOne(queryWrapper);
|
if (ceesUser == null) {
|
||||||
ceesUserService.removeById(id);
|
return Result.error("用户不存在");
|
||||||
//学生
|
|
||||||
if(ceesUser.getIdentity() == 2){
|
|
||||||
String data = studentService.removeByUserId(ceesUser.getUserId());
|
|
||||||
if(data == "true"){
|
|
||||||
return Result.OK("本校老师数据删除成功!");
|
|
||||||
}else if(data == "null"){
|
|
||||||
return Result.ok("数据删除成功!");
|
|
||||||
}else {
|
|
||||||
return Result.error("本校老师数据删除失败!");
|
|
||||||
}
|
|
||||||
}else if(ceesUser.getIdentity() == 3){
|
|
||||||
String data = ceesLocalTeacherService.removeByUserId(ceesUser.getUserId());
|
|
||||||
if(data == "true"){
|
|
||||||
return Result.OK("本校老师数据删除成功!");
|
|
||||||
}else if(data == "null"){
|
|
||||||
return Result.ok("数据删除成功!");
|
|
||||||
}else {
|
|
||||||
return Result.error("本校老师数据删除失败!");
|
|
||||||
}
|
|
||||||
}else if(ceesUser.getIdentity() == 4){
|
|
||||||
String data = ceesWaiTeacherService.removeByUserId(ceesUser.getUserId());
|
|
||||||
if(data == "true"){
|
|
||||||
return Result.OK("本校老师数据删除成功!");
|
|
||||||
}else if(data == "null"){
|
|
||||||
return Result.ok("数据删除成功!");
|
|
||||||
}else {
|
|
||||||
return Result.error("本校老师数据删除失败!");
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
return Result.error("数据删除错误!!");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 2. 根据身份类型处理不同的删除逻辑
|
||||||
|
switch (ceesUser.getIdentity()) {
|
||||||
|
case 2: // 学生
|
||||||
|
String studentResult = studentService.removeByUserId(ceesUser.getUserId());
|
||||||
|
if ("true".equals(studentResult)) {
|
||||||
|
ceesUserService.removeById(id);
|
||||||
|
return Result.OK("学生数据删除成功!");
|
||||||
|
} else if ("null".equals(studentResult)) {
|
||||||
|
ceesUserService.removeById(id);
|
||||||
|
return Result.OK("数据删除成功!");
|
||||||
|
} else {
|
||||||
|
return Result.error("学生数据删除失败!");
|
||||||
|
}
|
||||||
|
|
||||||
|
case 3: // 本校老师
|
||||||
|
String teacherResult = ceesLocalTeacherService.removeByUserId(ceesUser.getUserId());
|
||||||
|
if ("true".equals(teacherResult)) {
|
||||||
|
ceesUserService.removeById(id);
|
||||||
|
return Result.OK("本校老师数据删除成功!");
|
||||||
|
} else if ("null".equals(teacherResult)) {
|
||||||
|
ceesUserService.removeById(id);
|
||||||
|
return Result.OK("数据删除成功!");
|
||||||
|
} else {
|
||||||
|
return Result.error("本校老师数据删除失败!");
|
||||||
|
}
|
||||||
|
|
||||||
|
case 4: // 外校老师
|
||||||
|
// 先查询外校老师信息
|
||||||
|
CeesWaiTeacher waiTeacher = ceesWaiTeacherService.getByUserId(ceesUser.getUserId());
|
||||||
|
|
||||||
|
// 删除外校老师记录
|
||||||
|
String waiTeacherResult = ceesWaiTeacherService.removeByUserId(ceesUser.getUserId());
|
||||||
|
|
||||||
|
if ("true".equals(waiTeacherResult) || "null".equals(waiTeacherResult)) {
|
||||||
|
// 如果有宿舍关联,更新宿舍人数
|
||||||
|
if (waiTeacher != null && StringUtils.isNotBlank(waiTeacher.getDormitoryId())) {
|
||||||
|
LambdaUpdateWrapper<CeesDormitoryInfo> dormitoryUpdate = new LambdaUpdateWrapper<>();
|
||||||
|
dormitoryUpdate.eq(CeesDormitoryInfo::getId, waiTeacher.getDormitoryId())
|
||||||
|
.setSql("dormitory_num = dormitory_num + 1") // 人数减1
|
||||||
|
.setSql("dormitory_status = 0") // 设置为未满状态
|
||||||
|
.set(CeesDormitoryInfo::getUpdateTime, new Date());
|
||||||
|
ceesDormitoryInfoMapper.update(null, dormitoryUpdate);
|
||||||
|
}
|
||||||
|
|
||||||
|
ceesUserService.removeById(id);
|
||||||
|
return "true".equals(waiTeacherResult) ?
|
||||||
|
Result.OK("外校老师数据删除成功!") :
|
||||||
|
Result.OK("数据删除成功!");
|
||||||
|
} else {
|
||||||
|
return Result.error("外校老师数据删除失败!");
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
return Result.error("未知用户身份类型!");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -191,25 +220,33 @@ public class CeesUserController extends JeecgController<CeesUser, ICeesUserServi
|
||||||
// 1. 将逗号分隔的ID字符串转换为列表
|
// 1. 将逗号分隔的ID字符串转换为列表
|
||||||
List<String> idList = Arrays.asList(ids.split(","));
|
List<String> idList = Arrays.asList(ids.split(","));
|
||||||
// 2. 批量查询用户信息
|
// 2. 批量查询用户信息
|
||||||
LambdaQueryWrapper<CeesUser> queryWrapper = new LambdaQueryWrapper<>();
|
List<CeesUser> users = ceesUserService.listByIds(idList);
|
||||||
queryWrapper.in(CeesUser::getId, idList);
|
if (users.isEmpty()) {
|
||||||
List<CeesUser> users = ceesUserMapper.selectList(queryWrapper);
|
return Result.error("未找到要删除的用户");
|
||||||
|
}
|
||||||
// 3. 按身份类型分组
|
// 3. 按身份类型分组
|
||||||
Map<Integer, List<CeesUser>> groupedUsers = users.stream()
|
Map<Integer, List<CeesUser>> groupedUsers = users.stream()
|
||||||
.collect(Collectors.groupingBy(CeesUser::getIdentity));
|
.collect(Collectors.groupingBy(CeesUser::getIdentity));
|
||||||
// 4. 处理不同身份类型的删除
|
|
||||||
try {
|
try {
|
||||||
// 4.1 先删除关联数据
|
// 4. 处理不同身份类型的删除
|
||||||
processIdentitySpecificDeletions(groupedUsers);
|
Map<String, Long> dormitoryCountMap = processIdentitySpecificDeletions(groupedUsers);
|
||||||
// 4.2 再批量删除用户主表数据
|
// 5. 更新宿舍人数
|
||||||
|
updateDormitoryCounts(dormitoryCountMap);
|
||||||
|
// 6. 批量删除用户主表数据
|
||||||
ceesUserService.removeByIds(idList);
|
ceesUserService.removeByIds(idList);
|
||||||
return Result.OK("批量删除成功,共删除 " + idList.size() + " 条记录");
|
return Result.OK("批量删除成功,共删除 " + idList.size() + " 条记录");
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
log.error("批量删除用户失败", e);
|
||||||
return Result.error("批量删除过程中出错: " + e.getMessage());
|
return Result.error("批量删除过程中出错: " + e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void processIdentitySpecificDeletions(Map<Integer, List<CeesUser>> groupedUsers) {
|
/**
|
||||||
|
* 处理不同身份类型的删除逻辑
|
||||||
|
* @return 需要更新的宿舍ID和对应减少的人数Map
|
||||||
|
*/
|
||||||
|
private Map<String, Long> processIdentitySpecificDeletions(Map<Integer, List<CeesUser>> groupedUsers) {
|
||||||
|
Map<String, Long> dormitoryCountMap = new HashMap<>();
|
||||||
// 处理学生数据删除
|
// 处理学生数据删除
|
||||||
if (groupedUsers.containsKey(2)) {
|
if (groupedUsers.containsKey(2)) {
|
||||||
List<String> studentUserIds = groupedUsers.get(2).stream()
|
List<String> studentUserIds = groupedUsers.get(2).stream()
|
||||||
|
@ -229,8 +266,35 @@ public class CeesUserController extends JeecgController<CeesUser, ICeesUserServi
|
||||||
List<String> waiTeacherUserIds = groupedUsers.get(4).stream()
|
List<String> waiTeacherUserIds = groupedUsers.get(4).stream()
|
||||||
.map(CeesUser::getUserId)
|
.map(CeesUser::getUserId)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
// 查询外校老师的宿舍信息
|
||||||
|
List<CeesWaiTeacher> waiTeachers = ceesWaiTeacherService.listByUserIds(waiTeacherUserIds);
|
||||||
|
// 按宿舍ID分组统计需要减少的人数
|
||||||
|
dormitoryCountMap = waiTeachers.stream()
|
||||||
|
.filter(t -> StringUtils.isNotBlank(t.getDormitoryId()))
|
||||||
|
.collect(Collectors.groupingBy(
|
||||||
|
CeesWaiTeacher::getDormitoryId,
|
||||||
|
Collectors.counting()
|
||||||
|
));
|
||||||
|
// 删除外校老师记录
|
||||||
ceesWaiTeacherService.removeBatchByUserIds(waiTeacherUserIds);
|
ceesWaiTeacherService.removeBatchByUserIds(waiTeacherUserIds);
|
||||||
}
|
}
|
||||||
|
return dormitoryCountMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量更新宿舍人数
|
||||||
|
*/
|
||||||
|
private void updateDormitoryCounts(Map<String, Long> dormitoryCountMap) {
|
||||||
|
if (dormitoryCountMap.isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
dormitoryCountMap.forEach((dormitoryId, count) -> {
|
||||||
|
LambdaUpdateWrapper<CeesDormitoryInfo> updateWrapper = new LambdaUpdateWrapper<>();
|
||||||
|
updateWrapper.eq(CeesDormitoryInfo::getId, dormitoryId)
|
||||||
|
.setSql("dormitory_num = dormitory_num + " + count)
|
||||||
|
.set(CeesDormitoryInfo::getUpdateTime, new Date());
|
||||||
|
ceesDormitoryInfoMapper.update(null, updateWrapper);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* 通过id查询
|
* 通过id查询
|
||||||
|
|
|
@ -2,16 +2,20 @@ package org.jeecg.modules.contoller;
|
||||||
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.jeecg.common.api.vo.Result;
|
import org.jeecg.common.api.vo.Result;
|
||||||
import org.jeecg.common.aspect.annotation.AutoLog;
|
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.modules.entity.CeesDormitoryInfo;
|
||||||
import org.jeecg.modules.entity.CeesUser;
|
import org.jeecg.modules.entity.CeesUser;
|
||||||
import org.jeecg.modules.entity.CeesWaiTeacher;
|
import org.jeecg.modules.entity.CeesWaiTeacher;
|
||||||
import org.jeecg.modules.entity.dto.CreateAccountDto;
|
import org.jeecg.modules.entity.dto.CreateAccountDto;
|
||||||
|
import org.jeecg.modules.mapper.CeesDormitoryInfoMapper;
|
||||||
import org.jeecg.modules.mapper.CeesUserMapper;
|
import org.jeecg.modules.mapper.CeesUserMapper;
|
||||||
import org.jeecg.modules.mapper.CeesWaiTeacherMapper;
|
import org.jeecg.modules.mapper.CeesWaiTeacherMapper;
|
||||||
import org.jeecg.modules.service.ICeesUserService;
|
import org.jeecg.modules.service.ICeesUserService;
|
||||||
|
@ -25,6 +29,7 @@ import org.springframework.web.servlet.ModelAndView;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
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.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
@ -50,6 +55,8 @@ public class CeesWaiTeacherController extends JeecgController<CeesWaiTeacher, IC
|
||||||
CeesUserMapper ceesUserMapper;
|
CeesUserMapper ceesUserMapper;
|
||||||
@Value("${jasypt.encryptor.password}")
|
@Value("${jasypt.encryptor.password}")
|
||||||
private String passWord;
|
private String passWord;
|
||||||
|
@Autowired
|
||||||
|
CeesDormitoryInfoMapper ceesDormitoryInfoMapper;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -162,10 +169,24 @@ public class CeesWaiTeacherController extends JeecgController<CeesWaiTeacher, IC
|
||||||
LambdaQueryWrapper<CeesWaiTeacher> queryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<CeesWaiTeacher> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
queryWrapper.eq(CeesWaiTeacher::getId,id);
|
queryWrapper.eq(CeesWaiTeacher::getId,id);
|
||||||
CeesWaiTeacher ceesWaiTeacher = ceesWaiTeacherMapper.selectOne(queryWrapper);
|
CeesWaiTeacher ceesWaiTeacher = ceesWaiTeacherMapper.selectOne(queryWrapper);
|
||||||
LambdaQueryWrapper<CeesUser> query = new LambdaQueryWrapper<>();
|
// 2. 如果有宿舍关联,处理宿舍人数减1
|
||||||
query.eq(CeesUser::getUserId,ceesWaiTeacher.getUserId());
|
if (StringUtils.isNotBlank(ceesWaiTeacher.getDormitoryId())) {
|
||||||
CeesUser ceesUser = ceesUserMapper.selectOne(query);
|
LambdaUpdateWrapper<CeesDormitoryInfo> dormitoryUpdate = new LambdaUpdateWrapper<>();
|
||||||
|
dormitoryUpdate.eq(CeesDormitoryInfo::getId, ceesWaiTeacher.getDormitoryId())
|
||||||
|
.setSql("dormitory_num = dormitory_num + 1") // 人数减1
|
||||||
|
.setSql("dormitory_status = 0") // 设置为未满状态
|
||||||
|
.set(CeesDormitoryInfo::getUpdateTime, new Date());
|
||||||
|
ceesDormitoryInfoMapper.update(null, dormitoryUpdate);
|
||||||
|
}
|
||||||
|
// 3. 删除关联的用户信息
|
||||||
|
if (StringUtils.isNotBlank(ceesWaiTeacher.getUserId())) {
|
||||||
|
LambdaQueryWrapper<CeesUser> userQuery = new LambdaQueryWrapper<>();
|
||||||
|
userQuery.eq(CeesUser::getUserId, ceesWaiTeacher.getUserId());
|
||||||
|
CeesUser ceesUser = ceesUserMapper.selectOne(userQuery);
|
||||||
|
if (ceesUser != null) {
|
||||||
ceesUserService.removeById(ceesUser.getId());
|
ceesUserService.removeById(ceesUser.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
ceesWaiTeacherService.removeById(id);
|
ceesWaiTeacherService.removeById(id);
|
||||||
return Result.OK("删除成功!");
|
return Result.OK("删除成功!");
|
||||||
}
|
}
|
||||||
|
@ -182,14 +203,35 @@ public class CeesWaiTeacherController extends JeecgController<CeesWaiTeacher, IC
|
||||||
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
|
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
|
||||||
// 1. 将逗号分隔的ID字符串转换为列表
|
// 1. 将逗号分隔的ID字符串转换为列表
|
||||||
List<String> idList = Arrays.asList(ids.split(","));
|
List<String> idList = Arrays.asList(ids.split(","));
|
||||||
// 3. 查询这些教师对应的用户ID
|
|
||||||
|
// 2. 查询这些教师信息
|
||||||
LambdaQueryWrapper<CeesWaiTeacher> teacherQuery = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<CeesWaiTeacher> teacherQuery = new LambdaQueryWrapper<>();
|
||||||
teacherQuery.in(CeesWaiTeacher::getId, idList);
|
teacherQuery.in(CeesWaiTeacher::getId, idList);
|
||||||
List<CeesWaiTeacher> teachers = ceesWaiTeacherMapper.selectList(teacherQuery);
|
List<CeesWaiTeacher> teachers = ceesWaiTeacherMapper.selectList(teacherQuery);
|
||||||
|
|
||||||
|
// 3. 处理宿舍人数更新(按宿舍ID分组统计需要减少的人数)
|
||||||
|
Map<String, Long> dormitoryCountMap = teachers.stream()
|
||||||
|
.filter(t -> StringUtils.isNotBlank(t.getDormitoryId()))
|
||||||
|
.collect(Collectors.groupingBy(
|
||||||
|
CeesWaiTeacher::getDormitoryId,
|
||||||
|
Collectors.counting()
|
||||||
|
));
|
||||||
|
|
||||||
|
// 批量更新宿舍人数
|
||||||
|
dormitoryCountMap.forEach((dormitoryId, count) -> {
|
||||||
|
LambdaUpdateWrapper<CeesDormitoryInfo> dormitoryUpdate = new LambdaUpdateWrapper<>();
|
||||||
|
dormitoryUpdate.eq(CeesDormitoryInfo::getId, dormitoryId)
|
||||||
|
.setSql("dormitory_num = dormitory_num + " + count) // 人数减少对应数量
|
||||||
|
.setSql("dormitory_status = 0") // 设置为未满状态
|
||||||
|
.set(CeesDormitoryInfo::getUpdateTime, new Date());
|
||||||
|
ceesDormitoryInfoMapper.update(null, dormitoryUpdate);
|
||||||
|
});
|
||||||
|
|
||||||
// 4. 提取用户ID列表
|
// 4. 提取用户ID列表
|
||||||
List<String> userIds = teachers.stream()
|
List<String> userIds = teachers.stream()
|
||||||
.map(CeesWaiTeacher::getUserId)
|
.map(CeesWaiTeacher::getUserId)
|
||||||
|
.filter(StringUtils::isNotBlank)
|
||||||
|
.distinct()
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
// 5. 批量删除关联的用户记录
|
// 5. 批量删除关联的用户记录
|
||||||
|
@ -198,8 +240,10 @@ public class CeesWaiTeacherController extends JeecgController<CeesWaiTeacher, IC
|
||||||
userQuery.in(CeesUser::getUserId, userIds);
|
userQuery.in(CeesUser::getUserId, userIds);
|
||||||
ceesUserService.remove(userQuery);
|
ceesUserService.remove(userQuery);
|
||||||
}
|
}
|
||||||
// 2. 先批量删除CeesWaiTeacher记录
|
|
||||||
this.ceesWaiTeacherService.removeByIds(idList);
|
// 6. 批量删除教师记录
|
||||||
|
ceesWaiTeacherService.removeByIds(idList);
|
||||||
|
|
||||||
return Result.OK("批量删除成功!");
|
return Result.OK("批量删除成功!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -79,4 +79,7 @@ public class CeesDormitoryInfo implements Serializable {
|
||||||
@ApiModelProperty(value = "专业id")
|
@ApiModelProperty(value = "专业id")
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private String majorIdDescription;
|
private String majorIdDescription;
|
||||||
|
@Excel(name = "住宿人员", width = 15)
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String dormitorydata;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,13 @@
|
||||||
package org.jeecg.modules.service;
|
package org.jeecg.modules.service;
|
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import org.jeecg.modules.entity.CeesGroup;
|
import org.jeecg.modules.entity.CeesGroup;
|
||||||
import org.jeecg.modules.entity.dto.UpdateGroupUserDto;
|
import org.jeecg.modules.entity.dto.UpdateGroupUserDto;
|
||||||
import org.jeecg.modules.entity.vo.CeesUserGroupVo;
|
import org.jeecg.modules.entity.vo.CeesUserGroupVo;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -21,4 +23,6 @@ public interface ICeesGroupService extends IService<CeesGroup> {
|
||||||
ArrayList<CeesUserGroupVo> getRowUser(String id);
|
ArrayList<CeesUserGroupVo> getRowUser(String id);
|
||||||
|
|
||||||
void updateGroupUser(UpdateGroupUserDto updateGroupUserDto);
|
void updateGroupUser(UpdateGroupUserDto updateGroupUserDto);
|
||||||
|
|
||||||
|
IPage<CeesGroup> queryPageList(CeesGroup ceesGroup, Integer pageNo, Integer pageSize, HttpServletRequest req);
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,4 +41,8 @@ public interface ICeesWaiTeacherService extends IService<CeesWaiTeacher> {
|
||||||
String removeByUserId(String userId);
|
String removeByUserId(String userId);
|
||||||
|
|
||||||
boolean removeBatchByUserIds(List<String> waiTeacherUserIds);
|
boolean removeBatchByUserIds(List<String> waiTeacherUserIds);
|
||||||
|
|
||||||
|
CeesWaiTeacher getByUserId(String userId);
|
||||||
|
|
||||||
|
List<CeesWaiTeacher> listByUserIds(List<String> waiTeacherUserIds);
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,8 +13,10 @@ import org.jeecg.common.api.vo.Result;
|
||||||
import org.jeecg.common.system.query.QueryGenerator;
|
import org.jeecg.common.system.query.QueryGenerator;
|
||||||
import org.jeecg.common.system.vo.LoginUser;
|
import org.jeecg.common.system.vo.LoginUser;
|
||||||
import org.jeecg.modules.entity.CeesDormitoryInfo;
|
import org.jeecg.modules.entity.CeesDormitoryInfo;
|
||||||
|
import org.jeecg.modules.entity.CeesWaiTeacher;
|
||||||
import org.jeecg.modules.enums.MajorEnum;
|
import org.jeecg.modules.enums.MajorEnum;
|
||||||
import org.jeecg.modules.mapper.CeesDormitoryInfoMapper;
|
import org.jeecg.modules.mapper.CeesDormitoryInfoMapper;
|
||||||
|
import org.jeecg.modules.mapper.CeesWaiTeacherMapper;
|
||||||
import org.jeecg.modules.service.ICeesDormitoryInfoService;
|
import org.jeecg.modules.service.ICeesDormitoryInfoService;
|
||||||
import org.jeecg.modules.system.entity.SysRole;
|
import org.jeecg.modules.system.entity.SysRole;
|
||||||
import org.jeecg.modules.system.entity.SysUserRole;
|
import org.jeecg.modules.system.entity.SysUserRole;
|
||||||
|
@ -25,7 +27,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
@ -44,6 +48,8 @@ public class CeesDormitoryInfoServiceImpl extends ServiceImpl<CeesDormitoryInfoM
|
||||||
SysRoleMapper sysRoleMapper;
|
SysRoleMapper sysRoleMapper;
|
||||||
@Resource
|
@Resource
|
||||||
SysUserRoleMapper sysUserRoleMapper;
|
SysUserRoleMapper sysUserRoleMapper;
|
||||||
|
@Resource
|
||||||
|
CeesWaiTeacherMapper ceesWaiTeacherMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Result<JSONArray> selectBySex(String sex, Integer majorId) {
|
public Result<JSONArray> selectBySex(String sex, Integer majorId) {
|
||||||
|
@ -102,8 +108,31 @@ public class CeesDormitoryInfoServiceImpl extends ServiceImpl<CeesDormitoryInfoM
|
||||||
// 设置学科描述
|
// 设置学科描述
|
||||||
pageList.convert(e -> {
|
pageList.convert(e -> {
|
||||||
e.setMajorIdDescription(MajorEnum.describe(e.getMajorId())); // 设置学科描述
|
e.setMajorIdDescription(MajorEnum.describe(e.getMajorId())); // 设置学科描述
|
||||||
|
// 根据宿舍ID查询住宿人员名称
|
||||||
|
List<String> residentNames = getResidentNamesByDormitoryId(e.getId());
|
||||||
|
e.setDormitorydata(String.join(",", residentNames)); // 将人员名称列表转为逗号分隔的字符串
|
||||||
return e;
|
return e;
|
||||||
});
|
});
|
||||||
return pageList;
|
return pageList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据宿舍ID查询住宿人员名称
|
||||||
|
* @param dormitoryId 宿舍ID
|
||||||
|
* @return 人员名称列表
|
||||||
|
*/
|
||||||
|
private List<String> getResidentNamesByDormitoryId(String dormitoryId) {
|
||||||
|
// 直接查询外校老师表中住在该宿舍的老师
|
||||||
|
LambdaQueryWrapper<CeesWaiTeacher> query = new LambdaQueryWrapper<>();
|
||||||
|
query.eq(CeesWaiTeacher::getDormitoryId, dormitoryId)
|
||||||
|
.eq(CeesWaiTeacher::getDormitoryStatus, 1) // 1表示已住宿
|
||||||
|
.select(CeesWaiTeacher::getUserName); // 只查询用户名字段
|
||||||
|
List<CeesWaiTeacher> residents = ceesWaiTeacherMapper.selectList(query);
|
||||||
|
// 提取用户名列表
|
||||||
|
return residents.stream()
|
||||||
|
.map(CeesWaiTeacher::getUserName)
|
||||||
|
.filter(Objects::nonNull) // 过滤掉null值
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,28 @@
|
||||||
package org.jeecg.modules.service.impl;
|
package org.jeecg.modules.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import org.apache.shiro.SecurityUtils;
|
||||||
|
import org.jeecg.common.system.query.QueryGenerator;
|
||||||
|
import org.jeecg.common.system.vo.LoginUser;
|
||||||
|
import org.jeecg.modules.entity.CeesDormitoryInfo;
|
||||||
import org.jeecg.modules.entity.CeesGroup;
|
import org.jeecg.modules.entity.CeesGroup;
|
||||||
import org.jeecg.modules.entity.dto.UpdateGroupUserDto;
|
import org.jeecg.modules.entity.dto.UpdateGroupUserDto;
|
||||||
import org.jeecg.modules.entity.vo.CeesUserGroupVo;
|
import org.jeecg.modules.entity.vo.CeesUserGroupVo;
|
||||||
|
import org.jeecg.modules.enums.MajorEnum;
|
||||||
import org.jeecg.modules.mapper.CeesGroupMapper;
|
import org.jeecg.modules.mapper.CeesGroupMapper;
|
||||||
import org.jeecg.modules.service.ICeesGroupService;
|
import org.jeecg.modules.service.ICeesGroupService;
|
||||||
|
import org.jeecg.modules.system.entity.SysRole;
|
||||||
|
import org.jeecg.modules.system.entity.SysUserRole;
|
||||||
|
import org.jeecg.modules.system.mapper.SysRoleMapper;
|
||||||
|
import org.jeecg.modules.system.mapper.SysUserRoleMapper;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -22,6 +36,11 @@ public class CeesGroupServiceImpl extends ServiceImpl<CeesGroupMapper, CeesGroup
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private CeesGroupMapper ceesGroupMapper;
|
private CeesGroupMapper ceesGroupMapper;
|
||||||
|
@Resource
|
||||||
|
SysRoleMapper sysRoleMapper;
|
||||||
|
@Resource
|
||||||
|
SysUserRoleMapper sysUserRoleMapper;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param groupId
|
* @param groupId
|
||||||
|
@ -42,4 +61,31 @@ public class CeesGroupServiceImpl extends ServiceImpl<CeesGroupMapper, CeesGroup
|
||||||
//新增或更新分组中间表
|
//新增或更新分组中间表
|
||||||
ceesGroupMapper.updateGroupUser(updateGroupUserDto);
|
ceesGroupMapper.updateGroupUser(updateGroupUserDto);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IPage<CeesGroup> queryPageList(CeesGroup ceesGroup, Integer pageNo, Integer pageSize, HttpServletRequest req) {
|
||||||
|
LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||||
|
String userId = user.getId();
|
||||||
|
|
||||||
|
// 查询当前用户的角色
|
||||||
|
LambdaQueryWrapper<SysUserRole> queryUserRole = new LambdaQueryWrapper<>();
|
||||||
|
queryUserRole.eq(SysUserRole::getUserId, userId);
|
||||||
|
SysUserRole sysUserRole = sysUserRoleMapper.selectOne(queryUserRole);
|
||||||
|
String roleId = sysUserRole.getRoleId();
|
||||||
|
|
||||||
|
// 获取对应角色数据
|
||||||
|
LambdaQueryWrapper<SysRole> queryRole = new LambdaQueryWrapper<>();
|
||||||
|
queryRole.eq(SysRole::getId, roleId);
|
||||||
|
SysRole sysRole = sysRoleMapper.selectOne(queryRole);
|
||||||
|
String roleCode = sysRole.getRoleCode();
|
||||||
|
|
||||||
|
QueryWrapper<CeesGroup> queryWrapper = QueryGenerator.initQueryWrapper(ceesGroup, req.getParameterMap());
|
||||||
|
if (roleCode.length() == 1) {
|
||||||
|
queryWrapper.eq("major_id", roleCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
Page<CeesGroup> page = new Page<>(pageNo, pageSize);
|
||||||
|
IPage<CeesGroup> pageList = page(page, queryWrapper);
|
||||||
|
return pageList;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,10 +36,7 @@ import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -378,4 +375,21 @@ public class CeesWaiTeacherServiceImpl extends ServiceImpl<CeesWaiTeacherMapper,
|
||||||
wrapper.in(CeesWaiTeacher::getUserId, userIds);
|
wrapper.in(CeesWaiTeacher::getUserId, userIds);
|
||||||
return this.remove(wrapper);
|
return this.remove(wrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CeesWaiTeacher getByUserId(String userId) {
|
||||||
|
LambdaQueryWrapper<CeesWaiTeacher> query = new LambdaQueryWrapper<>();
|
||||||
|
query.eq(CeesWaiTeacher::getUserId, userId);
|
||||||
|
return getOne(query);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<CeesWaiTeacher> listByUserIds(List<String> userIds) {
|
||||||
|
if (userIds == null || userIds.isEmpty()) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
LambdaQueryWrapper<CeesWaiTeacher> query = new LambdaQueryWrapper<>();
|
||||||
|
query.in(CeesWaiTeacher::getUserId, userIds);
|
||||||
|
return list(query);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue