瀏覽代碼

测试bug修复-0820

xiaof 4 年之前
父節點
當前提交
4ab392c606

+ 11 - 11
stmms-ms-collect/src/main/java/cn/com/qmth/stmms/ms/collect/api/CollectApi.java

@@ -523,37 +523,37 @@ public class CollectApi {
         Subject subject = Subject.values()[subjectId - 1];
         Subject subject = Subject.values()[subjectId - 1];
 
 
         //保存原图
         //保存原图
-        String saveSheetPath = systemConfig.getSheetDir() + File.separator + workId + File.separator + subject
-                + File.separator + student.getAreaCode();
+//        String saveSheetPath = systemConfig.getSheetDir() + File.separator + workId + File.separator + subject
+//                + File.separator + student.getAreaCode();
         String savePath = systemConfig.getImageDir() + File.separator + workId + File.separator + subject
         String savePath = systemConfig.getImageDir() + File.separator + workId + File.separator + subject
                 + File.separator + student.getAreaCode();
                 + File.separator + student.getAreaCode();
         File imageOut = new File(savePath);
         File imageOut = new File(savePath);
         if (!imageOut.exists()) {
         if (!imageOut.exists()) {
             imageOut.mkdirs();
             imageOut.mkdirs();
         }
         }
-        File sheetOut = new File(saveSheetPath);
-        if (!sheetOut.exists()) {
-            sheetOut.mkdirs();
-        }
+//        File sheetOut = new File(saveSheetPath);
+//        if (!sheetOut.exists()) {
+//            sheetOut.mkdirs();
+//        }
         String fileName = student.getExamNumber();
         String fileName = student.getExamNumber();
         //0:随机码 1:考号
         //0:随机码 1:考号
         if (ParamCache.paramMap.get(student.getWorkId()).getNameRule() == 1) {
         if (ParamCache.paramMap.get(student.getWorkId()).getNameRule() == 1) {
 //            fileName = DigestUtils.md5Hex(subject.name() + fileName);
 //            fileName = DigestUtils.md5Hex(subject.name() + fileName);
             fileName = MD5Util.getImageRuleMd5(workId, subject.ordinal(), student.getAreaCode(), student.getExamNumber(), student.getId());
             fileName = MD5Util.getImageRuleMd5(workId, subject.ordinal(), student.getAreaCode(), student.getExamNumber(), student.getId());
         }
         }
-        File outSheetFile = new File(saveSheetPath + File.separator + fileName + ".jpg");
+//        File outSheetFile = new File(saveSheetPath + File.separator + fileName + ".jpg");
         File outImageFile = new File(savePath + File.separator + fileName + ".jpg");
         File outImageFile = new File(savePath + File.separator + fileName + ".jpg");
-        OutputStream outputSheetStream = new FileOutputStream(outSheetFile);
+//        OutputStream outputSheetStream = new FileOutputStream(outSheetFile);
         OutputStream outputImageStream = new FileOutputStream(outImageFile);
         OutputStream outputImageStream = new FileOutputStream(outImageFile);
         int index = 0;
         int index = 0;
         byte[] bytes = new byte[1024 * 8];
         byte[] bytes = new byte[1024 * 8];
         while ((index = inputStream.read(bytes)) != -1) {
         while ((index = inputStream.read(bytes)) != -1) {
-            outputSheetStream.write(bytes, 0, index);
+//            outputSheetStream.write(bytes, 0, index);
             outputImageStream.write(bytes, 0, index);
             outputImageStream.write(bytes, 0, index);
         }
         }
         inputStream.close();
         inputStream.close();
-        outputSheetStream.flush();
-        outputSheetStream.close();
+//        outputSheetStream.flush();
+//        outputSheetStream.close();
         outputImageStream.flush();
         outputImageStream.flush();
         outputImageStream.close();
         outputImageStream.close();
 
 

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

@@ -103,12 +103,13 @@ public interface MarkTaskRepo extends JpaRepository<MarkTask, Long>, JpaSpecific
      *
      *
      * @param name
      * @param name
      * @param stageId
      * @param stageId
+     * @param batchNo
      * @return
      * @return
      */
      */
-    @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 " +
+    @Query(value = "SELECT q.`id`,t.`marker_id` markerId,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 " +
             "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.marker_id, t.`marker_name` ORDER BY q.`id`,t.marker_id", nativeQuery = true)
-    List<Object[]> listGroupByQuestionAndMarker(Long workId, String name, Integer stageId, int test);
+            "t.work_id = ? and t.subject = ? and t.stage = ? and p.is_missing = false and p.is_test = ? and p.batch_no = ? GROUP BY t.marker_id, t.`marker_name` ORDER BY q.`id`,t.marker_id", nativeQuery = true)
+    List<Object[]> listGroupByQuestionAndMarkerAndBatchNo(Long workId, String name, Integer stageId, int test, Long batchNo);
 
 
     /**
     /**
      * 考区已评数及总数(分档阶段)
      * 考区已评数及总数(分档阶段)
@@ -150,10 +151,10 @@ public interface MarkTaskRepo extends JpaRepository<MarkTask, Long>, JpaSpecific
      *
      *
      * @return
      * @return
      */
      */
