소스 검색

更新成绩统计

Administrator 1 년 전
부모
커밋
7c0a2b57fc
18개의 변경된 파일56개의 추가작업 그리고 40개의 파일을 삭제
  1. 1 1
      ruoyi-admin/src/main/resources/application-dev.yml
  2. 2 2
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/score/ScoreDataController.java
  3. 2 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/score/ScoreData.java
  4. 1 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/score/ScoreDataDetail.java
  5. 1 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/score/ScoreDataStudent.java
  6. 5 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/score/bo/ScoreDataBo.java
  7. 1 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/score/bo/ScoreDataDetailBo.java
  8. 1 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/score/bo/ScoreDataStudentBo.java
  9. 1 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/score/vo/ScoreDataDetailVo.java
  10. 1 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/score/vo/ScoreDataStudentVo.java
  11. 3 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/score/vo/ScoreDataVo.java
  12. 2 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/score/ScoreDataStudentMapper.java
  13. 0 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/score/ScoreDataDetailServiceImpl.java
  14. 13 7
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/score/ScoreDataServiceImpl.java
  15. 0 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/score/ScoreDataStudentServiceImpl.java
  16. 2 2
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/score/IScoreDataService.java
  17. 3 3
      ruoyi-modules/ruoyi-system/src/main/resources/mapper/score/ScoreDataMapper.xml
  18. 17 15
      ruoyi-modules/ruoyi-system/src/main/resources/mapper/score/ScoreDataStudentMapper.xml

+ 1 - 1
ruoyi-admin/src/main/resources/application-dev.yml

@@ -43,7 +43,7 @@ spring:
           driverClassName: com.mysql.cj.jdbc.Driver
           # jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
           # rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题)
-          url: jdbc:mysql://192.168.101.10:3306/zhihuixiaoyuan2?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true
+          url: jdbc:mysql://192.168.101.10:3306/zhihuixiaoyuan2?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&allowMultiQueries=true
           username: root
           password: Boman123
         # 从库数据源

+ 2 - 2
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/score/ScoreDataController.java

