Przeglądaj źródła

修复同步工具结构仲裁员姓名;科组长查看科目过滤问题和原图查看屏蔽;

ting.yin 4 lat temu
rodzic
commit
462bda97f1

+ 12 - 3
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/ExamSubjectServiceImpl.java

@@ -154,9 +154,18 @@ public class ExamSubjectServiceImpl extends BaseQueryService<ExamSubject> implem
                 if (query.getUploadCountEqual() != null) {
                     predicates.add(cb.equal(root.get("uploadCount").as(Integer.class), query.getUploadCountEqual()));
                 }
-                return predicates.isEmpty() ?
-                        cb.conjunction() :
-                        cb.and(predicates.toArray(new Predicate[predicates.size()]));
+                if (StringUtils.isNotBlank(query.getCodeIn())) {
+                    String[] list = query.getCodeIn().split(",");
+                    if (list.length > 0) {
+                        Predicate[] sub = new Predicate[list.length];
+                        for (int i = 0; i < list.length; i++) {
+                            sub[i] = cb.equal(root.get("pk").get("code"), list[i]);
+                        }
+                        predicates.add(cb.or(sub));
+                    }
+                }
+                return predicates.isEmpty() ? cb.conjunction() : cb.and(predicates.toArray(new Predicate[predicates
+                        .size()]));
             }
         };
     }

+ 11 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/query/ExamSubjectSearchQuery.java

@@ -21,6 +21,8 @@ public class ExamSubjectSearchQuery extends BaseQuery<ExamSubject> {
 
     private Integer uploadCountEqual;
 
+    private String codeIn;
+
     public int getExamId() {
         return examId;
     }
@@ -88,4 +90,13 @@ public class ExamSubjectSearchQuery extends BaseQuery<ExamSubject> {
     public void setUploadCountEqual(Integer uploadCountEqual) {
         this.uploadCountEqual = uploadCountEqual;
     }
+
+    public String getCodeIn() {
+        return codeIn;
+    }
+
+    public void setCodeIn(String codeIn) {
+        this.codeIn = codeIn;
+    }
+
 }

+ 10 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/query/ReportSubjectQuery.java

@@ -33,6 +33,8 @@ public class ReportSubjectQuery extends BaseQuery<ReportSubject> {
 
     private Boolean nullPaperType;
 
+    private String subjectCodeIn;
+
     public Integer getExamId() {
         return examId;
     }
@@ -121,4 +123,12 @@ public class ReportSubjectQuery extends BaseQuery<ReportSubject> {
         this.nullPaperType = nullPaperType;
     }
 
+    public String getSubjectCodeIn() {
+        return subjectCodeIn;
+    }
+
+    public void setSubjectCodeIn(String subjectCodeIn) {
+        this.subjectCodeIn = subjectCodeIn;
+    }
+
 }

+ 12 - 3
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/service/impl/ReportSubjectServiceImpl.java

@@ -63,9 +63,18 @@ public class ReportSubjectServiceImpl extends BaseQueryService<ReportSubject> im
                 if (StringUtils.isNotBlank(query.getSubjectCode())) {
                     predicates.add(cb.equal(root.get("subjectCode"), query.getSubjectCode()));
                 }
-                return predicates.isEmpty() ?
-                        cb.conjunction() :
-                        cb.and(predicates.toArray(new Predicate[predicates.size()]));
+                if (StringUtils.isNotBlank(query.getSubjectCodeIn())) {
+                    String[] list = query.getSubjectCodeIn().split(",");
+                    if (list.length > 0) {
+                        Predicate[] sub = new Predicate[list.length];
+                        for (int i = 0; i < list.length; i++) {
+                            sub[i] = cb.equal(root.get("subjectCode"), list[i]);
+                        }
+                        predicates.add(cb.or(sub));
+                    }
+                }
+                return predicates.isEmpty() ? cb.conjunction() : cb.and(predicates.toArray(new Predicate[predicates
+                        .size()]));
             }
         }, query);
         fillResult(result, query);

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

