yin 10 kuukautta sitten
vanhempi
commit
313d282cde

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

@@ -17,6 +17,6 @@ public interface SelectiveStudentDao extends JpaRepository<SelectiveStudent, Int
     @Modifying(clearAutomatically = true)
     @Query("delete SelectiveStudent s where s.studentId=?1")
     void deleteByStudentId(Integer studentId);
-
-    int countByExamIdAndSubjectCodeAndAndLessSelectiveAndAndNotSelective(Integer examId, String subjectCode,boolean lessSelective,boolean noSelective);
+    @Query("select count(s) from SelectiveStudent s where s.examId=?1 and s.subjectCode=?2 and (s.lessSelective=?3 or s.notSelective=?4)")
+    int countByExamIdAndSubjectCodeAndLessSelectiveOrNotSelective(Integer examId, String subjectCode,boolean lessSelective,boolean noSelective);
 }

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

@@ -250,7 +250,8 @@ public class MarkCronService {
                 List<MarkLibrary> libraryList = new ArrayList<>();
                 int doubleCount = 0;
                 int studentCount = studentList.size();
-                for (ExamStudent student : studentList) {
+                for (int i = 0; i < studentList.size(); i++) {
+                    ExamStudent student = studentList.get(i);
                     MarkLibrary library = new MarkLibrary();
                     library.setExamId(student.getExamId());
                     library.setSubjectCode(student.getSubjectCode());
@@ -289,36 +290,26 @@ public class MarkCronService {
                             doubleCount++;
                         }
                     }
+                    if (!libraryList.isEmpty() && i % 20 == 0) {
+                        count += libraryList.size();
+                        // 任务乱序
+                        Collections.shuffle(libraryList);
+                        libraryService.save(libraryList);
+                        libraryList = new ArrayList<>();
+                    }
                 }
                 // 有新任务创建
                 if (!libraryList.isEmpty()) {
                     count += libraryList.size();
                     // 任务乱序
-                    int shuffleCount = 20;
-                    if (group.getDoubleRate() != null && group.getDoubleRate() > 0) {
-                        shuffleCount = (int) (20 * (1 + group.getDoubleRate()));
-                    }
-                    List<MarkLibrary> list = new ArrayList<>();
-                    List<MarkLibrary> saveList = new ArrayList<>();
-                    for (MarkLibrary l : libraryList) {
-                        list.add(l);
-                        if (list.size() >= shuffleCount) {
-                            Collections.shuffle(list);
-                            saveList.addAll(list);
-                            list = new ArrayList<>();
-                        }
-                    }
-                    if (!list.isEmpty()) {
-                        Collections.shuffle(list);
-                        saveList.addAll(list);
-                    }
+                    Collections.shuffle(libraryList);
                     // 批量保存
-                    libraryService.save(saveList);
+                    libraryService.save(libraryList);
                     // 正评状态才需要更新任务数量
-                    if (group.getStatus() == MarkStatus.FORMAL) {
-                        markService.updateLibraryCount(group);
-                        markService.updateMarkedCount(group);
-                    }
+                }
+                if (count > 0 && group.getStatus() == MarkStatus.FORMAL) {
+                    markService.updateLibraryCount(group);
+                    markService.updateMarkedCount(group);
                 }
                 studentList = studentService.findUnLibraryStudent(group.getExamId(), group.getSubjectCode(),
                         group.getNumber(), pageSize);

+ 1 - 1
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/MarkController.java

@@ -126,7 +126,7 @@ public class MarkController extends BaseExamController {
             long count = questionService.countByExamIdAndSubjectAndObjectiveAndGroupNumberIsNull(examId,
                     subject.getCode(), false);
             vo.setGroupFinish(count == 0);
-            vo.setSelectiveError(selectiveStudentDao.countByExamIdAndSubjectCodeAndAndLessSelectiveAndAndNotSelective(subject.getExamId(),subject.getCode(),true,true)!=0);
+            vo.setSelectiveError(selectiveStudentDao.countByExamIdAndSubjectCodeAndLessSelectiveOrNotSelective(subject.getExamId(),subject.getCode(),true,true)!=0);
             list.add(vo);
         }
         MarkLibrarySearchQuery mQuery = new MarkLibrarySearchQuery();

+ 2 - 2
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/MarkGroupController.java

@@ -274,7 +274,7 @@ public class MarkGroupController extends BaseExamController {
             allow = true;
         } else if (markGroup.getStatus() == MarkStatus.FORMAL && status == MarkStatus.FINISH
                 && markGroup.getLeftCount() == 0
-                && selectiveStudentDao.countByExamIdAndSubjectCodeAndAndLessSelectiveAndAndNotSelective(markGroup.getExamId(),markGroup.getSubjectCode(),true,true)== 0) {
+                && selectiveStudentDao.countByExamIdAndSubjectCodeAndLessSelectiveOrNotSelective(markGroup.getExamId(),markGroup.getSubjectCode(),true,true)== 0) {
             allow = true;
         } else if (markGroup.getStatus() == MarkStatus.FINISH && status == MarkStatus.FORMAL) {
             allow = true;
@@ -834,7 +834,7 @@ public class MarkGroupController extends BaseExamController {
             try {
                 lockService.waitlock(LockType.GROUP, group.getExamId(), group.getSubjectCode(), group.getNumber());
                 if (group.getStatus() == MarkStatus.FORMAL && group.getLeftCount() == 0
-                        && selectiveStudentDao.countByExamIdAndSubjectCodeAndAndLessSelectiveAndAndNotSelective(group.getExamId(), group.getSubjectCode(),true,true)==0) {
+                        && selectiveStudentDao.countByExamIdAndSubjectCodeAndLessSelectiveOrNotSelective(group.getExamId(), group.getSubjectCode(),true,true)==0) {
                     groupService.updateStatus(examId, subjectCode, number, MarkStatus.FINISH, group.getStatus());
                 }
             } finally {

+ 0 - 11
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/PaperController.java

@@ -446,21 +446,10 @@ public class PaperController extends BaseExamController {
                                 if (questionService.countByExamAndSubjectAndObjectiveAndGroupNumber(examId,
                                         group.getSubjectCode(), false, group.getNumber()) != 0) {
                                     BigDecimal totalScore = BigDecimal.ZERO;
-                                    List<SelectiveGroup> selectiveGroups = selectiveGroupService.findByExamIdAndSubjectCode(examId,
-                                            group.getSubjectCode());
-                                    Map<Integer, SelectiveGroup> selectiveMap = new HashMap<Integer, SelectiveGroup>();
-                                    for (SelectiveGroup selectiveGroup : selectiveGroups) {
-                                        selectiveMap.put(selectiveGroup.getMainNumber(), selectiveGroup);
-                                    }
-                                    boolean selective = false;
                                     for (ExamQuestion q : questionGroup) {
                                         totalScore = totalScore.add(BigDecimal.valueOf(q.getTotalScore()));
-                                        if(selectiveMap.containsKey(q.getMainNumber())){
-                                            selective =true;
-                                        }
                                     }
                                     group.setTotalScore(totalScore.doubleValue());
-                                    group.setSelective(selective);
                                     groupService.save(group);
                                     studentService.updateSubjectiveStatusAndScore(examId, group.getSubjectCode(),
                                             SubjectiveStatus.UNMARK, 0, null);

+ 2 - 2
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/ExamStudentController.java

@@ -253,8 +253,8 @@ public class ExamStudentController extends BaseApiController {
         List<InspectHistory> historyList = inspectHistoryService.findByStudentId(studentId);
         JSONArray array = new JSONArray();
         if(!historyList.isEmpty()){
-            List<User> userList = userService.findByIdIn(historyList.stream().map(e->e.getInspectorId()).collect(Collectors.toList()));
-            for (User u: userList) {
+            for (InspectHistory h: historyList) {
+                User u= userService.findById(h.getInspectorId());
                 JSONObject obj = new JSONObject();
                 obj.accumulate("loginName", u.getLoginName());
                 obj.accumulate("name", u.getName());

+ 3 - 2
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/markInfo.jsp

@@ -89,10 +89,11 @@
 		<c:forEach items="${resultList}" var="result">
 			<tr>
 				<td><input type="checkbox" class="codes" name="codes" value="${result.subject.code}" <c:if test="${result.selectiveError}">disabled="disabled"</c:if>>
-			${result.subject.code}-${result.subject.name}&nbsp;${result.subject.remark}
-				<td class="selectiveError"><c:if test="${result.selectiveError}">是</c:if></td>
+					${result.subject.code}-${result.subject.name}&nbsp;${result.subject.remark}
 				<c:if test="${!result.groupFinish}"><img class="icon-info-sign" title="主观分未完成分组" src="${ctxStatic }/images/sgin-icon@2x.png"></img></c:if>
 				</td>
+				<td class="selectiveError"><c:if test="${result.selectiveError}">是</c:if></td>
+
 				<td>${result.subject.uploadCount}</td>
 				<td>
 				    <fmt:formatNumber type="number" value="${result.subject.subjectiveScore}" pattern="###.###"/>