@@ -184,9 +184,9 @@ public class ScoreDataController extends BaseController {
      * 成绩学科统计
      */
     @PostMapping("/xuekeRank")
-    public TableDataInfo<ScoreDataDetailVo> xuekeRank(@RequestBody ScoreData scoreData)
+    public TableDataInfo<ScoreDataDetailVo> xuekeRank(@RequestBody ScoreDataBo scoreDatabo)
     {
-        List<ScoreDataDetailVo> scoreDataDetailVo = scoreDataService.xuekeRank(scoreData);
+        List<ScoreDataDetailVo> scoreDataDetailVo = scoreDataService.xuekeRank(scoreDatabo);
         return TableDataInfo.build(scoreDataDetailVo);
     }
 

+ 2 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/score/ScoreData.java

@@ -1,5 +1,6 @@
 package org.dromara.system.domain.score;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import org.dromara.common.tenant.core.TenantEntity;
 import com.baomidou.mybatisplus.annotation.*;
 import lombok.Data;
@@ -36,6 +37,7 @@ public class ScoreData extends TenantEntity {
     /**
      * 考试时间
      */
+    @JsonFormat(pattern = "yyyy-MM-dd")
     private Date scoreTime;
 
     /**

+ 1 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/score/ScoreDataDetail.java

@@ -35,7 +35,7 @@ public class ScoreDataDetail extends TenantEntity {
     /**
      * 排序
      */
-    private String scoreSort;
+    private int scoreSort;
 
     /**
      * 姓名

+ 1 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/score/ScoreDataStudent.java

@@ -35,7 +35,7 @@ public class ScoreDataStudent extends TenantEntity {
     /**
      * 排序
      */
-    private String scoreSort;
+    private int scoreSort;
 
     /**
      * 姓名

+ 5 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/score/bo/ScoreDataBo.java

@@ -86,5 +86,10 @@ public class ScoreDataBo extends BaseEntity {
      */
     @TableField(exist = false)
     private List<ScoreDataMfBo> scoreDataMfBoList;
+    /**
+     * 学科
+     */
+    @TableField(exist = false)
+    private String xueke;
 
 }

+ 1 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/score/bo/ScoreDataDetailBo.java

@@ -39,7 +39,7 @@ public class ScoreDataDetailBo extends BaseEntity {
      * 排序
      */
 
-    private String scoreSort;
+    private int scoreSort;
 
     /**
      * 姓名

+ 1 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/score/bo/ScoreDataStudentBo.java

@@ -39,7 +39,7 @@ public class ScoreDataStudentBo extends BaseEntity {
      * 排序
      */
     //@NotBlank(message = "排序不能为空", groups = { AddGroup.class, EditGroup.class })
-    private String scoreSort;
+    private int scoreSort;
 
     /**
      * 姓名

+ 1 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/score/vo/ScoreDataDetailVo.java

@@ -41,7 +41,7 @@ public class ScoreDataDetailVo implements Serializable {
      * 排序
      */
     @ExcelProperty(value = "排序")
-    private String scoreSort;
+    private int scoreSort;
 
     /**
      * 姓名

+ 1 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/score/vo/ScoreDataStudentVo.java

@@ -44,7 +44,7 @@ public class ScoreDataStudentVo implements Serializable {
      * 排序
      */
     @ExcelProperty(value = "排序")
-    private String scoreSort;
+    private int scoreSort;
 
     /**
      * 姓名

+ 3 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/score/vo/ScoreDataVo.java

@@ -4,6 +4,7 @@ import java.util.Date;
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.github.linpeilie.annotations.AutoMapper;
 import lombok.Data;
 import org.dromara.system.domain.score.ScoreData;
@@ -45,6 +46,7 @@ public class ScoreDataVo implements Serializable {
      * 考试时间
      */
     @ExcelProperty(value = "考试时间")
+    @JsonFormat(pattern = "yyyy-MM-dd")
     private Date scoreTime;
 
     /**
@@ -62,7 +64,7 @@ public class ScoreDataVo implements Serializable {
      * 排序
      */
     @TableField(exist = false)
-    private String scoreSort;
+    private int scoreSort;
 
     /**
      * 隐私设置 1:仅自己 2:仅本班 3:全部

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

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
 import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
 import org.dromara.system.domain.score.ScoreData;
 import org.dromara.system.domain.score.ScoreDataStudent;
+import org.dromara.system.domain.score.bo.ScoreDataBo;
 import org.dromara.system.domain.score.bo.ScoreDataStudentBo;
 import org.dromara.system.domain.score.vo.ScoreDataDetailVo;
 import org.dromara.system.domain.score.vo.ScoreDataStudentVo;
@@ -37,7 +38,7 @@ public interface ScoreDataStudentMapper extends BaseMapperPlus<ScoreDataStudent,
     public List<ScoreDataStudentVo> gradeRank(ScoreData scoreData);
 
 
-    public List<ScoreDataDetailVo> xuekeRank(ScoreData scoreData);
+    public List<ScoreDataDetailVo> xuekeRank(ScoreDataBo scoreDatabo);
 
 
 }

+ 0 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/score/ScoreDataDetailServiceImpl.java

@@ -61,7 +61,6 @@ public class ScoreDataDetailServiceImpl implements IScoreDataDetailService {
         Map<String, Object> params = bo.getParams();
         LambdaQueryWrapper<ScoreDataDetail> lqw = Wrappers.lambdaQuery();
         lqw.eq(bo.getScoreId() != null, ScoreDataDetail::getScoreId, bo.getScoreId());
-        lqw.eq(StringUtils.isNotBlank(bo.getScoreSort()), ScoreDataDetail::getScoreSort, bo.getScoreSort());
         lqw.like(StringUtils.isNotBlank(bo.getScoreDataName()), ScoreDataDetail::getScoreDataName, bo.getScoreDataName());
         lqw.eq(bo.getScoreDataNameId() != null, ScoreDataDetail::getScoreDataNameId, bo.getScoreDataNameId());
         lqw.eq(StringUtils.isNotBlank(bo.getXueke()), ScoreDataDetail::getXueke, bo.getXueke());

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

@@ -233,7 +233,7 @@ public class ScoreDataServiceImpl implements IScoreDataService {
                     lastScore = studentBo.getZongfen();
                     index++;
                 }
-                studentBo.setScoreSort(index + "");
+                studentBo.setScoreSort(index);
             }
             scoreDataStudentMapper.insertBatch(MapstructUtils.convert(scoreDataStudentBoList, ScoreDataStudent.class));
 
@@ -420,25 +420,31 @@ public class ScoreDataServiceImpl implements IScoreDataService {
         //截取两位年级
         String grade = scoreClassName.substring(0, 2);
         scoreData.setScoreClassName(grade);
-        return scoreDataStudentMapper.gradeRank(scoreData);
+        //获取年级所有学生排名
+        List<ScoreDataStudentVo> scoreDataStudentVos = scoreDataStudentMapper.gradeRank(scoreData);
+        Long scoreId = scoreData.getScoreId();
+        if (scoreId != null){
+            scoreDataStudentVos =   scoreDataStudentVos.stream().filter(scoreDataStudentVo -> scoreDataStudentVo.getScoreId().equals(scoreId)).sorted(Comparator.comparing(ScoreDataStudentVo::getZongfen)).collect(Collectors.toList());
+        }
+        return scoreDataStudentVos;
     }
 
 
     /**
      * 成绩年级统计
      *
-     * @param scoreData
+     * @param scoreDatabo
      * @return
      */
     @Override
-    public List<ScoreDataDetailVo> xuekeRank(ScoreData scoreData) {
+    public List<ScoreDataDetailVo> xuekeRank(ScoreDataBo scoreDatabo) {
         //可以搜索学生姓名&选择班级进行年级排名
         //接收考试时间和考试类型,所有考试时间相同的
-        String scoreClassName = scoreData.getScoreClassName();
+        String scoreClassName = scoreDatabo.getScoreClassName();
         //截取两位年级
         String grade = scoreClassName.substring(0, 2);
-        scoreData.setScoreClassName(grade);
-        return scoreDataStudentMapper.xuekeRank(scoreData);
+        scoreDatabo.setScoreClassName(grade);
+        return scoreDataStudentMapper.xuekeRank(scoreDatabo);
     }
 
     /**

+ 0 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/score/ScoreDataStudentServiceImpl.java

@@ -62,7 +62,6 @@ public class ScoreDataStudentServiceImpl implements IScoreDataStudentService {
         Map<String, Object> params = bo.getParams();
         LambdaQueryWrapper<ScoreDataStudent> lqw = Wrappers.lambdaQuery();
         lqw.eq(bo.getScoreId() != null, ScoreDataStudent::getScoreId, bo.getScoreId());
-        lqw.eq(StringUtils.isNotBlank(bo.getScoreSort()), ScoreDataStudent::getScoreSort, bo.getScoreSort());
         lqw.like(StringUtils.isNotBlank(bo.getScoreDataName()), ScoreDataStudent::getScoreDataName, bo.getScoreDataName());
         lqw.eq(bo.getScoreDataNameId() != null, ScoreDataStudent::getScoreDataNameId, bo.getScoreDataNameId());
         lqw.eq(bo.getZongfen() != null, ScoreDataStudent::getZongfen, bo.getZongfen());

+ 2 - 2
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/score/IScoreDataService.java

@@ -73,10 +73,10 @@ public interface IScoreDataService {
 
     /**
      * 成绩学科统计
-     * @param scoreData
+     * @param scoreDatabo
      * @return
      */
-    public List<ScoreDataDetailVo> xuekeRank(ScoreData scoreData);
+    public List<ScoreDataDetailVo> xuekeRank(ScoreDataBo scoreDatabo);
 
     /**
      * 班级总分平均分排名统计

+ 3 - 3
ruoyi-modules/ruoyi-system/src/main/resources/mapper/score/ScoreDataMapper.xml

@@ -44,12 +44,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="avg"    column="sdm_avg"    />
     </resultMap>
     <select id="classRank" parameterType="org.dromara.system.domain.score.ScoreData" resultMap="ScoreDataVoResult">
-        SET @INDEX = 0;
         SELECT
-        @INDEX := @INDEX + 1 AS `score_sort`,
+        (@INDEX := @INDEX + 1) AS `score_sort`,
         d.score_class_name
         FROM
-        score_data d
+        score_data d,(select @INDEX:=0) init
         <where>
             <if test="scoreType != null  and scoreType != ''"> and d.score_type = #{scoreType}</if>
             <if test="scoreTime != null "> and d.score_time = #{scoreTime}</if>
@@ -60,6 +59,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
 
     <select id="avgRank" parameterType="org.dromara.system.domain.score.ScoreData" resultMap="ScoreDataVoResult">
+        select
         d.score_id,
         d.avg
         FROM

+ 17 - 15
ruoyi-modules/ruoyi-system/src/main/resources/mapper/score/ScoreDataStudentMapper.xml

@@ -52,7 +52,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         FROM
             score_data_student b
                 LEFT JOIN score_data_detail d ON d.score_data_name_id = b.score_data_name_id
-        where b.score_id = #{scoreId} and  find_in_set(b.score_data_name_id,#{params.stdId})
+        where b.score_id = #{scoreId} and  find_in_set(b.score_data_name_id,#{params.stdId}) order by  b.score_sort
     </select>
 
     <select id="selectScoreByScoreId" parameterType="Long" resultMap="ScoreDataStudentResult">
@@ -67,10 +67,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         FROM
             score_data_student b
                 LEFT JOIN score_data_detail d ON d.score_data_name_id = b.score_data_name_id
-        where b.score_id = #{scoreId}
+        where b.score_id = #{scoreId} order by  b.score_sort
     </select>
 
-    <select id="selectScoreByScoreIds" parameterType="String" resultMap="ScoreDataStudentResult">
+    <select id="selectScoreByScoreIds"  resultMap="ScoreDataStudentResult">
         SELECT
             b.score_id,
             b.zongfen
@@ -83,29 +83,30 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </foreach>
     </select>
 
-    <select id="gradeRank" parameterType="Long" resultMap="ScoreDataStudentResult">
-        SET @index = 0;
-        SELECT @index:=@index+1 AS `score_sort`,s.score_data_name,s.score_data_name_id,s.zongfen
+    <select id="gradeRank" parameterType="org.dromara.system.domain.score.ScoreData" resultMap="ScoreDataStudentResult">
+
+        SELECT (@index:=@index+1) AS `score_sort`,s.score_data_name,s.score_data_name_id,s.zongfen,s.score_id
         FROM score_data_student s where score_id IN (
             select d.score_id
-            FROM score_data d
+            FROM score_data d,(select @INDEX:=0) init
         <where>
             <if test="scoreType != null  and scoreType != ''"> and d.score_type = #{scoreType}</if>
             <if test="scoreTime != null "> and d.score_time = #{scoreTime}</if>
-            <if test="scoreClassId != null "> and d.score_class_id = #{scoreClassId}</if>
             <if test="scoreClassName != null  and scoreClassName != ''"> and d.score_class_name like concat( #{scoreClassName}, '%')</if>
         </where>
+        )
         order by s.zongfen  DESC
     </select>
-    <select id="xuekeRank" parameterType="Long" resultMap="ScoreDataDetailResult">
-        SET @INDEX = 0;
+    <select id="xuekeRank" parameterType="org.dromara.system.domain.score.bo.ScoreDataBo" resultMap="ScoreDataDetailResult">
+
         SELECT
-        @INDEX := @INDEX + 1 AS `score_sort`,
-        dd.score_data_name,
-        dd.score_data_name_id,
-        dd.score
+        (@INDEX := @INDEX + 1) AS `score_sort`,
+        dd.score_data_name as sdd_score_data_name,
+        dd.score_data_name_id as sdd_score_data_name_id,
+        dd.xueke as sdd_xueke,
+        dd.score as sdd_score
         FROM
-        score_data_detail dd
+        score_data_detail dd,(select @INDEX:=0) init
         WHERE
         score_id IN (
         SELECT
@@ -115,6 +116,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <where>
             <if test="scoreType != null  and scoreType != ''"> and d.score_type = #{scoreType}</if>
             <if test="scoreTime != null "> and d.score_time = #{scoreTime}</if>
+            <if test="scoreId != null "> and d.score_id = #{scoreId}</if>
             <if test="scoreClassName != null  and scoreClassName != ''"> and d.score_class_name like concat( #{scoreClassName}, '%')</if>
         </where>
             ) and dd.xueke=#{xueke} order by dd.score  DESC