ting.yin 3 năm trước cách đây
mục cha
commit
0dc2edd316

+ 2 - 2
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/MarkGroupDao.java

@@ -29,8 +29,8 @@ public interface MarkGroupDao extends PagingAndSortingRepository<MarkGroup, Mark
     @Query("delete from MarkGroup q where q.pk.examId=?1 and q.pk.subjectCode=?2")
     void deleteByExamIdAndSubjectCode(Integer examId, String subjectCode);
 
-    @Query("select count(q) from MarkGroup q where q.pk.examId=?1 and q.status in (?2)")
-    long countByExamIdAndStatus(Integer examId, MarkStatus... status);
+    @Query("select count(q) from MarkGroup q where q.pk.examId=?1 and q.pk.subjectCode=?2 and q.status in (?3)")
+    long countByExamIdAndSubjectCodeAndStatus(Integer examId, String subjectCode, MarkStatus... status);
 
     @Query("select count(q) from MarkGroup q where q.pk.examId=?1 and q.pk.subjectCode=?2 "
             + "and q.pk.number=?3 and q.status in (?4)")

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

@@ -49,7 +49,7 @@ public interface MarkGroupService {
 
     List<MarkGroup> findByExamAndSubjectAndStatus(Integer examId, String subjectCode, MarkStatus... status);
 
-    long countByExamAndStatus(Integer examId, MarkStatus... status);
+    long countByExamAndSubjectAndStatus(Integer examId, String subjectCode, MarkStatus... status);
 
     boolean validateStatus(Integer examId, String subjectCode, Integer number, MarkStatus... status);
 

+ 2 - 2
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/MarkGroupServiceImpl.java

@@ -99,8 +99,8 @@ public class MarkGroupServiceImpl extends BaseQueryService<MarkGroup> implements
     }
 
     @Override
-    public long countByExamAndStatus(Integer examId, MarkStatus... status) {
-        return groupDao.countByExamIdAndStatus(examId, status);
+    public long countByExamAndSubjectAndStatus(Integer examId, String subjectCode, MarkStatus... status) {
+        return groupDao.countByExamIdAndSubjectCodeAndStatus(examId, subjectCode, status);
     }
 
     @Override

+ 4 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/dao/TrialTagDao.java

@@ -34,4 +34,8 @@ public interface TrialTagDao extends PagingAndSortingRepository<TrialTag, Intege
     @Query("delete from TrialTag s where s.libraryId in (select m.id from TrialLibrary m where m.examId=?1 and m.subjectCode=?2 and m.groupNumber=?3)")
     public void deleteByExamAndSubjectAndGroup(Integer examId, String subjectCode, Integer groupNumber);
 
+    @Query("select s from TrialTag s where s.libraryId in "
+            + "(select l.id from TrialLibrary l where l.studentId=?1 and s.libraryId=l.id)")
+    public List<TrialTag> findByStudentIdOrderByIdAsc(Integer studentId);
+
 }

+ 18 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/model/SpecialTagDTO.java

@@ -22,6 +22,24 @@ public class SpecialTagDTO implements Serializable {
 
     }
 
