1
0
xiatian vor 7 Stunden
Ursprung
Commit
901edfae8f
31 geänderte Dateien mit 962 neuen und 261 gelöschten Zeilen
  1. 16 0
      pom.xml
  2. 14 0
      stmms-biz/pom.xml
  3. 32 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/bean/BatchResetPass.java
  4. 33 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/bean/BatchToggle.java
  5. 33 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/bean/BatchUpdateTaskCount.java
  6. 30 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/bean/ClassAdd.java
  7. 35 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/bean/ExportColsSave.java
  8. 156 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/bean/MarkGroupAdd.java
  9. 32 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/bean/MarkGroupFinish.java
  10. 186 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/bean/MarkGroupUpdate.java
  11. 45 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/bean/MarkerAdd.java
  12. 24 24
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/MarkerClassService.java
  13. 1 1
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/MarkerService.java
  14. 1 1
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/MarkerClassServiceImpl.java
  15. 4 4
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/MarkerServiceImpl.java
  16. 14 0
      stmms-web/pom.xml
  17. 3 3
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/MarkerController.java
  18. 25 23
      stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/CoreController.java
  19. 2 1
      stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/admin/InspectedController.java
  20. 92 54
      stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/admin/MarkGroupController.java
  21. 12 4
      stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/admin/MarkInfoController.java
  22. 24 18
      stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/admin/MarkerController.java
  23. 11 20
      stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/admin/OperationLogController.java
  24. 12 18
      stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/admin/ProblemHistoryController.java
  25. 20 9
      stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/admin/QuestionController.java
  26. 40 31
      stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/admin/ReportController.java
  27. 3 4
      stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/admin/ScanController.java
  28. 14 3
      stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/admin/SelectiveGroupController.java
  29. 29 10
      stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/admin/SubjectController.java
  30. 4 24
      stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/admin/TrialController.java
  31. 15 9
      stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/admin/UserController.java

+ 16 - 0
pom.xml

@@ -35,6 +35,22 @@
     <dependencyManagement>
     
         <dependencies>
+         <dependency>
+            <groupId>javax.validation</groupId>
+            <artifactId>validation-api</artifactId>
+            <version>1.1.0.Final</version>
+        </dependency>
+        <dependency>
+            <groupId>org.hibernate</groupId>
+            <artifactId>hibernate-validator</artifactId>
+            <version>4.2.0.Final</version>
+            <exclusions>
+	            <exclusion>
+		            <artifactId>classmate</artifactId>    
+		            <groupId>com.fasterxml</groupId>       
+             	</exclusion>
+            </exclusions>
+        </dependency>
                 <!-- swagger -->  
         <dependency>  
             <groupId>io.springfox</groupId>  

+ 14 - 0
stmms-biz/pom.xml

@@ -14,6 +14,20 @@
     <url>http://maven.apache.org</url>
 
     <dependencies>
+     <dependency>
+            <groupId>javax.validation</groupId>
+            <artifactId>validation-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.hibernate</groupId>
+            <artifactId>hibernate-validator</artifactId>
+            <exclusions>
+	            <exclusion>
+		            <artifactId>classmate</artifactId>    
+		            <groupId>com.fasterxml</groupId>       
+             	</exclusion>
+            </exclusions>
+        </dependency>
     <dependency>
 			<groupId>io.springfox</groupId>
 			<artifactId>springfox-swagger2</artifactId>

+ 32 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/bean/BatchResetPass.java

@@ -0,0 +1,32 @@
+package cn.com.qmth.stmms.biz.exam.bean;
+
+import java.util.List;
+
+import org.hibernate.validator.constraints.NotBlank;
+import org.hibernate.validator.constraints.NotEmpty;
+
+public class BatchResetPass {
+
+    @NotEmpty(message = "id不能为空")
+    private List<Integer> ids;
+
+    @NotBlank(message = "password不能为空")
+    private String password;
+
+    public List<Integer> getIds() {
+        return ids;
+    }
+
+    public void setIds(List<Integer> ids) {
+        this.ids = ids;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+}

+ 33 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/bean/BatchToggle.java

@@ -0,0 +1,33 @@
+package cn.com.qmth.stmms.biz.exam.bean;
+
+import java.util.List;
+
+import javax.validation.constraints.NotNull;
+
+import org.hibernate.validator.constraints.NotEmpty;
+
+public class BatchToggle {
+
+    @NotEmpty(message = "id不能为空")
+    private List<Integer> ids;
+
+    @NotNull(message = "enable不能为空")
+    private Boolean enable;
+
+    public List<Integer> getIds() {
+        return ids;
+    }
+
+    public void setIds(List<Integer> ids) {
+        this.ids = ids;
+    }
+
+    public Boolean getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Boolean enable) {
+        this.enable = enable;
+    }
+
+}

+ 33 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/bean/BatchUpdateTaskCount.java

@@ -0,0 +1,33 @@
+package cn.com.qmth.stmms.biz.exam.bean;
+
+import java.util.List;
+
+import javax.validation.constraints.NotNull;
+
+import org.hibernate.validator.constraints.NotEmpty;
+
+public class BatchUpdateTaskCount {
+
+    @NotEmpty(message = "id不能为空")
+    private List<Integer> ids;
+
+    @NotNull(message = "taskCount不能为空")
+    private Integer taskCount;
+
+    public List<Integer> getIds() {
+        return ids;
+    }
+
+    public void setIds(List<Integer> ids) {
+        this.ids = ids;
+    }
+
+    public Integer getTaskCount() {
+        return taskCount;
+    }
+
+    public void setTaskCount(Integer taskCount) {
+        this.taskCount = taskCount;
+    }
+
+}

+ 30 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/bean/ClassAdd.java

@@ -0,0 +1,30 @@
+package cn.com.qmth.stmms.biz.exam.bean;
+
+import java.util.List;
+
+import javax.validation.constraints.NotNull;
+
+public class ClassAdd {
+
+    @NotNull(message = "markerId不能为空")
+    private Integer markerId;
+
+    private List<String> classes;
+
+    public Integer getMarkerId() {
+        return markerId;
+    }
+
+    public void setMarkerId(Integer markerId) {
+        this.markerId = markerId;
+    }
+
+    public List<String> getClasses() {
+        return classes;
+    }
+
+    public void setClasses(List<String> classes) {
+        this.classes = classes;
+    }
+
+}

+ 35 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/bean/ExportColsSave.java

@@ -0,0 +1,35 @@
+package cn.com.qmth.stmms.biz.exam.bean;
+
+import java.util.Set;
+
+import javax.validation.constraints.NotNull;
+
+import org.hibernate.validator.constraints.NotEmpty;
+
+import cn.com.qmth.stmms.biz.exam.enums.ExportColsType;
+
+public class ExportColsSave {
+
+    @NotNull(message = "type不能为空")
+    private ExportColsType type;
+
+    @NotEmpty(message = "cols不能为空")
+    private Set<String> cols;
+
+    public ExportColsType getType() {
+        return type;
+    }
+
+    public void setType(ExportColsType type) {
+        this.type = type;
+    }
+
+    public Set<String> getCols() {
+        return cols;
+    }
+
+    public void setCols(Set<String> cols) {
+        this.cols = cols;
+    }
+
+}

+ 156 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/bean/MarkGroupAdd.java

@@ -0,0 +1,156 @@
+package cn.com.qmth.stmms.biz.exam.bean;
+
+import java.util.List;
+
+import javax.validation.constraints.NotNull;
+
+import org.hibernate.validator.constraints.NotBlank;
+import org.hibernate.validator.constraints.NotEmpty;
+
+public class MarkGroupAdd {
+
+    @NotBlank(message = "subjectCode不能为空")
+    private String subjectCode;
+
+    @NotNull(message = "number不能为空")
+    private Integer number;
+
+    @NotEmpty(message = "questionIds不能为空")
+    private List<Integer> questionIds;
+
+    @NotBlank(message = "@NotBlank不能为空")
+    private String picList;
+
+    private Double doubleRate;
+
+    private Double arbitrateThreshold;
+
+    private Integer thirdPolicy;
+
+    private Integer scorePolicy;
+
+    private String arbitrateThresholdList;
+
+    private Integer arbitrateType;
+
+    private String markMode;
+
+    private Integer trialCount;
+
+    private Boolean sheetView;
+
+    private Boolean enableAllZero;
+
+    public String getSubjectCode() {
+        return subjectCode;
+    }
+
+    public void setSubjectCode(String subjectCode) {
+        this.subjectCode = subjectCode;
+    }
+
+    public Integer getNumber() {
+        return number;
+    }
+
+    public void setNumber(Integer number) {
+        this.number = number;
+    }
+
+    public List<Integer> getQuestionIds() {
+        return questionIds;
+    }
+
+    public void setQuestionIds(List<Integer> questionIds) {
+        this.questionIds = questionIds;
+    }
+
+    public String getPicList() {
+        return picList;
+    }
+
+    public void setPicList(String picList) {
+        this.picList = picList;
+    }
+
+    public Double getDoubleRate() {
+        return doubleRate;
+    }
+
+    public void setDoubleRate(Double doubleRate) {
+        this.doubleRate = doubleRate;
+    }
+
+    public Double getArbitrateThreshold() {
+        return arbitrateThreshold;
+    }
+
+    public void setArbitrateThreshold(Double arbitrateThreshold) {
+        this.arbitrateThreshold = arbitrateThreshold;
+    }
+
+    public Integer getThirdPolicy() {
+        return thirdPolicy;
+    }
+
+    public void setThirdPolicy(Integer thirdPolicy) {
+        this.thirdPolicy = thirdPolicy;
+    }
+
+    public Integer getScorePolicy() {
+        return scorePolicy;
+    }
+
+    public void setScorePolicy(Integer scorePolicy) {
+        this.scorePolicy = scorePolicy;
+    }
+
+    public String getArbitrateThresholdList() {
+        return arbitrateThresholdList;
+    }
+
+    public void setArbitrateThresholdList(String arbitrateThresholdList) {
+        this.arbitrateThresholdList = arbitrateThresholdList;
+    }
+
+    public Integer getArbitrateType() {
+        return arbitrateType;
+    }
+
+    public void setArbitrateType(Integer arbitrateType) {
+        this.arbitrateType = arbitrateType;
+    }
+
+    public String getMarkMode() {
+        return markMode;
+    }
+
+    public void setMarkMode(String markMode) {
+        this.markMode = markMode;
+    }
+
+    public Integer getTrialCount() {
+        return trialCount;
+    }
+
+    public void setTrialCount(Integer trialCount) {
+        this.trialCount = trialCount;
+    }
+
+    public Boolean getSheetView() {
+        return sheetView;
+    }
+
+    public void setSheetView(Boolean sheetView) {
+        this.sheetView = sheetView;
+    }
+
+    public Boolean getEnableAllZero() {
+        return enableAllZero;
+    }
+
+    public void setEnableAllZero(Boolean enableAllZero) {
+        this.enableAllZero = enableAllZero;
+    }
+
+}

+ 32 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/bean/MarkGroupFinish.java

@@ -0,0 +1,32 @@
+package cn.com.qmth.stmms.biz.exam.bean;
+
+import java.util.List;
+
+import org.hibernate.validator.constraints.NotBlank;
+import org.hibernate.validator.constraints.NotEmpty;
+
+public class MarkGroupFinish {
+
+    @NotEmpty(message = "groupNumbers不能为空")
+    private List<Integer> groupNumbers;
+
+    @NotBlank(message = "subjectCode不能为空")
+    private String subjectCode;
+
+    public List<Integer> getGroupNumbers() {
+        return groupNumbers;
+    }
+
+    public void setGroupNumbers(List<Integer> groupNumbers) {
+        this.groupNumbers = groupNumbers;
+    }
+
+    public String getSubjectCode() {
+        return subjectCode;
+    }
+
+    public void setSubjectCode(String subjectCode) {
+        this.subjectCode = subjectCode;
+    }
+
+}

