Browse Source

更新试评

yin 10 months ago
parent
commit
7380da4b58

+ 5 - 5
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/dao/TrialLibraryDao.java

@@ -20,8 +20,8 @@ public interface TrialLibraryDao extends JpaRepository<TrialLibrary, Integer>, J
     // Integer groupNumber, Pageable page);
 
     @Query("select l from TrialLibrary l where l.examId=?1 and l.subjectCode=?2 and l.groupNumber=?3 "
-            + "and l.markerId is null ")
-    List<TrialLibrary> findUnMarked(Integer examId, String subjectCode, Integer groupNumber, Pageable page);
+            + "and (l.markerId is null or l.markerId=?4) and l.markerScoreList is null")
+    List<TrialLibrary> findUnMarked(Integer examId, String subjectCode, Integer groupNumber, Integer markerId,Pageable page);
 
     @Query("select count(l) from TrialLibrary l where l.examId=?1 and l.subjectCode=?2 and l.groupNumber=?3 "
             + "and l.markerId is not null ")
@@ -49,17 +49,17 @@ public interface TrialLibraryDao extends JpaRepository<TrialLibrary, Integer>, J
     void deleteByStudentId(Integer studentId);
 
     @Query("select l from TrialLibrary l where l.examId=?1 and l.subjectCode=?2 and l.groupNumber=?3 "
-            + "and l.markerId=?4 and l.markerScore!=-1  ")
+            + "and l.markerId=?4 and l.markerScore!=-1  and l.markerScoreList is not null  ")
     List<TrialLibrary> findByExamIdAndSubjectCodeAndGroupNumberAndMarkerId(Integer examId, String subjectCode,
             Integer groupNumber, Integer markerId, Pageable page);
 
     @Query("select l from TrialLibrary l where l.examId=?1 and l.subjectCode=?2 and l.groupNumber=?3 "
-            + "and l.markerId=?4 and l.secretNumber like ?5 and l.markerScore!=-1  ")
+            + "and l.markerId=?4 and l.secretNumber like ?5 and l.markerScore!=-1 and l.markerScoreList is not null ")
     List<TrialLibrary> findByExamIdAndSubjectCodeAndGroupNumberAndMarkerIdAndSecretNumber(Integer examId,
             String subjectCode, Integer groupNumber, Integer markerId, String secretNumber, Pageable query);
 
     @Query("select l from TrialLibrary l where l.examId=?1 and l.subjectCode=?2 and l.groupNumber=?3 "
-            + "and l.markerId=?4 and l.markerScore=?5 and l.markerScore!=-1  ")
+            + "and l.markerId=?4 and l.markerScore=?5 and l.markerScore!=-1  and l.markerScoreList is not null  ")
     List<TrialLibrary> findByExamIdAndSubjectCodeAndGroupNumberAndMarkerIdAndMarkerScore(Integer examId,
             String subjectCode, Integer groupNumber, Integer markerId, Double markerScore, Pageable query);
 

+ 30 - 13
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/Impl/MarkCronService.java

@@ -214,9 +214,7 @@ public class MarkCronService {
                         MarkStatus.FORMAL, MarkStatus.TRIAL);
                 for (MarkGroup group : groups) {
                     // 试评状态的分组也提前生成
-                    if (TrialMode.SHARE.equals(systemCache.getTrialMode()) || null == systemCache.getTrialMode()) {
-                        buildTrialLibrary(group);
-                    }
+                    buildTrialLibrary(group);
                     // 生成正评任务
                     buildFormalLibrary(group);
                 }
@@ -341,16 +339,35 @@ public class MarkCronService {
                 return;
             }
             List<TrialLibrary> trialList = new ArrayList<TrialLibrary>();