+    public SpecialTagDTO(MarkSpecialTag markSpecialTag) {
+        this.tagName = markSpecialTag.getTagName();
+        this.positionX = markSpecialTag.getPositionX();
+        this.offsetY = markSpecialTag.getOffsetY();
+        this.offsetIndex = markSpecialTag.getOffsetIndex();
+        this.offsetX = markSpecialTag.getOffsetX();
+        this.offsetY = markSpecialTag.getOffsetY();
+    }
+
+    public SpecialTagDTO(TrialTag tag) {
+        this.tagName = tag.getContent();
+        this.positionX = tag.getPositionX();
+        this.offsetY = tag.getOffsetY();
+        this.offsetIndex = tag.getOffsetIndex();
+        this.offsetX = tag.getOffsetX();
+        this.offsetY = tag.getOffsetY();
+    }
+
     public MarkSpecialTag transform(MarkLibrary library) {
         MarkSpecialTag markSpecialTag = new MarkSpecialTag();
         markSpecialTag.setLibraryId(library.getId());

+ 40 - 31
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/Impl/TaskServiceImpl.java

@@ -43,6 +43,7 @@ import cn.com.qmth.stmms.biz.user.service.UserService;
 import cn.com.qmth.stmms.biz.utils.ScoreItem;
 import cn.com.qmth.stmms.common.enums.ExamType;
 import cn.com.qmth.stmms.common.enums.LibraryStatus;
+import cn.com.qmth.stmms.common.enums.MarkStatus;
 import cn.com.qmth.stmms.common.enums.SubjectiveStatus;
 
 /**
@@ -321,13 +322,7 @@ public class TaskServiceImpl implements TaskService {
         if (!list.isEmpty()) {
             specialTags = new SpecialTagDTO[list.size()];
             for (int i = 0; i < list.size(); i++) {
-                SpecialTagDTO specialTagDTO = new SpecialTagDTO();
-                specialTagDTO.setTagName(list.get(i).getTagName());
-                specialTagDTO.setPositionX(list.get(i).getPositionX());
-                specialTagDTO.setPositionY(list.get(i).getPositionY());
-                specialTagDTO.setOffsetIndex(list.get(i).getOffsetIndex());
-                specialTagDTO.setOffsetX(list.get(i).getOffsetX());
-                specialTagDTO.setOffsetY(list.get(i).getOffsetY());
+                SpecialTagDTO specialTagDTO = new SpecialTagDTO(list.get(i));
                 specialTags[i] = specialTagDTO;
             }
         }
@@ -340,13 +335,7 @@ public class TaskServiceImpl implements TaskService {
         if (!list.isEmpty()) {
             specialTags = new SpecialTagDTO[list.size()];
             for (int i = 0; i < list.size(); i++) {
-                SpecialTagDTO specialTagDTO = new SpecialTagDTO();
-                specialTagDTO.setTagName(list.get(i).getContent());
-                specialTagDTO.setPositionX(list.get(i).getPositionX());
-                specialTagDTO.setPositionY(list.get(i).getPositionY());
-                specialTagDTO.setOffsetIndex(list.get(i).getOffsetIndex());
-                specialTagDTO.setOffsetX(list.get(i).getOffsetX());
-                specialTagDTO.setOffsetY(list.get(i).getOffsetY());
+                SpecialTagDTO specialTagDTO = new SpecialTagDTO(list.get(i));
                 specialTags[i] = specialTagDTO;
             }
         }
@@ -374,8 +363,10 @@ public class TaskServiceImpl implements TaskService {
                     student.getSheetCount()));
         }
         if (!student.getSubjectiveStatus().equals(SubjectiveStatus.UNMARK)) {
-            task.setQuestionList(buildMarkStep(student));
-            task.setSpecialTagList(getMarkSpecialTagList(student));
+            long trialGroupCount = groupService.countByExamAndSubjectAndStatus(student.getExamId(),
+                    student.getSubjectCode(), MarkStatus.TRIAL);
+            task.setQuestionList(buildMarkStep(student, trialGroupCount));
+            task.setSpecialTagList(getMarkSpecialTagList(student, trialGroupCount));
         }
         if (StringUtils.isNotBlank(student.getObjectiveScoreList())) {
             task.setObjectiveScore(student.getObjectiveScore());
@@ -385,16 +376,24 @@ public class TaskServiceImpl implements TaskService {
         return task;
     }
 
-    private SpecialTagDTO[] getMarkSpecialTagList(ExamStudent student) {
+    private SpecialTagDTO[] getMarkSpecialTagList(ExamStudent student, long trialGroupCount) {
         List<SpecialTagDTO> list = new ArrayList<SpecialTagDTO>();
-        List<MarkGroup> groups = groupService.findByExamAndSubject(student.getExamId(), student.getSubjectCode());
-        for (MarkGroup group : groups) {
-            List<MarkLibrary> libraryList = libraryService.findByStudentAndGroup(student.getId(), group.getNumber());
-            if (libraryList.size() == 1) {
-                SpecialTagDTO[] tags = getMarkSpecialTagList(libraryList.get(0).getId());
-                if (tags != null) {
-                    for (SpecialTagDTO specialTagDTO : tags) {
-                        list.add(specialTagDTO);
+        if (trialGroupCount > 0) {
+            List<TrialTag> tags = trialService.findTagByStudentId(student.getId());
+            for (TrialTag trialTag : tags) {
+                list.add(new SpecialTagDTO(trialTag));
+            }
+        } else {
+            List<MarkGroup> groups = groupService.findByExamAndSubject(student.getExamId(), student.getSubjectCode());
+            for (MarkGroup group : groups) {
+                List<MarkLibrary> libraryList = libraryService
+                        .findByStudentAndGroup(student.getId(), group.getNumber());
+                if (libraryList.size() == 1) {
+                    SpecialTagDTO[] tags = getMarkSpecialTagList(libraryList.get(0).getId());
+                    if (tags != null) {
+                        for (SpecialTagDTO specialTagDTO : tags) {
+                            list.add(specialTagDTO);
+                        }
                     }
                 }
             }
@@ -406,7 +405,7 @@ public class TaskServiceImpl implements TaskService {
         return specialTags;
     }
 
-    private List<MarkStepDTO> buildMarkStep(ExamStudent student) {
+    private List<MarkStepDTO> buildMarkStep(ExamStudent student, long trialGroupCount) {
         List<MarkStepDTO> list = new LinkedList<MarkStepDTO>();
         List<ExamQuestion> sList = questionService.findByExamAndSubjectAndObjective(student.getExamId(),
                 student.getSubjectCode(), false);
@@ -418,16 +417,26 @@ public class TaskServiceImpl implements TaskService {
                 step.setScore(sItems.get(i).getScore());
             }
             // 增加阅卷轨迹列表获取
-            List<MarkLibrary> libraryList = libraryService.findByStudentAndGroup(student.getId(),
-                    question.getGroupNumber());
-            if (libraryList.size() == 1) {
-                List<MarkTrack> tracks = trackService.findByStudentId(student.getId());
+            if (trialGroupCount > 0) {
+                List<TrialTrack> tracks = trialService.findTrackByStudentId(student.getId());
                 String questionNumber = question.getQuestionNumber();
-                for (MarkTrack track : tracks) {
+                for (TrialTrack track : tracks) {
                     if (track.getQuestionNumber().equals(questionNumber)) {
                         step.addTrack(new TrackDTO(track));
                     }
                 }
+            } else {
+                List<MarkLibrary> libraryList = libraryService.findByStudentAndGroup(student.getId(),
+                        question.getGroupNumber());
+                if (libraryList.size() == 1) {
+                    List<MarkTrack> tracks = trackService.findByStudentId(student.getId());
+                    String questionNumber = question.getQuestionNumber();
+                    for (MarkTrack track : tracks) {
+                        if (track.getQuestionNumber().equals(questionNumber)) {
+                            step.addTrack(new TrackDTO(track));
+                        }
+                    }
+                }
             }
             list.add(step);
         }

+ 10 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/Impl/TrialServiceImpl.java

@@ -146,4 +146,14 @@ public class TrialServiceImpl extends BaseQueryService<TrialLibrary> implements
     public long countByMarkerId(Integer markerId) {
         return libraryDao.countByMarkerId(markerId);
     }
+
+    @Override
+    public List<TrialTrack> findTrackByStudentId(Integer studentId) {
+        return trackDao.findByStudentId(studentId);
+    }
+
+    @Override
+    public List<TrialTag> findTagByStudentId(Integer studentId) {
+        return tagDao.findByStudentIdOrderByIdAsc(studentId);
+    }
 }

+ 4 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/TrialService.java

@@ -29,6 +29,10 @@ public interface TrialService {
 
     List<TrialTag> findTag(Integer libraryId);
 
+    List<TrialTrack> findTrackByStudentId(Integer studentId);
+
+    List<TrialTag> findTagByStudentId(Integer studentId);
+
     List<TrialLibrary> findHistory(Integer examId, String subjectCode, Integer groupNumber, Integer markerId,
             String secretNumber, int pageNumber, int pageSize, Sort querySort);