+ 186 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/bean/MarkGroupUpdate.java

@@ -0,0 +1,186 @@
+package cn.com.qmth.stmms.biz.exam.bean;
+
+import java.util.List;
+
+import javax.validation.constraints.NotNull;
+
+import org.hibernate.validator.constraints.NotBlank;
+
+import cn.com.qmth.stmms.common.enums.MarkMode;
+
+public class MarkGroupUpdate {
+
+    @NotBlank(message = "subjectCode不能为空")
+    private String subjectCode;
+
+    @NotNull(message = "number不能为空")
+    private Integer number;
+
+    @NotNull(message = "reset不能为空")
+    private Boolean reset;
+
+    private List<Integer> questionIds;
+
+    private String picList;
+
+    private Double doubleRate;
+
+    private Double arbitrateThreshold;
+
+    private Integer thirdPolicy;
+
+    private Integer scorePolicy;
+
+    private String arbitrateThresholdList;
+
+    private Integer arbitrateType;
+
+    private MarkMode markMode;
+
+    private Integer trialCount;
+
+    private Boolean sheetView;
+
+    private Boolean enableAllZero;
+
+    private String intervalScoreList;
+
+    private String deleteCode;
+
+    public String getSubjectCode() {
+        return subjectCode;
+    }
+
+    public void setSubjectCode(String subjectCode) {
+        this.subjectCode = subjectCode;
+    }
+
+    public Integer getNumber() {
+        return number;
+    }
+
+    public void setNumber(Integer number) {
+        this.number = number;
+    }
+
+    public Boolean getReset() {
+        return reset;
+    }
+
+    public void setReset(Boolean reset) {
+        this.reset = reset;
+    }
+
+    public List<Integer> getQuestionIds() {
+        return questionIds;
+    }
+
+    public void setQuestionIds(List<Integer> questionIds) {
+        this.questionIds = questionIds;
+    }
+
+    public String getPicList() {
+        return picList;
+    }
+
+    public void setPicList(String picList) {
+        this.picList = picList;
+    }
+
+    public Double getDoubleRate() {
+        return doubleRate;
+    }
+
+    public void setDoubleRate(Double doubleRate) {
+        this.doubleRate = doubleRate;
+    }
+
+    public Double getArbitrateThreshold() {
+        return arbitrateThreshold;
+    }
+
+    public void setArbitrateThreshold(Double arbitrateThreshold) {
+        this.arbitrateThreshold = arbitrateThreshold;
+    }
+
+    public Integer getThirdPolicy() {
+        return thirdPolicy;
+    }
+
+    public void setThirdPolicy(Integer thirdPolicy) {
+        this.thirdPolicy = thirdPolicy;
+    }
+
+    public Integer getScorePolicy() {
+        return scorePolicy;
+    }
+
+    public void setScorePolicy(Integer scorePolicy) {
+        this.scorePolicy = scorePolicy;
+    }
+
+    public String getArbitrateThresholdList() {
+        return arbitrateThresholdList;
+    }
+
+    public void setArbitrateThresholdList(String arbitrateThresholdList) {
+        this.arbitrateThresholdList = arbitrateThresholdList;
+    }
+
+    public Integer getArbitrateType() {
+        return arbitrateType;
+    }
+
+    public void setArbitrateType(Integer arbitrateType) {
+        this.arbitrateType = arbitrateType;
+    }
+
+    public MarkMode getMarkMode() {
+        return markMode;
+    }
+
+    public void setMarkMode(MarkMode markMode) {
+        this.markMode = markMode;
+    }
+
+    public Integer getTrialCount() {
+        return trialCount;
+    }
+
+    public void setTrialCount(Integer trialCount) {
+        this.trialCount = trialCount;
+    }
+
+    public Boolean getSheetView() {
+        return sheetView;
+    }
+
+    public void setSheetView(Boolean sheetView) {
+        this.sheetView = sheetView;
+    }
+
+    public Boolean getEnableAllZero() {
+        return enableAllZero;
+    }
+
+    public void setEnableAllZero(Boolean enableAllZero) {
+        this.enableAllZero = enableAllZero;
+    }
+
+    public String getIntervalScoreList() {
+        return intervalScoreList;
+    }
+
+    public void setIntervalScoreList(String intervalScoreList) {
+        this.intervalScoreList = intervalScoreList;
+    }
+
+    public String getDeleteCode() {
+        return deleteCode;
+    }
+
+    public void setDeleteCode(String deleteCode) {
+        this.deleteCode = deleteCode;
+    }
+
+}

+ 45 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/bean/MarkerAdd.java

@@ -0,0 +1,45 @@
+package cn.com.qmth.stmms.biz.exam.bean;
+
+import java.util.List;
+
+import javax.validation.constraints.NotNull;
+
+import org.hibernate.validator.constraints.NotBlank;
+import org.hibernate.validator.constraints.NotEmpty;
+
+public class MarkerAdd {
+
+    @NotEmpty(message = "userIds不能为空")
+    private List<Integer> userIds;
+
+    @NotBlank(message = "subjectCode不能为空")
+    private String subjectCode;
+
+    @NotNull(message = "groupNumber不能为空")
+    private Integer groupNumber;
+
+    public List<Integer> getUserIds() {
+        return userIds;
+    }
+
+    public void setUserIds(List<Integer> userIds) {
+        this.userIds = userIds;
+    }
+
+    public String getSubjectCode() {
+        return subjectCode;
+    }
+
+    public void setSubjectCode(String subjectCode) {
+        this.subjectCode = subjectCode;
+    }
+
+    public Integer getGroupNumber() {
+        return groupNumber;
+    }
+
+    public void setGroupNumber(Integer groupNumber) {
+        this.groupNumber = groupNumber;
+    }
+
+}

+ 24 - 24
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/MarkerClassService.java

@@ -1,24 +1,24 @@
-package cn.com.qmth.stmms.biz.exam.service;
-
-import java.util.List;
-import java.util.Set;
-
-import cn.com.qmth.stmms.biz.exam.model.MarkerClass;
-
-public interface MarkerClassService {
-
-    List<MarkerClass> findByUserIdAndExamId(int userId, int examId);
-
-    long countByUserIdAndExamId(int userId, int examId);
-
-    void deleteByUserIdAndExamId(int userId, int examId);
-
-    void save(int userId, int examId, String[] classes);
-
-    Set<String> findClassNameByUserIdAndExamId(int userId, int examId);
-
-    MarkerClass findByUserIdAndExamIdAndClassName(Integer userId, Integer examId, String className);
-
-    int batchSave(List<MarkerClass> saveList);
-
-}
+package cn.com.qmth.stmms.biz.exam.service;
+
+import java.util.List;
+import java.util.Set;
+
+import cn.com.qmth.stmms.biz.exam.model.MarkerClass;
+
+public interface MarkerClassService {
+
+    List<MarkerClass> findByUserIdAndExamId(int userId, int examId);
+
+    long countByUserIdAndExamId(int userId, int examId);
+
+    void deleteByUserIdAndExamId(int userId, int examId);
+
+    void save(int userId, int examId, List<String> classes);
+
+    Set<String> findClassNameByUserIdAndExamId(int userId, int examId);
+
+    MarkerClass findByUserIdAndExamIdAndClassName(Integer userId, Integer examId, String className);
+
+    int batchSave(List<MarkerClass> saveList);
+
+}

+ 1 - 1
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/MarkerService.java

@@ -35,7 +35,7 @@ public interface MarkerService {
 
     void deleteById(Integer markerId);
 
-    void save(MarkGroup group, Integer[] userIds);
+    void save(MarkGroup group, List<Integer> userIds);
 
     List<Marker> findByExamAndSubjectAndUserIdAndEnable(Integer examId, String subjectCode, Integer userId,
             boolean enable);

+ 1 - 1
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/MarkerClassServiceImpl.java

@@ -21,7 +21,7 @@ public class MarkerClassServiceImpl extends BaseQueryService<MarkerClass> implem
 
     @Transactional
     @Override
-    public void save(int userId, int examId, String[] classes) {
+    public void save(int userId, int examId, List<String> classes) {
         this.deleteByUserIdAndExamId(userId, examId);
         if (classes != null) {
             for (String className : classes) {

+ 4 - 4
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/MarkerServiceImpl.java

@@ -106,7 +106,7 @@ public class MarkerServiceImpl extends BaseQueryService<Marker> implements Marke
                     Object[] array = result.get(i);
                     Marker marker = findById((int) array[0]);
                     marker.setMarkedCount((long) array[1]);
-                    marker.setMarkedCountNa(markerMap.get((int) array[0])==null?0:markerMap.get((int) array[0]));
+                    marker.setMarkedCountNa(markerMap.get((int) array[0]) == null ? 0 : markerMap.get((int) array[0]));
                     list.add(marker);
                 }
             }
@@ -137,7 +137,7 @@ public class MarkerServiceImpl extends BaseQueryService<Marker> implements Marke
                     Object[] array = result.get(i);
                     Marker marker = findById((int) array[0]);
                     marker.setMarkedCount((long) array[1]);
-                    marker.setMarkedCountNa(markerMap.get((int) array[0])==null?0:markerMap.get((int) array[0]));
+                    marker.setMarkedCountNa(markerMap.get((int) array[0]) == null ? 0 : markerMap.get((int) array[0]));
                     list.add(marker);
                 }
             }
@@ -241,9 +241,9 @@ public class MarkerServiceImpl extends BaseQueryService<Marker> implements Marke
     }
 
     @Override
