diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgConductScoreController.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgConductScoreController.java index db245f5c..b55fc0d3 100644 --- a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgConductScoreController.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgConductScoreController.java @@ -4,6 +4,7 @@ import java.util.List; import java.util.Map; import java.util.HashMap; import java.math.BigDecimal; +import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.*; import cn.dev33.satoken.annotation.SaCheckPermission; @@ -51,8 +52,38 @@ public class XgConductScoreController extends BaseController { public R classStudents( @NotNull(message = "学年不能为空") Integer academicYear, @NotNull(message = "学期不能为空") Integer semester, - @NotNull(message = "月份不能为空") Integer month) { - return R.ok(xgConductScoreService.getClassStudentsByTeacher(academicYear, semester, month)); + @NotNull(message = "月份不能为空") Integer month, + @RequestParam(required = false) List studentStatus, + HttpServletRequest request) { + // 兼容前端参数序列化 studentStatus[0]=1&studentStatus[1]=3 的情况 + if ((studentStatus == null || studentStatus.isEmpty())) { + // 1) 尝试直接读取 studentStatus 数组参数 + String[] vals = request.getParameterValues("studentStatus"); + if (vals != null && vals.length > 0) { + studentStatus = java.util.Arrays.asList(vals); + } else { + // 2) 尝试按下标的方式收集 studentStatus[0], studentStatus[1], ... + java.util.List collected = new java.util.ArrayList<>(); + java.util.Map paramMap = request.getParameterMap(); + for (String key : paramMap.keySet()) { + if (key != null && key.startsWith("studentStatus")) { + String[] ps = paramMap.get(key); + if (ps != null && ps.length > 0) { + for (String p : ps) { + if (p != null && !p.isEmpty()) { + collected.add(p); + } + } + } + } + } + if (!collected.isEmpty()) { + studentStatus = collected; + } + } + } + + return R.ok(xgConductScoreService.getClassStudentsByTeacher(academicYear, semester, month, studentStatus)); } /** diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/vo/XgConductScoreClassStudentVo.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/vo/XgConductScoreClassStudentVo.java index d4104dfe..5f8fcd99 100644 --- a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/vo/XgConductScoreClassStudentVo.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/vo/XgConductScoreClassStudentVo.java @@ -35,6 +35,11 @@ public class XgConductScoreClassStudentVo { */ private String gender; + /** + * 学生状态 + */ + private String studentStatus; + /** * 上月分数 */ diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/IXgConductScoreMapper.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/IXgConductScoreMapper.java index 8c214d03..8519afe0 100644 --- a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/IXgConductScoreMapper.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/IXgConductScoreMapper.java @@ -62,10 +62,12 @@ public interface IXgConductScoreMapper extends BaseMapperPlus> selectClassStudentsByTeacher(Long teacherId, Integer academicYear, Integer semester, - Integer month); + List> selectClassStudentsByTeacher(@Param("teacherId") Long teacherId, + @Param("academicYear") Integer academicYear, @Param("semester") Integer semester, + @Param("month") Integer month, @Param("studentStatus") List studentStatus); /** * 查询学期平均分统计列表 diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/IXgConductScoreService.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/IXgConductScoreService.java index 1eb907de..78f989e2 100644 --- a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/IXgConductScoreService.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/IXgConductScoreService.java @@ -107,9 +107,10 @@ public interface IXgConductScoreService { * @param academicYear 学年 * @param semester 学期 * @param month 月份 + * @param studentStatus 学生状态列表 * @return 班级学生汇总信息 */ - XgConductScoreClassSummaryVo getClassStudentsByTeacher(Integer academicYear, Integer semester, Integer month); + XgConductScoreClassSummaryVo getClassStudentsByTeacher(Integer academicYear, Integer semester, Integer month, List studentStatus); /** * 查询学期平均分统计 diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgConductScoreServiceImpl.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgConductScoreServiceImpl.java index e05e074d..7277db56 100644 --- a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgConductScoreServiceImpl.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgConductScoreServiceImpl.java @@ -395,10 +395,10 @@ public class XgConductScoreServiceImpl implements IXgConductScoreService { */ @Override public XgConductScoreClassSummaryVo getClassStudentsByTeacher(Integer academicYear, Integer semester, - Integer month) { + Integer month, List studentStatus) { Long teacherId = LoginHelper.getUserId(); List> rawData = baseMapper.selectClassStudentsByTeacher(teacherId, academicYear, semester, - month); + month, studentStatus); // 手动组装数据结构 XgConductScoreClassSummaryVo result = new XgConductScoreClassSummaryVo(); @@ -430,6 +430,7 @@ public class XgConductScoreServiceImpl implements IXgConductScoreService { studentVo.setStudentNo((String) row.get("student_no")); studentVo.setStudentName((String) row.get("student_name")); studentVo.setGender((String) row.get("gender")); + studentVo.setStudentStatus((String) row.get("student_status")); // 设置上月分数 if (row.get("last_score") != null) { diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/conductScore/XgConductScoreMapper.xml b/backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/conductScore/XgConductScoreMapper.xml index bcd9e786..3e5c112d 100644 --- a/backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/conductScore/XgConductScoreMapper.xml +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/conductScore/XgConductScoreMapper.xml @@ -320,6 +320,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" s.student_no, s.name AS student_name, s.gender, + s.student_status, cs_last.score AS last_score, cs_last.month AS last_month, cs_current.id AS score_id, @@ -366,6 +367,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND CONCAT(LPAD(cs_inner.academic_year, 4, '0'), LPAD(cs_inner.semester, 1, '0'), LPAD(cs_inner.month, 2, '0')) = latest.max_date AND cs_inner.deleted = 0 ) cs_last ON s.id = cs_last.student_id + + + AND s.student_status IN + + #{status} + + + ORDER BY tc.class_name, s.student_no diff --git a/web/src/views/xg/xsjcxx/ConductScoreInput/index.vue b/web/src/views/xg/xsjcxx/ConductScoreInput/index.vue index 74f38103..ee42ddfb 100644 --- a/web/src/views/xg/xsjcxx/ConductScoreInput/index.vue +++ b/web/src/views/xg/xsjcxx/ConductScoreInput/index.vue @@ -31,39 +31,57 @@ - + - + - + - + - - - + + + + + + + + @@ -161,6 +179,14 @@ + + +