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 3e34d3a6..b27ea0a6 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 @@ -28,6 +28,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Arrays; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** @@ -175,7 +176,16 @@ public class CeesDormitoryInfoController extends JeecgController setDormAndSubjectBatch(@RequestBody Map webData){ + log.info(webData.toString()); + return ceesDormitoryInfoService.setDormAndSubjectBatch(webData); + } /** * 通过id查询 * 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 7b6e4cc5..df758469 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 @@ -133,6 +133,16 @@ public class CeesWaiTeacherController extends JeecgController clearMealCardData(@RequestBody Map webData){ + log.info(webData.toString()); + return ceesWaiTeacherService.clearMealCardData(webData); + + } /** * 添加 diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICeesDormitoryInfoService.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICeesDormitoryInfoService.java index ed12605d..0dee4dae 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICeesDormitoryInfoService.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICeesDormitoryInfoService.java @@ -8,6 +8,7 @@ import org.jeecg.common.api.vo.Result; import org.jeecg.modules.entity.CeesDormitoryInfo; import javax.servlet.http.HttpServletRequest; +import java.util.Map; /** * @Description: 宿舍信息表 @@ -20,4 +21,6 @@ public interface ICeesDormitoryInfoService extends IService { Result selectBySex(String sex, Integer majorId); IPage queryPageList(CeesDormitoryInfo ceesDormitoryInfo, Integer pageNo, Integer pageSize, HttpServletRequest req); + + Result setDormAndSubjectBatch(Map webData); } 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 7fb88004..ceea2a57 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 @@ -47,4 +47,6 @@ public interface ICeesWaiTeacherService extends IService { List listByUserIds(List waiTeacherUserIds); Result batchMealCard(Map webData); + + Result clearMealCardData(Map webData); } diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CeesDormitoryInfoServiceImpl.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CeesDormitoryInfoServiceImpl.java index e3607691..9b5decea 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CeesDormitoryInfoServiceImpl.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CeesDormitoryInfoServiceImpl.java @@ -5,6 +5,7 @@ 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.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -27,10 +28,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; -import java.util.Collections; -import java.util.List; -import java.util.Objects; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; /** @@ -97,6 +95,42 @@ public class CeesDormitoryInfoServiceImpl extends ServiceImpl setDormAndSubjectBatch(Map webData) { + try { + // 1. 解析用户ID列表 + Object idsObj = webData.get("ids"); + if (idsObj == null) { + return Result.error("缺少用户ID列表"); + } + List userIds = JSONObject.parseArray(idsObj.toString(), String.class); + if (userIds.isEmpty()) { + return Result.error("用户ID列表为空"); + } + // 2. 解析学科ID + Object majorIdObj = webData.get("majorId"); + if (majorIdObj == null) { + return Result.error("缺少学科ID"); + } + Integer majorId; + try { + majorId = Integer.valueOf(majorIdObj.toString()); + } catch (Exception e) { + return Result.error("学科ID格式错误"); + } + // 3. 批量更新 + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("id", userIds); + CeesDormitoryInfo updateEntity = new CeesDormitoryInfo(); + updateEntity.setMajorId(majorId); + int affectedRows = ceesDormitoryInfoMapper.update(updateEntity, updateWrapper); + return Result.ok("成功设置 " + affectedRows + " 位宿舍学科"); + } catch (Exception e) { + log.error("批量设置宿舍学科失败", e); + return Result.error("操作失败:" + e.getMessage()); + } + } + /** * 根据宿舍ID查询住宿人员名称 * @param dormitoryId 宿舍ID 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 d98d3762..be648aea 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 @@ -5,7 +5,9 @@ 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.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -79,20 +81,25 @@ 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); + // 处理新宿舍分配(dormitoryId为"未分配"时设置为null) + String actualDormitoryId = "不分配宿舍".equals(dormitoryId) ? null : dormitoryId; + + if (actualDormitoryId != null) { + ceesDormitoryInfo = ceesDormitoryInfoMapper.selectById(actualDormitoryId); + if (ceesDormitoryInfo.getDormitoryNum() > 0) { + ceesDormitoryInfo.setDormitoryNum(ceesDormitoryInfo.getDormitoryNum() - 1); + ceesDormitoryInfoMapper.updateById(ceesDormitoryInfo); + } else { + return Result.error("宿舍人数已满"); } - } else { - return Result.error("宿舍人数已满"); + } + + // 处理旧宿舍释放(oldDormitoryId为"未分配"时跳过) + if (oldDormitoryId != null && !"未分配".equals(oldDormitoryId)) { + LambdaUpdateWrapper decreaseWrapper = new LambdaUpdateWrapper<>(); + decreaseWrapper.eq(CeesDormitoryInfo::getId, oldDormitoryId) + .setSql("dormitory_num = dormitory_num + 1"); + ceesDormitoryInfoMapper.update(null, decreaseWrapper); } } // 当宿舍人数为0,修改宿舍状态 @@ -437,13 +444,12 @@ public class CeesWaiTeacherServiceImpl extends ServiceImpl clearWrapper = new LambdaUpdateWrapper<>(); - clearWrapper.eq(CeesWaiTeacher::getId, previousHolderId) + clearWrapper.eq(CeesWaiTeacher::getMealCard, formattedCard) .set(CeesWaiTeacher::getMealCard, null); ceesWaiTeacherMapper.update(null, clearWrapper); usedCards.remove(formattedCard); @@ -456,7 +462,6 @@ public class CeesWaiTeacherServiceImpl extends ServiceImpl updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(CeesWaiTeacher::getId, id) .set(CeesWaiTeacher::getMealCard, formattedCard); - int affectedRows = ceesWaiTeacherMapper.update(null, updateWrapper); if (affectedRows > 0) { totalUpdatedLocal++; @@ -465,11 +470,11 @@ public class CeesWaiTeacherServiceImpl extends ServiceImpl result = Result.ok(resultJson); + result.setMessage("成功分配 " + totalUpdatedLocal + " 个饭卡数据"); + return result; + } + + @Override + public Result clearMealCardData(Map webData) { + try { + // 1. 从请求参数中解析用户ID列表 + Object idsObj = webData.get("ids"); + if (idsObj == null) { + return Result.error("参数缺失:ids"); + } + + List Ids = JSONObject.parseArray(idsObj.toString(), String.class); + + if (CollectionUtils.isEmpty(Ids)) { + return Result.error("用户ID列表为空"); + } + + // 2. 批量清空 meal_card 字段 + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("id", Ids).set("meal_card", null); + int affectedRows = ceesWaiTeacherMapper.update(null, updateWrapper); + + // 3. 返回操作结果 + return Result.ok("成功清空 " + affectedRows + " 位用户的饭卡数据"); + + } catch (Exception e) { + log.error("清空饭卡数据失败", e); + return Result.error("操作失败:" + e.getMessage()); + } } + }