1
0
yin 10 месяцев назад
Родитель
Сommit
6ddb52abb7

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

@@ -355,6 +355,7 @@ public class MarkCronService {
             if (TrialMode.EXCLUSIVE.equals(systemCache.getTrialMode())) {
                 List<Integer> studentIds = studentList.stream().map(ExamStudent::getId).collect(Collectors.toList());
                 List<TrialLibrary> libraryList = new BatchGetDataUtil<TrialLibrary, Integer>() {
+
                     @Override
                     protected List<TrialLibrary> getData(List<Integer> dataList) {
                         return trialService.findLibraryByStudentId(group.getExamId(), group.getSubjectCode(),
@@ -368,18 +369,27 @@ public class MarkCronService {
                 for (ExamStudent student : studentList) {
                     if (studentService.validateStatus(student.getId())) {
                         for (Marker marker : markerList) {
-                            if (map.get(marker.getId()) != null && map.get(marker.getId()).isEmpty()) {
+                            List<TrialLibrary> markerLibraryList = map.get(marker.getId());
+                            if (markerLibraryList != null && markerLibraryList.size() >= studentList.size()) {
                                 continue;
+                            } else {
+                                TrialLibrary library = null;
+                                if (markerLibraryList != null) {
+                                    library = markerLibraryList.stream().filter(e -> e.getMarkerId() == marker.getId()
+                                            && e.getStudentId() == student.getId()).findFirst().get();
+                                }
+                                if (library == null) {
+                                    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);
+                                }
                             }
-                            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);
                         }
                     }
                 }

+ 5 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/LibraryController.java

@@ -94,6 +94,8 @@ public class LibraryController extends BaseExamController {
 	@Autowired
 	private TaskService taskService;
 
+	public static final String UN_SELECTIVE_SCORE = "-1";
+
 	@Logging(menu = "评卷任务查询", type = LogType.QUERY)
 	@RequestMapping
 	public String list(Model model, HttpServletRequest request, MarkLibrarySearchQuery query,
@@ -127,6 +129,9 @@ public class LibraryController extends BaseExamController {
 						library.setHeaderLoginName(header.getLoginName() + "/" + header.getName());
 					}
 				}
+				if(library.getMarkerScoreList()!=null){
+					library.setMarkerScoreList(library.getMarkerScoreList().replace(UN_SELECTIVE_SCORE, "/"));
+				}
 			}
 			for (MarkGroup group : groupList) {
 				group.setQuestionList(questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(examId,

+ 29 - 9
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/TrialController.java

@@ -5,6 +5,7 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 import javax.servlet.http.HttpServletRequest;
 
@@ -93,6 +94,8 @@ public class TrialController extends BaseExamController {
     @Autowired
     private SystemCache systemCache;
 
+    public static final String UN_SELECTIVE_SCORE = "-1";
+
     @Logging(menu = "试评管理查询", type = LogType.QUERY)
     @RequestMapping
     public String list(Model model, HttpServletRequest request, TrialLibrarySearchQuery query,
@@ -116,6 +119,9 @@ public class TrialController extends BaseExamController {
                     Marker marker = markerService.findById(library.getMarkerId());
                     library.setMarkerLoginName(userService.findById(marker.getUserId()).getLoginName());
                 }
+                if (library.getMarkerScoreList() != null) {
+                    library.setMarkerScoreList(library.getMarkerScoreList().replace(UN_SELECTIVE_SCORE, "/"));
+                }
             }
             for (MarkGroup group : groupList) {
                 group.setQuestionList(questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(examId,
@@ -268,29 +274,43 @@ public class TrialController extends BaseExamController {
                 vo.setGroupNumber(marker.getGroupNumber());
                 vo.setGroupTitle(groupTile);
                 List<TrialLibrary> libraryList = trialService.findLibraryByMarkerId(marker.getId());
-                Double avgScore = libraryList.stream().mapToDouble(TrialLibrary::getMarkerScore).average().getAsDouble();
+                Double avgScore = 0d;
+                List<TrialLibrary> markedList= libraryList.stream().filter(s->s.getMarkerScore()!=null).collect(Collectors.toList());
+                vo.setTrialCount(markedList.size());
+                if(!markedList.isEmpty()){
+                    avgScore =markedList.stream().mapToDouble(TrialLibrary::getMarkerScore).average()
+                            .getAsDouble();
+                }
                 vo.setAvgScore(avgScore);
-                Map<Integer,List<ScoreItem>> map = new HashMap<>();
-                for (TrialLibrary library: libraryList) {
+                Map<Integer, List<ScoreItem>> map = new HashMap<>();
+                for (TrialLibrary library : markedList) {
                     List<ScoreItem> sList = library.getScoreList();
                     for (int i = 0; i < questionList.size(); i++) {
                         ExamQuestion question = questionList.get(i);
                         List<ScoreItem> qsList = map.get(question.getId());
-                        if(qsList==null){
-                            qsList =new ArrayList<>();
+                        if (qsList == null) {
+                            qsList = new ArrayList<>();
                         }
                         qsList.add(sList.get(i));
-                        map.put(question.getId(),qsList);
+                        map.put(question.getId(), qsList);
                     }
                 }
                 List<TrialQuestionVO> list = new ArrayList<>();
                 for (ExamQuestion question : questionList) {
                     List<ScoreItem> qsList = map.get(question.getId());
-                    TrialQuestionVO trialQuestionVO =new TrialQuestionVO();
-                    trialQuestionVO.setAvgScore(qsList.stream().mapToDouble(ScoreItem::getScore).average().getAsDouble());
-                    trialQuestionVO.setScoreList(StringUtils.join(qsList, ","));
+                    TrialQuestionVO trialQuestionVO = new TrialQuestionVO();
+                    if (qsList!=null&&!qsList.isEmpty()) {
+                        trialQuestionVO.setAvgScore(qsList.stream().filter(s -> s.getScore() >= 0)
+                                .mapToDouble(ScoreItem::getScore).average().getAsDouble());
+                        String scoreList = StringUtils.join(qsList, ",");
+                        if (scoreList != null) {
+                            trialQuestionVO.setScoreList(scoreList.replace(UN_SELECTIVE_SCORE, "/"));
+                        }
+                    }
+                    list.add(trialQuestionVO);
                 }
                 vo.setQuestionList(list);
+                markerList.add(vo);
             }
         }
         model.addAttribute("markerList", markerList);

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

@@ -65,7 +65,7 @@
         <th>大题号</th>
         <th>大题名称</th>
         <th>步骤分</th>
-        <th>选做题</th>
+        <th>包含选做题</th>
         <th>评卷员人数</th>
         <th>任务总数</th>
         <th>完成总数</th>
@@ -84,7 +84,7 @@
             <td>${result.mainNumber}</td>
             <td>${result.title}</td>
             <td>${result.scoreList}</td>
-            <td>${result.selectiveIndex}</td>
+            <td><c:if test="${result.selective}">是</c:if></td>
             <td>
             <c:if test="${fnx:hasPrivilegeCode(role_privilege_codes, 'exam_mark-marker')}">
                 <a href="${ctx}/admin/exam/marker?subjectCode=${result.subjectCode}&groupNumber=${result.number}">${result.markerCount}</a>

+ 1 - 1
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/trialList.jsp

@@ -63,7 +63,7 @@
         &nbsp;
         <input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
         <c:if test="${trialMode=='EXCLUSIVE'}">
-            <a href="${ctx}/admin/exam/trial/marker?subjectCode=${subject.code}" class="btn">试评分析</a>
+            <a href="${ctx}/admin/exam/trial/marker?subjectCode=${query.subjectCode}" class="btn">试评分析</a>
         </c:if>
     </div>
 </form>

+ 1 - 1
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/trialMarkerList.jsp

@@ -85,7 +85,7 @@
             <td>${marker.trialCount}</td>
             <td>${marker.avgScore}</td>
             <c:forEach items="${marker.questionList}" var="q">
-            <td>${q.scoreLsit}</td>
+            <td>${q.scoreList}</td>
             <td>${q.avgScore}</td>
             </c:forEach>
         </tr>