@@ -10,6 +10,7 @@ import java.util.Set;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -83,6 +84,10 @@ public class MarkController extends BaseExamController {
         int examId = getSessionExamId(request);
         query.setExamId(examId);
         // query.setUploadCountGt(0);
+        if (wu.isSubjectHeader()) {
+            String subjectCodeIn = StringUtils.join(wu.getSubjectCodeSet(), ",");
+            query.setCodeIn(subjectCodeIn);
+        }
         query = subjectService.findByQuery(query);
 
         List<SubjectLibraryVO> list = new LinkedList<SubjectLibraryVO>();

+ 4 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/ScoreController.java

@@ -92,6 +92,10 @@ public class ScoreController extends BaseExamController {
             query.setObjectiveScoreGt(0d);
             query.setSubjectiveScore(0d);
         }
+        if (wu.isSubjectHeader()) {
+            String subjectCodeIn = StringUtils.join(wu.getSubjectCodeSet(), ",");
+            query.setSubjectCodeIn(subjectCodeIn);
+        }
         query = studentService.findByQuery(query);
         for (ExamStudent student : query.getResult()) {
             buildSheetUrl(student);

+ 10 - 9
stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectController.java

@@ -7,6 +7,7 @@ import java.util.List;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -43,18 +44,18 @@ public class ReportSubjectController extends BaseExamController {
     @Logging(menu = "课程总量统计", type = LogType.QUERY)
     @RequestMapping
     public String list(Model model, HttpServletRequest request, ReportSubjectQuery query) {
-        WebUser webuser = RequestUtils.getWebUser(request);
+        WebUser wu = RequestUtils.getWebUser(request);
         int examId = getSessionExamId(request);
         query.setExamId(examId);
-        if (webuser.isSubjectHeader()) {
-            // TODO - subjectheader check
-            //query.setSubjectCode(webuser.getUser().getSubjectCode());
+        if (wu.isSubjectHeader()) {
+            String subjectCodeIn = StringUtils.join(wu.getSubjectCodeSet(), ",");
+            query.setSubjectCodeIn(subjectCodeIn);
         }
         query = reportSubjectService.findByQuery(query);
         if (query.getCurrentCount() > 0) {
             model.addAttribute("list", query.getResult());
         }
-        model.addAttribute("subjectList", getExamSubject(examId, webuser));
+        model.addAttribute("subjectList", getExamSubject(examId, wu));
         model.addAttribute("query", query);
         return "modules/report/reportSubject";
     }
@@ -63,11 +64,11 @@ public class ReportSubjectController extends BaseExamController {
     @RequestMapping("/export")
     public String export(ReportSubjectQuery query, HttpServletRequest request, HttpServletResponse response,
             RedirectAttributes redirectAttributes) {
-        WebUser webuser = RequestUtils.getWebUser(request);
+        WebUser wu = RequestUtils.getWebUser(request);
         int examId = getSessionExamId(request);
-        if (webuser.isSubjectHeader()) {
-            // TODO - subjectheader check
-            //query.setSubjectCode(webuser.getUser().getSubjectCode());
+        if (wu.isSubjectHeader()) {
+            String subjectCodeIn = StringUtils.join(wu.getSubjectCodeSet(), ",");
+            query.setSubjectCodeIn(subjectCodeIn);
         }
         query.setExamId(examId);
         query.setPageNumber(1);

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

@@ -63,8 +63,8 @@ public class ExamStudentController extends BaseApiController {
     @ResponseBody
     public JSONObject checkStudent(HttpServletRequest request, @RequestBody ExamStudent examStudent) {
         JSONObject obj = new JSONObject();
-        ExamStudent student = studentService
-                .findByExamIdAndExamNumber(examStudent.getExamId(), examStudent.getExamNumber());
+        ExamStudent student = studentService.findByExamIdAndExamNumber(examStudent.getExamId(),
+                examStudent.getExamNumber());
         if (student != null) {
             obj.accumulate("examId", examStudent.getExamId());
             obj.accumulate("campusCode", "0");
@@ -181,8 +181,8 @@ public class ExamStudentController extends BaseApiController {
                         // 构造主观题得分明细
                         JSONArray subjective = new JSONArray();
                         scoreList = student.getScoreList(false);
-                        questionList = questionService
-                                .findByExamAndSubjectAndObjective(student.getExamId(), student.getSubjectCode(), false);
+                        questionList = questionService.findByExamAndSubjectAndObjective(student.getExamId(),
+                                student.getSubjectCode(), false);
                         i = 0;
                         for (ScoreItem item : scoreList) {
                             i++;
@@ -198,7 +198,10 @@ public class ExamStudentController extends BaseApiController {
                             detail.accumulate("subNumber", question.getSubNumber());
                             detail.accumulate("score", item.getScore());
                             detail.accumulate("marker", getMarkerNames(student, question.getGroupNumber()));
-                            detail.accumulate("header", getHeaderNames(student, question.getGroupNumber()));
+                            String header = getHeaderName(student, question.getGroupNumber());
+                            if (header != null) {
+                                detail.accumulate("header", header);
+                            }
                             detail.accumulate("groupNumber", question.getGroupNumber());
                             detail.accumulate("mainTitle", question.getMainTitle());
                             subjective.add(detail);
@@ -254,8 +257,7 @@ public class ExamStudentController extends BaseApiController {
         return StringUtils.join(markerNames, ",");
     }
 
-    private String getHeaderNames(ExamStudent student, Integer groupNumber) {
-        List<String> headerNames = new LinkedList<>();
+    private String getHeaderName(ExamStudent student, Integer groupNumber) {
         List<MarkLibrary> list = libraryService.findByStudentAndGroup(student.getId(), groupNumber);
         for (MarkLibrary library : list) {
             if (library.getHeaderId() == null) {
@@ -263,10 +265,10 @@ public class ExamStudentController extends BaseApiController {
             }
             User user = userService.findById(library.getHeaderId());
             if (user != null) {
-                headerNames.add(user.getName());
+                return user.getName();
             }
         }
-        return StringUtils.join(headerNames, ",");
+        return null;
     }
 
     @RequestMapping(value = "/score/school/{schoolId}", method = RequestMethod.POST)
@@ -280,9 +282,8 @@ public class ExamStudentController extends BaseApiController {
             if (Strings.isNullOrEmpty(examSeqCode)) {
                 student = studentService.findBySchoolIdAndSubjectCodeAndStudentCode(schoolId, subjectCode, studentCode);
             } else {
-                student = studentService
-                        .findBySchoolIdAndSubjectCodeAndStudentCodeAndRemark(schoolId, subjectCode, studentCode,
-                                examSeqCode);
+                student = studentService.findBySchoolIdAndSubjectCodeAndStudentCodeAndRemark(schoolId, subjectCode,
+                        studentCode, examSeqCode);
             }
             if (student != null) {
                 DecimalFormat df = new DecimalFormat("####.###");

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

@@ -187,9 +187,11 @@
             <td>
                 <c:if test="${student.upload==true}">
                     <c:if test="${examType!='MULTI_MEDIA'}">
+                    	<c:if test='${web_user.schoolAdmin==true}'>
                         <a class="sheet-link" href="##" data-id="${student.id}" data-sheet-url="${student.sheetUrlString}"
                            data-answer-url="<c:if test="${student.answerUrl!=null}">${fileServer}${student.answerUrl}</c:if>"
-                           data-title="<c:if test='${web_user.schoolAdmin==true}'>${student.examNumber}&nbsp;&nbsp;${student.name}&nbsp;&nbsp;</c:if>客观总分${student.objectiveScoreString}&nbsp;&nbsp;主观总分${student.subjectiveScoreString}&nbsp;&nbsp;全卷总分${student.totalScoreString}">原图</a>
+                           data-title="${student.examNumber}&nbsp;&nbsp;${student.name}&nbsp;&nbsp;客观总分${student.objectiveScoreString}&nbsp;&nbsp;主观总分${student.subjectiveScoreString}&nbsp;&nbsp;全卷总分${student.totalScoreString}">原图</a>
+                        </c:if>
                         <a href="${ctx}/admin/exam/track/student/${student.id}" target="_blank">轨迹图</a>
                     </c:if>
                     <c:if test="${examType=='MULTI_MEDIA'}">

+ 1 - 0
stmms-web/src/main/webapp/static/i18n/messages.properties

@@ -32,6 +32,7 @@ mark.control.task.not.exist=\u8bc4\u5377\u5927\u9898\u4e0d\u5b58\u5728
 mark.control.task.finish=\u8bc4\u5377\u5df2\u7ed3\u675f
 mark.control.task.null=\u5f53\u524d\u65e0\u8bc4\u5377\u4efb\u52a1
 mark.control.tsak.error=\u8bc4\u5377\u4efb\u52a1\u63d0\u4ea4\u5931\u8d25\uff0c\u8bf7\u5237\u65b0\u9875\u9762
+mark.control.group=\u5207\u6362\u5206\u7ec4
 #status
 mark.status.student.number=\u8003\u751f\u7f16\u53f7
 mark.status.library.number=\u4efb\u52a1\u7f16\u53f7

+ 1 - 0
stmms-web/src/main/webapp/static/i18n/messages_en.properties

@@ -32,6 +32,7 @@ mark.control.task.not.exist=the task question is not exist
 mark.control.task.finish=the marking is finished
 mark.control.task.null=There is no task now
 mark.control.tsak.error=task submit failed, please refresh the page!
+mark.control.group=switch group
 #status
 mark.status.student.number=student number
 mark.status.library.number=task number

+ 1 - 0
stmms-web/src/main/webapp/static/i18n/messages_ja.properties

@@ -32,6 +32,7 @@ mark.control.task.not.exist=\u8a72\u5f53\u3059\u308b\u5927\u554f\u304c\u5b58\u57
 mark.control.task.finish=\u63a1\u70b9\u4f5c\u696d\u304c\u7d42\u4e86\u3057\u307e\u3057\u305f
 mark.control.task.null=\u63a1\u70b9\u5bfe\u8c61\u304c\u3042\u308a\u307e\u305b\u3093
 mark.control.tsak.error=\u63d0\u51fa\u306b\u5931\u6557\u3057\u305f\u306e\u3067\u3001\u518d\u5ea6\u8a66\u3057\u3066\u304f\u3060\u3055\u3044
+mark.control.group=\u5927\u554f
 #status
 mark.status.student.number=\u53d7\u9a13\u8005\u7ba1\u7406\u756a\u53f7
 mark.status.library.number=\u63a1\u70b9\u30bf\u30b9\u30af\u7ba1\u7406\u756a\u53f7

+ 1 - 0
stmms-web/src/main/webapp/static/i18n/messages_zh.properties

@@ -32,6 +32,7 @@ mark.control.task.not.exist=\u8bc4\u5377\u5927\u9898\u4e0d\u5b58\u5728
 mark.control.task.finish=\u8bc4\u5377\u5df2\u7ed3\u675f
 mark.control.task.null=\u5f53\u524d\u65e0\u8bc4\u5377\u4efb\u52a1
 mark.control.tsak.error=\u8bc4\u5377\u4efb\u52a1\u63d0\u4ea4\u5931\u8d25\uff0c\u8bf7\u5237\u65b0\u9875\u9762
+mark.control.group=\u5207\u6362\u5206\u7ec4
 #status
 mark.status.student.number=\u8003\u751f\u7f16\u53f7
 mark.status.library.number=\u4efb\u52a1\u7f16\u53f7

+ 4 - 1
stmms-web/src/main/webapp/static/mark-new/js/mark-control.js

@@ -45,6 +45,9 @@ MarkControl.prototype.initContainer = function() {
         var switchButton = this.container.header.find('#switch-track-button');
         switchButton.attr('href', this.option.switchTrackUrl);
         switchButton.show();
+        
+        var switchGroup = this.container.header.find('#switch-group-button');
+        switchGroup.show();
     }
     this.container.centerContent = getDom(this.center_content_dom, this).appendTo(this.container.center);
     this.container.imageContent = getDom(this.image_content_dom, this).appendTo(this.container.centerContent);
@@ -662,7 +665,7 @@ MarkControl.prototype.center_dom = '<div class="center-content span12"></div>';
 MarkControl.prototype.center_header_dom = '<div class="row-fluid"><div class="header"><p class="tips">\
 <em><a href="##" class="btn" id="switch-track-button" style="display:none" data-i18n-text="mark.control.mode.track">切换到轨迹模式</a>\
 <a href="javascript:void(0)" id="assistant-button" class="btn"><i class="icon-wrench"></i><span data-i18n-text="mark.control.assistant"> 小助手</span></a></em>\
-<a href="##" class="btn" id="switch-group-button">切换分组</a>\
+<a href="##" class="btn" id="switch-group-button" style="display:none" data-i18n-text="mark.control.group">切换分组</a>\
 <a class="useinfo" href="#"><i class="icon-user icon-white"></i><i id="mark-user-name"></i></a>\
 <a class="logout" id="logout-link" href="{logoutUrl}"><i class="icon-off icon-white"></i> <i id="logout-title" data-i18n-text="mark.control.logout">退出</i></a>\
 </p></div></div>';