xiaof 5 жил өмнө
parent
commit
f6e1a91acf

+ 1 - 1
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/service/TrialService.java

@@ -79,7 +79,7 @@ public class TrialService {
         }
         //修改科目test
         markSubject.setTest(TrialEnum.START_FORMAL.getId());
-        markSubject.setFormal(true);
+//        markSubject.setFormal(true);
         markSubjectRepo.save(markSubject);
     }
 

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

@@ -105,8 +105,8 @@ public interface MarkTaskRepo extends JpaRepository<MarkTask, Long>, JpaSpecific
      */
     @Query(value = "SELECT q.`id`,q.`name`,SUM(IF(t.`result` IS NULL,1,0)),COUNT(t.question_id), q.area_code \n" +
             "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.`marker_id` = ? and t.stage = ? and p.is_missing = false  GROUP BY t.`question_id` ORDER BY q.`id`", nativeQuery = true)
-    List<Object[]> countGroupByQuestion(Long markerId, Integer stageId);
+            "t.`marker_id` = ? and t.stage = ? and p.is_missing = false and p.is_test = ?  GROUP BY t.`question_id` ORDER BY q.`id`", nativeQuery = true)
+    List<Object[]> countGroupByQuestion(Long markerId, Integer stageId, int test);
 
     /**
      * 统计评卷员指定试题的各档位数量

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

@@ -91,6 +91,30 @@ public interface PaperRepo extends JpaRepository<Paper, Long>, JpaSpecificationE
             "GROUP BY p.`level` ORDER BY p.`level`", nativeQuery = true)
     List<Object[]> countGroupByLevelAll(Long questionId);
 
+    /**
+     * 统计科目指定试题的各档位数量
+     *
+     * @param questionId
+     * @return
+     */
+    @Query(value = "select * from (SELECT p.`level`,COUNT(*)," +
+            "SUM(IF(p.`is_rejected` = 1, 1, 0))," +
+            "SUM(IF(p.`is_arbitrated` = 1, 1, 0))" +
+            "FROM paper p " +
+            "WHERE p.`question_id` = ? and p.is_missing = false " +
+            "AND p.batch_no = (select max(batch_no) from paper where question_id = ?) " +
+            " AND p.level is null  " +
+            " GROUP BY p.`level`  union  "+
+            "SELECT p.`level`,COUNT(*)," +
+            "SUM(IF(p.`is_rejected` = 1, 1, 0))," +
+            "SUM(IF(p.`is_arbitrated` = 1, 1, 0))" +
+            "FROM paper p " +
+            "WHERE p.`question_id` = ? and p.is_missing = false " +
+            " AND p.level  is not null  " +
+            " GROUP BY p.`level`) t ORDER BY t.`level`"
+            , nativeQuery = true)
+    List<Object[]> countGroupByLevelAllOther(Long questionId, Long questionId1, Long questionId2);
+
     /**
      * 统计workId各档位数量
      *

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

@@ -184,7 +184,7 @@ public class MakrerApi {
         List<QuestionStatDTO> questionStatDTOs = new ArrayList<>();
         List<Object[]> qStats = null;
         MarkSubject markSubject = markSubjectRepo.findOne(marker.getWorkId() + "-" + marker.getSubject().toString());
-        qStats = markTaskRepo.countGroupByQuestion(marker.getId(), markSubject.getStage().ordinal());
+        qStats = markTaskRepo.countGroupByQuestion(marker.getId(), markSubject.getStage().ordinal(), markSubject.getTest());
         if (qStats != null) {
             for (Object[] objects : qStats) {
                 QuestionStatDTO dto = questionStatAssembler.toDTO(objects);

+ 5 - 0
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/MarkSubjectApi.java

@@ -133,6 +133,11 @@ public class MarkSubjectApi {
                 .forEach(o -> {
                     levelStatDTOs.add(levelStatAssembler.toDTO(o));
                 });
+        //2019-11-12备用
+        /*paperRepo.countGroupByLevelAllOther(questionId, questionId, questionId)
+                .forEach(o -> {
+                    levelStatDTOs.add(levelStatAssembler.toDTO(o));
+                });*/
         List<Level> levels = levelRepo.findByWorkId(markSubject.getWorkId());
         for (Level level : levels) {
             long count = levelStatDTOs.stream().filter(l -> String.valueOf(l.getId()).equals(level.getCode())).count();

+ 4 - 0
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/PaperApi.java

@@ -169,11 +169,15 @@ public class PaperApi {
                             @RequestParam(required = false) Boolean arbi,
                             @RequestParam(required = false) Boolean reject,
                             Pageable pageable) {
+        //查询最大批次号
+//        long batchNo = paperRepo.findByQuestionId(questionId);
         Specification<Paper> specification = (root, query, builder) -> {
             List<Predicate> predicates = new ArrayList<>();
             predicates.add(builder.equal(root.get("questionId"), questionId));
             if (Objects.isNull(level)) {
                 predicates.add(builder.isNull(root.get("level")));
+                //查询当前批次号数据
+//                predicates.add(builder.equal(root.get("batchNo"), batchNo));
             } else {
                 predicates.add(builder.equal(root.get("level"), level));
             }

+ 6 - 2
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/StageControlService.java

@@ -102,6 +102,10 @@ public class StageControlService {
      * @param markSubject
      */
     private void enterLevelStage(MarkSubject markSubject, int taskCount) throws Exception {
+        //更新
+        markSubject.setFormal(true);
+        markSubjectRepo.saveAndFlush(markSubject);
+
         Long workId = markSubject.getWorkId();
         Subject subject = markSubject.getSubject();
         List<Level> levels = levelRepo.findByWorkId(workId);
@@ -267,13 +271,13 @@ public class StageControlService {
 
         BigDecimal waitTotal = BigDecimal.valueOf(totalCount).subtract(BigDecimal.valueOf(successCount));
         //进度
-        BigDecimal progress = BigDecimal.ZERO.compareTo(BigDecimal.valueOf(totalCount)) == 0 ? BigDecimal.ZERO : BigDecimal.valueOf(successCount).divide(BigDecimal.valueOf(totalCount), 4, BigDecimal.ROUND_HALF_UP);
+        BigDecimal progress = BigDecimal.ZERO.compareTo(BigDecimal.valueOf(totalCount)) == 0 ? BigDecimal.ZERO :BigDecimal.valueOf(successCount).multiply(BigDecimal.valueOf(100)).divide(BigDecimal.valueOf(totalCount), 2, BigDecimal.ROUND_HALF_UP);
 
         LevleProgressDTO progressDTO = new LevleProgressDTO();
         progressDTO.setSuccessCount(successCount);
         progressDTO.setTotalCount(totalCount);
         progressDTO.setWaitCount(waitTotal.intValue());
-        progressDTO.setProgress(progress.doubleValue() * 100);
+        progressDTO.setProgress(progress.doubleValue());
 
         return progressDTO;
     }