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 81c02098..3e34d3a6 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 @@ -65,10 +65,6 @@ public class CeesDormitoryInfoController extends JeecgController queryWrapper = QueryGenerator.initQueryWrapper(ceesDormitoryInfo, req.getParameterMap()); -// Page page = new Page(pageNo, pageSize); -// IPage pageList = ceesDormitoryInfoService.page(page, queryWrapper); -// return Result.OK(pageList); } /** diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/contoller/CeesGroupController.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/contoller/CeesGroupController.java index 519ac5d4..b60cacda 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/contoller/CeesGroupController.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/contoller/CeesGroupController.java @@ -1,9 +1,9 @@ package org.jeecg.modules.contoller; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +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.extension.plugins.pagination.Page; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -11,10 +11,11 @@ import org.jeecg.common.api.vo.Result; import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.aspect.annotation.PermissionData; import org.jeecg.common.system.base.controller.JeecgController; -import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.modules.entity.CeesGroup; +import org.jeecg.modules.entity.CeesWaiTeacher; import org.jeecg.modules.entity.dto.UpdateGroupUserDto; import org.jeecg.modules.entity.vo.CeesUserGroupVo; +import org.jeecg.modules.mapper.CeesWaiTeacherMapper; import org.jeecg.modules.service.ICeesGroupService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -24,6 +25,8 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; /** * @author Xubx @@ -36,6 +39,8 @@ import java.util.Arrays; public class CeesGroupController extends JeecgController { @Autowired private ICeesGroupService ceesGroupService; + @Autowired + private CeesWaiTeacherMapper ceesWaiTeacherMapper; /** * 分页列表查询 @@ -56,10 +61,6 @@ public class CeesGroupController extends JeecgController queryWrapper = QueryGenerator.initQueryWrapper(ceesGroup, req.getParameterMap()); -// Page page = new Page(pageNo, pageSize); -// IPage pageList = ceesGroupService.page(page, queryWrapper); -// return Result.OK(pageList); } /** @@ -124,8 +125,29 @@ public class CeesGroupController extends JeecgController delete(@RequestParam(name = "id", required = true) String id) { - ceesGroupService.removeById(id); - return Result.OK("删除成功!"); + try { + // 1. 查询所有关联该宿舍的用户 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(CeesWaiTeacher::getGroupId, 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::getGroupId, null); + ceesWaiTeacherMapper.update(null, updateWrapper); + } + // 3. 删除宿舍记录 + ceesGroupService.removeById(id); + return Result.OK("删除成功!"); + } catch (Exception e) { + log.error("删除宿舍失败", e); + return Result.error("删除宿舍失败: " + e.getMessage()); + } } /** @@ -138,8 +160,30 @@ public class CeesGroupController extends JeecgController deleteBatch(@RequestParam(name = "ids", required = true) String ids) { - this.ceesGroupService.removeByIds(Arrays.asList(ids.split(","))); - return Result.OK("批量删除成功!"); + try { + // 1. 将逗号分隔的ID转换为列表 + List groupIds = Arrays.asList(ids.split(",")); + // 2. 检查是否有无效的宿舍ID + List existingGroupes = ceesGroupService.listByIds(groupIds); + if (existingGroupes.size() != groupIds.size()) { + return Result.error("部分宿舍ID不存在"); + } + // 3. 查询所有关联这些宿舍的用户并清空宿舍信息 + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.in(CeesWaiTeacher::getGroupId, groupIds) + .set(CeesWaiTeacher::getGroupId, null); + int affectedUsers = ceesWaiTeacherMapper.update(null, updateWrapper); + log.info("清空了{}位用户的宿舍信息", affectedUsers); + // 4. 批量删除宿舍记录 + boolean removeSuccess = ceesGroupService.removeByIds(groupIds); + 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/contoller/CeesLocalTeacherController.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/contoller/CeesLocalTeacherController.java index f9027f58..f54047cc 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/contoller/CeesLocalTeacherController.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/contoller/CeesLocalTeacherController.java @@ -109,8 +109,8 @@ public class CeesLocalTeacherController extends JeecgController add(@RequestBody CeesLocalTeacher ceesLocalTeacher) { - ceesLocalTeacherService.save(ceesLocalTeacher); - return Result.OK("添加成功!"); + + return ceesLocalTeacherService.addData(ceesLocalTeacher); } /** diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/contoller/CeesWaiTeacherController.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/contoller/CeesWaiTeacherController.java index 14ba6c14..7b6e4cc5 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/contoller/CeesWaiTeacherController.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/contoller/CeesWaiTeacherController.java @@ -123,6 +123,16 @@ public class CeesWaiTeacherController extends JeecgController batchMealCard(@RequestBody Map webData){ + log.info(webData.toString()); + return ceesWaiTeacherService.batchMealCard(webData); + + } /** * 添加 @@ -134,11 +144,6 @@ public class CeesWaiTeacherController extends JeecgController add(@RequestBody CeesWaiTeacher ceesWaiTeacher) { - CreateAccountDto createAccountDto = new CreateAccountDto(); - createAccountDto.setGroup(4); - createAccountDto.setMajorId(ceesWaiTeacher.getMajorId()); - createAccountDto.setNum(1); - Result account = ceesUserService.createAccount(createAccountDto); return ceesWaiTeacherService.addData(ceesWaiTeacher); } diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/contoller/StudentController.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/contoller/StudentController.java index f930eaa4..e641e986 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/contoller/StudentController.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/contoller/StudentController.java @@ -92,8 +92,7 @@ public class StudentController extends JeecgController @ApiOperation(value="研究生表-添加", notes="研究生表-添加") @PostMapping(value = "/add") public Result add(@RequestBody Student student) { - studentService.save(student); - return Result.OK("添加成功!"); + return studentService.addData(student); } /** diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/CeesAdminInfo.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/CeesAdminInfo.java index 876f3022..a223a7dd 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/CeesAdminInfo.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/CeesAdminInfo.java @@ -42,23 +42,23 @@ public class CeesAdminInfo implements Serializable { @ApiModelProperty(value = "姓名") private String userName; /**用户id*/ - @Excel(name = "用户id", width = 15) + @Excel(name = "身份码", width = 15) @ApiModelProperty(value = "用户id") private String userId; /**用户专业id*/ - @Excel(name = "用户专业id", width = 15) + @Excel(name = "用户专业Id", width = 15) @ApiModelProperty(value = "用户专业id") private String userMajorId; /**专业id,0表示未选择*/ @Excel(name = "专业id,0表示未选择", width = 15) - @ApiModelProperty(value = "专业id,0表示未选择") + @ApiModelProperty(value = "专业id,0表示未选择 语文|政治|地理|历史") private Integer majorId; /**组别*/ - @Excel(name = "组别", width = 15) +// @Excel(name = "分组组别", width = 15) @ApiModelProperty(value = "组别") private String groupId; /**组级别*/ - @Excel(name = "组级别", width = 15) + @Excel(name = "之前组级别", width = 15) @ApiModelProperty(value = "组级别") private String beforeGroupLevel; /**组级别*/ diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICeesLocalTeacherService.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICeesLocalTeacherService.java index 1f4b4ea9..7cdeef05 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICeesLocalTeacherService.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICeesLocalTeacherService.java @@ -23,4 +23,6 @@ public interface ICeesLocalTeacherService extends IService { String removeByUserId(String userId); boolean removeBatchByUserIds(List localTeacherUserIds); + + Result addData(CeesLocalTeacher ceesLocalTeacher); } diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICeesWaiTeacherService.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICeesWaiTeacherService.java index f87fc269..7fb88004 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICeesWaiTeacherService.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICeesWaiTeacherService.java @@ -45,4 +45,6 @@ public interface ICeesWaiTeacherService extends IService { CeesWaiTeacher getByUserId(String userId); List listByUserIds(List waiTeacherUserIds); + + Result batchMealCard(Map webData); } diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/IStudentService.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/IStudentService.java index 72830ddd..91d0e32e 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/IStudentService.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/IStudentService.java @@ -22,4 +22,6 @@ public interface IStudentService extends IService { String removeByUserId(String userId); boolean removeBatchByUserIds(List studentUserIds); + + Result addData(Student student); } diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CeesLocalTeacherServiceImpl.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CeesLocalTeacherServiceImpl.java index 9936ee07..c4ebd225 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CeesLocalTeacherServiceImpl.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CeesLocalTeacherServiceImpl.java @@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.jeecg.common.api.vo.Result; import org.jeecg.modules.entity.CeesLocalTeacher; import org.jeecg.modules.entity.CeesUser; +import org.jeecg.modules.entity.dto.CreateAccountDto; import org.jeecg.modules.entity.dto.UpdateGroupUserDto; import org.jeecg.modules.mapper.CeesGroupMapper; import org.jeecg.modules.mapper.CeesLocalTeacherMapper; @@ -187,4 +188,29 @@ public class CeesLocalTeacherServiceImpl extends ServiceImpl addData(CeesLocalTeacher ceesLocalTeacher) { + // 生成用户身份码 + CreateAccountDto createAccountDto = new CreateAccountDto(); + createAccountDto.setGroup(3); + createAccountDto.setMajorId(ceesLocalTeacher.getMajorId()); + createAccountDto.setNum(1); + Result result = ceesUserService.createAccount(createAccountDto); + // 补充数据与数据同步 + if (result.isSuccess()) { + List users = (List) result.getResult(); + if (!users.isEmpty()) { + CeesUser user = users.get(0); + ceesLocalTeacher.setUserId(user.getUserId()); + ceesLocalTeacher.setUserMajorId(user.getUserMajorId()); + user.setUserName(ceesLocalTeacher.getUserName()); + ceesUserMapper.updateById(user); + this.save(ceesLocalTeacher); + return Result.ok("添加成功"); + } + } + return Result.error("添加失败"); + } + } 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 6984450b..9fe069a8 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 @@ -127,6 +127,11 @@ public class CeesWaiTeacherServiceImpl extends ServiceImpl dormitoryIdList = pageList.getRecords().stream().map(CeesWaiTeacher::getDormitoryId).collect(Collectors.toSet()); if (dormitoryIdList.size() > 0) { @@ -385,4 +390,98 @@ public class CeesWaiTeacherServiceImpl extends ServiceImpl batchMealCard(Map webData) { + Object idsObj = webData.get("ids"); + List ids = JSONObject.parseArray(idsObj.toString(), String.class); + + Object minObj = webData.get("min"); + int min = 0; + if (minObj instanceof String) { + min = Integer.valueOf((String) minObj); + } else { + throw new IllegalArgumentException("min 参数类型错误"); + } + + Object maxObj = webData.get("max"); + int max = 0; + if (maxObj instanceof String) { + max = Integer.valueOf((String) maxObj); + } else { + throw new IllegalArgumentException("max 参数类型错误"); + } + + // 获取所有已有的 mealCard,构建占用集合 + List allTeachers = ceesWaiTeacherMapper.selectList(null); + Set usedCards = allTeachers.stream() + .map(CeesWaiTeacher::getMealCard) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + + // 获取已存在 mealCard 的用户 ID + Set alreadyHasCardIds = allTeachers.stream() + .filter(t -> t.getMealCard() != null && !t.getMealCard().trim().isEmpty()) + .map(CeesWaiTeacher::getId) + .collect(Collectors.toSet()); + + int totalUpdatedLocal = 0; + List failedIdsLocal = new ArrayList<>(); + JSONObject finalFailed = null; + + int currentCard = min; + + for (String id : ids) { + // 如果用户已有 mealCard,跳过 + if (alreadyHasCardIds.contains(id)) { + continue; + } + + boolean assigned = false; + + // 查找下一个未被占用的卡号 + while (currentCard <= max) { + String formattedCard = String.format("%03d", currentCard); + if (!usedCards.contains(formattedCard)) { + try { + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(CeesWaiTeacher::getId, id) + .set(CeesWaiTeacher::getMealCard, formattedCard); + + int affectedRows = ceesWaiTeacherMapper.update(null, updateWrapper); + if (affectedRows > 0) { + totalUpdatedLocal++; + usedCards.add(formattedCard); + assigned = true; + } + } catch (Exception e) { + // 忽略异常,进入失败处理 + } + currentCard++; + break; + } + currentCard++; + } + + if (!assigned) { + failedIdsLocal.add(id); + finalFailed = new JSONObject(); + finalFailed.put("id", id); + finalFailed.put("attemptedMealCard", String.format("%03d", currentCard - 1)); + break; // 只记录一条失败记录 + } + } + + JSONObject resultJson = new JSONObject(); + resultJson.put("totalUpdated", totalUpdatedLocal); + resultJson.put("failedIds", failedIdsLocal); + resultJson.put("success", failedIdsLocal.isEmpty()); + if (finalFailed != null) { + resultJson.put("lastFailedAssignment", finalFailed); + } + + return Result.ok(resultJson); + } + + } diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/StudentServiceImpl.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/StudentServiceImpl.java index c3947296..ac983b29 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/StudentServiceImpl.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/StudentServiceImpl.java @@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.jeecg.common.api.vo.Result; import org.jeecg.modules.entity.CeesUser; import org.jeecg.modules.entity.Student; +import org.jeecg.modules.entity.dto.CreateAccountDto; import org.jeecg.modules.entity.dto.UpdateGroupUserDto; import org.jeecg.modules.mapper.CeesGroupMapper; import org.jeecg.modules.mapper.CeesUserMapper; @@ -181,4 +182,28 @@ public class StudentServiceImpl extends ServiceImpl impl wrapper.in(Student::getUserId, userIds); return this.remove(wrapper); } + + @Override + public Result addData(Student student) { + // 生成用户身份码 + CreateAccountDto createAccountDto = new CreateAccountDto(); + createAccountDto.setGroup(2); + createAccountDto.setMajorId(student.getMajorId()); + createAccountDto.setNum(1); + Result result = ceesUserService.createAccount(createAccountDto); + // 补充数据与数据同步 + if (result.isSuccess()) { + List users = (List) result.getResult(); + if (!users.isEmpty()) { + CeesUser user = users.get(0); + student.setUserId(user.getUserId()); + student.setUserMajorId(user.getUserMajorId()); + user.setUserName(student.getUserName()); + ceesUserMapper.updateById(user); + this.save(student); + return Result.ok("添加成功"); + } + } + return Result.error("添加失败"); + } }