-            for (ExamStudent student : studentList) {
-                if (studentService.validateStatus(student.getId())) {
-                    TrialLibrary library = new TrialLibrary();
-                    library.setExamId(student.getExamId());
-                    library.setSubjectCode(student.getSubjectCode());
-                    library.setGroupNumber(group.getNumber());
-                    library.setStudentId(student.getId());
-                    library.setExamNumber(student.getExamNumber());
-                    library.setSecretNumber(student.getSecretNumber());
-                    trialList.add(library);
+            if (TrialMode.EXCLUSIVE.equals(systemCache.getTrialMode())) {
+                List<Marker> markerList = markerService.findByExamAndSubjectAndGroup(group.getExamId(), group.getSubjectCode(), group.getNumber());
+                for (ExamStudent student : studentList) {
+                    if (studentService.validateStatus(student.getId())) {
+                        for (Marker marker:markerList) {
+                            TrialLibrary library = new TrialLibrary();
+                            library.setExamId(student.getExamId());
+                            library.setSubjectCode(student.getSubjectCode());
+                            library.setGroupNumber(group.getNumber());
+                            library.setStudentId(student.getId());
+                            library.setExamNumber(student.getExamNumber());
+                            library.setSecretNumber(student.getSecretNumber());
+                            library.setMarkerId(marker.getId());
+                            trialList.add(library);
+                        }
+                    }
+                }
+            }else{
+                for (ExamStudent student : studentList) {
+                    if (studentService.validateStatus(student.getId())) {
+                        TrialLibrary library = new TrialLibrary();
+                        library.setExamId(student.getExamId());
+                        library.setSubjectCode(student.getSubjectCode());
+                        library.setGroupNumber(group.getNumber());
+                        library.setStudentId(student.getId());
+                        library.setExamNumber(student.getExamNumber());
+                        library.setSecretNumber(student.getSecretNumber());
+                        trialList.add(library);
+                    }
                 }
             }
             if (group.getStatus() == MarkStatus.TRIAL && !trialList.isEmpty()) {

+ 4 - 2
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/Impl/MarkServiceImpl.java

@@ -119,7 +119,7 @@ public class MarkServiceImpl implements MarkService {
     private LockService lockService;
 
     @Autowired
-    private SystemCache authCache;
+    private SystemCache systemCache;
 
     private Map<Integer, Long> markerLastUpdateTime = new ConcurrentHashMap<>();
 
@@ -608,7 +608,9 @@ public class MarkServiceImpl implements MarkService {
                     trialTagDao.deleteByLibraryIdAndMarkerId(library.getId(), library.getMarkerId());
                     trialTagDao.save(result.getTagList(library));
                 }
-                checkStudentTrial(library, group);
+                if (!TrialMode.EXCLUSIVE.equals(systemCache.getTrialMode())) {
+                    checkStudentTrial(library, group);
+                }
                 updateMarkedCount(group);
                 inspectedService.cancelByStudent(library.getStudentId());
                 return SubmitResult.success(library);

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

@@ -51,7 +51,7 @@ public class TrialServiceImpl extends BaseQueryService<TrialLibrary> implements
         TrialLibrarySearchQuery query = new TrialLibrarySearchQuery();
         query.setPageNumber(pageNumber);
         query.setPageSize(pageSize);
-        return libraryDao.findUnMarked(examId, subjectCode, groupNumber, query);
+        return libraryDao.findUnMarked(examId, subjectCode, groupNumber,markerId,  query);
     }
 
     @Override

+ 39 - 7
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/TrialController.java

@@ -6,6 +6,8 @@ import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
 
+import cn.com.qmth.stmms.biz.config.service.impl.SystemCache;
+import cn.com.qmth.stmms.common.enums.*;
 import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
 
@@ -43,12 +45,6 @@ import cn.com.qmth.stmms.biz.user.service.UserService;
 import cn.com.qmth.stmms.common.annotation.Logging;
 import cn.com.qmth.stmms.common.annotation.RoleRequire;
 import cn.com.qmth.stmms.common.domain.WebUser;
-import cn.com.qmth.stmms.common.enums.ExamType;
-import cn.com.qmth.stmms.common.enums.LibraryStatus;
-import cn.com.qmth.stmms.common.enums.LockType;
-import cn.com.qmth.stmms.common.enums.LogType;
-import cn.com.qmth.stmms.common.enums.MarkStatus;
-import cn.com.qmth.stmms.common.enums.Role;
 import cn.com.qmth.stmms.common.utils.DateUtils;
 import cn.com.qmth.stmms.common.utils.RequestUtils;
 
@@ -88,6 +84,9 @@ public class TrialController extends BaseExamController {
     @Autowired
     private FileService fileService;
 
+    @Autowired
+    private SystemCache systemCache;
+
     @Logging(menu = "试评管理查询", type = LogType.QUERY)
     @RequestMapping
     public String list(Model model, HttpServletRequest request, TrialLibrarySearchQuery query,
@@ -120,6 +119,7 @@ public class TrialController extends BaseExamController {
         model.addAttribute("query", query);
         model.addAttribute("subjectList", getExamSubject(examId, wu));
         model.addAttribute("groupList", groupList);
+        model.addAttribute("trialMode", systemCache.getTrialMode()== null ? TrialMode.SHARE:systemCache.getTrialMode());
         return "modules/exam/trialList";
     }
 
@@ -219,5 +219,37 @@ public class TrialController extends BaseExamController {
         }
         return obj;
     }
-
+    @Logging(menu = "试评管理查询", type = LogType.QUERY)
+    @RequestMapping
+    public String list(Model model, HttpServletRequest request, TrialLibrarySearchQuery query) {
+        int examId = getSessionExamId(request);
+        WebUser wu = RequestUtils.getWebUser(request);
+        List<ExamSubject> subjectList = getExamSubject(examId, wu);
+        if (subjectList.isEmpty()) {
+            return "redirect:/admin/exam/mark";
+        }
+        query.setExamId(examId);
+        if (StringUtils.isBlank(query.getSubjectCode()) && !subjectList.isEmpty()) {
+            query.setSubjectCode(subjectList.get(0).getCode());
+        }
+        List<MarkGroup> groupList = groupService.findByExamAndSubjectAndStatus(examId, query.getSubjectCode(),
+                MarkStatus.TRIAL);
+        if (!groupList.isEmpty()) {
+            query = trialService.findLibrary(query);
+            for (TrialLibrary library : query.getResult()) {
+                if (library.getMarkerId() != null) {
+                    Marker marker = markerService.findById(library.getMarkerId());
+                    library.setMarkerLoginName(userService.findById(marker.getUserId()).getLoginName());
+                }
+            }
+            for (MarkGroup group : groupList) {
+                group.setQuestionList(questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(examId,
+                        group.getSubjectCode(), false, group.getNumber()));
+            }
+        }
+        model.addAttribute("query", query);
+        model.addAttribute("subjectList", getExamSubject(examId, wu));
+        model.addAttribute("groupList", groupList);
+        return "modules/exam/trialList";
+    }
 }