Bläddra i källkod

修复无法试评问题;导入科组长和评卷员班级增加验证和日志记录;仲裁屏蔽关键信息;日语文案修改;科组长屏蔽信息是无法导出成绩

ting.yin 4 år sedan
förälder
incheckning
12fc7dafce

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

@@ -221,6 +221,9 @@ public class TaskServiceImpl implements TaskService {
 
     private List<MarkStepDTO> buildTrialStep(MarkGroup group, TrialHistory history) {
         List<MarkStepDTO> list = new LinkedList<MarkStepDTO>();
+        if (history == null) {
+            return list;
+        }
         List<ExamQuestion> sList = questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(group.getExamId(),
                 group.getSubjectCode(), false, group.getNumber());
         int number = 0;
@@ -228,13 +231,11 @@ public class TaskServiceImpl implements TaskService {
         for (ExamQuestion question : sList) {
             number++;
             MarkStepDTO step = buildStep(number, question);
-            if (history != null) {
-                // 增加阅卷轨迹列表获取
-                String questionNumber = question.getQuestionNumber();
-                for (TrialTrack track : tracks) {
-                    if (track.getQuestionNumber().equals(questionNumber)) {
-                        step.addTrack(new TrackDTO(track));
-                    }
+            // 增加阅卷轨迹列表获取
+            String questionNumber = question.getQuestionNumber();
+            for (TrialTrack track : tracks) {
+                if (track.getQuestionNumber().equals(questionNumber)) {
+                    step.addTrack(new TrackDTO(track));
                 }
             }
             list.add(step);

+ 2 - 1
stmms-common/src/main/java/cn/com/qmth/stmms/common/enums/MarkerExcelError.java

@@ -2,7 +2,8 @@ package cn.com.qmth.stmms.common.enums;
 
 public enum MarkerExcelError {
     CODENULL("课程代码不存在", 0), NAMENULL("用户名为空", 1), NAMEUSED("用户名已被其他学校占用", 2), NAMENOTMARKER("用户名已被占用,且不是评卷员类型", 3), GROUPNULL(
-            "大题号不存在", 4), EXAMNULL("考试为空", 5), CLASSNULL("班级为空", 6), EXAMCLASSNULL("考试下没有该班级", 7);
+            "大题号不存在", 4), EXAMNULL("考试为空", 5), CLASSNULL("班级为空", 6), EXAMCLASSNULL("考试下没有该班级", 7), NAMENOTHEADER(
+            "用户名已被占用,且不是科组长类型", 8);
 
     private String name;
 

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

@@ -176,7 +176,6 @@ public class ScoreController extends BaseExamController {
 
     @Logging(menu = "导出成绩", type = LogType.EXPORT)
     @RequestMapping("/export")
-    @RoleRequire(Role.SCHOOL_ADMIN)
     public String export(ExamStudentSearchQuery query, HttpServletRequest request, HttpServletResponse response,
             RedirectAttributes redirectAttributes) {
         WebUser wu = RequestUtils.getWebUser(request);

+ 12 - 1
stmms-web/src/main/java/cn/com/qmth/stmms/admin/user/SubjectUserController.java

@@ -19,6 +19,7 @@ import cn.com.qmth.stmms.common.utils.EncryptUtils;
 import cn.com.qmth.stmms.common.utils.ExportExcel;
 import cn.com.qmth.stmms.common.utils.ImportExcel;
 import cn.com.qmth.stmms.common.utils.RequestUtils;
+
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -31,6 +32,7 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+
 import java.util.*;
 
 @Controller
@@ -65,6 +67,7 @@ public class SubjectUserController extends BaseExamController {
         return "redirect:/admin/user/list";
     }
 
+    @Logging(menu = "科组长导入", type = LogType.IMPORT_FILE)
     @RequestMapping(value = "/import", method = RequestMethod.POST)
     public String importFile(HttpServletRequest request, MultipartFile file, RedirectAttributes redirectAttributes) {
         WebUser wu = RequestUtils.getWebUser(request);
@@ -94,6 +97,12 @@ public class SubjectUserController extends BaseExamController {
                         failureNum++;
                         continue;
                     }
+                    if (user != null && !user.getRole().equals(Role.SUBJECT_HEADER)) {
+                        failureMsg.append("<br/>用户名 " + subjectUser.getLoginName()
+                                + MarkerExcelError.NAMENOTHEADER.getName());
+                        failureNum++;
+                        continue;
+                    }
                     if (user == null) {
                         user = getUser(userMap, subjectUser.getLoginName().trim(), schoolId);
                     }
@@ -105,7 +114,9 @@ public class SubjectUserController extends BaseExamController {
             if (failureNum > 0) {
                 failureMsg.insert(0, ",失败 " + failureNum + " 条记录!");
             }
-            addMessage(redirectAttributes, "已成功导入" + successNum + " 条 " + failureMsg);
+            String message = "已成功导入 " + successNum + " 条评卷员 ";
+            addMessage(redirectAttributes, message + failureMsg);
+            RequestUtils.setLog(request, message);
         } catch (Exception e) {
             log.error("Batch import subject user error!", e);
             addMessage(redirectAttributes, "导入用户失败!失败信息:" + e.getMessage());

+ 14 - 1
stmms-web/src/main/java/cn/com/qmth/stmms/admin/user/UserClassController.java

@@ -6,7 +6,9 @@ import cn.com.qmth.stmms.biz.exam.service.ExamStudentService;
 import cn.com.qmth.stmms.biz.exam.service.MarkerClassService;
 import cn.com.qmth.stmms.biz.user.model.User;
 import cn.com.qmth.stmms.biz.user.service.UserService;
+import cn.com.qmth.stmms.common.annotation.Logging;
 import cn.com.qmth.stmms.common.domain.WebUser;
+import cn.com.qmth.stmms.common.enums.LogType;
 import cn.com.qmth.stmms.common.enums.MarkerExcelError;
 import cn.com.qmth.stmms.common.enums.Role;
 import cn.com.qmth.stmms.common.enums.UserSource;
@@ -14,6 +16,7 @@ import cn.com.qmth.stmms.common.utils.EncryptUtils;
 import cn.com.qmth.stmms.common.utils.ExportExcel;
 import cn.com.qmth.stmms.common.utils.ImportExcel;
 import cn.com.qmth.stmms.common.utils.RequestUtils;
+
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -24,6 +27,7 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+
 import java.util.*;
 
 @Controller
@@ -55,6 +59,7 @@ public class UserClassController extends BaseExamController {
         return "redirect:/admin/user/list";
     }
 
+    @Logging(menu = "评卷员班级导入", type = LogType.IMPORT_FILE)
     @RequestMapping(value = "/import", method = RequestMethod.POST)
     public String importFile(HttpServletRequest request, MultipartFile file, RedirectAttributes redirectAttributes) {
         WebUser wu = RequestUtils.getWebUser(request);
@@ -104,6 +109,12 @@ public class UserClassController extends BaseExamController {
                         failureNum++;
                         continue;
                     }
+                    if (user != null && !user.getRole().equals(Role.MARKER)) {
+                        failureMsg.append("<br/>用户名 " + markerClass.getLoginName()
+                                + MarkerExcelError.NAMENOTMARKER.getName());
+                        failureNum++;
+                        continue;
+                    }
                     if (user == null) {
                         user = getUser(userMap, markerClass.getLoginName().trim(), schoolId);
                     }
@@ -115,7 +126,9 @@ public class UserClassController extends BaseExamController {
             if (failureNum > 0) {
                 failureMsg.insert(0, ",失败 " + failureNum + " 条记录!");
             }
-            addMessage(redirectAttributes, "已成功导入" + successNum + " 条 " + failureMsg);
+            String message = "已成功导入 " + successNum + " 条评卷员 ";
+            addMessage(redirectAttributes, message + failureMsg);
+            RequestUtils.setLog(request, message);
         } catch (Exception e) {
             log.error("Batch import user class error!", e);
             addMessage(redirectAttributes, "导入用户班级失败!失败信息:" + e.getMessage());

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

@@ -70,7 +70,14 @@
 			<tr>
 				<td>${result.subjectCode}</td>
 				<td>${result.groupNumber}</td>
-				<td>${result.examNumber}</td>
+				<td>
+					<c:if test="${(web_user.subjectHeader==true||web_user.schoolViewer==true) && forbiddenInfo==true}">
+		            ${fn:substring(student.examNumber,0,1)}***
+		            </c:if>
+		            <c:if test="${web_user.schoolAdmin==true || forbiddenInfo==false}">
+		            ${student.examNumber}
+		            </c:if>
+				</td>
 				<td>${result.status.name}</td>
 				<td>
                     <fmt:formatDate value="${result.createTime}" pattern="yyyy-MM-dd HH:mm:ss" />

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

@@ -68,7 +68,7 @@
         
         <input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
         &nbsp;
-        <c:if test="${!web_user.schoolViewer }">
+        <c:if test="${web_user.schoolAdmin==true || forbiddenInfo==false}">
             <input id="export-button" class="btn" type="button" value="导出" onclick="goExport()"
                    <c:if test="${!enableExport}">disabled</c:if> title="${exportMessage}"/>
         </c:if>

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

@@ -164,7 +164,7 @@ index.log=\u64cd\u4f5c\u8a18\u9332
 report.subject=\u96c6\u8a08\u5206\u6790
 report.subject.name=\u79d1\u76ee
 report.subject.select=\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044
-report.subject.search=\u30af\u30a8\u30ea\u30fc
+report.subject.search=\u691c\u7d22
 report.subject.export=\u30a8\u30af\u30b9\u30dd\u30fc\u30c8
 report.subject.chart=\u7d71\u8a08\u56f3\u3092\u898b\u308b
 report.subject.name=\u79d1\u76ee
@@ -181,7 +181,7 @@ report.subject.passRate=\u5408\u683c\u7387
 report.range=\u70b9\u6570\u533a\u5206\u7d71\u8a08
 report.range.subject=\u79d1\u76ee
 report.range.select=\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044
-report.range.search=\u30af\u30a8\u30ea\u30fc
+report.range.search=\u691c\u7d22
 report.range.export=\u30a8\u30af\u30b9\u30dd\u30fc\u30c8
 report.range.chart=\u7d71\u8a08\u56f3\u3092\u898b\u308b
 report.range.level=\u5b66\u6b74
@@ -193,7 +193,7 @@ report.range.chart=\u7d71\u8a08\u56f3\u8868
 report.college=\u5b66\u90e8\u5225\u5206\u6790
 report.college.subject=\u79d1\u76ee
 report.college.select=\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044
-report.college.search=\u30af\u30a8\u30ea\u30fc
+report.college.search=\u691c\u7d22
 report.college.export=\u30a8\u30af\u30b9\u30dd\u30fc\u30c8
 report.college.chart=\u7d71\u8a08\u56f3\u3092\u898b\u308b
 report.college.name=\u6240\u5c5e\u5b66\u90e8
@@ -202,65 +202,65 @@ report.college.maxScore=\u6700\u9ad8\u70b9
 report.college.minScore=\u6700\u4f4e\u70b9
 report.college.passCount=\u5408\u683c\u8005\u6570
 report.college.passRate=\u5408\u683c\u7387
-report.college.excellentRate=\u9ad8\u5f97\u70b9\u7387
+report.college.excellentRate=\u512a\u79c0\u5224\u5b9a\u7387
 #report.teacher
-report.teacher=\u62c5\u4efb\u306b\u3064\u3044\u3066\u306e\u8a55\u4fa1
+report.teacher=\u6559\u54e1\u306b\u3064\u3044\u3066\u306e\u8a55\u4fa1
 report.teacher.subject=\u79d1\u76ee
 report.teacher.select=\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044
-report.teacher.search=\u30af\u30a8\u30ea\u30fc
+report.teacher.search=\u691c\u7d22
 report.teacher.export=\u30a8\u30af\u30b9\u30dd\u30fc\u30c8
 report.teacher.chart=\u7d71\u8a08\u56f3\u3092\u898b\u308b
-report.teacher.name=\u62c5\u4efb
+report.teacher.name=\u6559\u54e1\u540d
 report.teacher.realityCount=\u6709\u52b9\u8005\u6570
-report.teacher.passCount=\u5408\u683c\u8005\u6570
-report.teacher.excellentCount=\u9ad8\u5f97\u70b9\u8005\u6570
+report.teacher.passCount=\u5408\u683c
+report.teacher.excellentCount=\u512a\u79c0
 report.teacher.maxScore=\u6700\u9ad8\u70b9
 report.teacher.minScore=\u6700\u4f4e\u70b9
 report.teacher.passRate=\u5408\u683c\u7387
-report.teacher.excellentRate=\u9ad8\u5f97\u70b9\u7387
+report.teacher.excellentRate=\u512a\u79c0\u5224\u5b9a\u7387
 report.teacher.avgScore=\u5e73\u5747\u70b9
 report.teacher.relativeAvgScore=\u5e73\u5747\u70b9\u5dee\u5206
 report.teacher.return=\u623b\u308b
 #report.class
-report.class=\u30af\u30e9\u30b9\u3054\u3068\u5206\u6790
+report.class=\u30af\u30e9\u30b9\u5225\u5206\u6790
 report.class.subject=\u79d1\u76ee
 report.class.select=\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044
-report.class.search=\u30af\u30a8\u30ea\u30fc
+report.class.search=\u691c\u7d22
 report.class.export=\u30a8\u30af\u30b9\u30dd\u30fc\u30c8
 report.class.chart=\u7d71\u8a08\u56f3\u3092\u898b\u308b
 report.class.name=\u30af\u30e9\u30b9
 report.class.avgScore=\u5e73\u5747\u70b9
 report.class.maxScore=\u6700\u9ad8\u70b9
 report.class.minScore=\u6700\u4f4e\u70b9
-report.class.passCount=\u5408\u683c\u8005\u6570
+report.class.passCount=\u5408\u683c\u30af\u30e9\u30b9\u6570
 report.class.passRate=\u5408\u683c\u7387
-report.class.excellentCount=\u9ad8\u5f97\u70b9\u8005\u6570
-report.class.excellentRate=\u9ad8\u5f97\u70b9\u7387
+report.class.excellentCount=\u512a\u79c0
+report.class.excellentRate=\u512a\u79c0\u5224\u5b9a\u7387
 #report.question
-report.question.objective=\u30de\u30fc\u30af\u30b7\u30fc\u30c8\u65b9\u5f0f\u554f\u984c\u306b\u3064\u3044\u3066\u306e\u5206\u6790
+report.question.objective=\u30de\u30fc\u30af\u30b7\u30fc\u30c8\u5f0f\u554f\u984c\u306b\u3064\u3044\u3066\u306e\u5206\u6790
 report.question.subjective=\u8a18\u8ff0\u554f\u984c\u306b\u3064\u3044\u3066\u306e\u5206\u6790
 report.question.subject=\u79d1\u76ee
 report.question.select=\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044
-report.question.search=\u30af\u30a8\u30ea\u30fc
+report.question.search=\u691c\u7d22
 report.question.export=\u30a8\u30af\u30b9\u30dd\u30fc\u30c8
 report.question.chart=\u7d71\u8a08\u56f3\u3092\u898b\u308b
 report.question.paperType=\u7b54\u6848\u7528\u7d19\u306e\u5206\u985e
-report.question.name=\u8a2d\u554f\u540d\u79f0
+report.question.name=\u8a2d\u554f\u540d
 report.question.mainNumber=\u5927\u554f\u756a\u53f7
 report.question.subNumber=\u5c0f\u554f\u756a\u53f7
 report.question.score=\u914d\u70b9
 report.question.avgScore=\u5e73\u5747\u70b9
 report.question.stdev=\u6a19\u6e96\u504f\u5dee
-report.question.scoreRate=\u5f97\u70b9\u7387
+report.question.scoreRate=\u6b63\u7b54\u7387
 report.question.fullScoreRate=\u6e80\u70b9\u7387
 #report.group
 report.group=\u5927\u554f\u306b\u3064\u3044\u3066\u306e\u5206\u6790
 report.group.subject=\u79d1\u76ee
 report.group.select=\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044
-report.group.search=\u30af\u30a8\u30ea\u30fc
+report.group.search=\u691c\u7d22
 report.group.export=\u30a8\u30af\u30b9\u30dd\u30fc\u30c8
 report.group.chart=\u7d71\u8a08\u56f3\u3092\u898b\u308b
-report.group.name=\u8a2d\u554f\u540d\u79f0
+report.group.name=\u8a2d\u554f\u540d
 report.group.number=\u554f\u984c\u756a\u53f7
 report.group.totalScore=\u6e80\u70b9
 report.group.maxScore=\u6700\u9ad8\u70b9
@@ -268,7 +268,7 @@ report.group.minScore=\u6700\u4f4e\u70b9
 report.group.avgScore=\u5e73\u5747\u70b9
 report.group.stdev=\u6a19\u6e96\u504f\u5dee
 report.group.coefficient=\u4e0d\u7b49\u7387
-report.group.scoreRate=\u5f97\u70b9\u7387
+report.group.scoreRate=\u6b63\u7b54\u7387
 report.group.zeroCount=0\u70b9\u8005\u6570
 report.group.fullCount=\u6e80\u70b9\u8005\u6570
 #report.massage