xiaofei hai 1 ano
pai
achega
1af06cfa1c

+ 2 - 1
distributed-print/src/main/java/com/qmth/distributed/print/api/mark/MarkStudentController.java

@@ -45,6 +45,7 @@ public class MarkStudentController {
     public Result listStudentScore(@ApiParam(value = "考试ID", required = true) @RequestParam Long examId,
                                    @ApiParam(value = "试卷编号", required = true) @RequestParam String paperNumber,
                                    @ApiParam(value = "学院") @RequestParam(required = false) String college,
+                                   @ApiParam(value = "专业") @RequestParam(required = false) String majorName,
                                    @ApiParam(value = "班级") @RequestParam(required = false) String className,
                                    @ApiParam(value = "任课老师") @RequestParam(required = false) String teacher,
                                    @ApiParam(value = "0:无 1:客观题0分 2:客观题0分,主观题有分 3:主观题0分,客观题有分") @RequestParam(required = false) Integer filter,
@@ -60,7 +61,7 @@ public class MarkStudentController {
                                    @ApiParam(value = "排序字段") @RequestParam(required = false) String orderField,
                                    @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
                                    @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
-        IPage<StudentScoreDetailDto> scoreListDtoIPage = markStudentService.pageStudentScore(examId, paperNumber, college, className, teacher, filter, status, breach, startScore, endScore, subScore, objectiveScoreRateLt, studentName, studentCode, orderType, orderField, pageNumber, pageSize);
+        IPage<StudentScoreDetailDto> scoreListDtoIPage = markStudentService.pageStudentScore(examId, paperNumber, college, majorName, className, teacher, filter, status, breach, startScore, endScore, subScore, objectiveScoreRateLt, studentName, studentCode, orderType, orderField, pageNumber, pageSize);
         return ResultUtil.ok(scoreListDtoIPage);
     }
 

+ 117 - 51
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/bean/archivescore/ArchiveStudentQuery.java

@@ -3,66 +3,132 @@ package com.qmth.teachcloud.mark.bean.archivescore;
 import javax.validation.constraints.NotNull;
 
 import com.qmth.teachcloud.mark.utils.PagerQuery;
+import io.swagger.annotations.ApiParam;
+import org.springframework.web.bind.annotation.RequestParam;
+import oshi.jna.platform.mac.SystemB;
 
 public class ArchiveStudentQuery extends PagerQuery {
-	@NotNull(message = "考试Id不能为空")
-	private Long examId;
-	@NotNull(message = "paperNumber不能为空")
-	private String paperNumber;
-	private String collegeName;
-	private String majorName;
-	private String className;
-	private String studentName;
-	private String studentCode;
-	public Long getExamId() {
-		return examId;
-	}
-	public void setExamId(Long examId) {
-		this.examId = examId;
-	}
-	public String getPaperNumber() {
-		return paperNumber;
-	}
-	public void setPaperNumber(String paperNumber) {
-		this.paperNumber = paperNumber;
-	}
+    @NotNull(message = "考试Id不能为空")
+    private Long examId;
+    @NotNull(message = "paperNumber不能为空")
+    private String paperNumber;
+    private String college;
+    private String majorName;
+    private String className;
+    private String studentName;
+    private String studentCode;
+    // 学号区间开始
+    private String startStudentCode;
+    // 学号区间结束
+    private String endStudentCode;
+    // 成绩区间开始
+    private Double startScore;
+    // 成绩区间结束
+    private Double endScore;
+    private String orderType;
+    private String orderField;
 
-	public String getCollegeName() {
-		return collegeName;
-	}
+    public Long getExamId() {
+        return examId;
+    }
 
-	public void setCollegeName(String collegeName) {
-		this.collegeName = collegeName;
-	}
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
 
-	public String getMajorName() {
-		return majorName;
-	}
+    public String getPaperNumber() {
+        return paperNumber;
+    }
 
-	public void setMajorName(String majorName) {
-		this.majorName = majorName;
-	}
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
 
-	public String getClassName() {
-		return className;
-	}
-	public void setClassName(String className) {
-		this.className = className;
-	}
-	public String getStudentName() {
-		return studentName;
-	}
-	public void setStudentName(String studentName) {
-		this.studentName = studentName;
-	}
-	public String getStudentCode() {
-		return studentCode;
-	}
-	public void setStudentCode(String studentCode) {
-		this.studentCode = studentCode;
-	}
+    public String getCollege() {
+        return college;
+    }
+
+    public void setCollege(String college) {
+        this.college = college;
+    }
+
+    public String getMajorName() {
+        return majorName;
+    }
+
+    public void setMajorName(String majorName) {
+        this.majorName = majorName;
+    }
+
+    public String getClassName() {
+        return className;
+    }
 
+    public void setClassName(String className) {
+        this.className = className;
+    }
 
+    public String getStudentName() {
+        return studentName;
+    }
 
+    public void setStudentName(String studentName) {
+        this.studentName = studentName;
+    }
 
+    public String getStudentCode() {
+        return studentCode;
+    }
+
+    public void setStudentCode(String studentCode) {
+        this.studentCode = studentCode;
+    }
+
+    public String getStartStudentCode() {
+        return startStudentCode;
+    }
+
+    public void setStartStudentCode(String startStudentCode) {
+        this.startStudentCode = startStudentCode;
+    }
+
+    public String getEndStudentCode() {
+        return endStudentCode;
+    }
+
+    public void setEndStudentCode(String endStudentCode) {
+        this.endStudentCode = endStudentCode;
+    }
+
+    public Double getStartScore() {
+        return startScore;
+    }
+
+    public void setStartScore(Double startScore) {
+        this.startScore = startScore;
+    }
+
+    public Double getEndScore() {
+        return endScore;
+    }
+
+    public void setEndScore(Double endScore) {
+        this.endScore = endScore;
+    }
+
+	public String getOrderType() {
+		return orderType;
+	}
+
+	public void setOrderType(String orderType) {
+		this.orderType = orderType;
+	}
+
+	public String getOrderField() {
+		return orderField;
+	}
+
+	public void setOrderField(String orderField) {
+		this.orderField = orderField;
+	}
 }

+ 9 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/dto/mark/score/StudentScoreDetailDto.java

@@ -20,6 +20,7 @@ public class StudentScoreDetailDto {
     private String studentCode;
     private String secretNumber;
     private String college;
+    private String majorName;
     private String className;
     private String objectiveScore;
     private String subjectiveScore;
@@ -117,6 +118,14 @@ public class StudentScoreDetailDto {
         this.college = college;
     }
 
+    public String getMajorName() {
+        return majorName;
+    }
+
+    public void setMajorName(String majorName) {
+        this.majorName = majorName;
+    }
+
     public String getClassName() {
         return className;
     }

+ 1 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/MarkStudentMapper.java

@@ -28,7 +28,7 @@ import java.util.List;
 public interface MarkStudentMapper extends BaseMapper<MarkStudent> {
 
 	IPage<StudentScoreDetailDto> pageStudentScore(@Param("page") Page<StudentScoreDetailDto> page,
-												  @Param("examId") Long examId, @Param("paperNumber") String paperNumber, @Param("college") String college,
+												  @Param("examId") Long examId, @Param("paperNumber") String paperNumber, @Param("college") String college, @Param("majorName") String majorName,
 												  @Param("className") String className, @Param("teacher") String teacher, @Param("filter") Integer filter,
 												  @Param("status") String status, @Param("breach") Boolean breach, @Param("startScore") Double startScore,
 												  @Param("endScore") Double endScore, @Param("subScore") Double subScore,

+ 1 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkStudentService.java

@@ -53,7 +53,7 @@ public interface MarkStudentService extends IService<MarkStudent> {
 
     ScanExamInfoVo getScanExamInfo(BasicExam exam, String courseCode, String coursePaperId);
 
-    IPage<StudentScoreDetailDto> pageStudentScore(Long examId, String paperNumber, String college, String className,
+    IPage<StudentScoreDetailDto> pageStudentScore(Long examId, String paperNumber, String college, String majorName, String className,
             String teacher, Integer filter, String status, Boolean breach, Double startScore, Double endScore,
             Double subScore, Integer objectiveScoreRateLt, String studentName, String studentCode, String orderType,
             String orderField, Integer pageNumber, Integer pageSize);

+ 2 - 2
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkStudentServiceImpl.java

@@ -190,7 +190,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
     }
 
     @Override
-    public IPage<StudentScoreDetailDto> pageStudentScore(Long examId, String paperNumber, String college,
+    public IPage<StudentScoreDetailDto> pageStudentScore(Long examId, String paperNumber, String college, String majorName,
                                                          String className, String teacher, Integer filter, String status, Boolean breach, Double startScore,
                                                          Double endScore, Double subScore, Integer objectiveScoreRateLt, String studentName, String studentCode,
                                                          String orderType, String orderField, Integer pageNumber, Integer pageSize) {
@@ -201,7 +201,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
         MarkPaper markPaper = markPaperService.getByExamIdAndPaperNumber(examId, paperNumber);
         Double objectiveScoreLt = objectiveScoreRateLt == null ? null : Calculator.round(Calculator.divide(Calculator.multiply(markPaper.getObjectiveScore(), Double.parseDouble(String.valueOf(objectiveScoreRateLt))), 100), 2);
         IPage<StudentScoreDetailDto> studentScoreDetailDtoIPage = this.baseMapper.pageStudentScore(page, examId,
-                paperNumber, college, className, teacher, filter, status, breach, startScore, endScore, subScore,
+                paperNumber, college, majorName, className, teacher, filter, status, breach, startScore, endScore, subScore,
                 objectiveScoreLt, studentName, studentCode, orderType, orderField);
         for (StudentScoreDetailDto scoreDetailDto : studentScoreDetailDtoIPage.getRecords()) {
             // 原图

+ 39 - 9
teachcloud-mark/src/main/resources/mapper/MarkStudentMapper.xml

@@ -55,6 +55,7 @@
             ms.student_code studentCode,
             ms.secret_number secretNumber,
             ms.college,
+            ms.major_name majorName,
             ms.class_name className,
             ms.objective_score objectiveScore,
             ms.subjective_score subjectiveScore,
@@ -79,10 +80,13 @@
         where ms.exam_id = #{examId}
             AND ms.paper_number = #{paperNumber}
             <if test="college != null and college != ''">
-                AND ms.college = #{college}
+                AND ms.college like concat(#{college}, '%')
+            </if>
+            <if test="majorName != null and majorName != ''">
+                AND ms.major_name like concat(#{majorName}, '%')
             </if>
             <if test="className != null and className != ''">
-                AND ms.class_name = #{className}
+                AND ms.class_name like concat(#{className}, '%')
             </if>
             <if test="teacher != null and teacher != ''">
                 AND ms.teacher = #{teacher}
@@ -119,10 +123,10 @@
             <if test="startScore != null">
                 <choose>
                     <when test="startScore == 0">
-                        AND (ms.is_absent = 1 OR ms.is_breach = 1 OR (ms.subjective_score + ms.objective_score &gt;= #{startScore} AND ms.subjective_score + ms.objective_score &lt;= #{endScore}))
+                        AND (ms.is_absent = 1 OR ms.is_breach = 1 OR ((ms.subjective_score + ms.objective_score) &gt;= #{startScore} AND (ms.subjective_score + ms.objective_score) &lt;= #{endScore}))
                     </when>
                     <otherwise>
-                        AND (ms.is_absent = 0 AND ms.is_breach = 0 AND (ms.subjective_score + ms.objective_score &gt;= #{startScore} AND ms.subjective_score + ms.objective_score &lt;= #{endScore}))
+                        AND (ms.is_absent = 0 AND ms.is_breach = 0 AND ((ms.subjective_score + ms.objective_score) &gt;= #{startScore} AND (ms.subjective_score + ms.objective_score) &lt;= #{endScore}))
                     </otherwise>
                 </choose>
             </if>
@@ -292,19 +296,45 @@
         <if test="req.studentCode != null and req.studentCode !=''">
             and t.student_code=#{req.studentCode}
         </if>
+        <if test="req.startStudentCode != null and req.startStudentCode !=''">
+            and t.student_code &gt;= #{req.startStudentCode}
+        </if>
+        <if test="req.endStudentCode != null and req.endStudentCode !=''">
+            and t.student_code &lt;= #{req.endStudentCode}
+        </if>
         <if test="req.studentName != null and req.studentName !=''">
             and t.student_name=#{req.studentName}
         </if>
-        <if test="req.collegeName != null and req.collegeName !=''">
-            and t.college=#{req.collegeName}
+        <if test="req.college != null and req.college !=''">
+            and t.college like concat(#{req.college}, '%')
         </if>
         <if test="req.majorName != null and req.majorName !=''">
-            and t.major_name=#{req.majorName}
+            and t.major_name like concat(#{req.majorName}, '%')
         </if>
         <if test="req.className != null and req.className !=''">
-            and t.class_name=#{req.className}
+            and t.class_name like concat(#{req.className}, '%')
+        </if>
+        <if test="req.startScore != null and req.startScore !=''">
+            and (ifnull(t.objective_score,0)+ifnull(t.subjective_score,0)) &gt;= #{req.startScore}
+        </if>
+        <if test="req.endScore != null and req.endScore !=''">
+            and (ifnull(t.objective_score,0)+ifnull(t.subjective_score,0)) &lt;= #{req.endScore}
+        </if>
+        <if test="req.orderType != null and req.orderType != '' and req.orderField != null and req.orderField != ''">
+            <choose>
+                <when test="req.orderField == 'totalScore'">
+                    <if test="req.orderType == 'ASC'">
+                        order by (ifnull(t.objective_score, 0) +  ifnull(t.subjective_score, 0)) ASC
+                    </if>
+                    <if test="req.orderType == 'DESC'">
+                        order by (ifnull(t.objective_score, 0) +  ifnull(t.subjective_score, 0)) DESC
+                    </if>
+                </when>
+                <otherwise>
+                    order by #{req.orderField} #{req.orderType}
+                </otherwise>
+            </choose>
         </if>
-        order by t.id
     </select>
     <select id="overview" resultType="com.qmth.teachcloud.mark.bean.archivescore.OverViewVo">
         SELECT