浏览代码

更新成绩统计问题

Administrator 1 年之前
父节点
当前提交
82ce042ab7

+ 1 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/score/ScoreDataDetailMapper.java

@@ -17,5 +17,5 @@ import java.util.List;
 public interface ScoreDataDetailMapper extends BaseMapperPlus<ScoreDataDetail, ScoreDataDetailVo> {
 
     @InterceptorIgnore(tenantLine = "true")
-    List<ScoreDataDetailVo> selectListByscoreDataNameId(@Param("scoreDataNameIds") List<Long> scoreDataNameIds, @Param("scoreId") Long scoreId);
+    List<ScoreDataDetailVo> selectListByStudentNumberList(@Param("studentNumberList") List<String> studentNumberList, @Param("scoreId") Long scoreId);
 }

+ 2 - 2
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/notice/XiaoyuanNoticeServiceImpl.java

@@ -118,8 +118,8 @@ public class XiaoyuanNoticeServiceImpl implements IXiaoyuanNoticeService {
         LambdaQueryWrapper<XiaoyuanNotice> lqw = Wrappers.lambdaQuery();
         lqw.eq(XiaoyuanNotice::getType, "0")
             .or(i -> i.eq(XiaoyuanNotice::getType, "3").eq(XiaoyuanNotice::getSenderId, bo.getSenderId()))
-            .or(i -> i.eq(XiaoyuanNotice::getType, "1").apply("find_in_set_multiple('" + bo.getSenderDept() + "',class_id_kejian)"))
-            .or(i -> i.eq(XiaoyuanNotice::getType, "2").apply("!find_in_set_multiple('" + bo.getSenderDept() + "',class_id_bukejian)"));
+            .or(i -> i.eq(XiaoyuanNotice::getType, "1").apply("find_in_set_multiple('" + bo.getSenderDept() + "',class_id_ke_jian)"))
+            .or(i -> i.eq(XiaoyuanNotice::getType, "2").apply("!find_in_set_multiple('" + bo.getSenderDept() + "',class_id_bu_ke_jian)"));
         lqw.orderByDesc(XiaoyuanNotice::getCreateTime);
         return lqw;
     }

+ 7 - 7
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/score/ScoreDataServiceImpl.java

@@ -477,9 +477,9 @@ public class ScoreDataServiceImpl implements IScoreDataService {
             //过滤出本班学生id
             scoreDataStudentVos = scoreDataStudentVos.stream().filter(scoreDataStudentVo -> scoreDataStudentVo.getScoreId().equals(scoreId)).sorted(Comparator.comparing(ScoreDataStudentVo::getZongfen).reversed()).collect(Collectors.toList());
             //去查询对应学生的具体学科成绩/计算学科平均分
-            //获取所有学生id
-            List<Long> scoreDataNameIds = scoreDataStudentVos.stream().map(ScoreDataStudentVo::getScoreDataNameId).collect(Collectors.toList());
-            List<ScoreDataDetailVo> scoreDataDetailVos = scoreDataDetailMapper.selectListByscoreDataNameId(scoreDataNameIds, scoreId);
+            //获取所有学生的student_number
+            List<String> studentNumberList = scoreDataStudentVos.stream().map(ScoreDataStudentVo::getStudentNumber).collect(Collectors.toList());
+            List<ScoreDataDetailVo> scoreDataDetailVos = scoreDataDetailMapper.selectListByStudentNumberList(studentNumberList, scoreId);
             //根据学科进行分组
             if (scoreDataDetailVos != null && scoreDataDetailVos.size() > 0) {
                 Map<String, List<ScoreDataDetailVo>> xuekeCollect = scoreDataDetailVos.parallelStream().collect(Collectors.groupingBy(ScoreDataDetailVo::getXueke));
@@ -488,7 +488,7 @@ public class ScoreDataServiceImpl implements IScoreDataService {
                     //获取学科总分
                     double sum = scoreDataDetailVosXueke.stream().mapToDouble(ScoreDataDetailVo::getScore).sum();
                     //计算学科平均分 = 学科总分 /人数
-                    double xueKeAvg = sum / scoreDataNameIds.size();
+                    double xueKeAvg = sum / studentNumberList.size();
                     map.put(xueke, xueKeAvg);
                 }
             }
@@ -497,11 +497,11 @@ public class ScoreDataServiceImpl implements IScoreDataService {
             double zongFenAvg = sum / scoreDataStudentVos.size();
 
             //给学生对象插入数据
-            //对学生成绩根据学生id进行分组
-            Map<Long, List<ScoreDataDetailVo>> scoreDataNameIdCollect = scoreDataDetailVos.parallelStream().collect(Collectors.groupingBy(ScoreDataDetailVo::getScoreDataNameId));
+            //对学生成绩根据学生身份证进行分组
+            Map<String, List<ScoreDataDetailVo>> studentNumberCollect = scoreDataDetailVos.parallelStream().collect(Collectors.groupingBy(ScoreDataDetailVo::getStudentNumber));
             for (ScoreDataStudentVo scoreDataStudentVo : scoreDataStudentVos) {
                 scoreDataStudentVo.setAvg(String.valueOf(zongFenAvg));
-                List<ScoreDataDetailVo> scoreDataDetailVosList = scoreDataNameIdCollect.get(scoreDataStudentVo.getScoreDataNameId());
+                List<ScoreDataDetailVo> scoreDataDetailVosList = studentNumberCollect.get(scoreDataStudentVo.getStudentNumber());
                 if (scoreDataDetailVosList != null && scoreDataDetailVosList.size() > 0) {
                     for (ScoreDataDetailVo scoreDataDetailVo : scoreDataDetailVosList) {
                         scoreDataDetailVo.setAvg(String.valueOf(map.get(scoreDataDetailVo.getXueke())));

+ 7 - 8
ruoyi-modules/ruoyi-system/src/main/resources/mapper/score/ScoreDataDetailMapper.xml

@@ -5,20 +5,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 <mapper namespace="org.dromara.system.mapper.score.ScoreDataDetailMapper">
 
     <resultMap type="org.dromara.system.domain.score.vo.ScoreDataDetailVo" id="ScoreDataDetailResult">
-        <result property="scoreDetailId"    column="score_detail_id"    />
         <result property="scoreId"    column="score_id"    />
         <result property="xueke"    column="xueke"    />
         <result property="score"    column="score"    />
         <result property="manfen"    column="manfen"    />
-        <result property="scoreDataName"    column="score_data_name"    />
-        <result property="scoreDataNameId"    column="score_data_name_id"    />
+        <result property="avg"    column="avg"    />
+        <result property="studentNumber"    column="student_number"    />
     </resultMap>
-    <select id="selectListByscoreDataNameId" resultMap="ScoreDataDetailResult">
+    <select id="selectListByStudentNumberList" resultMap="ScoreDataDetailResult">
 
-        select score_data_name_id,xueke,score,manfen,avg from score_data_detail
-        where score_data_name_id in
-        <foreach item="scoreDataNameId" open="(" close=")" collection="scoreDataNameIds" separator=",">
-            #{scoreDataNameId}
+        select student_number,xueke,score,manfen from score_data_detail
+        where student_number in
+        <foreach item="studentNumber" open="(" close=")" collection="studentNumberList" separator=",">
+            #{studentNumber}
         </foreach>
         and score_id = #{scoreId}
     </select>