1
0
xiatian 9 часов назад
Родитель
Сommit
ed52ee9766

+ 55 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/query/ExamStudentSearchQuery.java

@@ -5,11 +5,15 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
+import javax.validation.constraints.NotNull;
+
 import org.springframework.data.domain.Sort;
 import org.springframework.data.domain.Sort.Direction;
 
 import cn.com.qmth.stmms.biz.common.BaseQuery;
 import cn.com.qmth.stmms.biz.exam.model.ExamStudent;
+import cn.com.qmth.stmms.common.enums.CompareType;
+import cn.com.qmth.stmms.common.enums.RangeType;
 import cn.com.qmth.stmms.common.enums.Role;
 import cn.com.qmth.stmms.common.enums.SubjectiveStatus;
 import io.swagger.annotations.ApiModelProperty;
@@ -61,6 +65,11 @@ public class ExamStudentSearchQuery extends BaseQuery<ExamStudent> {
     @ApiModelProperty(value = "考场")
     private String examRoom;
 
+    @NotNull(message = "客观分比较类型不能为空")
+    @ApiModelProperty(value = "客观分比较类型")
+    private CompareType objectiveScoreCompareType;
+
+    @ApiModelProperty(value = "客观分")
     private Double objectiveScore;
 
     private Double objectiveScoreGt;
@@ -69,6 +78,11 @@ public class ExamStudentSearchQuery extends BaseQuery<ExamStudent> {
 
     private Set<SubjectiveStatus> statusSet;
 
+    @NotNull(message = "主观分比较类型不能为空")
+    @ApiModelProperty(value = "主观分比较类型")
+    private CompareType subjectiveScoreCompareType;
+
+    @ApiModelProperty(value = "主观分")
     private Double subjectiveScore;
 
     private Double subjectiveScoreGt;
@@ -96,6 +110,14 @@ public class ExamStudentSearchQuery extends BaseQuery<ExamStudent> {
     @ApiModelProperty(value = "科目数组")
     private List<String> subjectCodes;
 
+    @NotNull(message = "科目属于不能为空")
+    @ApiModelProperty(value = "科目属于")
+    private RangeType subjectRange;
+
+    @NotNull(message = "考点属于不能为空")
+    @ApiModelProperty(value = "考点属于")
+    private RangeType examSitesRange;
+
     @ApiModelProperty(value = "考点数组")
     private List<String> examSites;
 
@@ -650,4 +672,37 @@ public class ExamStudentSearchQuery extends BaseQuery<ExamStudent> {
     public void setSliceCount(Integer sliceCount) {
         this.sliceCount = sliceCount;
     }
+
+    public RangeType getSubjectRange() {
+        return subjectRange;
+    }
+
+    public void setSubjectRange(RangeType subjectRange) {
+        this.subjectRange = subjectRange;
+    }
+
+    public RangeType getExamSitesRange() {
+        return examSitesRange;
+    }
+
+    public void setExamSitesRange(RangeType examSitesRange) {
+        this.examSitesRange = examSitesRange;
+    }
+
+    public CompareType getObjectiveScoreCompareType() {
+        return objectiveScoreCompareType;
+    }
+
+    public void setObjectiveScoreCompareType(CompareType objectiveScoreCompareType) {
+        this.objectiveScoreCompareType = objectiveScoreCompareType;
+    }
+
+    public CompareType getSubjectiveScoreCompareType() {
+        return subjectiveScoreCompareType;
+    }
+
+    public void setSubjectiveScoreCompareType(CompareType subjectiveScoreCompareType) {
+        this.subjectiveScoreCompareType = subjectiveScoreCompareType;
+    }
+
 }

+ 37 - 3
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/ExamStudentServiceImpl.java

@@ -72,6 +72,8 @@ import cn.com.qmth.stmms.biz.utils.OriginTag;
 import cn.com.qmth.stmms.biz.utils.PictureConfigTransform;
 import cn.com.qmth.stmms.biz.utils.PictureTag;
 import cn.com.qmth.stmms.biz.utils.ScoreItem;
+import cn.com.qmth.stmms.common.enums.CompareType;
+import cn.com.qmth.stmms.common.enums.RangeType;
 import cn.com.qmth.stmms.common.enums.Role;
 import cn.com.qmth.stmms.common.enums.SubjectiveStatus;
 import net.sf.json.JSONObject;
@@ -654,6 +656,17 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
                 if (StringUtils.isNotBlank(query.getSubjectCategory())) {
                     predicates.add(cb.equal(root.get("subjectCategory"), query.getSubjectCategory()));
                 }
+                if (query.getObjectiveScore() != null) {
+                    if (CompareType.EQ.equals(query.getObjectiveScoreCompareType())) {
+                        predicates.add(cb.equal(root.get("objectiveScore"), query.getObjectiveScore()));
+                    } else if (CompareType.GT.equals(query.getObjectiveScoreCompareType())) {
+                        predicates.add(cb.greaterThan(root.get("objectiveScore").as(Double.class),
+                                query.getObjectiveScoreGt()));
+                    } else if (CompareType.LT.equals(query.getObjectiveScoreCompareType())) {
+                        predicates.add(
+                                cb.lessThan(root.get("objectiveScore").as(Double.class), query.getObjectiveScoreLt()));
+                    }
+                }
                 if (query.getObjectiveScore() != null) {
                     predicates.add(cb.equal(root.get("objectiveScore"), query.getObjectiveScore()));
                 } else if (query.getObjectiveScoreGt() != null) {
@@ -670,6 +683,19 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
                     }
                     predicates.add(cb.or(sub.toArray(new Predicate[sub.size()])));
                 }
+
+                if (query.getSubjectiveScore() != null) {
+                    if (CompareType.EQ.equals(query.getSubjectiveScoreCompareType())) {
+                        predicates.add(cb.equal(root.get("subjectiveScore"), query.getSubjectiveScore()));
+                    } else if (CompareType.GT.equals(query.getSubjectiveScoreCompareType())) {
+                        predicates.add(cb.greaterThan(root.get("subjectiveScore").as(Double.class),
+                                query.getSubjectiveScoreGt()));
+                    } else if (CompareType.LT.equals(query.getSubjectiveScoreCompareType())) {
+                        predicates.add(cb.lessThan(root.get("subjectiveScore").as(Double.class),
+                                query.getSubjectiveScoreLt()));
+                    }
+                }
+
                 if (query.getSubjectiveScore() != null) {
                     predicates.add(cb.equal(root.get("subjectiveScore"), query.getSubjectiveScore()));
                 } else if (query.getSubjectiveScoreGt() != null) {
@@ -716,11 +742,19 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
                 }
 
                 if (query.getSubjectCodes() != null && query.getSubjectCodes().size() > 0) {
-                    predicates.add(root.get("subjectCode").in(query.getSubjectCodes()));
+                    if (RangeType.IN.equals(query.getSubjectRange())) {
+                        predicates.add(root.get("subjectCode").in(query.getSubjectCodes()));
+                    } else {
+                        predicates.add(root.get("subjectCode").in(query.getSubjectCodes()).not());
+                    }
                 }
 
                 if (query.getExamSites() != null && query.getExamSites().size() > 0) {
-                    predicates.add(root.get("examSite").in(query.getExamSites()));
+                    if (RangeType.IN.equals(query.getExamSitesRange())) {
+                        predicates.add(root.get("examSite").in(query.getExamSites()));
+                    } else {
+                        predicates.add(root.get("examSite").in(query.getExamSites()).not());
+                    }
                 }
                 if (StringUtils.isNotBlank(query.getCampusNameIn())) {
                     String[] list = query.getCampusNameIn().split(",");
@@ -1852,6 +1886,6 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
 
     @Override
     public Integer findMaxSliceCountByExamIdAndSubjectCode(Integer examId, String subejctCode) {
-        return studentDao.findMaxSliceCountByExamIdAndSubjectCode(examId,subejctCode);
+        return studentDao.findMaxSliceCountByExamIdAndSubjectCode(examId, subejctCode);
     }
 }

+ 21 - 0
stmms-common/src/main/java/cn/com/qmth/stmms/common/enums/CompareType.java

@@ -0,0 +1,21 @@
+package cn.com.qmth.stmms.common.enums;
+
+public enum CompareType {
+
+    EQ("等于"), GT("大于"), LT("小于");
+
+    private String description;
+
+    private CompareType(String description) {
+        this.description = description;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+}

+ 21 - 0
stmms-common/src/main/java/cn/com/qmth/stmms/common/enums/RangeType.java

@@ -0,0 +1,21 @@
+package cn.com.qmth.stmms.common.enums;
+
+public enum RangeType {
+
+    IN("属于"), NOT_IN("不属于");
+
+    private String description;
+
+    private RangeType(String description) {
+        this.description = description;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+}

+ 4 - 1
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/admin/AnswerCheckController.java

@@ -1,7 +1,10 @@
 package cn.com.qmth.stmms.api.controller.admin;
 
+import javax.validation.Valid;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.ResponseBody;
@@ -26,7 +29,7 @@ public class AnswerCheckController extends BaseApiController {
     @ApiOperation(value = "查询数量")
     @RequestMapping(value = "count", method = RequestMethod.POST)
     @ResponseBody
-    public long count(ExamStudentSearchQuery query) {
+    public long count(@Valid @RequestBody ExamStudentSearchQuery query) {
         int examId = getSessionExamId();
         if (examId > 0) {
             query.setExamId(examId);