-    @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 " +
+    @Query(value = "SELECT q.`id`,t.`marker_id` markerId,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 " +
             "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.marker_id, t.`marker_name` ORDER BY q.`id`, t.`marker_id`", nativeQuery = true)
-    List<Object[]> listGroupByQuestionAndMarker(Long workId, String name, Integer stageId);
+            "t.work_id = ? and t.subject = ? and t.stage = ? and p.score_batch_no = ? and p.is_missing = false GROUP BY t.marker_id, t.`marker_name` ORDER BY q.`id`, t.`marker_id`", nativeQuery = true)
+    List<Object[]> listGroupByQuestionAndMarkerAndScoreBatchNo(Long workId, String name, Integer stageId, Long batchNo);
 
 
     /**
     /**
      * 统计指定试卷的所有任务数量
      * 统计指定试卷的所有任务数量
@@ -208,4 +209,6 @@ public interface MarkTaskRepo extends JpaRepository<MarkTask, Long>, JpaSpecific
 
 
     @Query(value = "SELECT count(1) from mark_task m inner join paper p on m.paper_id = p.id and p.is_missing = ?4 and p.batch_no is not null where m.question_id = ?1 and m.marker_id = ?2 and m.stage = ?3 and p.is_rejected = true  and m.is_rejected = true", nativeQuery = true)
     @Query(value = "SELECT count(1) from mark_task m inner join paper p on m.paper_id = p.id and p.is_missing = ?4 and p.batch_no is not null where m.question_id = ?1 and m.marker_id = ?2 and m.stage = ?3 and p.is_rejected = true  and m.is_rejected = true", nativeQuery = true)
     int countByQuestionIdAndMarkerIdAndStageAndIsRejectedTrueAndIsMissing(Long questionId, Long markerId, int ordinal,boolean isMissing);
     int countByQuestionIdAndMarkerIdAndStageAndIsRejectedTrueAndIsMissing(Long questionId, Long markerId, int ordinal,boolean isMissing);
+
+    List<MarkTask> findByWorkIdAndSubjectAndMarkerIdAndStage(Long workId, Subject subject, Long valueOf, MarkStage stage);
 }
 }

+ 7 - 1
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/PaperRepo.java

@@ -89,7 +89,7 @@ public interface PaperRepo extends JpaRepository<Paper, Long>, JpaSpecificationE
             "SUM(IF(p.`is_rejected` = 1, 1, 0))," +
             "SUM(IF(p.`is_rejected` = 1, 1, 0))," +
             "SUM(IF(p.`is_arbitrated` = 1, 1, 0))" +
             "SUM(IF(p.`is_arbitrated` = 1, 1, 0))" +
             "FROM paper p " +
             "FROM paper p " +
-            "WHERE p.`question_id` = ? and p.is_missing = false " +
+            "WHERE p.`question_id` = ? and p.is_missing = false and p.batch_no is not null " +
             "GROUP BY p.`level` ORDER BY p.`level`", nativeQuery = true)
             "GROUP BY p.`level` ORDER BY p.`level`", nativeQuery = true)
     List<Object[]> countGroupByLevel(Long questionId);
     List<Object[]> countGroupByLevel(Long questionId);
 
 
@@ -356,5 +356,11 @@ public interface PaperRepo extends JpaRepository<Paper, Long>, JpaSpecificationE
 
 
     List<Paper> findByWorkIdAndQuestionIdAndSubjectAndIsMissingFalseAndActiveTrueAndScoreBatchNoIsNull(Long workId, Long questionId0, Subject subject, Sort sort);
     List<Paper> findByWorkIdAndQuestionIdAndSubjectAndIsMissingFalseAndActiveTrueAndScoreBatchNoIsNull(Long workId, Long questionId0, Subject subject, Sort sort);
 
 
+    @Query("select max(p.batchNo) from Paper p where p.workId = ?1")
+    Long findMaxBatchNoByWorkId(Long workId);
+
+    @Query("select max(p.scoreBatchNo) from Paper p where p.workId = ?1")
+    Long findMaxScoreBatchNoByWorkId(Long workId);
+
 //    List<Paper> findByWorkIdAndSubjectAndInspectRange(Long workId, Subject subject, Long inspectRange);
 //    List<Paper> findByWorkIdAndSubjectAndInspectRange(Long workId, Subject subject, Long inspectRange);
 }
 }

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

@@ -157,7 +157,7 @@ public class MakrerApi {
             }
             }
         });
         });
         //当前考区各档位定档数量
         //当前考区各档位定档数量
-        paperRepo.countGroupByLevel(questionId, batchNo)
+        paperRepo.countGroupByLevel(questionId)
                 .forEach(o -> {
                 .forEach(o -> {
                     LevelStatDTO levelStatDTO = levelStatAssembler.toDTO(o);
                     LevelStatDTO levelStatDTO = levelStatAssembler.toDTO(o);
                     levelStatDTO.setGcount(levelStatDTO.getCount());
                     levelStatDTO.setGcount(levelStatDTO.getCount());
@@ -464,10 +464,13 @@ public class MakrerApi {
 
 
         //各评卷员评卷进度
         //各评卷员评卷进度
         List<Object[]> qStats;
         List<Object[]> qStats;
+        Long batchNo;
         if (markSubject.getStage().name() == MarkStage.SCORE.name()) {
         if (markSubject.getStage().name() == MarkStage.SCORE.name()) {
-            qStats = markTaskRepo.listGroupByQuestionAndMarker(workId, markSubject.getSubject().name(), markSubject.getStage().ordinal());
+            batchNo = paperRepo.findMaxScoreBatchNoByWorkId(workId);
+            qStats = markTaskRepo.listGroupByQuestionAndMarkerAndScoreBatchNo(workId, markSubject.getSubject().name(), markSubject.getStage().ordinal(), batchNo);
         } else {
         } else {
-            qStats = markTaskRepo.listGroupByQuestionAndMarker(workId, markSubject.getSubject().name(), markSubject.getStage().ordinal(), markSubject.getTest());
+            batchNo = paperRepo.findMaxBatchNoByWorkId(workId);
+            qStats = markTaskRepo.listGroupByQuestionAndMarkerAndBatchNo(workId, markSubject.getSubject().name(), markSubject.getStage().ordinal(), markSubject.getTest(), batchNo);
         }
         }
         if (qStats != null) {
         if (qStats != null) {
             List<MarkQuestionStatDTO> questionStatDTOs = new ArrayList<>();
             List<MarkQuestionStatDTO> questionStatDTOs = new ArrayList<>();

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

@@ -186,7 +186,7 @@ public class PaperApi {
         List<PaperDTO> paperDTOs = new ArrayList<>();
         List<PaperDTO> paperDTOs = new ArrayList<>();
         Page<Paper> paperPage = paperRepo.findAll(specification, pageable1);
         Page<Paper> paperPage = paperRepo.findAll(specification, pageable1);
         paperPage.getContent().forEach(p -> {
         paperPage.getContent().forEach(p -> {
-            paperDTOs.add(paperAssembler.toDTO(p));
+            paperDTOs.add(paperAssembler.toDTOForPaperManager(p, isManual));
         });
         });
         return new PageableDTO(paperDTOs, paperPage.getTotalElements(), paperPage.getTotalPages(), pageable1.getPageNumber());
         return new PageableDTO(paperDTOs, paperPage.getTotalElements(), paperPage.getTotalPages(), pageable1.getPageNumber());
     }
     }

+ 71 - 1
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/assembler/PaperAssembler.java

@@ -61,9 +61,16 @@ public class PaperAssembler {
         if (ParamCache.paramMap.get(paper.getWorkId()).getImageEncrypt() == 1) {
         if (ParamCache.paramMap.get(paper.getWorkId()).getImageEncrypt() == 1) {
             imgSrc = systemConfig.getImageUrl(paper.getWorkId(), paper.getSubject().ordinal(), student.getId(), SystemConstant.IMAGE);
             imgSrc = systemConfig.getImageUrl(paper.getWorkId(), paper.getSubject().ordinal(), student.getId(), SystemConstant.IMAGE);
             thumbSrc = systemConfig.getThumbUrl(paper.getWorkId(), paper.getSubject().ordinal(), student.getId(), SystemConstant.THUMB);
             thumbSrc = systemConfig.getThumbUrl(paper.getWorkId(), paper.getSubject().ordinal(), student.getId(), SystemConstant.THUMB);
+            if(paper.isManual()) {
+                imgSrc = systemConfig.getSheetUrl(paper.getWorkId(), paper.getSubject().ordinal(), student.getId(), SystemConstant.IMAGE);
+            }
         } else {
         } else {
             imgSrc = systemConfig.getImageUrl(paper.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), fileName);
             imgSrc = systemConfig.getImageUrl(paper.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), fileName);
             thumbSrc = systemConfig.getThumbUrl(paper.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), fileName);
             thumbSrc = systemConfig.getThumbUrl(paper.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), fileName);
+            if(paper.isManual()) {
+                imgSrc = systemConfig.getSheetUrl(paper.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), fileName);
+                thumbSrc = systemConfig.getSheetUrl(paper.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), fileName);
+            }
         }
         }
         //查询阶段
         //查询阶段
         MarkSubject markSubject = markSubjectRepo.findOne(paper.getWorkId() + "-" + paper.getSubject());
         MarkSubject markSubject = markSubjectRepo.findOne(paper.getWorkId() + "-" + paper.getSubject());
@@ -105,13 +112,76 @@ public class PaperAssembler {
             //计算levelValue和(试评阶段不用)
             //计算levelValue和(试评阶段不用)
             if(markSubject.getTest() == 0) {
             if(markSubject.getTest() == 0) {
                 List<MarkTask> markTaskList = markTaskRepo.findByPaperIdAndStage(paper.getId(), MarkStage.LEVEL);
                 List<MarkTask> markTaskList = markTaskRepo.findByPaperIdAndStage(paper.getId(), MarkStage.LEVEL);
-                int sum = markTaskList.stream().mapToInt(MarkTask::getLevelValue).sum();
+                int sum = markTaskList.stream().mapToInt(m-> m.getLevelValue() == null ? 0 : m.getLevelValue()).sum();
                 paperDTO.setSortSum(sum);
                 paperDTO.setSortSum(sum);
             }
             }
         }
         }
         return paperDTO;
         return paperDTO;
     }
     }
 
 
+    public PaperDTO toDTOForPaperManager(Paper paper, Boolean isManual) {
+        String imgSrc = null;
+        String thumbSrc = null;
+        String fileName = paper.getExamNumber();
+        Student student = studentRepo.findByWorkIdAndExamNumberAndTest(paper.getWorkId(), paper.getExamNumber(), String.valueOf(TrialEnum.DEFAULT.getId()));
+        //0:随机码 1:考号
+        if(ParamCache.paramMap.get(paper.getWorkId()).getNameRule() == 1){
+            fileName = MD5Util.getImageRuleMd5(paper.getWorkId(),paper.getSubject().ordinal(), student.getAreaCode(), student.getExamNumber(), student.getId());
+        }
+        if (ParamCache.paramMap.get(paper.getWorkId()).getImageEncrypt() == 1) {
+            imgSrc = systemConfig.getImageUrl(paper.getWorkId(), paper.getSubject().ordinal(), student.getId(), SystemConstant.IMAGE);
+            thumbSrc = systemConfig.getThumbUrl(paper.getWorkId(), paper.getSubject().ordinal(), student.getId(), SystemConstant.THUMB);
+            if(paper.isManual() && Objects.nonNull(isManual) && isManual) {
+                imgSrc = systemConfig.getSheetUrl(paper.getWorkId(), paper.getSubject().ordinal(), student.getId(), SystemConstant.IMAGE);
+                thumbSrc = systemConfig.getSheetUrl(paper.getWorkId(), paper.getSubject().ordinal(), student.getId(), SystemConstant.THUMB);
+            }
+        } else {
+            imgSrc = systemConfig.getImageUrl(paper.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), fileName);
+            thumbSrc = systemConfig.getThumbUrl(paper.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), fileName);
+            if(paper.isManual() && Objects.nonNull(isManual) && isManual) {
+                imgSrc = systemConfig.getSheetUrl(paper.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), fileName);
+                thumbSrc = systemConfig.getSheetUrl(paper.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), fileName);
+            }
+        }
+        //查询阶段
+        MarkSubject markSubject = markSubjectRepo.findOne(paper.getWorkId() + "-" + paper.getSubject());
+        PaperDTO paperDTO = null;
+        if (paper != null) {
+            paperDTO = new PaperDTO();
+            paperDTO.setId(paper.getId());
+            paperDTO.setSubjectName(paper.getSubject().getName());
+            paperDTO.setExamNumber(paper.getExamNumber());
+            paperDTO.setSn(paper.getSecretNumber());
+            paperDTO.setLevel(paper.getLevel());
+            paperDTO.setManual(paper.isManual());
+            paperDTO.setScore(Objects.isNull(paper.getScore())? null: paper.getScore().intValue());
+            paperDTO.setArbitrated(paper.isArbitrated());
+            paperDTO.setRejected(paper.isRejected());
+            paperDTO.setSample(paper.isSample());
+            paperDTO.setMarkByLeader(paper.isMarkByLeader());
+            paperDTO.setTagged(paper.isTagged());
+            paperDTO.setMarkedLogic(paper.isMarkedLogic());
+            paperDTO.setRedoLevel(paper.getRedoLevel());
+            paperDTO.setUpdatedOn(paper.getUpdatedOn());
+            paperDTO.setImgSrc(imgSrc);
+            paperDTO.setThumbSrc(thumbSrc);
+            paperDTO.setAreaCode(paper.getAreaCode());
+            paperDTO.setMissing(paper.getIsMissing());
+            if (paper.getInspectScore() != null) {
+                paperDTO.setInspectScore(paper.getInspectScore().intValue());
+            }
+            if (paper.getInspectLevel() != null) {
+                paperDTO.setInspectLevel(paper.getInspectLevel());
+            }
+            paperDTO.setStage(markSubject.getStage());
+            paperDTO.setTest(markSubject.getTest());
+            paperDTO.setPaperTest(paper.getTest());
+            paperDTO.setShift(paper.isShift());
+            paperDTO.setShiftScore(paper.isShiftScore());
+        }
+        return paperDTO;
+    }
+
     public PaperDTO toDTOForSheet(Paper paper) {
     public PaperDTO toDTOForSheet(Paper paper) {
         String imgSrc = null;
         String imgSrc = null;
         String thumbSrc = null;
         String thumbSrc = null;

+ 29 - 18
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/assembler/QuestionStatAssembler.java

@@ -1,6 +1,9 @@
 package cn.com.qmth.stmms.ms.marking.assembler;
 package cn.com.qmth.stmms.ms.marking.assembler;
 
 
+import cn.com.qmth.stmms.ms.core.domain.MarkStage;
 import cn.com.qmth.stmms.ms.core.domain.Paper;
 import cn.com.qmth.stmms.ms.core.domain.Paper;
+import cn.com.qmth.stmms.ms.core.domain.task.MarkTask;
+import cn.com.qmth.stmms.ms.core.repository.MarkTaskRepo;
 import cn.com.qmth.stmms.ms.core.vo.Subject;
 import cn.com.qmth.stmms.ms.core.vo.Subject;
 import cn.com.qmth.stmms.ms.marking.dto.MarkQuestionStatDTO;
 import cn.com.qmth.stmms.ms.marking.dto.MarkQuestionStatDTO;
 import cn.com.qmth.stmms.ms.marking.dto.QuestionStatDTO;
 import cn.com.qmth.stmms.ms.marking.dto.QuestionStatDTO;
@@ -12,6 +15,7 @@ import cn.com.qmth.stmms.ms.core.repository.PaperRepo;
 
 
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
+import java.util.Objects;
 
 
 /**
 /**
  * Created by zhengmin on 2016/10/14.
  * Created by zhengmin on 2016/10/14.
@@ -25,21 +29,24 @@ public class QuestionStatAssembler {
     @Autowired
     @Autowired
     private PaperRepo paperRepo;
     private PaperRepo paperRepo;
 
 
-    public QuestionStatDTO toDTO(Object[] qStats){
+    @Autowired
+    private MarkTaskRepo markTaskRepo;
+
+    public QuestionStatDTO toDTO(Object[] qStats) {
         return this.assemble(qStats);
         return this.assemble(qStats);
     }
     }
 
 
-    public QuestionStatDTO toDTOWithMarkers(Object[] qStats){
+    public QuestionStatDTO toDTOWithMarkers(Object[] qStats) {
         QuestionStatDTO qpDTO = this.assemble(qStats);
         QuestionStatDTO qpDTO = this.assemble(qStats);
-        if(qpDTO != null){
+        if (qpDTO != null) {
 
 
         }
         }
         return qpDTO;
         return qpDTO;
     }
     }
 
 
-    private QuestionStatDTO assemble(Object[] qStats){
+    private QuestionStatDTO assemble(Object[] qStats) {
         QuestionStatDTO qpDTO = null;
         QuestionStatDTO qpDTO = null;
-        if(qStats != null){
+        if (qStats != null) {
             qpDTO = new QuestionStatDTO();
             qpDTO = new QuestionStatDTO();
             qpDTO.setId(qStats[0]);
             qpDTO.setId(qStats[0]);
             qpDTO.setName(qStats[1]);
             qpDTO.setName(qStats[1]);
@@ -50,9 +57,9 @@ public class QuestionStatAssembler {
         return qpDTO;
         return qpDTO;
     }
     }
 
 
-    public QuestionStatDTO toProgressDTO(Object[] qStats){
+    public QuestionStatDTO toProgressDTO(Object[] qStats) {
         QuestionStatDTO qpDTO = null;
         QuestionStatDTO qpDTO = null;
-        if(qStats != null){
+        if (qStats != null) {
             qpDTO = new QuestionStatDTO();
             qpDTO = new QuestionStatDTO();
             qpDTO.setAreaCode(qStats[0]);
             qpDTO.setAreaCode(qStats[0]);
             qpDTO.setAreaName(qStats[1]);
             qpDTO.setAreaName(qStats[1]);
@@ -64,22 +71,26 @@ public class QuestionStatAssembler {
     }
     }
 
 
 
 
-    public MarkQuestionStatDTO toMarkProgressDTO(Object[] qStats, Long workId, Subject subject){
-        List<Paper> papers = paperRepo.findByWorkIdAndSubject(workId, subject);
-        long shift = papers.stream().filter(m->m.isShift()).count();
-        long shiftScore = papers.stream().filter(m->m.isShiftScore()).count();
+    public MarkQuestionStatDTO toMarkProgressDTO(Object[] qStats, Long workId, Subject subject) {
+//        List<Paper> papers = paperRepo.findByWorkIdAndSubject(workId, subject);
+//        long shift = papers.stream().filter(m->m.isShift()).count();
+//        long shiftScore = papers.stream().filter(m->m.isShiftScore()).count();
+        List<MarkTask> tasks = markTaskRepo.findByWorkIdAndSubjectAndMarkerIdAndStage(workId, subject, Long.valueOf(qStats[1].toString()), MarkStage.LEVEL);
+        long shift = tasks.stream().filter(m -> m.getPaper().isShift() && Objects.isNull(m.getResult())).count();
+        List<MarkTask> tasks1 = markTaskRepo.findByWorkIdAndSubjectAndMarkerIdAndStage(workId, subject, Long.valueOf(qStats[1].toString()), MarkStage.SCORE);
+        long shiftScore = tasks1.stream().filter(m -> m.getPaper().isShiftScore() && Objects.isNull(m.getResult())).count();
         MarkQuestionStatDTO qpDTO = null;
         MarkQuestionStatDTO qpDTO = null;
-        if(qStats != null){
+        if (qStats != null) {
             qpDTO = new MarkQuestionStatDTO();
             qpDTO = new MarkQuestionStatDTO();
             qpDTO.setId(qStats[0]);
             qpDTO.setId(qStats[0]);
-            qpDTO.setMarkerName(qStats[1]);
-            qpDTO.setName(qStats[2]);
-            qpDTO.setLeftCount(qStats[3]);
-            qpDTO.setTotalCount(qStats[4]);
-            qpDTO.setRejectedCount(qStats[5]);
+            qpDTO.setMarkerName(qStats[2]);
+            qpDTO.setName(qStats[3]);
+            qpDTO.setLeftCount(qStats[4]);
+            qpDTO.setTotalCount(qStats[5]);
+            qpDTO.setRejectedCount(qStats[6]);
             qpDTO.setShiftCount(shift);
             qpDTO.setShiftCount(shift);
             qpDTO.setShiftScoreCount(shiftScore);
             qpDTO.setShiftScoreCount(shiftScore);
-            qpDTO.setAreaCode(qStats[6]);
+            qpDTO.setAreaCode(qStats[7]);
         }
         }
         return qpDTO;
         return qpDTO;
     }
     }