Pārlūkot izejas kodu

测试bug修复

xiaof 4 gadi atpakaļ
vecāks
revīzija
cce0b1d2a3

+ 9 - 6
stmms-ms-accesscontrol/src/main/java/cn/com/qmth/stmms/ms/accesscontrol/api/AuthApi.java

@@ -16,6 +16,7 @@ import java.util.Objects;
  * Created by zhengmin on 2016/11/1.
  */
 @RestController
+@RequestMapping("/api")
 public class AuthApi {
 
     @Autowired
@@ -24,10 +25,11 @@ public class AuthApi {
     @Autowired
     private MarkUserRepo markUserRepo;
 
-    @RequestMapping(value = "login", method = RequestMethod.POST)
-    public MarkUser login(@RequestBody MarkUser user, HttpServletRequest request) {
+    @RequestMapping(value = "/login", method = RequestMethod.POST)
+    public MarkUser login(MarkUser user, HttpServletRequest request) {
         MarkUser domain = null;
 
+
         if (loginConfig.adminLoginConfig().getLoginName().equals(user.getLoginName()) &&
                 loginConfig.adminLoginConfig().getPassword().equals(user.getPassword())) {
             domain = new MarkUser(loginConfig.adminLoginConfig().getLoginName(), loginConfig.adminLoginConfig().getPassword(), null, null, "系统管理员", Role.ADMIN, null);
@@ -36,10 +38,11 @@ public class AuthApi {
 //                loginConfig.clientLoginConfig().getPassword().equals(user.getPassword())) {
 //            domain = new MarkUser(loginConfig.clientLoginConfig().getLoginName(), loginConfig.clientLoginConfig().getPassword(), null, null, "系统管理员", Role.ADMIN, null);
 //        }
-        else if (loginConfig.inspectionLoginConfig().getLoginName().equals(user.getLoginName()) &&
-                loginConfig.inspectionLoginConfig().getPassword().equals(user.getPassword())) {
-            domain = new MarkUser(loginConfig.inspectionLoginConfig().getLoginName(), loginConfig.inspectionLoginConfig().getPassword(), null, null, "纪检员", Role.INSPECTION, null);
-        } else {
+//        else if (loginConfig.inspectionLoginConfig().getLoginName().equals(user.getLoginName()) &&
+//                loginConfig.inspectionLoginConfig().getPassword().equals(user.getPassword())) {
+//            domain = new MarkUser(loginConfig.inspectionLoginConfig().getLoginName(), loginConfig.inspectionLoginConfig().getPassword(), null, null, "纪检员", Role.INSPECTION, null);
+//        }
+        else {
 //            Work activeWork = workRepo.findByActiveTrue();
 //            String loginName = activeWork.getId() + "-" + user.getLoginName();
 //            domain = markUserRepo.findByLoginName(loginName);

+ 2 - 1
stmms-ms-accesscontrol/src/main/java/cn/com/qmth/stmms/ms/accesscontrol/config/AccessConfig.java

@@ -31,6 +31,7 @@ public class AccessConfig extends WebMvcConfigurerAdapter {
     @Override
     public void addInterceptors(InterceptorRegistry registry) {
         registry.addInterceptor(loginInterceptor()).addPathPatterns("/api/**").excludePathPatterns("/api/admin/users/login","/api/login","/api/logout","/api/*/password",
-                "/api/user/login", "/api/user/getClientUser", "/api/exam/students", "/api/upload/student/*", "/api/file/image/**", "/api/marklog/saveCollectLog", "/api/file/ms-slice/**", "/api/subject/collect-config", "/api/file/ms-sheet/**", "/api/oss/**");
+                "/api/user/login", "/api/user/getClientUser", "/api/exam/students", "/api/upload/student/*", "/api/file/image/**", "/api/marklog/saveCollectLog",
+                "/api/file/ms-slice/**", "/api/subject/collect-config", "/api/file/ms-sheet/**", "/api/oss/**", "/api/exam/listStudents/*", "/api/exam/getStudent/*","/api/level/*");
     }
 }

+ 35 - 0
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/api/ParamApi.java

@@ -1,7 +1,12 @@
 package cn.com.qmth.stmms.ms.admin.api;
 
+import cn.com.qmth.stmms.ms.core.domain.MarkSubject;
 import cn.com.qmth.stmms.ms.core.domain.Paper;
 import cn.com.qmth.stmms.ms.core.domain.ParamSetting;
+import cn.com.qmth.stmms.ms.core.domain.enums.TrialEnum;
+import cn.com.qmth.stmms.ms.core.domain.task.MarkTask;
+import cn.com.qmth.stmms.ms.core.repository.MarkSubjectRepo;
+import cn.com.qmth.stmms.ms.core.repository.MarkTaskRepo;
 import cn.com.qmth.stmms.ms.core.repository.PaperRepo;
 import cn.com.qmth.stmms.ms.core.repository.ParamSettingRepo;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -13,6 +18,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 全局参数
@@ -27,6 +33,12 @@ public class ParamApi {
     @Autowired
     private PaperRepo paperRepo;
 
+    @Autowired
+    private MarkSubjectRepo markSubjectRepo;
+
+    @Autowired
+    private MarkTaskRepo markTaskRepo;
+
     /**
      * 查询
      *
@@ -93,9 +105,21 @@ public class ParamApi {
                                            @RequestParam Integer majority,
                                            @RequestParam Integer cumulativeError,
                                            @RequestParam Integer levelShowAllPaper) {
+        List<MarkSubject> markSubjects = markSubjectRepo.findByWorkIdAndTestNot(workId, TrialEnum.DEFAULT.ordinal());
+        List<MarkTask> markTasks = markTaskRepo.findByWorkId(workId);
+        boolean flag = false;
+        if((markSubjects == null || markSubjects.size() == 0) && (markTasks != null && markTasks.size() > 0)){
+            flag = true;
+        }
 
         //保存分档参数
         ParamSetting paramSetting = paramSettingRepo.findByWorkId(workId);
+        if(flag && (!Objects.equals(deviation, paramSetting.getDeviation())
+                || !Objects.equals(autoCallback, paramSetting.getAutoCallback())
+                || !Objects.equals(majority, paramSetting.getMajority())
+                || !Objects.equals(cumulativeError, paramSetting.getCumulativeError()))){
+            throw new RuntimeException("该评卷工作已有评卷数据,不能修改");
+        }
         if (paramSetting == null) {
             paramSetting = ParamSetting.init();
         }
@@ -123,8 +147,19 @@ public class ParamApi {
                                            @RequestParam Integer roundUp,
                                            @RequestParam Integer changeStage,
                                            @RequestParam Integer scoreShowAllPaper) {
+        List<MarkSubject> markSubjects = markSubjectRepo.findByWorkIdAndTestNot(workId, TrialEnum.DEFAULT.ordinal());
+        List<MarkTask> markTasks = markTaskRepo.findByWorkId(workId);
+        boolean flag = false;
+        if((markSubjects == null || markSubjects.size() == 0) && (markTasks != null && markTasks.size() > 0)){
+            flag = true;
+        }
+
         //保存打分参数
         ParamSetting paramSetting = paramSettingRepo.findByWorkId(workId);
+        if(flag && (!Objects.equals(roundUp, paramSetting.getRoundUp())
+                || !Objects.equals(changeStage, paramSetting.getChangeStage()))){
+            throw new RuntimeException("该评卷工作已有评卷数据,不能修改");
+        }
         if (paramSetting == null) {
             paramSetting = ParamSetting.init();
         }

+ 2 - 0
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/MarkSubjectRepo.java

@@ -23,4 +23,6 @@ public interface MarkSubjectRepo extends JpaRepository<MarkSubject,String> {
      * @return
      */
     List<MarkSubject> findAllByWorkIdAndEnableTrue(Long workId);
+
+    List<MarkSubject> findByWorkIdAndTestNot(Long workId, int ordinal);
 }

+ 2 - 2
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/MarkTaskRepo.java

@@ -99,7 +99,7 @@ public interface MarkTaskRepo extends JpaRepository<MarkTask, Long>, JpaSpecific
      */
     @Query(value = "SELECT q.`id`,t.`marker_name` markerName,q.`name`,SUM(IF(t.`result` IS NULL,1,0)) leftCount,COUNT(t.question_id) totalCount, SUM(t.is_rejected) rejectedCount, q.area_code areaCode " +
             "FROM mark_task t LEFT OUTER JOIN exam_question q ON t.`question_id` = q.`id` LEFT  JOIN paper p ON t.paper_id = p.id WHERE " +
-            "t.work_id = ? and t.subject = ? and t.stage = ? and p.is_missing = false and p.is_test = ?  GROUP BY t.`question_id`, t.`marker_name` ORDER BY q.`id`", nativeQuery = true)
+            "t.work_id = ? and t.subject = ? and t.stage = ? and p.is_missing = false and p.is_test = ?  GROUP BY t.`marker_name` ORDER BY q.`id`", nativeQuery = true)
     List<Object[]> listGroupByQuestionAndMarker(Long workId, String name, Integer stageId, int test);
 
     /**
@@ -144,7 +144,7 @@ public interface MarkTaskRepo extends JpaRepository<MarkTask, Long>, JpaSpecific
      */
     @Query(value = "SELECT q.`id`,t.`marker_name` markerName,q.`name`,SUM(IF(t.`result` IS NULL,1,0)) leftCount,COUNT(t.question_id) totalCount,SUM(t.is_rejected) rejectedCount, q.area_code areaCode " +
             "FROM mark_task t LEFT OUTER JOIN exam_question q ON t.`question_id` = q.`id` LEFT  JOIN paper p ON t.paper_id = p.id WHERE " +
-            "t.work_id = ? and t.subject = ? and t.stage = ? and p.is_missing = false GROUP BY t.`question_id` ORDER BY q.`id`, t.`marker_name`", nativeQuery = true)
+            "t.work_id = ? and t.subject = ? and t.stage = ? and p.is_missing = false GROUP BY t.`marker_name` ORDER BY q.`id`, t.`marker_name`", nativeQuery = true)
     List<Object[]> listGroupByQuestionAndMarker(Long workId, String name, Integer stageId);
 
     /**

+ 2 - 0
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/PaperRepo.java

@@ -310,5 +310,7 @@ public interface PaperRepo extends JpaRepository<Paper, Long>, JpaSpecificationE
     @Query("select max(p.scoreBatchNo) from Paper p where p.questionId = ?1")
     Long findScoreBatchNoByQuestionId(Long questionId);
 
+    int countByWorkIdAndSubjectAndScoreNotNullAndIsMissingFalseAndActiveTrueAndTest(Long workId, Subject subject, int i);
+
 //    List<Paper> findByWorkIdAndSubjectAndInspectRange(Long workId, Subject subject, Long inspectRange);
 }

+ 3 - 3
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/specification/StudentSpecification.java

@@ -144,7 +144,7 @@ public class StudentSpecification extends PagingAndSortingSpecification {
             if (getWorkId() != null) {
                 predicates.add(cb.equal(root.get("workId"), getWorkId()));
             }
-            if (getAreaCode() != null) {
+            if (getAreaCode() != null && getAreaCode() != "") {
                 predicates.add(cb.equal(root.get("areaCode"), getAreaCode()));
             }
             if (getIsAbsent() != null) {
@@ -173,10 +173,10 @@ public class StudentSpecification extends PagingAndSortingSpecification {
                     predicates.add(cb.equal(root.get("uploadStatus"), "SX:1,SC:1,SM:1"));
                 }
             }
-            if (getSchool() != null) {
+            if (getSchool() != null && getSchool() != "") {
                 predicates.add(cb.equal(root.get("school"), getSchool()));
             }
-            if (getExamRoom() != null) {
+            if (getExamRoom() != null && getExamRoom() != "") {
                 predicates.add(cb.equal(root.get("examRoom"), getExamRoom()));
             }
             return cb.and(predicates.toArray(new Predicate[predicates.size()]));

+ 21 - 9
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/MakrerApi.java

@@ -214,6 +214,12 @@ public class MakrerApi {
                 o.setCount(count);
             }
         });
+        Collections.sort(levelStatDTOs, (o1, o2) -> {
+            if (o1.getId() == null || o2.getId() == null) {
+                return 1;
+            }
+            return o1.getId().toString().compareTo(o2.getId().toString());
+        });
         return levelStatDTOs;
     }
 
@@ -362,7 +368,7 @@ public class MakrerApi {
         MarkSubject markSubject = markSubjectRepo.findOne(workId + "-" + subject.toString());
 
         //总体进度
-        if(markSubject.getStage() == MarkStage.INIT){
+        if (markSubject.getStage().name() == MarkStage.INIT.name()) {
             List<Student> students = studentRepo.findByWorkIdAndTest(workId, String.valueOf(TrialEnum.DEFAULT.getId()));
             long stuTotalCount = students.stream().count();
             long stuAbsentCount = students.stream().filter(s -> s.isAbsent()).count();
@@ -371,8 +377,8 @@ public class MakrerApi {
                 String[] uploadStatus = student.getUploadStatus().split(",");
                 for (String s : uploadStatus) {
                     if ("1".equals(s.split(":")[1])) {
-                        if(subject.name().equals(s.split(":")[0])){
-                           ++c;
+                        if (subject.name().equals(s.split(":")[0])) {
+                            ++c;
                         }
                     }
                 }
@@ -381,13 +387,19 @@ public class MakrerApi {
             LevleProgressDTO progressDTO = new LevleProgressDTO();
             progressDTO.setSuccessCount((int) c);
             progressDTO.setTotalCount((int) stuTotalCount);
-            progressDTO.setWaitCount((int) (stuTotalCount-c));
-            BigDecimal progress = new BigDecimal(c*100).divide(new BigDecimal(stuTotalCount), 2, BigDecimal.ROUND_HALF_UP);
+            progressDTO.setWaitCount((int) (stuTotalCount - c));
+            BigDecimal progress = new BigDecimal(c * 100).divide(new BigDecimal(stuTotalCount), 2, BigDecimal.ROUND_HALF_UP);
             progressDTO.setProgress(progress.doubleValue());
             objectMap.put("totalProgress", progressDTO);
         } else {
             //已评任务数
-            int successCount = paperRepo.countByWorkIdAndSubjectAndLevelNotNullAndIsMissingFalseAndActiveTrueAndTest(workId, subject, 0);
+            int successCount = 0;
+            if (markSubject.getStage().name() == MarkStage.LEVEL.name()) {
+                successCount = paperRepo.countByWorkIdAndSubjectAndLevelNotNullAndIsMissingFalseAndActiveTrueAndTest(workId, subject, 0);
+            }
+            if (markSubject.getStage().name() == MarkStage.SCORE.name()) {
+                successCount = paperRepo.countByWorkIdAndSubjectAndScoreNotNullAndIsMissingFalseAndActiveTrueAndTest(workId, subject, 0);
+            }
             //所有任务数(查询所有有效试卷)
             int totalCount = paperRepo.countByWorkIdAndSubjectAndIsMissingFalseAndTest(workId, subject, 0);
 
@@ -406,7 +418,7 @@ public class MakrerApi {
 
         //考区进度
         List<Object[]> areas;
-        if (markSubject.getStage() == MarkStage.SCORE) {
+        if (markSubject.getStage().name() == MarkStage.SCORE.name()) {
             areas = markTaskRepo.listGroupByAreaName(workId, markSubject.getSubject().name());
         } else {
             areas = markTaskRepo.listGroupByAreaName(workId, markSubject.getSubject().name(), markSubject.getTest());
@@ -424,7 +436,7 @@ public class MakrerApi {
         List<MarkUser> markUser = markUserRepo.findByWorkIdAndSubjectAndRole(workId, subject, Role.MARK_LEADER);
         //仲裁数量
         int arbitrate = paperRepo.countByWorkIdAndSubjectAndIsArbitratedTrue(workId, subject);
-        if(markUser != null && markUser.size() >0){
+        if (markUser != null && markUser.size() > 0) {
             Map map = new HashMap();
             map.put("name", markUser.get(0).getName());
             map.put("arbitrated", arbitrate);
@@ -433,7 +445,7 @@ public class MakrerApi {
 
         //各评卷员评卷进度
         List<Object[]> qStats;
-        if (markSubject.getStage() == MarkStage.SCORE) {
+        if (markSubject.getStage().name() == MarkStage.SCORE.name()) {
             qStats = markTaskRepo.listGroupByQuestionAndMarker(workId, markSubject.getSubject().name(), markSubject.getStage().ordinal());
         } else {
             qStats = markTaskRepo.listGroupByQuestionAndMarker(workId, markSubject.getSubject().name(), markSubject.getStage().ordinal(), markSubject.getTest());

+ 7 - 4
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/MarkSubjectApi.java

@@ -21,10 +21,7 @@ import org.springframework.web.bind.annotation.*;
 import javax.servlet.http.HttpServletRequest;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -159,6 +156,12 @@ public class MarkSubjectApi {
                 o.setPercent(bd.doubleValue());
             }
         });
+        Collections.sort(levelStatDTOs, (o1, o2) -> {
+            if (o1.getId() == null || o2.getId() == null) {
+                return 1;
+            }
+            return o1.getId().toString().compareTo(o2.getId().toString());
+        });
         return levelStatDTOs;
     }
 

+ 1 - 1
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/MarkTaskApi.java

@@ -360,7 +360,7 @@ public class MarkTaskApi {
             levelDetailDTO.setDiffProp(diff.doubleValue());
             //累计数量
             int sumCount = (int) (list.stream().mapToInt(LevelDetailDTO::getLevelCount).sum() + count);
-            levelDetailDTO.setCumulateCount(sumCount + (int) count);
+            levelDetailDTO.setCumulateCount(sumCount);
             //累计占比
             BigDecimal cumulateProp = new BigDecimal(String.valueOf(sumCount * 100)).divide(new BigDecimal(String.valueOf(papers.size())), 2, BigDecimal.ROUND_HALF_UP);
             levelDetailDTO.setCumulateProp(cumulateProp.doubleValue());

+ 7 - 0
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/StageControlService.java

@@ -132,6 +132,13 @@ public class StageControlService {
             statusMap.put(markSubject.getId(), false);
             throw new RuntimeException("没有设定评卷员");
         }
+
+        List<MarkUser> markerLeader = markUserRepo.findByWorkIdAndSubjectAndRole(workId, subject, Role.MARK_LEADER);
+        if (markerLeader.size() == 0) {
+            statusMap.put(markSubject.getId(), false);
+            throw new RuntimeException("没有设定科组长");
+        }
+
         for (int i = 0; i < levels.size(); i++) {
             levels.get(i).setLevelValue(i);
         }