瀏覽代碼

线下版本-分档、打分优化-20201125

xiaof 4 年之前
父節點
當前提交
8567880b13

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

@@ -371,11 +371,14 @@ public interface PaperRepo extends JpaRepository<Paper, Long>, JpaSpecificationE
     @Query("select max(p.batchNo) from Paper p where p.workId = ?1 and p.subject = ?2")
     Long findMaxBatchNoByWorkIdAndSubject(Long workId, Subject subject);
 
+    @Query(value = "select cast(p.batch_no as char) from paper p where p.work_id = ?1 and p.subject = ?2 order by p.batch_no desc limit 1", nativeQuery = true)
+    List<Object> findBatchNoByWorkIdAndSubject(Long workId, String subject);
+
     @Query("select max(p.scoreBatchNo) from Paper p where p.workId = ?1 and p.subject = ?2")
     Long findMaxScoreBatchNoByWorkIdAndSubject(Long workId, Subject subject);
 
-    @Query(value = "select p.score_batch_no from paper p where p.work_id = ?1 and p.subject = ?2 order by score_batch_no desc limit 1", nativeQuery = true)
-    Long findScoreBatchNoByWorkIdAndSubject(Long workId, Subject subject);
+    @Query(value = "select cast(p.score_batch_no as char) from paper p where p.work_id = ?1 and p.subject = ?2 order by score_batch_no desc limit 1", nativeQuery = true)
+    List<Object> findScoreBatchNoByWorkIdAndSubject(Long workId, String subject);
 
     List<Paper> findByworkIdAndSubjectAndQuestionIdAndIsMissingAndTestAndLevelIsNull(Long workId, Subject valueOf, Long questionId, boolean b, int ordinal);
 

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

@@ -98,14 +98,23 @@ public class MarkTaskApi {
                             @RequestParam Long questionId,
                             @RequestParam(required = false) String areaCode,
                             Pageable pageable) throws Exception {
+        long t0 = System.currentTimeMillis();
         List<MarkTaskDTO> markTaskDTOs = new ArrayList<>();
         MarkUser markUser = markUserRepo.findOne(markerId);
         Long batchNo = null;
         Long scoreBatchNo = null;
         if (stage == MarkStage.LEVEL) {
-            batchNo = paperRepo.findMaxBatchNoByWorkIdAndSubject(workId, markUser.getSubject());
+            List<Object> batchNos = paperRepo.findBatchNoByWorkIdAndSubject(workId, markUser.getSubject().name());
+            if(batchNos !=null && batchNos.size() > 0){
+                Object object = batchNos.get(0);
+                batchNo = Long.valueOf(object.toString());
+            }
         } else if (stage == MarkStage.SCORE) {
-            scoreBatchNo = paperRepo.findMaxScoreBatchNoByWorkIdAndSubject(workId, markUser.getSubject());
+            List<Object> batchNos = paperRepo.findScoreBatchNoByWorkIdAndSubject(workId, markUser.getSubject().name());
+            if(batchNos !=null && batchNos.size() > 0){
+                Object object = batchNos.get(0);
+                scoreBatchNo = Long.valueOf(object.toString());
+            }
         }
         Long finalBatchNo = batchNo;
         Long finalScoreBatchNo = scoreBatchNo;
@@ -164,6 +173,7 @@ public class MarkTaskApi {
         Sort sort = new Sort("randomSeq", "randomSeqNew");
         Pageable pageable1 = new PageRequest(pageable.getPageNumber(), pageable.getPageSize(), sort);
         long t1 = System.currentTimeMillis();
+        System.out.println("m0:" + (t1 - t0));
         Page<MarkTask> markTasks = markTaskRepo.findAll(specification, pageable1);
         long t2 = System.currentTimeMillis();
         System.out.println("m1:" + (t2 - t1));
@@ -183,12 +193,9 @@ public class MarkTaskApi {
                 }
             }
         }
-        long t3 = System.currentTimeMillis();
         markTasks.getContent().forEach(m -> {
             markTaskDTOs.add(markTaskAssembler.toDTO(m));
         });
-        long t4 = System.currentTimeMillis();
-        System.out.println("m2:" + (t4 - t3));
         if (stage == MarkStage.SCORE && Objects.isNull(level)) {
 //            if (Objects.nonNull(scoreConfig) && Objects.nonNull(scoreConfig.getTaskSort()) && Objects.equals("paper", scoreConfig.getTaskSort())) {
 //                Collections.sort(markTaskDTOs, Comparator.comparing(MarkTaskDTO::getPaperId));