-    public void save(MarkGroup group, Integer[] userIds) {
+    public void save(MarkGroup group, List<Integer> userIds) {
         List<Marker> list = new ArrayList<Marker>();
-        if (userIds != null && userIds.length > 0) {
+        if (userIds != null && userIds.size() > 0) {
             for (Integer userId : userIds) {
                 Marker marker = this.findByExamAndSubjectAndNumberAndUserId(group.getExamId(), group.getSubjectCode(),
                         group.getNumber(), userId);

+ 14 - 0
stmms-web/pom.xml

@@ -14,6 +14,20 @@
 	<name>stmms-web</name>
 	<url>http://maven.apache.org</url>
 	<dependencies>
+	 <dependency>
+            <groupId>javax.validation</groupId>
+            <artifactId>validation-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.hibernate</groupId>
+            <artifactId>hibernate-validator</artifactId>
+            <exclusions>
+	            <exclusion>
+		            <artifactId>classmate</artifactId>    
+		            <groupId>com.fasterxml</groupId>       
+             	</exclusion>
+            </exclusions>
+        </dependency>
         <dependency>
 			<groupId>io.springfox</groupId>
 			<artifactId>springfox-swagger2</artifactId>

+ 3 - 3
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/MarkerController.java

@@ -546,7 +546,7 @@ public class MarkerController extends BaseExamController {
     @Logging(menu = "评卷员绑定", type = LogType.ADD)
     @RequestMapping(value = "/add", method = RequestMethod.POST)
     public String save(@RequestParam String subjectCode, @RequestParam Integer groupNumber,
-            @RequestParam Integer[] userIds, HttpServletRequest request, RedirectAttributes redirectAttributes) {
+            @RequestParam List<Integer> userIds, HttpServletRequest request, RedirectAttributes redirectAttributes) {
         int examId = getSessionExamId(request);
         MarkGroup group = groupService.findOne(examId, subjectCode, groupNumber);
         if (group != null) {
@@ -570,7 +570,7 @@ public class MarkerController extends BaseExamController {
         int examId = marker.getExamId();
         String subjectCode = marker.getSubjectCode();
         Integer groupNumber = marker.getGroupNumber();
-        if (count > 0 || trialCount > 0 || rejectCount >0 ) {
+        if (count > 0 || trialCount > 0 || rejectCount > 0) {
             addMessage(redirectAttributes, "删除评卷员失败,该评卷员已开始评卷");
         } else {
             try {
@@ -605,7 +605,7 @@ public class MarkerController extends BaseExamController {
 
     @Logging(menu = "评卷员班级绑定", type = LogType.UPDATE)
     @RequestMapping(value = "/class/{markerId}", method = RequestMethod.POST)
-    public String classSave(@PathVariable Integer markerId, @RequestParam(required = false) String[] classes,
+    public String classSave(@PathVariable Integer markerId, @RequestParam(required = false) List<String> classes,
             Model model, RedirectAttributes redirectAttributes) {
         Marker marker = markerService.findById(markerId);
         if (marker != null) {

+ 25 - 23
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/CoreController.java

@@ -11,10 +11,6 @@ import java.util.stream.Collectors;
 
 import javax.servlet.http.HttpServletRequest;
 
-import cn.com.qmth.stmms.common.enums.*;
-import net.sf.json.JSONArray;
-import net.sf.json.JSONObject;
-
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
@@ -65,9 +61,19 @@ import cn.com.qmth.stmms.biz.user.service.UserService;
 import cn.com.qmth.stmms.biz.utils.ScoreItem;
 import cn.com.qmth.stmms.common.annotation.RoleRequire;
 import cn.com.qmth.stmms.common.domain.ApiUser;
+import cn.com.qmth.stmms.common.enums.ExamStatus;
+import cn.com.qmth.stmms.common.enums.ExamType;
+import cn.com.qmth.stmms.common.enums.LockType;
+import cn.com.qmth.stmms.common.enums.ObjectiveStatus;
+import cn.com.qmth.stmms.common.enums.QuestionType;
+import cn.com.qmth.stmms.common.enums.Role;
+import cn.com.qmth.stmms.common.enums.SubjectiveStatus;
+import cn.com.qmth.stmms.common.enums.UserSource;
 import cn.com.qmth.stmms.common.utils.DateUtils;
 import cn.com.qmth.stmms.common.utils.EncryptUtils;
 import cn.com.qmth.stmms.common.utils.RequestUtils;
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
 
 @Controller("coreApiController")
 @RequestMapping("/api")
@@ -439,12 +445,9 @@ public class CoreController extends BaseApiController {
             }
             // 构造原图下载地址
             if (student.isUpload()) {
-                obj.accumulate(
-                        "sheetUrls",
-                        fileService
-                                .getSheetUris(student.getExamId(), student.getExamNumber(), 1, student.getSheetCount())
-                                .stream().map(uri -> fileService.getFileServer().concat(uri))
-                                .collect(Collectors.toList()));
+                obj.accumulate("sheetUrls", fileService
+                        .getSheetUris(student.getExamId(), student.getExamNumber(), 1, student.getSheetCount()).stream()
+                        .map(uri -> fileService.getFileServer().concat(uri)).collect(Collectors.toList()));
             } else {
                 obj.accumulate("sheetUrls", new JSONArray());
             }
@@ -588,8 +591,8 @@ public class CoreController extends BaseApiController {
         }
         // 客观题更新
         if (paper.getObjective()) {
-            List<ExamQuestion> oList = parseQustionList(paper.getQuestions(), paper.getExamId(),
-                    paper.getSubjectCode(), paper.getPaperType(), paper.getObjective());
+            List<ExamQuestion> oList = parseQustionList(paper.getQuestions(), paper.getExamId(), paper.getSubjectCode(),
+                    paper.getPaperType(), paper.getObjective());
             if (0 != questionService.countByExamIdAndSubjectAndObjectiveAndGroupNumberIsNull(paper.getExamId(),
                     subject.getCode(), true)) {
                 questionService.deleteByExamAndSubjectAndObjective(paper.getExamId(), subject.getCode(), true);
@@ -600,8 +603,8 @@ public class CoreController extends BaseApiController {
                     questionService.sumTotalScore(paper.getExamId(), subject.getCode(), true));
         } else {
             List<MarkGroup> groups = groupService.findByExamAndSubject(paper.getExamId(), subject.getCode());
-            List<ExamQuestion> sList = parseQustionList(paper.getQuestions(), paper.getExamId(),
-                    paper.getSubjectCode(), paper.getPaperType(), paper.getObjective());
+            List<ExamQuestion> sList = parseQustionList(paper.getQuestions(), paper.getExamId(), paper.getSubjectCode(),
+                    paper.getPaperType(), paper.getObjective());
             if (groups == null || groups.size() == 0) {
                 if (0 != questionService.countByExamIdAndSubjectAndObjectiveAndGroupNumberIsNull(paper.getExamId(),
                         subject.getCode(), false)) {
@@ -740,8 +743,8 @@ public class CoreController extends BaseApiController {
             }
         }
         for (MarkGroup group : groups) {
-            if (lockService
-                    .trylock(LockType.GROUP_DELETE, group.getExamId(), group.getSubjectCode(), group.getNumber())) {
+            if (lockService.trylock(LockType.GROUP_DELETE, group.getExamId(), group.getSubjectCode(),
+                    group.getNumber())) {
                 taskExecutor.submit(new MarkGroupDeleteThread(group, markService, lockService));
             }
         }
@@ -806,17 +809,17 @@ public class CoreController extends BaseApiController {
                 questionGroup.add(old);
             }
             MarkGroup group = new MarkGroup(dto.getExamId(), dto.getSubjectCode(), g.getNumber(), g.getPicConfig(),
-                    totalScore.doubleValue(), g.getDoubleRate(), g.getArbitrateThreshold(), g.getScorePolicy(),null,
-                    g.getMarkMode(), dto.getTrialCount(), false, g.getEnableAllZero() == null ? false
-                            : g.getEnableAllZero(), null, false);
+                    totalScore.doubleValue(), g.getDoubleRate(), g.getArbitrateThreshold(), g.getScorePolicy(), null,
+                    g.getMarkMode(), dto.getTrialCount(), false,
+                    g.getEnableAllZero() == null ? false : g.getEnableAllZero(), null, false);
             if (!questionGroup.isEmpty()) {
                 questionService.save(questionGroup);
                 groupService.save(group);
             }
         }
         subjectService.updateTrialCount(dto.getExamId(), dto.getSubjectCode(), dto.getTrialCount());
-        studentService.updateSubjectiveStatusAndScore(dto.getExamId(), dto.getSubjectCode(), SubjectiveStatus.UNMARK,
-                0, null);
+        studentService.updateSubjectiveStatusAndScore(dto.getExamId(), dto.getSubjectCode(), SubjectiveStatus.UNMARK, 0,
+                null);
         inspectHistoryService.deleteByExamIdAndSubjectCode(dto.getExamId(), dto.getSubjectCode());
         result.accumulate("updateTime", DateUtils.formatDateTime(new Date()));
         return result;
@@ -1016,8 +1019,7 @@ public class CoreController extends BaseApiController {
         if (u == null || !Role.MARKER.equals(u.getRole())) {
             throw ApiException.QUERY_PARAM_ERROR.appendMessage(": account error");
         }
-        markerClassService.save(u.getId(), markerClass.getExamId(),
-                markerClass.getClassName().stream().toArray(String[]::new));
+        markerClassService.save(u.getId(), markerClass.getExamId(), markerClass.getClassName());
         result.accumulate("updateTime", DateUtils.formatDateTime(new Date()));
         return result;
     }

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

@@ -19,6 +19,7 @@ import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 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.RequestParam;
@@ -442,7 +443,7 @@ public class InspectedController extends BaseApiController {
     @ApiOperation(value = "取消复核")
     @RequestMapping(value = "batch-cancel", method = RequestMethod.POST)
     @ResponseBody
-    public ResultMessage batchCancel(@RequestParam List<Integer> studentIds) {
+    public ResultMessage batchCancel(@RequestBody List<Integer> studentIds) {
         ApiUser wu = getApiUser();
         for (Integer id : studentIds) {
             ExamStudent student = studentService.findById(id);

+ 92 - 54
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/admin/MarkGroupController.java

@@ -5,12 +5,8 @@ import java.util.ArrayList;
 import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
+import javax.validation.Valid;
 
-import cn.com.qmth.stmms.biz.exam.bean.MarkerGroupVo;
-import cn.com.qmth.stmms.biz.exam.bean.PictureConfigVo;
-import cn.com.qmth.stmms.biz.exam.query.ExamStudentSearchQuery;
-import cn.com.qmth.stmms.biz.mark.model.PictureConfigItem;
-import cn.com.qmth.stmms.biz.user.model.User;
 import org.apache.commons.lang.StringEscapeUtils;
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
@@ -21,6 +17,7 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.core.task.AsyncTaskExecutor;
 import org.springframework.stereotype.Controller;
 import org.springframework.transaction.annotation.Transactional;
+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.RequestParam;
@@ -31,24 +28,51 @@ import com.qmth.boot.core.exception.StatusException;
 import cn.com.qmth.stmms.admin.thread.MarkGroupDeleteThread;
 import cn.com.qmth.stmms.api.controller.BaseApiController;
 import cn.com.qmth.stmms.biz.config.service.impl.SystemCache;
+import cn.com.qmth.stmms.biz.exam.bean.MarkGroupAdd;
+import cn.com.qmth.stmms.biz.exam.bean.MarkGroupFinish;
+import cn.com.qmth.stmms.biz.exam.bean.MarkGroupUpdate;
+import cn.com.qmth.stmms.biz.exam.bean.MarkerGroupVo;
+import cn.com.qmth.stmms.biz.exam.bean.PictureConfigVo;
 import cn.com.qmth.stmms.biz.exam.bean.ResultMessage;
 import cn.com.qmth.stmms.biz.exam.dao.SelectiveStudentDao;
-import cn.com.qmth.stmms.biz.exam.model.*;
-import cn.com.qmth.stmms.biz.exam.service.*;
+import cn.com.qmth.stmms.biz.exam.model.Exam;
+import cn.com.qmth.stmms.biz.exam.model.ExamQuestion;
+import cn.com.qmth.stmms.biz.exam.model.ExamStudent;
+import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
+import cn.com.qmth.stmms.biz.exam.model.MarkGroup;
+import cn.com.qmth.stmms.biz.exam.model.Marker;
+import cn.com.qmth.stmms.biz.exam.model.SelectiveGroup;
+import cn.com.qmth.stmms.biz.exam.query.ExamStudentSearchQuery;
+import cn.com.qmth.stmms.biz.exam.service.ExamQuestionService;
+import cn.com.qmth.stmms.biz.exam.service.ExamService;
+import cn.com.qmth.stmms.biz.exam.service.ExamStudentService;
+import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
+import cn.com.qmth.stmms.biz.exam.service.InspectHistoryService;
+import cn.com.qmth.stmms.biz.exam.service.MarkGroupService;
+import cn.com.qmth.stmms.biz.exam.service.MarkerService;
+import cn.com.qmth.stmms.biz.exam.service.SelectiveGroupService;
 import cn.com.qmth.stmms.biz.file.service.FileService;
 import cn.com.qmth.stmms.biz.lock.LockService;
 import cn.com.qmth.stmms.biz.mark.model.MarkConfigItem;
+import cn.com.qmth.stmms.biz.mark.model.PictureConfigItem;
 import cn.com.qmth.stmms.biz.mark.service.MarkService;
 import cn.com.qmth.stmms.biz.school.model.School;
 import cn.com.qmth.stmms.biz.school.service.SchoolService;
+import cn.com.qmth.stmms.biz.user.model.User;
 import cn.com.qmth.stmms.common.annotation.Logging;
-import cn.com.qmth.stmms.common.domain.ApiUser;
-import cn.com.qmth.stmms.common.enums.*;
+import cn.com.qmth.stmms.common.enums.ArbitrateType;
+import cn.com.qmth.stmms.common.enums.ExamType;
+import cn.com.qmth.stmms.common.enums.LockType;
+import cn.com.qmth.stmms.common.enums.LogType;
+import cn.com.qmth.stmms.common.enums.MarkMode;
+import cn.com.qmth.stmms.common.enums.MarkStatus;
+import cn.com.qmth.stmms.common.enums.ScorePolicy;
+import cn.com.qmth.stmms.common.enums.SubjectiveStatus;
+import cn.com.qmth.stmms.common.enums.ThirdPolicy;
 import cn.com.qmth.stmms.common.utils.RequestUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import net.sf.json.JSONArray;
-import net.sf.json.JSONObject;
 import net.sf.json.JsonConfig;
 
 @Api(tags = "分组管理")
@@ -114,7 +138,6 @@ public class MarkGroupController extends BaseApiController {
     @RequestMapping(value = "query", method = RequestMethod.POST)
     @ResponseBody
     public List<MarkGroup> query(@RequestParam String subjectCode) {
-        ApiUser wu = getApiUser();
         int examId = getSessionExamId();
         ExamSubject subject = subjectService.find(examId, subjectCode);
         if (subject == null) {
@@ -167,27 +190,34 @@ public class MarkGroupController extends BaseApiController {
         return list;
     }
 
+    @SuppressWarnings("unchecked")
     @ApiOperation(value = "新增分组")
     @Logging(menu = "新增大题", type = LogType.ADD)
     @RequestMapping(value = "/insert", method = RequestMethod.POST)
     @Transactional
     @ResponseBody
-    public ResultMessage insert(@RequestParam String subjectCode, @RequestParam Integer number,
-            @RequestParam Integer[] questionIds, @RequestParam String picList,
-            @RequestParam(required = false) Double doubleRate,
-            @RequestParam(required = false) Double arbitrateThreshold,
-            @RequestParam(required = false) Integer thirdPolicy, @RequestParam(required = false) Integer scorePolicy,
-            @RequestParam(required = false) String arbitrateThresholdList,
-            @RequestParam(required = false) Integer arbitrateType, @RequestParam(required = false) String markMode,
-            @RequestParam(required = false) Integer trialCount,
-            @RequestParam(required = false, defaultValue = "false") boolean sheetView,
-            @RequestParam(defaultValue = "false") boolean enableAllZero) {
+    public ResultMessage insert(@Valid @RequestBody MarkGroupAdd req) {
+        String subjectCode = req.getSubjectCode();
+        Integer number = req.getNumber();
+        List<Integer> questionIds = req.getQuestionIds();
+        String picList = req.getPicList();
+        Double doubleRate = req.getDoubleRate();
+        Double arbitrateThreshold = req.getArbitrateThreshold();
+        Integer thirdPolicy = req.getThirdPolicy();
+        Integer scorePolicy = req.getScorePolicy();
+        String arbitrateThresholdList = req.getArbitrateThresholdList();
+        Integer arbitrateType = req.getArbitrateType();
+        String markMode = req.getMarkMode();
+        Integer trialCount = req.getTrialCount();
+        boolean sheetView = req.getSheetView() == null ? false : req.getSheetView();
+        boolean enableAllZero = req.getEnableAllZero() == null ? false : req.getEnableAllZero();
+
         int examId = getSessionExamId();
         Exam exam = examService.findById(examId);
         MarkGroup group = groupService.findOne(examId, subjectCode, number);
         if (group != null) {
             throw new StatusException("评卷分组序号不能重复");
-        } else if (questionIds == null || questionIds.length <= 0) {
+        } else if (questionIds == null || questionIds.size() <= 0) {
             throw new StatusException("题目不能为空");
         } else {
             try {
@@ -203,8 +233,8 @@ public class MarkGroupController extends BaseApiController {
                 BigDecimal totalScore = BigDecimal.ZERO;
                 boolean selective = false;
                 List<Double> arbitrateThresholds = buildDoubleList(arbitrateThresholdList);
-                for (int i = 0; i < questionIds.length; i++) {
-                    Integer questionId = questionIds[i];
+                for (int i = 0; i < questionIds.size(); i++) {
+                    Integer questionId = questionIds.get(i);
                     ExamQuestion question = questionService.findById(questionId);
                     question.setGroupNumber(number);
                     if (doubleRate != null && doubleRate > 0
@@ -245,24 +275,29 @@ public class MarkGroupController extends BaseApiController {
         return resultOk();
     }
 
+    @SuppressWarnings("unchecked")
     @ApiOperation(value = "分组修改")
     @Logging(menu = "分组修改", type = LogType.UPDATE)
     @RequestMapping(value = "/update", method = RequestMethod.POST)
     @Transactional
     @ResponseBody
-    public ResultMessage update(HttpServletRequest request, @RequestParam String subjectCode,
-            @RequestParam Integer number, @RequestParam Boolean reset, @RequestParam(required = false) String picList,
-            @RequestParam(required = false) Double doubleRate,
-            @RequestParam(required = false) Double arbitrateThreshold,
-            @RequestParam(required = false) Integer thirdPolicy, @RequestParam(required = false) Integer scorePolicy,
-            @RequestParam(required = false) Integer arbitrateType, @RequestParam(required = false) MarkMode markMode,
-            @RequestParam(required = false) Integer trialCount,
-            @RequestParam(required = false, defaultValue = "false") Boolean sheetView,
-            @RequestParam(required = false, defaultValue = "false") Boolean enableAllZero,
-            @RequestParam(required = false) Integer[] questionIds,
-            @RequestParam(required = false) String intervalScoreList,
-            @RequestParam(required = false) String arbitrateThresholdList,
-            @RequestParam(required = false) String deleteCode) {
+    public ResultMessage update(@Valid @RequestBody MarkGroupUpdate req) {
+        String subjectCode = req.getSubjectCode();
+        Integer number = req.getNumber();
+        List<Integer> questionIds = req.getQuestionIds();
+        String picList = req.getPicList();
+        Double doubleRate = req.getDoubleRate();
+        Double arbitrateThreshold = req.getArbitrateThreshold();
+        Integer thirdPolicy = req.getThirdPolicy();
+        Integer scorePolicy = req.getScorePolicy();
+        String arbitrateThresholdList = req.getArbitrateThresholdList();
+        Integer arbitrateType = req.getArbitrateType();
+        MarkMode markMode = req.getMarkMode();
+        Boolean sheetView = req.getSheetView() == null ? false : req.getSheetView();
+        Boolean enableAllZero = req.getEnableAllZero() == null ? false : req.getEnableAllZero();
+        String intervalScoreList = req.getIntervalScoreList();
+        String deleteCode = req.getDeleteCode();
+        Boolean reset = req.getReset();
         int examId = getSessionExamId();
         Exam exam = examService.findById(examId);
         MarkGroup group = groupService.findOne(examId, subjectCode, number);
@@ -284,8 +319,8 @@ public class MarkGroupController extends BaseApiController {
                     }
                     List<Double> arbitrateThresholds = buildDoubleList(arbitrateThresholdList);
                     boolean selective = false;
-                    for (int i = 0; i < questionIds.length; i++) {
-                        ExamQuestion question = questionService.findById(questionIds[i]);
+                    for (int i = 0; i < questionIds.size(); i++) {
+                        ExamQuestion question = questionService.findById(questionIds.get(i));
                         if (doubleRate != null && doubleRate > 0 && ArbitrateType.QUESTION.equals(at)) {
                             question.setArbitrateThreshold(arbitrateThresholds.get(i));
                         } else {
@@ -305,7 +340,7 @@ public class MarkGroupController extends BaseApiController {
                             lockService.waitlock(LockType.GROUP, true, group.getExamId(), group.getSubjectCode(),
                                     group.getNumber());
                             markService.updateGroup(group, questionList, policy, at, third, selective);
-                            RequestUtils.setLog(request, "重置分组,科目代码:" + subjectCode + " 分组号:" + number);
+                            RequestUtils.setLog("重置分组,科目代码:" + subjectCode + " 分组号:" + number);
                         } catch (Exception e) {
                             log.error("update group error", e);
                             throw new StatusException("重置更新大题失败" + e.getMessage());
@@ -545,11 +580,11 @@ public class MarkGroupController extends BaseApiController {
     @Logging(menu = "大题关闭", type = LogType.QUERY)
     @RequestMapping(value = "/finish", method = RequestMethod.POST)
     @ResponseBody
-    public ResultMessage finish(@RequestParam String subjectCode, @RequestParam Integer[] groupNumbers) {
+    public ResultMessage finish(@Valid @RequestBody MarkGroupFinish req) {
         int examId = getSessionExamId();
         String messages = "";
-        for (Integer number : groupNumbers) {
-            MarkGroup group = groupService.findOne(examId, subjectCode, number);
+        for (Integer number : req.getGroupNumbers()) {
+            MarkGroup group = groupService.findOne(examId, req.getSubjectCode(), number);
             if (group == null || group.getStatus() == MarkStatus.FINISH) {
                 continue;
             }
@@ -558,7 +593,8 @@ public class MarkGroupController extends BaseApiController {
                 if (group.getStatus() == MarkStatus.FORMAL && group.getLeftCount() == 0
                         && selectiveStudentDao.countByExamIdAndSubjectCodeAndLessSelectiveOrNotSelective(
                                 group.getExamId(), group.getSubjectCode(), true, true) == 0) {
-                    groupService.updateStatus(examId, subjectCode, number, MarkStatus.FINISH, group.getStatus());
+                    groupService.updateStatus(examId, req.getSubjectCode(), number, MarkStatus.FINISH,
+                            group.getStatus());
                 } else {
                     messages = "评卷未完成或选做题异常,无法关闭分组";
                 }
@@ -579,7 +615,6 @@ public class MarkGroupController extends BaseApiController {
     public ResultMessage updateTrialCount(@RequestParam String subjectCode, @RequestParam Integer trialCount) {
         int examId = getSessionExamId();
         ExamSubject subject = subjectService.find(examId, subjectCode);
-        JSONObject obj = new JSONObject();
         if (subject == null) {
             throw new StatusException("科目不能为空");
         }
@@ -599,7 +634,7 @@ public class MarkGroupController extends BaseApiController {
     @RequestMapping(value = "/marker/list", method = RequestMethod.POST)
     @ResponseBody
     public List<MarkerGroupVo> groupQuery(HttpServletRequest request, @RequestParam Integer examId,
-                                          @RequestParam String subjectCode) {
+            @RequestParam String subjectCode) {
         User user = getApiUser().getUser();
         List<Marker> list = markerService.findByExamAndSubjectAndUserIdAndEnable(examId, subjectCode, user.getId(),
                 true);
@@ -610,11 +645,12 @@ public class MarkGroupController extends BaseApiController {
                     marker.getSubjectCode(), false, group.getNumber()));
             if (group.getStatus() != MarkStatus.FINISH) {
                 MarkerGroupVo vo = new MarkerGroupVo();
-                vo.setId( marker.getId());
+                vo.setId(marker.getId());
                 vo.setTitle(group.getTitle());
                 vo.setGroupNumber(group.getNumber());
-                int percent = group.getLibraryCount() > 0 ? (int) (group.getMarkedCount() * 100.00 / group
-                        .getLibraryCount()) : 0;
+                int percent = group.getLibraryCount() > 0
+                        ? (int) (group.getMarkedCount() * 100.00 / group.getLibraryCount())
+                        : 0;
                 if (group.getMarkedCount() > 0 && percent == 0) {
                     percent = 1;
                 } else if (group.getLeftCount() > 0 && percent == 100) {
@@ -630,15 +666,16 @@ public class MarkGroupController extends BaseApiController {
     @ApiOperation(value = "获取评卷分组评卷区配置")
     @RequestMapping(value = "/sliceConfig", method = RequestMethod.POST)
     @ResponseBody
-    public PictureConfigVo sliceConfig(@RequestParam Integer examId,@RequestParam String subejctCode,@RequestParam Integer groupNumber) {
+    public PictureConfigVo sliceConfig(@RequestParam Integer examId, @RequestParam String subejctCode,
+            @RequestParam Integer groupNumber) {
         PictureConfigVo vo = new PictureConfigVo();
-        MarkGroup group = groupService.findOne(examId,subejctCode,groupNumber);
+        MarkGroup group = groupService.findOne(examId, subejctCode, groupNumber);
         if (group == null) {
             throw new StatusException("分组不存在");
         }
         List<PictureConfigItem> list = PictureConfigItem.parse(group.getPicList());
         vo.setPictureConfigItemList(list);
-        Integer sliceCount = studentService.findMaxSliceCountByExamIdAndSubjectCode(examId,subejctCode);
+        Integer sliceCount = studentService.findMaxSliceCountByExamIdAndSubjectCode(examId, subejctCode);
         ExamStudentSearchQuery query = new ExamStudentSearchQuery();
         query.setExamId(examId);
         query.setUpload(true);
@@ -646,10 +683,11 @@ public class MarkGroupController extends BaseApiController {
         List<ExamStudent> examStudents = studentService.findByQuery(query).getResult();
         if (examStudents.size() > 0) {
             ExamStudent student = examStudents.get(0);
-            List<String> sliceUrl= fileService.getSheetUris(student.getExamId(), student.getExamNumber(), 1, sliceCount);
+            List<String> sliceUrl = fileService.getSheetUris(student.getExamId(), student.getExamNumber(), 1,
+                    sliceCount);
             vo.setStudentUrl(sliceUrl);
             return vo;
-        }else{
+        } else {
             throw new StatusException("没有已上传的考生");
         }
     }

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

@@ -1,7 +1,11 @@
 package cn.com.qmth.stmms.api.controller.admin;
 
 import java.text.DecimalFormat;
-import java.util.*;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 import javax.servlet.http.HttpServletResponse;
 
@@ -10,9 +14,9 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 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.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 
 import com.qmth.boot.core.collection.PageResult;
@@ -28,7 +32,11 @@ import cn.com.qmth.stmms.biz.exam.dao.SelectiveStudentDao;
 import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
 import cn.com.qmth.stmms.biz.exam.model.MarkGroup;
 import cn.com.qmth.stmms.biz.exam.model.Marker;
-import cn.com.qmth.stmms.biz.exam.service.*;
+import cn.com.qmth.stmms.biz.exam.service.ExamQuestionService;
+import cn.com.qmth.stmms.biz.exam.service.ExamStudentService;
+import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
+import cn.com.qmth.stmms.biz.exam.service.MarkGroupService;
+import cn.com.qmth.stmms.biz.exam.service.MarkerService;
 import cn.com.qmth.stmms.biz.exam.service.query.ExamSubjectSearchQuery;
 import cn.com.qmth.stmms.biz.lock.LockService;
 import cn.com.qmth.stmms.biz.mark.query.MarkLibrarySearchQuery;
@@ -243,7 +251,7 @@ public class MarkInfoController extends BaseApiController {
     @Logging(menu = "大题关闭", type = LogType.UPDATE)
     @RequestMapping(value = "/finish", method = RequestMethod.POST)
     @ResponseBody
-    public ResultMessage finish(@RequestParam String[] codes) {
+    public ResultMessage finish(@RequestBody String[] codes) {
         int examId = getSessionExamId();
         String messages = "";
         for (String code : codes) {

+ 24 - 18
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/admin/MarkerController.java

@@ -9,6 +9,7 @@ import java.util.Map;
 import java.util.Set;
 
 import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
 
 import org.apache.commons.lang.StringEscapeUtils;
 import org.apache.commons.lang.StringUtils;
@@ -19,6 +20,7 @@ import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.core.task.AsyncTaskExecutor;
 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.RequestParam;
@@ -27,10 +29,16 @@ import org.springframework.web.multipart.MultipartFile;
 
 import com.google.common.collect.Lists;
 import com.qmth.boot.core.collection.PageResult;
+import com.qmth.boot.core.exception.StatusException;
 
 import cn.com.qmth.stmms.admin.thread.MarkerResetThread;
 import cn.com.qmth.stmms.api.controller.BaseApiController;
 import cn.com.qmth.stmms.biz.config.service.impl.SystemCache;
+import cn.com.qmth.stmms.biz.exam.bean.BatchResetPass;
+import cn.com.qmth.stmms.biz.exam.bean.BatchToggle;
+import cn.com.qmth.stmms.biz.exam.bean.BatchUpdateTaskCount;
+import cn.com.qmth.stmms.biz.exam.bean.ClassAdd;
+import cn.com.qmth.stmms.biz.exam.bean.MarkerAdd;
 import cn.com.qmth.stmms.biz.exam.bean.MarkerVo;
 import cn.com.qmth.stmms.biz.exam.bean.ResultMessage;
 import cn.com.qmth.stmms.biz.exam.model.Exam;
@@ -44,7 +52,6 @@ import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
 import cn.com.qmth.stmms.biz.exam.service.MarkGroupService;
 import cn.com.qmth.stmms.biz.exam.service.MarkerClassService;
 import cn.com.qmth.stmms.biz.exam.service.MarkerService;
-import com.qmth.boot.core.exception.StatusException;
 import cn.com.qmth.stmms.biz.lock.LockService;
 import cn.com.qmth.stmms.biz.mark.service.MarkLibraryService;
 import cn.com.qmth.stmms.biz.mark.service.MarkService;
@@ -210,7 +217,7 @@ public class MarkerController extends BaseApiController {
     @RequestMapping(value = "release", method = RequestMethod.POST)
     @ResponseBody
     @RoleRequire({ Role.SCHOOL_ADMIN, Role.SUBJECT_HEADER, Role.COLLEGE_ADMIN })
-    public ResultMessage release(@RequestParam Integer[] ids) {
+    public ResultMessage release(@RequestBody List<Integer> ids) {
         for (Integer id : ids) {
             Marker marker = markerService.findById(id);
             if (marker != null) {
@@ -266,11 +273,11 @@ public class MarkerController extends BaseApiController {
     @RequestMapping(value = "toggle", method = RequestMethod.POST)
     @ResponseBody
     @RoleRequire({ Role.SCHOOL_ADMIN, Role.SUBJECT_HEADER, Role.COLLEGE_ADMIN })
-    public ResultMessage toggle(@RequestParam Integer[] ids, @RequestParam Boolean enable) {
-        for (Integer id : ids) {
+    public ResultMessage toggle(@Valid @RequestBody BatchToggle req) {
+        for (Integer id : req.getIds()) {
             Marker marker = markerService.findById(id);
             if (marker != null) {
-                marker.setEnable(enable);
+                marker.setEnable(req.getEnable());
                 markerService.save(marker);
             }
         }
@@ -281,14 +288,14 @@ public class MarkerController extends BaseApiController {
     @Logging(menu = "评卷员重置密码", type = LogType.UPDATE)
     @RequestMapping(value = "reset-password", method = RequestMethod.POST)
     @ResponseBody
-    public ResultMessage reSetPassword(@RequestParam Integer[] ids, @RequestParam String password) {
-        for (Integer id : ids) {
+    public ResultMessage reSetPassword(@Valid @RequestBody BatchResetPass req) {
+        for (Integer id : req.getIds()) {
             Marker marker = markerService.findById(id);
             User user = userService.findById(marker.getUserId());
             if (user == null) {
                 continue;
             }
-            password = StringEscapeUtils.unescapeHtml(password);
+            String password = StringEscapeUtils.unescapeHtml(req.getPassword());
             user.setPassword(EncryptUtils.md5(password));
             user.setRandomPassword(null);
             user = userService.save(user);
@@ -300,11 +307,11 @@ public class MarkerController extends BaseApiController {
     @Logging(menu = "评卷员设置任务数量", type = LogType.UPDATE)
     @RequestMapping(value = "set-task-count", method = RequestMethod.POST)
     @ResponseBody
-    public ResultMessage setTaskCount(@RequestParam Integer[] ids, @RequestParam Integer taskCount) {
-        for (Integer id : ids) {
+    public ResultMessage setTaskCount(@Valid @RequestBody BatchUpdateTaskCount req) {
+        for (Integer id : req.getIds()) {
             Marker marker = markerService.findById(id);
             if (marker != null) {
-                marker.setTopCount(taskCount);
+                marker.setTopCount(req.getTaskCount());
                 marker = markerService.save(marker);
             }
         }
@@ -455,12 +462,11 @@ public class MarkerController extends BaseApiController {
     @ApiOperation(value = "评卷员绑定")
     @Logging(menu = "评卷员绑定", type = LogType.ADD)
     @RequestMapping(value = "add", method = RequestMethod.POST)
-    public ResultMessage add(@RequestParam String subjectCode, @RequestParam Integer groupNumber,
-            @RequestParam Integer[] userIds) {
+    public ResultMessage add(@Valid @RequestBody MarkerAdd req) {
         int examId = getSessionExamId();
-        MarkGroup group = groupService.findOne(examId, subjectCode, groupNumber);
+        MarkGroup group = groupService.findOne(examId, req.getSubjectCode(), req.getGroupNumber());
         if (group != null) {
-            markerService.save(group, userIds);
+            markerService.save(group, req.getUserIds());
             return resultOk();
         } else {
             throw new StatusException("科目分组不存在");
@@ -518,10 +524,10 @@ public class MarkerController extends BaseApiController {
     @Logging(menu = "评卷员班级绑定", type = LogType.UPDATE)
     @ResponseBody
     @RequestMapping(value = "class/add", method = RequestMethod.POST)
-    public ResultMessage classSave(@RequestParam Integer markerId, @RequestParam(required = false) String[] classes) {
-        Marker marker = markerService.findById(markerId);
+    public ResultMessage classSave(@Valid @RequestBody ClassAdd req) {
+        Marker marker = markerService.findById(req.getMarkerId());
         if (marker != null) {
-            classService.save(marker.getUserId(), marker.getExamId(), classes);
+            classService.save(marker.getUserId(), marker.getExamId(), req.getClasses());
             return resultOk();
         } else {
             throw new StatusException("评卷员不存在");

+ 11 - 20
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/admin/OperationLogController.java

@@ -1,21 +1,11 @@
 package cn.com.qmth.stmms.api.controller.admin;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.servlet.http.HttpServletResponse;
 
-import cn.com.qmth.stmms.admin.dto.OperationLogDTO;
-import cn.com.qmth.stmms.admin.dto.ProblemHistoryDTO;
-import cn.com.qmth.stmms.biz.exam.model.Exam;
-import cn.com.qmth.stmms.biz.exam.model.ExamStudent;
-import cn.com.qmth.stmms.biz.mark.model.ProblemHistory;
-import cn.com.qmth.stmms.biz.mark.model.ProblemType;
-import cn.com.qmth.stmms.biz.mark.query.ProblemHistorySearchQuery;
-import cn.com.qmth.stmms.biz.user.model.User;
-import cn.com.qmth.stmms.common.annotation.Logging;
-import cn.com.qmth.stmms.common.enums.HistoryStatus;
-import cn.com.qmth.stmms.common.utils.DateUtils;
-import cn.com.qmth.stmms.common.utils.ExportExcel;
-import com.qmth.boot.core.exception.StatusException;
-import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -25,20 +15,21 @@ import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.ResponseBody;
 
 import com.qmth.boot.core.collection.PageResult;
+import com.qmth.boot.core.exception.StatusException;
 
+import cn.com.qmth.stmms.admin.dto.OperationLogDTO;
 import cn.com.qmth.stmms.api.controller.BaseApiController;
 import cn.com.qmth.stmms.biz.exam.model.OperationLog;
 import cn.com.qmth.stmms.biz.exam.query.OperationLogSearchQuery;
-import cn.com.qmth.stmms.biz.exam.service.ExamService;
 import cn.com.qmth.stmms.biz.exam.service.OperationLogService;
 import cn.com.qmth.stmms.biz.utils.PageUtil;
+import cn.com.qmth.stmms.common.annotation.Logging;
 import cn.com.qmth.stmms.common.domain.ApiUser;
 import cn.com.qmth.stmms.common.enums.LogType;
+import cn.com.qmth.stmms.common.utils.ExportExcel;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
-import javax.servlet.http.HttpServletResponse;
-
 @Api(tags = "操作日志")
 @Controller("adminOperationLogController")
 @RequestMapping("/api/admin/operation/log")
@@ -50,7 +41,7 @@ public class OperationLogController extends BaseApiController {
     private OperationLogService logService;
 
     @ApiOperation(value = "日志列表")
-//    @Logging(menu = "日志查询", type = LogType.QUERY)
+    // @Logging(menu = "日志查询", type = LogType.QUERY)
     @RequestMapping(value = "query", method = RequestMethod.POST)
     @ResponseBody
     public PageResult<OperationLog> query(OperationLogSearchQuery query) {
@@ -92,7 +83,7 @@ public class OperationLogController extends BaseApiController {
         } catch (Exception e) {
             log.error(e.getMessage());
             e.printStackTrace();
-            throw new StatusException("导出日志数据失败!"+e.getMessage());
+            throw new StatusException("导出日志数据失败!" + e.getMessage());
         }
     }
 

+ 12 - 18
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/admin/ProblemHistoryController.java

@@ -7,19 +7,17 @@ import java.util.Map;
 
 import javax.servlet.http.HttpServletResponse;
 
-import cn.com.qmth.stmms.biz.exam.bean.ProblemHistoryVo;
-import cn.com.qmth.stmms.biz.utils.PageUtil;
-import com.qmth.boot.core.collection.PageResult;
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 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.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 
+import com.qmth.boot.core.collection.PageResult;
 import com.qmth.boot.core.exception.StatusException;
 
 import cn.com.qmth.stmms.admin.dto.ProblemHistoryDTO;
@@ -27,10 +25,8 @@ import cn.com.qmth.stmms.api.controller.BaseApiController;
 import cn.com.qmth.stmms.biz.exam.bean.ResultMessage;
 import cn.com.qmth.stmms.biz.exam.model.Exam;
 import cn.com.qmth.stmms.biz.exam.model.ExamStudent;
-import cn.com.qmth.stmms.biz.exam.service.ExamQuestionService;
 import cn.com.qmth.stmms.biz.exam.service.ExamService;
 import cn.com.qmth.stmms.biz.exam.service.ExamStudentService;
-import cn.com.qmth.stmms.biz.exam.service.MarkGroupService;
 import cn.com.qmth.stmms.biz.lock.LockService;
 import cn.com.qmth.stmms.biz.mark.model.MarkLibrary;
 import cn.com.qmth.stmms.biz.mark.model.ProblemHistory;
@@ -42,6 +38,7 @@ import cn.com.qmth.stmms.biz.mark.service.ProblemHistoryService;
 import cn.com.qmth.stmms.biz.mark.service.ProblemTypeService;
 import cn.com.qmth.stmms.biz.user.model.User;
 import cn.com.qmth.stmms.biz.user.service.UserService;
+import cn.com.qmth.stmms.biz.utils.PageUtil;
 import cn.com.qmth.stmms.common.annotation.Logging;
 import cn.com.qmth.stmms.common.domain.ApiUser;
 import cn.com.qmth.stmms.common.enums.HistoryStatus;
@@ -64,21 +61,18 @@ public class ProblemHistoryController extends BaseApiController {
     public static HistoryStatus[] STATUS_LIST = { HistoryStatus.WAITING, HistoryStatus.BACK };
 
     private static final String DEFAULT_SECRET_NUMBER = "***";
+
     @Autowired
     private ProblemTypeService problemService;
 
     @Autowired
     private ProblemHistoryService historyService;
+
     private ExamService examService;
 
-    @Autowired
-    private MarkGroupService groupService;
     @Autowired
     private ExamStudentService studentService;
 
-    @Autowired
-    private ExamQuestionService questionService;
-
     @Autowired
     private UserService userService;
 
@@ -122,11 +116,11 @@ public class ProblemHistoryController extends BaseApiController {
             dto.setSubjectName(student.getSubjectName());
             dto.setStatus(query.getStatus().getName());
             dto.setGroupNumber(history.getGroupNumber());
-            if(user.isSubjectHeader() && exam.isForbiddenInfo()){
+            if (user.isSubjectHeader() && exam.isForbiddenInfo()) {
                 dto.setExamNumber(DEFAULT_SECRET_NUMBER);
                 dto.setSecretNumber(DEFAULT_SECRET_NUMBER);
                 dto.setName(DEFAULT_SECRET_NUMBER);
-            }else{
+            } else {
                 dto.setExamNumber(student.getExamNumber());
                 dto.setSecretNumber(student.getSecretNumber());
                 dto.setName(student.getName());
@@ -151,7 +145,7 @@ public class ProblemHistoryController extends BaseApiController {
     @Logging(menu = "问题卷重置", type = LogType.UPDATE)
     @RequestMapping(value = "/restBatch", method = RequestMethod.POST)
     @ResponseBody
-    public ResultMessage save(@RequestParam Integer[] libraryIds) {
+    public ResultMessage save(@RequestBody Integer[] libraryIds) {
         ApiUser wu = RequestUtils.getApiUser();
         for (Integer libraryId : libraryIds) {
             MarkLibrary library = libraryService.findById(libraryId);
@@ -181,7 +175,7 @@ public class ProblemHistoryController extends BaseApiController {
     @Logging(menu = "导出问题卷", type = LogType.EXPORT)
     @RequestMapping(value = "/export", method = RequestMethod.POST)
     @ResponseBody
-    public void exportFile(ProblemHistorySearchQuery query,HttpServletResponse response) {
+    public void exportFile(ProblemHistorySearchQuery query, HttpServletResponse response) {
         try {
             String fileName = "问题卷数据.xlsx";
             ApiUser user = getApiUser();
@@ -212,11 +206,11 @@ public class ProblemHistoryController extends BaseApiController {
                 dto.setSubjectName(student.getSubjectName());
                 dto.setStatus(query.getStatus().getName());
                 dto.setGroupNumber(history.getGroupNumber());
-                if(user.isSubjectHeader() && exam.isForbiddenInfo()){
+                if (user.isSubjectHeader() && exam.isForbiddenInfo()) {
                     dto.setExamNumber(DEFAULT_SECRET_NUMBER);
                     dto.setSecretNumber(DEFAULT_SECRET_NUMBER);
                     dto.setName(DEFAULT_SECRET_NUMBER);
-                }else{
+                } else {
                     dto.setExamNumber(student.getExamNumber());
                     dto.setSecretNumber(student.getSecretNumber());
                     dto.setName(student.getName());
@@ -238,7 +232,7 @@ public class ProblemHistoryController extends BaseApiController {
         } catch (Exception e) {
             log.error(e.getMessage());
             e.printStackTrace();
-            throw new StatusException("导出问题卷数据失败!"+e.getMessage());
+            throw new StatusException("导出问题卷数据失败!" + e.getMessage());
         }
     }
 

+ 20 - 9
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/admin/QuestionController.java

@@ -1,12 +1,15 @@
 package cn.com.qmth.stmms.api.controller.admin;
 
 import java.math.BigDecimal;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
 
 import javax.servlet.http.HttpServletRequest;
 
-import cn.com.qmth.stmms.biz.exam.bean.ResultMessage;
-import io.swagger.annotations.Api;
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -23,19 +26,30 @@ import com.qmth.boot.core.exception.StatusException;
 
 import cn.com.qmth.stmms.admin.thread.QuestionDeleteThread;
 import cn.com.qmth.stmms.api.controller.BaseApiController;
+import cn.com.qmth.stmms.biz.exam.bean.ResultMessage;
 import cn.com.qmth.stmms.biz.exam.model.ExamQuestion;
 import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
 import cn.com.qmth.stmms.biz.exam.model.MarkGroup;
 import cn.com.qmth.stmms.biz.exam.model.SelectiveGroup;
-import cn.com.qmth.stmms.biz.exam.service.*;
+import cn.com.qmth.stmms.biz.exam.service.ExamQuestionService;
+import cn.com.qmth.stmms.biz.exam.service.ExamStudentService;
+import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
+import cn.com.qmth.stmms.biz.exam.service.InspectHistoryService;
+import cn.com.qmth.stmms.biz.exam.service.MarkGroupService;
+import cn.com.qmth.stmms.biz.exam.service.MarkerService;
+import cn.com.qmth.stmms.biz.exam.service.SelectiveGroupService;
 import cn.com.qmth.stmms.biz.exam.service.query.ExamQuestionSearchQuery;
 import cn.com.qmth.stmms.biz.lock.LockService;
 import cn.com.qmth.stmms.biz.mark.service.MarkService;
 import cn.com.qmth.stmms.common.annotation.Logging;
-import cn.com.qmth.stmms.common.enums.*;
+import cn.com.qmth.stmms.common.enums.LockType;
+import cn.com.qmth.stmms.common.enums.LogType;
+import cn.com.qmth.stmms.common.enums.ObjectivePolicy;
+import cn.com.qmth.stmms.common.enums.QuestionType;
+import cn.com.qmth.stmms.common.enums.SubjectiveStatus;
 import cn.com.qmth.stmms.common.utils.RequestUtils;
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import net.sf.json.JSONObject;
 
 @Api(tags = "题目管理")
 @Controller("adminQuestionController")
@@ -52,9 +66,6 @@ public class QuestionController extends BaseApiController {
     @Autowired
     private ExamSubjectService subjectService;
 
-    @Autowired
-    private ExamService examService;
-
     @Autowired
     private ExamQuestionService questionService;
 

+ 40 - 31
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/admin/ReportController.java

@@ -4,7 +4,11 @@ import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.util.*;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 import javax.servlet.http.HttpServletResponse;
 
@@ -30,16 +34,29 @@ import cn.com.qmth.stmms.api.controller.BaseApiController;
 import cn.com.qmth.stmms.biz.exam.bean.ResultMessage;
 import cn.com.qmth.stmms.biz.exam.model.Exam;
 import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
-import cn.com.qmth.stmms.biz.exam.service.ExamQuestionService;
 import cn.com.qmth.stmms.biz.exam.service.ExamService;
 import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
-import cn.com.qmth.stmms.biz.exam.service.MarkGroupService;
 import cn.com.qmth.stmms.biz.file.enums.FormatType;
 import cn.com.qmth.stmms.biz.file.service.FileService;
 import cn.com.qmth.stmms.biz.lock.LockService;
-import cn.com.qmth.stmms.biz.report.model.*;
+import cn.com.qmth.stmms.biz.report.model.ReportSubject;
+import cn.com.qmth.stmms.biz.report.model.ReportSubjectClass;
+import cn.com.qmth.stmms.biz.report.model.ReportSubjectCollege;
+import cn.com.qmth.stmms.biz.report.model.ReportSubjectGroup;
+import cn.com.qmth.stmms.biz.report.model.ReportSubjectQuestion;
+import cn.com.qmth.stmms.biz.report.model.ReportSubjectRange;
+import cn.com.qmth.stmms.biz.report.model.ReportSubjectTeacher;
+import cn.com.qmth.stmms.biz.report.model.ReportSubjectTeacherClass;
 import cn.com.qmth.stmms.biz.report.query.ReportSubjectQuery;
-import cn.com.qmth.stmms.biz.report.service.*;
+import cn.com.qmth.stmms.biz.report.service.ReportService;
+import cn.com.qmth.stmms.biz.report.service.ReportSubjectClassService;
+import cn.com.qmth.stmms.biz.report.service.ReportSubjectCollegeService;
+import cn.com.qmth.stmms.biz.report.service.ReportSubjectGroupService;
+import cn.com.qmth.stmms.biz.report.service.ReportSubjectQuestionService;
+import cn.com.qmth.stmms.biz.report.service.ReportSubjectRangeService;
+import cn.com.qmth.stmms.biz.report.service.ReportSubjectService;
+import cn.com.qmth.stmms.biz.report.service.ReportSubjectTeacherClassService;
+import cn.com.qmth.stmms.biz.report.service.ReportSubjectTeacherService;
 import cn.com.qmth.stmms.biz.utils.PageUtil;
 import cn.com.qmth.stmms.common.annotation.Logging;
 import cn.com.qmth.stmms.common.domain.ApiUser;
@@ -125,7 +142,7 @@ public class ReportController extends BaseApiController {
 
     @ApiOperation(value = "总量分析导出")
     @Logging(menu = "课程总量统计导出", type = LogType.EXPORT)
-    @RequestMapping(value="/subject/export", method = RequestMethod.POST)
+    @RequestMapping(value = "/subject/export", method = RequestMethod.POST)
     public void subjectExport(ReportSubjectQuery query, HttpServletResponse response) {
         ApiUser wu = getApiUser();
         int examId = getSessionExamId();
@@ -155,12 +172,10 @@ public class ReportController extends BaseApiController {
 
     @ApiOperation(value = "分段统计")
     @Logging(menu = "课程分段统计", type = LogType.QUERY)
-    @RequestMapping(value="/range", method = RequestMethod.POST)
+    @RequestMapping(value = "/range", method = RequestMethod.POST)
     @ResponseBody
     public JSONArray rangeList(ReportSubjectQuery query) {
-        ApiUser wu = getApiUser();
         int examId = getSessionExamId();
-        List<ExamSubject> sList = getExamSubject(examId, wu);
         if (StringUtils.isBlank(query.getSubjectCode()) || query.getRange() == null) {
             throw new StatusException("请选择科目和分数间隔");
         }
@@ -184,7 +199,7 @@ public class ReportController extends BaseApiController {
 
     @ApiOperation(value = "课程统计导出")
     @Logging(menu = "课程统计导出", type = LogType.EXPORT)
-    @RequestMapping(value="/range/export", method = RequestMethod.POST)
+    @RequestMapping(value = "/range/export", method = RequestMethod.POST)
     public void rangeExport(ReportSubjectQuery query, HttpServletResponse response,
             @RequestParam(required = false) Boolean all) {
         int examId = getSessionExamId();
@@ -245,7 +260,7 @@ public class ReportController extends BaseApiController {
 
     @ApiOperation(value = "成绩分析计算")
     @Logging(menu = "科目成绩分析计算", type = LogType.UPDATE)
-    @RequestMapping(value="/calculate", method = RequestMethod.POST)
+    @RequestMapping(value = "/calculate", method = RequestMethod.POST)
     @ResponseBody
     public ResultMessage calculate(@RequestParam String subjectCode, @RequestParam Boolean objective) {
         int examId = getSessionExamId();
@@ -323,10 +338,9 @@ public class ReportController extends BaseApiController {
 
     @ApiOperation(value = "课程学院分析")
     @Logging(menu = "课程学院分析", type = LogType.QUERY)
-    @RequestMapping(value="/college", method = RequestMethod.POST)
+    @RequestMapping(value = "/college", method = RequestMethod.POST)
     @ResponseBody
     public PageResult<ReportSubjectCollege> collegeList(ReportSubjectQuery query) {
-        ApiUser wu = getApiUser();
         int examId = getSessionExamId();
         query.setExamId(examId);
         query.setPageNumber(1);
@@ -345,7 +359,7 @@ public class ReportController extends BaseApiController {
 
     @ApiOperation(value = "课程学院分析导出")
     @Logging(menu = "课程学院分析导出", type = LogType.EXPORT)
-    @RequestMapping(value="/college/export", method = RequestMethod.POST)
+    @RequestMapping(value = "/college/export", method = RequestMethod.POST)
     public void collegeExport(ReportSubjectQuery query, HttpServletResponse response) {
         int examId = getSessionExamId();
         query.setExamId(examId);
@@ -370,10 +384,9 @@ public class ReportController extends BaseApiController {
 
     @ApiOperation(value = "课程大题分析")
     @Logging(menu = "课程大题分析", type = LogType.QUERY)
-    @RequestMapping(value="/group", method = RequestMethod.POST)
+    @RequestMapping(value = "/group", method = RequestMethod.POST)
     @ResponseBody
     public PageResult<ReportSubjectGroup> group(ReportSubjectQuery query) {
-        ApiUser wu = getApiUser();
         int examId = getSessionExamId();
         query.setExamId(examId);
         query.setPageNumber(1);
@@ -393,7 +406,7 @@ public class ReportController extends BaseApiController {
 
     @ApiOperation(value = "课程大题分析导出")
     @Logging(menu = "课程大题分析导出", type = LogType.EXPORT)
-    @RequestMapping(value="/group/export", method = RequestMethod.POST)
+    @RequestMapping(value = "/group/export", method = RequestMethod.POST)
     public void groupExport(ReportSubjectQuery query, HttpServletResponse response) {
         int examId = getSessionExamId();
         query.setExamId(examId);
@@ -418,10 +431,9 @@ public class ReportController extends BaseApiController {
 
     @ApiOperation(value = "课程小题分析")
     @Logging(menu = "课程小题分析", type = LogType.QUERY)
-    @RequestMapping(value="/question", method = RequestMethod.POST)
+    @RequestMapping(value = "/question", method = RequestMethod.POST)
     @ResponseBody
     public PageResult<ReportSubjectQuestion> questionList(ReportSubjectQuery query) {
-        ApiUser wu = getApiUser();
         int examId = getSessionExamId();
         query.setExamId(examId);
         query.setPageNumber(1);
@@ -441,7 +453,7 @@ public class ReportController extends BaseApiController {
 
     @ApiOperation(value = "课程小题分析导出")
     @Logging(menu = "课程小题分析导出", type = LogType.EXPORT)
-    @RequestMapping(value="/question/export", method = RequestMethod.POST)
+    @RequestMapping(value = "/question/export", method = RequestMethod.POST)
     public void questionExport(ReportSubjectQuery query, HttpServletResponse response) {
         int examId = getSessionExamId();
         query.setExamId(examId);
@@ -467,10 +479,9 @@ public class ReportController extends BaseApiController {
 
     @ApiOperation(value = "班级分析")
     @Logging(menu = "课程班级分析", type = LogType.QUERY)
-    @RequestMapping(value="/class", method = RequestMethod.POST)
+    @RequestMapping(value = "/class", method = RequestMethod.POST)
     @ResponseBody
     public PageResult<ReportSubjectClass> classList(ReportSubjectQuery query) {
-        ApiUser wu = getApiUser();
         int examId = getSessionExamId();
         query.setExamId(examId);
         query.setPageNumber(1);
@@ -489,7 +500,7 @@ public class ReportController extends BaseApiController {
 
     @ApiOperation(value = "班级分析导出")
     @Logging(menu = "课程班级分析导出", type = LogType.EXPORT)
-    @RequestMapping(value="/class/export", method = RequestMethod.POST)
+    @RequestMapping(value = "/class/export", method = RequestMethod.POST)
     public void classExport(ReportSubjectQuery query, HttpServletResponse response) {
         int examId = getSessionExamId();
         query.setExamId(examId);
@@ -513,10 +524,9 @@ public class ReportController extends BaseApiController {
 
     @ApiOperation(value = "课程老师分析")
     @Logging(menu = "课程老师分析", type = LogType.QUERY)
-    @RequestMapping(value="/teacher", method = RequestMethod.POST)
+    @RequestMapping(value = "/teacher", method = RequestMethod.POST)
     @ResponseBody
     public PageResult<ReportSubjectTeacher> teacherList(ReportSubjectQuery query) {
-        ApiUser wu = getApiUser();
         int examId = getSessionExamId();
         query.setExamId(examId);
         query.setPageNumber(1);
@@ -537,7 +547,7 @@ public class ReportController extends BaseApiController {
 
     @ApiOperation(value = "课程老师分析导出")
     @Logging(menu = "课程老师分析导出", type = LogType.EXPORT)
-    @RequestMapping(value="/teacher/export", method = RequestMethod.POST)
+    @RequestMapping(value = "/teacher/export", method = RequestMethod.POST)
     public void export(ReportSubjectQuery query, HttpServletResponse response) {
         int examId = getSessionExamId();
         query.setExamId(examId);
@@ -565,18 +575,17 @@ public class ReportController extends BaseApiController {
 
     @ApiOperation(value = "课程教师班级分析")
     @Logging(menu = "课程教师班级分析", type = LogType.QUERY)
-    @RequestMapping(value="/teacher/class", method = RequestMethod.POST)
+    @RequestMapping(value = "/teacher/class", method = RequestMethod.POST)
     @ResponseBody
     public PageResult<ReportSubjectTeacherClass> teacherClassList(ReportSubjectQuery query) {
-        ApiUser wu = getApiUser();
         int examId = getSessionExamId();
         query.setExamId(examId);
         query.setPageNumber(1);
         query.setPageSize(Integer.MAX_VALUE);
-        if (StringUtils.isBlank(query.getSubjectCode())){
+        if (StringUtils.isBlank(query.getSubjectCode())) {
             throw new StatusException("请先选择科目");
         }
-        if(StringUtils.isBlank(query.getTeacherName())) {
+        if (StringUtils.isBlank(query.getTeacherName())) {
             throw new StatusException("请先选择教师");
         }
         List<ReportSubjectTeacherClass> list = reportSubjectTeacherClassService.findByQuery(query);
@@ -592,7 +601,7 @@ public class ReportController extends BaseApiController {
 
     @ApiOperation(value = "课程教师班级分析导出")
     @Logging(menu = "课程教师班级分析导出", type = LogType.EXPORT)
-    @RequestMapping(value="/teacher/class/export", method = RequestMethod.POST)
+    @RequestMapping(value = "/teacher/class/export", method = RequestMethod.POST)
     public void teacherClassExport(ReportSubjectQuery query, HttpServletResponse response) {
         int examId = getSessionExamId();
         query.setExamId(examId);

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

@@ -8,8 +8,6 @@ import java.util.stream.Collectors;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -18,7 +16,6 @@ import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
 import com.qmth.boot.core.collection.PageResult;
 import com.qmth.boot.core.exception.StatusException;
@@ -38,6 +35,8 @@ import cn.com.qmth.stmms.biz.utils.PageUtil;
 import cn.com.qmth.stmms.common.annotation.Logging;
 import cn.com.qmth.stmms.common.enums.LogType;
 import cn.com.qmth.stmms.common.utils.ExportExcel;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 
 @Api(tags = "扫描管理")
 @Controller("adminScanController")
@@ -148,7 +147,7 @@ public class ScanController extends BaseApiController {
 
     @ApiOperation(value = "扫描进度-按考点查询")
     @Logging(menu = "扫描进度-按考点查询", type = LogType.QUERY)
-    @RequestMapping(value="/examSite", method = RequestMethod.POST)
+    @RequestMapping(value = "/examSite", method = RequestMethod.POST)
     @ResponseBody
     public PageResult<ScanInfoVO> examSite(HttpServletRequest request, ExamStudentSearchQuery query) {
         int examId = getSessionExamId(request);

+ 14 - 3
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/admin/SelectiveGroupController.java

@@ -1,6 +1,12 @@
 package cn.com.qmth.stmms.api.controller.admin;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 import org.apache.commons.lang.StringEscapeUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -26,11 +32,16 @@ import cn.com.qmth.stmms.biz.exam.model.ExamQuestion;
 import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
 import cn.com.qmth.stmms.biz.exam.model.MarkGroup;
 import cn.com.qmth.stmms.biz.exam.model.SelectiveGroup;
-import cn.com.qmth.stmms.biz.exam.service.*;
+import cn.com.qmth.stmms.biz.exam.service.ExamQuestionService;
+import cn.com.qmth.stmms.biz.exam.service.ExamStudentService;
+import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
+import cn.com.qmth.stmms.biz.exam.service.InspectedService;
+import cn.com.qmth.stmms.biz.exam.service.MarkGroupService;
+import cn.com.qmth.stmms.biz.exam.service.MarkerService;
+import cn.com.qmth.stmms.biz.exam.service.SelectiveGroupService;
 import cn.com.qmth.stmms.biz.lock.LockService;
 import cn.com.qmth.stmms.biz.mark.service.MarkService;
 import cn.com.qmth.stmms.common.annotation.Logging;
-import cn.com.qmth.stmms.common.domain.ApiUser;
 import cn.com.qmth.stmms.common.enums.LockType;
 import cn.com.qmth.stmms.common.enums.LogType;
 import cn.com.qmth.stmms.common.enums.ScorePolicy;

+ 29 - 10
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/admin/SubjectController.java

@@ -19,10 +19,6 @@ import java.util.Set;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import cn.com.qmth.stmms.biz.exam.model.*;
-import cn.com.qmth.stmms.biz.exam.service.*;
-import cn.com.qmth.stmms.common.enums.*;
-import net.sf.json.JSONArray;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang.StringUtils;
@@ -62,6 +58,22 @@ import cn.com.qmth.stmms.biz.common.domain.card.CardFile;
 import cn.com.qmth.stmms.biz.exam.bean.ExamVo;
 import cn.com.qmth.stmms.biz.exam.bean.ResultMessage;
 import cn.com.qmth.stmms.biz.exam.bean.SubjectSplit;
+import cn.com.qmth.stmms.biz.exam.model.AnswerCard;
+import cn.com.qmth.stmms.biz.exam.model.Exam;
+import cn.com.qmth.stmms.biz.exam.model.ExamQuestion;
+import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
+import cn.com.qmth.stmms.biz.exam.model.MarkGroup;
+import cn.com.qmth.stmms.biz.exam.model.Marker;
+import cn.com.qmth.stmms.biz.exam.model.SelectiveGroup;
+import cn.com.qmth.stmms.biz.exam.service.AnswerCardService;
+import cn.com.qmth.stmms.biz.exam.service.ExamQuestionService;
+import cn.com.qmth.stmms.biz.exam.service.ExamService;
+import cn.com.qmth.stmms.biz.exam.service.ExamStudentService;
+import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
+import cn.com.qmth.stmms.biz.exam.service.InspectHistoryService;
+import cn.com.qmth.stmms.biz.exam.service.MarkGroupService;
+import cn.com.qmth.stmms.biz.exam.service.MarkerService;
+import cn.com.qmth.stmms.biz.exam.service.SelectiveGroupService;
 import cn.com.qmth.stmms.biz.exam.service.query.ExamQuestionSearchQuery;
 import cn.com.qmth.stmms.biz.exam.service.query.ExamSubjectSearchQuery;
 import cn.com.qmth.stmms.biz.file.enums.FormatType;
@@ -71,6 +83,13 @@ import cn.com.qmth.stmms.biz.report.service.ReportService;
 import cn.com.qmth.stmms.biz.utils.PageUtil;
 import cn.com.qmth.stmms.common.annotation.Logging;
 import cn.com.qmth.stmms.common.domain.ApiUser;
+import cn.com.qmth.stmms.common.enums.CardSource;
+import cn.com.qmth.stmms.common.enums.ExamStatus;
+import cn.com.qmth.stmms.common.enums.LockType;
+import cn.com.qmth.stmms.common.enums.LogType;
+import cn.com.qmth.stmms.common.enums.MarkStatus;
+import cn.com.qmth.stmms.common.enums.ObjectiveStatus;
+import cn.com.qmth.stmms.common.enums.SubjectiveStatus;
 import cn.com.qmth.stmms.common.utils.ExportExcel;
 import cn.com.qmth.stmms.common.utils.ImportExcel;
 import cn.com.qmth.stmms.common.utils.RequestUtils;
@@ -129,6 +148,7 @@ public class SubjectController extends BaseApiController {
 
     @Autowired
     private InspectHistoryService inspectHistoryService;
+
     @Autowired
     private MarkerService markerService;
 
@@ -141,21 +161,20 @@ public class SubjectController extends BaseApiController {
     public List<ExamSubject> list() {
         int examId = getSessionExamId();
         ApiUser wu = getApiUser();
-        if(wu.isMarker()){
+        if (wu.isMarker()) {
             List<Marker> list = markerService.findByExamAndUserId(examId, wu.getUser().getId());
-            Map<String,ExamSubject> map = new HashMap<>();
-            JSONArray array = new JSONArray();
+            Map<String, ExamSubject> map = new HashMap<>();
             for (Marker marker : list) {
                 MarkGroup group = groupService.findOne(examId, marker.getSubjectCode(), marker.getGroupNumber());
-                if (map.get(marker.getSubjectCode())==null && marker.isEnable()
+                if (map.get(marker.getSubjectCode()) == null && marker.isEnable()
                         && group.getStatus() != MarkStatus.FINISH) {
                     ExamSubject subject = subjectService.find(marker.getExamId(), marker.getSubjectCode());
-                    map.put(marker.getSubjectCode(),subject);
+                    map.put(marker.getSubjectCode(), subject);
                 }
             }
             return new ArrayList<>(map.values());
         }
-        return getExamSubject(examId,wu);
+        return getExamSubject(examId, wu);
     }
 
     @ApiOperation(value = "科目层次下拉列表")

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

@@ -16,23 +16,21 @@ import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.ResponseBody;
 
 import com.qmth.boot.core.collection.PageResult;
+import com.qmth.boot.core.exception.StatusException;
 
 import cn.com.qmth.stmms.admin.vo.TrialMarkerVO;
 import cn.com.qmth.stmms.admin.vo.TrialQuestionVO;
 import cn.com.qmth.stmms.api.controller.BaseApiController;
-import cn.com.qmth.stmms.biz.config.service.impl.SystemCache;
 import cn.com.qmth.stmms.biz.exam.model.ExamQuestion;
 import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
 import cn.com.qmth.stmms.biz.exam.model.MarkGroup;
 import cn.com.qmth.stmms.biz.exam.model.Marker;
 import cn.com.qmth.stmms.biz.exam.query.MarkerSearchQuery;
-import cn.com.qmth.stmms.biz.exam.service.*;
-import com.qmth.boot.core.exception.StatusException;
-import cn.com.qmth.stmms.biz.file.service.FileService;
-import cn.com.qmth.stmms.biz.lock.LockService;
+import cn.com.qmth.stmms.biz.exam.service.ExamQuestionService;
+import cn.com.qmth.stmms.biz.exam.service.MarkGroupService;
+import cn.com.qmth.stmms.biz.exam.service.MarkerService;
 import cn.com.qmth.stmms.biz.mark.model.TrialLibrary;
 import cn.com.qmth.stmms.biz.mark.query.TrialLibrarySearchQuery;
-import cn.com.qmth.stmms.biz.mark.service.MarkService;
 import cn.com.qmth.stmms.biz.mark.service.TrialService;
 import cn.com.qmth.stmms.biz.user.model.User;
 import cn.com.qmth.stmms.biz.user.service.UserService;
@@ -52,39 +50,21 @@ public class TrialController extends BaseApiController {
 
     protected static Logger log = LoggerFactory.getLogger(TrialController.class);
 
-    @Autowired
-    private ExamStudentService studentService;
-
     @Autowired
     private MarkGroupService groupService;
 
     @Autowired
     private TrialService trialService;
 
-    @Autowired
-    private MarkService markService;
-
     @Autowired
     private MarkerService markerService;
 
-    @Autowired
-    private LockService lockService;
-
     @Autowired
     private ExamQuestionService questionService;
 
-    @Autowired
-    private ExamService examService;
-
     @Autowired
     private UserService userService;
 
-    @Autowired
-    private FileService fileService;
-
-    @Autowired
-    private SystemCache systemCache;
-
     public static final String UN_SELECTIVE_SCORE = "-1";
 
     @ApiOperation(value = "试评任务查询")

+ 15 - 9
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/admin/UserController.java

@@ -13,6 +13,7 @@ import java.util.Set;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
 
 import org.apache.commons.io.output.ByteArrayOutputStream;
 import org.apache.commons.lang.StringEscapeUtils;
@@ -21,6 +22,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 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.RequestParam;
@@ -37,6 +39,9 @@ import cn.com.qmth.stmms.api.controller.BaseApiController;
 import cn.com.qmth.stmms.biz.config.model.SystemAuth;
 import cn.com.qmth.stmms.biz.config.service.SystemAuthService;
 import cn.com.qmth.stmms.biz.exam.bean.AddStudentInfo;
+import cn.com.qmth.stmms.biz.exam.bean.BatchResetPass;
+import cn.com.qmth.stmms.biz.exam.bean.BatchToggle;
+import cn.com.qmth.stmms.biz.exam.bean.ExportColsSave;
 import cn.com.qmth.stmms.biz.exam.bean.ResultMessage;
 import cn.com.qmth.stmms.biz.exam.bean.UserStudentVo;
 import cn.com.qmth.stmms.biz.exam.enums.ExportColsType;
@@ -151,8 +156,10 @@ public class UserController extends BaseApiController {
     @ApiOperation(value = "导出列表表头保存")
     @RequestMapping(value = "export/cols/save", method = RequestMethod.POST)
     @ResponseBody
-    public ResultMessage exportColsSave(@RequestParam ExportColsType type, @RequestParam Set<String> cols) {
+    public ResultMessage exportColsSave(@Valid @RequestBody ExportColsSave req) {
         ApiUser user = getApiUser();
+        ExportColsType type = req.getType();
+        Set<String> cols = req.getCols();
         if (ExportColsType.STUDENT.equals(type)) {
             userService.updateStudentCols(user.getId(), cols);
         } else if (ExportColsType.SCORE.equals(type)) {
@@ -581,15 +588,14 @@ public class UserController extends BaseApiController {
     @Logging(menu = "用户启用/禁用", type = LogType.UPDATE)
     @RequestMapping(value = "/enable", method = RequestMethod.POST)
     @ResponseBody
-    public ResultMessage toggle(HttpServletRequest request, @RequestParam List<Integer> ids,
-            @RequestParam Boolean enable) {
-        for (Integer id : ids) {
+    public ResultMessage toggle(@Valid @RequestBody BatchToggle req) {
+        for (Integer id : req.getIds()) {
             User user = userService.findById(id);
             if (user == null) {
                 continue;
             }
-            user.setEnable(enable);
-            markerService.updateEnableByUserId(id, enable);
+            user.setEnable(req.getEnable());
+            markerService.updateEnableByUserId(id, req.getEnable());
             userService.save(user);
         }
         return resultOk();
@@ -599,13 +605,13 @@ public class UserController extends BaseApiController {
     @Logging(menu = "用户重置密码", type = LogType.UPDATE)
     @RequestMapping(value = "/resetPwd", method = RequestMethod.POST)
     @ResponseBody
-    public ResultMessage reSetPassword(@RequestParam Integer[] ids, @RequestParam String password) {
-        for (Integer id : ids) {
+    public ResultMessage reSetPassword(@Valid @RequestBody BatchResetPass req) {
+        for (Integer id : req.getIds()) {
             User user = userService.findById(id);
             if (user == null || UserSource.EXTERNAL.equals(user.getSource())) {
                 continue;
             }
-            password = StringEscapeUtils.unescapeHtml(password);
+            String password = StringEscapeUtils.unescapeHtml(req.getPassword());
             user.setPassword(EncryptUtils.md5(password));
             user.setRandomPassword(null);
             user = userService.save(user);