refactor: 删除学生管理中的学科字段
前端: - 列表页删除学科列 - 编辑弹窗删除学科下拉框 后端: - PgStudent 实体删除 subjectId 字段 - StudentVo 删除 subjectId 和 subjectName 字段 - Service 层删除学科关联查询 需求文档: - 删除学生数据项中的学科字段 - 删除表格列定义中的学科列 数据库需执行:ALTER TABLE pg_student DROP COLUMN subject_id;
This commit is contained in:
parent
b5c2692aab
commit
43ee2dbf87
|
|
@ -44,8 +44,6 @@ public class PgStudent extends BaseEntity {
|
|||
|
||||
private Long schoolClassId;
|
||||
|
||||
private Long subjectId;
|
||||
|
||||
private Long memberId;
|
||||
|
||||
private String status;
|
||||
|
|
|
|||
|
|
@ -50,13 +50,6 @@ public class StudentVo {
|
|||
*/
|
||||
private String className;
|
||||
|
||||
private Long subjectId;
|
||||
|
||||
/**
|
||||
* 学科名称
|
||||
*/
|
||||
private String subjectName;
|
||||
|
||||
private Long memberId;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -22,8 +22,6 @@ import org.dromara.pangu.school.domain.PgSchoolGrade;
|
|||
import org.dromara.pangu.school.mapper.PgSchoolClassMapper;
|
||||
import org.dromara.pangu.school.mapper.PgSchoolGradeMapper;
|
||||
import org.dromara.pangu.school.mapper.PgSchoolMapper;
|
||||
import org.dromara.pangu.base.domain.PgSubject;
|
||||
import org.dromara.pangu.base.mapper.PgSubjectMapper;
|
||||
import org.dromara.pangu.student.domain.PgStudent;
|
||||
import org.dromara.pangu.student.domain.dto.StudentImportDto;
|
||||
import org.dromara.pangu.student.domain.vo.StudentVo;
|
||||
|
|
@ -53,7 +51,6 @@ public class PgStudentServiceImpl implements IPgStudentService {
|
|||
private final PgSchoolClassMapper schoolClassMapper;
|
||||
private final PgGradeMapper gradeMapper;
|
||||
private final PgClassMapper classMapper;
|
||||
private final PgSubjectMapper subjectMapper;
|
||||
private final PgMemberMapper memberMapper;
|
||||
|
||||
@Override
|
||||
|
|
@ -123,14 +120,12 @@ public class PgStudentServiceImpl implements IPgStudentService {
|
|||
Set<Long> schoolIds = new HashSet<>();
|
||||
Set<Long> schoolGradeIds = new HashSet<>();
|
||||
Set<Long> schoolClassIds = new HashSet<>();
|
||||
Set<Long> subjectIds = new HashSet<>();
|
||||
Set<Long> memberIds = new HashSet<>();
|
||||
|
||||
for (PgStudent s : students) {
|
||||
if (s.getSchoolId() != null) schoolIds.add(s.getSchoolId());
|
||||
if (s.getSchoolGradeId() != null) schoolGradeIds.add(s.getSchoolGradeId());
|
||||
if (s.getSchoolClassId() != null) schoolClassIds.add(s.getSchoolClassId());
|
||||
if (s.getSubjectId() != null) subjectIds.add(s.getSubjectId());
|
||||
if (s.getMemberId() != null) memberIds.add(s.getMemberId());
|
||||
}
|
||||
|
||||
|
|
@ -147,10 +142,6 @@ public class PgStudentServiceImpl implements IPgStudentService {
|
|||
schoolClassMapper.selectByIds(schoolClassIds).stream()
|
||||
.collect(Collectors.toMap(PgSchoolClass::getId, Function.identity()));
|
||||
|
||||
Map<Long, PgSubject> subjectMap = subjectIds.isEmpty() ? Collections.emptyMap() :
|
||||
subjectMapper.selectByIds(subjectIds).stream()
|
||||
.collect(Collectors.toMap(PgSubject::getSubjectId, Function.identity()));
|
||||
|
||||
Map<Long, PgMember> memberMap = memberIds.isEmpty() ? Collections.emptyMap() :
|
||||
memberMapper.selectByIds(memberIds).stream()
|
||||
.collect(Collectors.toMap(PgMember::getMemberId, Function.identity()));
|
||||
|
|
@ -198,12 +189,6 @@ public class PgStudentServiceImpl implements IPgStudentService {
|
|||
vo.setClassName(classNameMap.get(schoolClass.getClassId()));
|
||||
}
|
||||
|
||||
// 填充学科名称
|
||||
PgSubject subject = subjectMap.get(s.getSubjectId());
|
||||
if (subject != null) {
|
||||
vo.setSubjectName(subject.getSubjectName());
|
||||
}
|
||||
|
||||
// 填充会员信息
|
||||
PgMember member = memberMap.get(s.getMemberId());
|
||||
if (member != null) {
|
||||
|
|
|
|||
|
|
@ -322,7 +322,7 @@
|
|||
|
||||
| 功能编号 | 功能名称 | 功能描述 | 优先级 |
|
||||
| ------- | ------ | ------------------- |:---:|
|
||||
| STU-001 | 学生列表查询 | 按姓名、学号、性别、手机号、学科等筛选 | P0 |
|
||||
| STU-001 | 学生列表查询 | 按姓名、学号、性别、手机号等筛选 | P0 |
|
||||
| STU-002 | 学校树筛选 | 通过左侧学校树快速定位学生,点击节点时带上完整层级条件(学校+年级+班级) | P0 |
|
||||
| STU-003 | 新增学生 | 手动创建学生信息 | P0 |
|
||||
| STU-004 | 编辑学生 | 修改学生基本信息 | P0 |
|
||||
|
|
@ -372,7 +372,6 @@
|
|||
| 所属学校 | 下拉选择 | ✓ | 依赖区域 |
|
||||
| 所属年级 | 下拉选择 | ✓ | 依赖学校 |
|
||||
| 所属班级 | 下拉选择 | ✓ | 依赖年级 |
|
||||
| 学科 | 下拉选择 | - | 学科信息 |
|
||||
| 归属用户 | 关联 | ✓ | 关联会员ID |
|
||||
| 创建时间 | 日期时间 | - | 系统自动记录 |
|
||||
|
||||
|
|
@ -844,7 +843,6 @@
|
|||
| 学校 | 学校名称 |
|
||||
| 年级 | 年级名称 |
|
||||
| 班级 | 班级名称 |
|
||||
| 学科 | 学科名称 |
|
||||
| 用户身份 | 家长/教师 |
|
||||
| 用户昵称 | 归属会员昵称 |
|
||||
| 用户手机号 | 归属会员手机号 |
|
||||
|
|
|
|||
|
|
@ -53,11 +53,6 @@
|
|||
@change="handleSchoolChange"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="学科" prop="subjectId">
|
||||
<el-select v-model="form.subjectId" placeholder="请选择学科(选填)" clearable style="width: 100%">
|
||||
<el-option v-for="item in subjectList" :key="item.subjectId" :label="item.subjectName" :value="item.subjectId" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="归属用户" prop="memberId">
|
||||
<div style="display: flex; gap: 8px; width: 100%">
|
||||
<el-input
|
||||
|
|
@ -102,8 +97,6 @@ const memberSelectRef = ref()
|
|||
|
||||
// 学校树数据
|
||||
const schoolTreeData = ref([])
|
||||
// 学科列表
|
||||
const subjectList = ref([])
|
||||
|
||||
const initialForm = {
|
||||
studentId: null,
|
||||
|
|
@ -115,7 +108,6 @@ const initialForm = {
|
|||
schoolId: null,
|
||||
schoolGradeId: null,
|
||||
schoolClassId: null,
|
||||
subjectId: null,
|
||||
memberId: null,
|
||||
memberDisplay: ''
|
||||
}
|
||||
|
|
@ -143,18 +135,6 @@ const getSchoolTree = async () => {
|
|||
}
|
||||
}
|
||||
|
||||
// 获取学科列表
|
||||
const getSubjectList = async () => {
|
||||
try {
|
||||
const res = await request.get('/business/subject/list', { params: { status: '0' } })
|
||||
if (res.code === 200) {
|
||||
subjectList.value = res.rows || []
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('获取学科列表失败:', e)
|
||||
}
|
||||
}
|
||||
|
||||
// 格式化出生日期
|
||||
const formatBirthday = (date) => {
|
||||
if (!date) return ''
|
||||
|
|
@ -190,7 +170,7 @@ const open = async (row = null) => {
|
|||
formRef.value?.clearValidate()
|
||||
|
||||
// 获取基础数据
|
||||
await Promise.all([getSchoolTree(), getSubjectList()])
|
||||
await getSchoolTree()
|
||||
|
||||
// 编辑模式:加载学生详情
|
||||
if (row) {
|
||||
|
|
@ -203,7 +183,6 @@ const open = async (row = null) => {
|
|||
form.studentNo = data.studentNo
|
||||
form.gender = data.gender || '0'
|
||||
form.birthday = data.birthday ? formatBirthday(data.birthday) : ''
|
||||
form.subjectId = data.subjectId
|
||||
form.memberId = data.memberId
|
||||
form.memberDisplay = data.memberNickname ? `${data.memberNickname}(${data.memberPhone || ''})` : ''
|
||||
|
||||
|
|
@ -265,7 +244,6 @@ const handleSubmit = async () => {
|
|||
schoolId: form.schoolId,
|
||||
schoolGradeId: form.schoolGradeId,
|
||||
schoolClassId: form.schoolClassId,
|
||||
subjectId: form.subjectId,
|
||||
memberId: form.memberId
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -73,7 +73,6 @@
|
|||
<el-table-column prop="schoolName" label="学校" min-width="150" show-overflow-tooltip />
|
||||
<el-table-column prop="gradeName" label="年级" width="80" />
|
||||
<el-table-column prop="className" label="班级" width="80" />
|
||||
<el-table-column prop="subjectName" label="学科" width="80" />
|
||||
<el-table-column prop="memberNickname" label="归属用户" width="120" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
<span v-if="row.memberNickname">{{ row.memberNickname }}</span>
|
||||
|
|
|
|||
Loading…
Reference in New Issue