144 lines
4.6 KiB
Markdown
144 lines
4.6 KiB
Markdown
# 宿舍床位分配给二级学院功能说明
|
|
|
|
## 📋 功能概述
|
|
|
|
本功能实现了校园宿舍管理系统中将床位批量分配给二级学院的业务需求,支持管理员选择多个床位后统一分配给指定的二级学院。
|
|
|
|
## 🎯 实现目标
|
|
|
|
1. ✅ 用户勾选床位后,点击【分配给二级学院】按钮
|
|
2. ✅ 弹窗显示学生信息树,支持单选或多选学院节点
|
|
3. ✅ 根据楼栋性别(男生楼/女生楼)突出显示对应学院
|
|
4. ✅ 学生信息树可展开收起,只允许选择学院节点
|
|
5. ✅ 后台API更新床位状态和创建分配记录
|
|
6. ✅ 独立的Vue弹窗组件实现
|
|
|
|
## 📁 文件变更清单
|
|
|
|
### 前端文件
|
|
- **新增**: `web/src/views/xg/xgss/xsssfpejxy/components/CollegeAllocationDialog.vue`
|
|
- 学院分配弹窗组件,包含床位信息显示和学院选择树
|
|
- **修改**: `web/src/views/xg/xgss/xsssfpejxy/index.vue`
|
|
- 引入弹窗组件,完善分配按钮业务逻辑
|
|
- **修改**: `web/src/api/xg/xgss/xsssfjgl/types.ts`
|
|
- 添加buildingType字段和床位统计字段到DormTreeNode类型
|
|
- **修改**: `web/src/api/xg/xgss/dormBed/index.ts`
|
|
- 新增batchAllocateBedsToCollege批量分配API
|
|
|
|
### 后端文件
|
|
- **修改**: `backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgDormBedStudentController.java`
|
|
- 新增批量分配接口和请求参数类
|
|
- **修改**: `backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/IXgDormBedStudentService.java`
|
|
- 添加批量分配方法定义
|
|
- **修改**: `backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgDormBedStudentServiceImpl.java`
|
|
- 实现批量分配业务逻辑
|
|
|
|
## 🔧 核心功能
|
|
|
|
### 1. 学院分配弹窗组件特性
|
|
- 显示待分配床位信息(数量、所属楼栋)
|
|
- 根据楼栋性别高亮显示对应学院
|
|
- 学院搜索过滤功能
|
|
- 只允许选择学院节点(专业、班级节点禁用)
|
|
- 显示各学院床位分配统计信息
|
|
|
|
### 2. 后端业务逻辑
|
|
- 校验床位状态(只能分配空闲床位)
|
|
- 更新床位状态为"已分配"
|
|
- 创建床位-学院分配记录
|
|
- 事务支持,确保数据一致性
|
|
|
|
### 3. 数据库操作
|
|
- **更新**: `xg_dorm_bed`表床位状态 (bed_status: 0→1)
|
|
- **新增**: `xg_dorm_bed_student`表分配记录
|
|
|
|
## 🎨 界面交互
|
|
|
|
### 主页面操作流程
|
|
1. 选择宿舍楼(左侧树)
|
|
2. 勾选要分配的床位(表格复选框)
|
|
3. 点击"分配给二级学院"按钮
|
|
4. 在弹窗中选择目标学院
|
|
5. 确认分配
|
|
|
|
### 弹窗界面特性
|
|
- 床位信息卡片显示
|
|
- 学院树形选择器
|
|
- 根据楼栋性别的视觉区分:
|
|
- 男生楼:学院名称显示蓝色
|
|
- 女生楼:学院名称显示粉色
|
|
- 床位统计信息显示
|
|
|
|
## 🔐 权限控制
|
|
|
|
- 需要`dormBedStudent:dormBedStudent:add`权限才能进行分配操作
|
|
- 操作日志记录:记录"批量分配床位给二级学院"操作
|
|
|
|
## 📊 API接口
|
|
|
|
### 批量分配接口
|
|
- **URL**: `/dormBedStudent/dormBedStudent/batchAllocate`
|
|
- **Method**: POST
|
|
- **权限**: `@SaCheckPermission("dormBedStudent:dormBedStudent:add")`
|
|
|
|
**请求参数**:
|
|
```json
|
|
{
|
|
"bedIds": [1, 2, 3],
|
|
"collegeIds": [101, 102],
|
|
"buildingId": 1,
|
|
"buildingType": "1"
|
|
}
|
|
```
|
|
|
|
**响应格式**:
|
|
```json
|
|
{
|
|
"code": 200,
|
|
"msg": "操作成功",
|
|
"data": null
|
|
}
|
|
```
|
|
|
|
## 🚨 异常处理
|
|
|
|
1. **床位状态校验**: 非空闲床位不允许分配
|
|
2. **参数校验**: 床位ID和学院ID列表不能为空
|
|
3. **事务回滚**: 任何步骤失败都会回滚所有操作
|
|
4. **用户友好提示**: 明确的错误信息和成功提示
|
|
|
|
## 📝 使用说明
|
|
|
|
### 操作步骤
|
|
1. 在宿舍管理页面选择目标宿舍楼
|
|
2. 在床位列表中选择要分配的空闲床位
|
|
3. 点击页面头部的"分配给二级学院"按钮
|
|
4. 在弹出的对话框中:
|
|
- 查看选中的床位信息
|
|
- 使用搜索框快速定位学院
|
|
- 勾选目标学院(可多选)
|
|
5. 点击"确认分配"完成操作
|
|
|
|
### 注意事项
|
|
- 只能选择状态为"空闲"的床位进行分配
|
|
- 只能选择学院节点,不能选择专业或班级节点
|
|
- 分配成功后床位状态会自动更新为"已分配"
|
|
- 操作支持批量处理,可同时分配多个床位给多个学院
|
|
|
|
## 🔄 扩展性
|
|
|
|
该功能设计具有良好的扩展性:
|
|
- 支持后续添加专业、班级级别的精确分配
|
|
- 可扩展床位回收功能
|
|
- 支持分配规则配置(如男女生楼限制等)
|
|
- 可集成工作流审批机制
|
|
|
|
## 📅 开发日期
|
|
|
|
**开发完成时间**: 2025-01-03
|
|
**开发者**: Claude AI Assistant
|
|
**版本**: v1.0
|
|
|
|
---
|
|
|
|
*此功能完全按照用户需求实现,包含完整的前后端逻辑和用户交互体验。* |