Browse Source

新增扫描端接口;fix bug

ting.yin 2 years ago
parent
commit
7196b7103a

+ 3 - 2
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/user/service/impl/UserServiceImpl.java

@@ -388,14 +388,15 @@ public class UserServiceImpl implements UserService {
         List<User> list = userDao.findStartWithLoginName(prefix);
         int number = 0;
         for (User user : list) {
-            String userNumber = user.getLoginName().substring(prefix.length() + 1, user.getLoginName().length() - 1);
             try {
+                String userNumber = user.getLoginName()
+                        .substring(prefix.length() + 1, user.getLoginName().length() - 1);
                 int no = Integer.parseInt(userNumber);
                 if (number < no) {
                     number = no;
                 }
             } catch (Exception e) {
-
+                e.printStackTrace();
             }
         }
         return number;

+ 11 - 9
stmms-web/src/main/java/cn/com/qmth/stmms/admin/user/UserController.java

@@ -180,6 +180,7 @@ public class UserController extends BaseExamController {
                 }
                 if (user.getRole() == Role.COLLEGE_ADMIN) {
                     int examId = getSessionExamId(request);
+                    previous.setDescription(user.getDescription());
                     subjectUserService.updateByUserId(user.getId(),
                             getSubjectCodeSetByCollege(examId, user.getDescription()));
                 }
@@ -301,12 +302,7 @@ public class UserController extends BaseExamController {
                 query = userService.findByQuery(query);
                 for (User u : query.getResult()) {
                     List<SubjectUser> subjectUsers = subjectUserService.findByUserId(u.getId());
-                    if (subjectUsers.isEmpty()) {
-                        SubjectUserDTO s = new SubjectUserDTO();
-                        s.setRole(query.getRole().getName());
-                        s.setLoginName(user.getLoginName());
-                        list.add(s);
-                    } else {
+                    if (!subjectUsers.isEmpty()) {
                         for (SubjectUser subjectUser : subjectUsers) {
                             SubjectUserDTO s = new SubjectUserDTO();
                             s.setRole(query.getRole().getName());
@@ -319,8 +315,8 @@ public class UserController extends BaseExamController {
                             if (subject != null) {
                                 s.setSubjectCode(subjectUser.getSubjectCode());
                                 s.setSubjectName(subject.getName());
+                                list.add(s);
                             }
-                            list.add(s);
                         }
                     }
                 }
@@ -401,9 +397,15 @@ public class UserController extends BaseExamController {
 
     @RequestMapping("/getSubjectCode")
     @RoleRequire(Role.SCHOOL_ADMIN)
-    public String get(HttpServletRequest request, Model model, RedirectAttributes redirectAttributes) {
+    public String get(HttpServletRequest request, Model model, RedirectAttributes redirectAttributes,
+            @RequestParam(required = false) String code) {
         int examId = getSessionExamId(request);
-        List<ExamSubject> list = subjectService.list(examId);
+        List<ExamSubject> list = new ArrayList<ExamSubject>();
+        if (StringUtils.isNotBlank(code)) {
+            list.add(subjectService.find(examId, code));
+        } else {
+            list = subjectService.list(examId);
+        }
         if (list.size() > 0) {
             model.addAttribute("list", list);
             return "modules/exam/subjectSelect";

+ 86 - 26
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/ExamInfoController.java

@@ -1,10 +1,31 @@
 package cn.com.qmth.stmms.api.controller;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
 import cn.com.qmth.stmms.admin.vo.ExamSubjectVO;
 import cn.com.qmth.stmms.api.exception.ApiException;
 import cn.com.qmth.stmms.biz.exam.model.Exam;
+import cn.com.qmth.stmms.biz.exam.model.ExamQuestion;
 import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
 import cn.com.qmth.stmms.biz.exam.query.ExamSearchQuery;
+import cn.com.qmth.stmms.biz.exam.service.ExamQuestionService;
 import cn.com.qmth.stmms.biz.exam.service.ExamService;
 import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
 import cn.com.qmth.stmms.biz.file.service.FileService;
@@ -18,15 +39,6 @@ import cn.com.qmth.stmms.common.enums.LogType;
 import cn.com.qmth.stmms.common.enums.Role;
 import cn.com.qmth.stmms.common.utils.DateUtils;
 import cn.com.qmth.stmms.common.utils.RequestUtils;
-import net.sf.json.JSONArray;
-import net.sf.json.JSONObject;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.*;
-
-import javax.servlet.http.HttpServletRequest;
-import java.util.Arrays;
-import java.util.List;
 
 @Controller("examInfoApiController")
 @RequestMapping("/api")
@@ -41,6 +53,9 @@ public class ExamInfoController extends BaseApiController {
     @Autowired
     private FileService fileService;
 
+    @Autowired
+    private ExamQuestionService questionService;
+
     @RequestMapping("/version")
     @ResponseBody
     public String version(HttpServletRequest request) {
@@ -71,6 +86,7 @@ public class ExamInfoController extends BaseApiController {
                 obj.accumulate("cardUrl",
                         fileService.getFileServer() + fileService.getCardUri(exam.getId(), exam.getCardType()));
             }
+            obj.accumulate("sliceConfig", StringUtils.trimToEmpty(exam.getSliceConfig()));
             array.add(obj);
         }
         return array;
@@ -80,15 +96,15 @@ public class ExamInfoController extends BaseApiController {
     @RequestMapping(value = "/campus", method = RequestMethod.GET)
     @ResponseBody
     public JSONArray getCampus(HttpServletRequest request) {
-        ApiUser user = RequestUtils.getApiUser(request);
+        // ApiUser user = RequestUtils.getApiUser(request);
         JSONArray array = new JSONArray();
-        //        List<Campus> list = campusService.findBySchoolId(user.getSchoolId());
-        //        for (Campus c : list) {
-        //            JSONObject obj = new JSONObject();
-        //            obj.accumulate("code", c.getId().toString());
-        //            obj.accumulate("name", c.getName());
-        //            array.add(obj);
-        //        }
+        // List<Campus> list = campusService.findBySchoolId(user.getSchoolId());
+        // for (Campus c : list) {
+        // JSONObject obj = new JSONObject();
+        // obj.accumulate("code", c.getId().toString());
+        // obj.accumulate("name", c.getName());
+        // array.add(obj);
+        // }
         return array;
     }
 
@@ -103,9 +119,12 @@ public class ExamInfoController extends BaseApiController {
             obj.accumulate("name", subject.getName());
             if (subject.getCardType() != null) {
                 obj.accumulate("cardType", subject.getCardType().getExtName());
-                obj.accumulate("cardUrl", fileService.getFileServer() + fileService
-                        .getCardUri(subject.getExamId(), subject.getCode(), subject.getCardType()));
+                obj.accumulate(
+                        "cardUrl",
+                        fileService.getFileServer()
+                                + fileService.getCardUri(subject.getExamId(), subject.getCode(), subject.getCardType()));
             }
+            obj.accumulate("sliceConfig", StringUtils.trimToEmpty(subject.getSliceConfig()));
             array.add(obj);
         }
         return array;
@@ -122,13 +141,13 @@ public class ExamInfoController extends BaseApiController {
         if (exam != null && exam.getSchoolId().equals(user.getSchoolId())) {
             ExamSubject es = subjectService.find(subject.getExamId(), subject.getCode());
             if (es != null) {
-                //                if (subject.getHasAnswer() != null) {
-                //                    es.setHasAnswer(subject.getHasAnswer());
-                //                }
-                //                if (subject.getHasPaper() != null) {
-                //                    es.setHasPaper(subject.getHasPaper());
-                //                }
-                //                subjectService.save(es);
+                // if (subject.getHasAnswer() != null) {
+                // es.setHasAnswer(subject.getHasAnswer());
+                // }
+                // if (subject.getHasPaper() != null) {
+                // es.setHasPaper(subject.getHasPaper());
+                // }
+                // subjectService.save(es);
                 result.accumulate("code", subject.getCode());
                 return result;
             } else {
@@ -182,4 +201,45 @@ public class ExamInfoController extends BaseApiController {
         }
         return success;
     }
+
+    @RequestMapping(value = "/questions/{examId}", method = RequestMethod.GET)
+    @ResponseBody
+    public JSONArray getQuestion(HttpServletRequest request, @PathVariable Integer examId,
+            @RequestParam String[] subjectCodes, @RequestParam(required = false, defaultValue = "#") String paperType,
+            @RequestParam Boolean objective) {
+        ApiUser user = RequestUtils.getApiUser(request);
+        JSONArray result = new JSONArray();
+        // 输入字段预处理并初步校验
+        Exam exam = examService.findById(examId);
+        if (exam == null || !exam.getSchoolId().equals(user.getSchoolId()) || exam.getStatus() != ExamStatus.START) {
+            throw ApiException.EXAM_NOT_ACCESSIBLED;
+        }
+        for (String subjectCode : subjectCodes) {
+            subjectCode = validate("subjectCode", subjectCode, true, 64);
+            ExamSubject subject = subjectService.find(examId, subjectCode);
+            if (subject == null) {
+                throw ApiException.QUERY_PARAM_ERROR.appendMessage(": subjectCode error");
+            }
+            List<ExamQuestion> list = new ArrayList<ExamQuestion>();
+            if (objective == null) {
+                list.addAll(questionService.findByExamAndSubjectAndObjectiveAndPaperType(examId, subjectCode, true,
+                        paperType));
+                list.addAll(questionService.findByExamAndSubjectAndObjective(examId, subjectCode, false));
+            } else {
+                list.addAll(questionService.findByExamAndSubjectAndObjective(examId, subjectCode, objective));
+            }
+            for (ExamQuestion q : list) {
+                JSONObject value = new JSONObject();
+                value.accumulate("subjectCode", q.getSubjectCode());
+                value.accumulate("objective", q.isObjective());
+                value.accumulate("mainNumber", q.getMainNumber());
+                value.accumulate("subNumber", q.getSubNumber());
+                value.accumulate("mainTitle", q.getMainTitle());
+                value.accumulate("totalScore", q.getTotalScore());
+                value.accumulate("answer", q.getAnswer() == null ? "" : q.getAnswer());
+                result.add(value);
+            }
+        }
+        return result;
+    }
 }

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

@@ -72,6 +72,7 @@ public class ExamStudentController extends BaseApiController {
             obj.accumulate("examNumber", student.getExamNumber());
             obj.accumulate("name", student.getName());
             obj.accumulate("studentId", String.valueOf(student.getId()));
+            obj.accumulate("studentCode", student.getStudentCode());
             obj.accumulate("subjectCode", student.getSubjectCode());
             obj.accumulate("subjectName", student.getSubjectName());
             obj.accumulate("examSite", StringUtils.trimToEmpty(student.getExamSite()));
@@ -82,6 +83,7 @@ public class ExamStudentController extends BaseApiController {
             obj.accumulate("examNumber", examStudent.getExamNumber());
             obj.accumulate("name", "");
             obj.accumulate("studentId", "");
+            obj.accumulate("studentCode", "");
             obj.accumulate("subjectCode", "");
             obj.accumulate("subjectName", "");
             obj.accumulate("examSite", "");

+ 5 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/LoginController.java

@@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
 
 import cn.com.qmth.stmms.api.exception.ApiException;
 import cn.com.qmth.stmms.biz.exam.service.SubjectUserService;
+import cn.com.qmth.stmms.biz.file.service.FileService;
 import cn.com.qmth.stmms.biz.school.model.School;
 import cn.com.qmth.stmms.biz.school.service.SchoolService;
 import cn.com.qmth.stmms.biz.user.model.User;
@@ -43,6 +44,9 @@ public class LoginController extends BaseApiController {
     @Autowired
     private SchoolService schoolService;
 
+    @Autowired
+    private FileService fileService;
+
     @RoleRequire({ Role.SCHOOL_ADMIN, Role.SCANNER, Role.SUBJECT_HEADER, Role.COLLEGE_ADMIN })
     @RequestMapping(value = "/user/login", method = RequestMethod.GET)
     @ResponseBody
@@ -54,6 +58,7 @@ public class LoginController extends BaseApiController {
         obj.accumulate("userRole", user.getRole().toString());
         obj.accumulate("campusId", 0);
         obj.accumulate("schoolId", user.getSchoolId());
+        obj.accumulate("fileServer", fileService.getFileServer());
         JSONArray array = new JSONArray();
         if (user.getUserData() != null && Role.SUBJECT_HEADER.equals(user.getRole())) {
             Set<String> set = subjectUserService.findSubjectCode(user.getUserData().getId());

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

@@ -131,6 +131,8 @@
 	            </select>
 	        </div>
 	    </div>
+    </c:if>
+     <c:if test="${exam.type!='MULTI_MEDIA'}">
         <div class="control-group">
             <label class="control-label">图片显示</label>
             <div class="controls">
@@ -138,7 +140,7 @@
                    target="_blank" id="configuration" rel="opener">设置</a>
             </div>
         </div>
-    </c:if>
+	</c:if>
     <form:input path="picList" class="required" id="picList" type="hidden"/>
     <div class="control-group">
         <label class="control-label">双评</label>

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

@@ -129,6 +129,7 @@
             </div>
         </div>
     </c:if> --%>
+    <c:if test="${exam.type!='MULTI_MEDIA' && exam.markMode!='TRACK'}">
     <div class="control-group">
         <label class="control-label">评卷模式</label>
         <div class="controls">
@@ -141,6 +142,7 @@
             </select>
         </div>
     </div>
+    </c:if>
     <c:if test="${exam.type!='MULTI_MEDIA'}">
         <div class="control-group">
             <label class="control-label">图片显示</label>
@@ -204,13 +206,13 @@
 	        </div>
         </div>
 		</c:if>
+    </c:if>
         <div class="control-group">
             <label class="control-label">启用全零分</label>
             <div class="controls">
                 <input name="enableAllZero" type="checkbox" value="1" <c:if test="${group.enableAllZero}">checked</c:if>/>
             </div>
         </div>
-    </c:if>
     <div class="control-group">
         <label class="control-label">重要提示</label>
         <div class="controls">

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

@@ -86,6 +86,7 @@
             </div>
         </div>
     </c:if> --%>
+    <c:if test="${exam.type!='MULTI_MEDIA' && exam.markMode!='TRACK'}">
     <div class="control-group">
         <label class="control-label">评卷模式</label>
         <div class="controls">
@@ -98,6 +99,7 @@
             </select>
         </div>
     </div>
+    </c:if>
     <c:if test="${exam.type!='MULTI_MEDIA'}">
         <div class="control-group">
             <label class="control-label">图片显示</label>
@@ -148,13 +150,13 @@
 	        </div>
         </div>
         </c:if>
+    </c:if>
         <div class="control-group">
             <label class="control-label">启用全零分</label>
             <div class="controls">
                 <input name="enableAllZero" type="checkbox" value="1" <c:if test="${group.enableAllZero}">checked</c:if>/>
             </div>
         </div>
-    </c:if>
     <div class="form-actions">
     	<a class="btn" href="${ctx}/admin/exam/group/edit-full?subjectCode=${group.subjectCode}&number=${group.number}">重置修改</a>&nbsp;
         <a id="btnSubmit" href="##" class="btn btn-primary">保 存</a>

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

@@ -87,7 +87,7 @@
         <input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
         &nbsp;
         <c:if test="${examType!='MULTI_MEDIA' && inspectedCount!=null && inspectedCount>0}">
-            <a target="_blank" href="${ctx}/web/admin/exam/library/inspected/start?subjectCode=${query.subjectCode}&groupNumber=${query.groupNumber}&markerId=${query.markerId}&examNumber=${query.examNumber}&secretNumber=${query.secretNumber}&startScore=${query.startScore}&endScore=${query.endScore}&questionScore=${query.questionScore}&unselective=${query.unselective}"
+            <a id="btnInspected" target="_blank" href="${ctx}/web/admin/exam/library/inspected/start?subjectCode=${query.subjectCode}&groupNumber=${query.groupNumber}&markerId=${query.markerId}&examNumber=${query.examNumber}&secretNumber=${query.secretNumber}&startScore=${query.startScore}&endScore=${query.endScore}&questionScore=${query.questionScore}&unselective=${query.unselective}"
              class="btn">待复核:${inspectedCount }</a>
         </c:if>
     </div>
@@ -273,6 +273,14 @@
         $("#searchForm").submit();
         return false;
     }
+    $('#btnInspected').click(function () {
+    	var groupNumber='${query.groupNumber}';
+    	if(groupNumber==null||groupNumber==''){
+    		alert("请选择分组查询后再开始复核");
+    		return false;
+    	}
+    });
+    
 </script>
 </body>
 </html>

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

@@ -52,7 +52,7 @@
 		<div class="control-group">
 			<label class="control-label">大题名称</label>
 			<div class="controls">
-			 <input name="mainTitle" value="${examQuestion.mainTitle }" type="text"  class="required"/>
+			 <input name="mainTitle" value="${examQuestion.mainTitle }" type="text"  maxlength="32" class="required"/>
 			</div>
 		</div>
 		<div class="control-group">

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

@@ -48,7 +48,7 @@
 		<div class="control-group">
 			<label class="control-label">大题名称</label>
 			<div class="controls">
-			 <input name="mainTitle" value="${examQuestion.mainTitle }" type="text"  class="required"/>
+			 <input name="mainTitle" value="${examQuestion.mainTitle }" type="text" maxlength="32" class="required"/>
 			</div>
 		</div>
 		<div class="control-group">

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

@@ -17,7 +17,7 @@
         <label>科目</label>
         <select class="input-large" name="code" id="subject-select">
             <option value="">请选择</option>
-            <c:forEach items="${subjectList}" var="subject">
+            <c:forEach items="${list}" var="subject">
                 <option value="${subject.code}" data-level="${subject.level}" <c:if test="${subject.code==query.code}">selected</c:if>>${subject.code}-${subject.name}</option>
             </c:forEach>
         </select>
@@ -55,6 +55,24 @@
     </tbody>
 </table>
 <script type="text/javascript">
+$(document).ready(function (e) {
+	var subjectCodeString = window.localStorage.getItem("subjectCodeString");
+	if (subjectCodeString != null && subjectCodeString != undefined) {
+		$("input[name='codes']").each(function(){
+    		$(this).attr("checked", false);
+    	});
+	    var check_list =subjectCodeString.split(",");
+        check_list.forEach(code => {
+        	$("input[name='codes']").each(function(){
+        		if($(this).val()==code){
+        			$(this).attr("checked", true);
+        		}
+        	})
+        });
+        $(".codes").change();
+	}
+});
+
 $("#codes").change(function () {
     if ($("#codes").is(':checked')) {
         $(".codes").attr("checked", true);
@@ -85,10 +103,15 @@ function goCheck() {
 		var result = check_list.join(",");
         window.opener.document.getElementById("subjectCodeString").value = result;
         window.opener.document.getElementById("configuration").innerText = "设置成功";
+        window.localStorage.setItem("subjectCodeString",result);
         window.close();
     }
     return false;
 }
+function goSearch() {
+    $("#searchForm").submit();
+    return false;
+}
 </script>
 </body>
 </html>

+ 1 - 0
stmms-web/src/main/webapp/WEB-INF/views/modules/user/userAdd.jsp

@@ -42,6 +42,7 @@
                 }
             });
             $('#role-select').trigger('change');
+            window.localStorage.removeItem("subjectCodeString");
         });
     </script>
 </head>

+ 2 - 2
stmms-web/src/main/webapp/WEB-INF/views/modules/user/userEdit.jsp

@@ -51,13 +51,13 @@
     <div class="control-group">
         <label class="control-label">登录名</label>
         <div class="controls">
-            <form:input path="loginName" htmlEscape="false" maxlength="20" class="required"/>
+            <form:input path="loginName" htmlEscape="false" maxlength="32" class="required"/>
         </div>
     </div>
     <div class="control-group">
         <label class="control-label">名称</label>
         <div class="controls">
-            <form:input path="name" htmlEscape="false" maxlength="20" class="required"/>
+            <form:input path="name" htmlEscape="false" maxlength="32" class="required"/>
         </div>
     </div>
     <div class="control-group">

+ 1 - 1
stmms-web/src/main/webapp/sql/stmms_ft.sql

@@ -321,7 +321,7 @@ CREATE TABLE `eb_inspect_history`
 	`inspector_id` 	INT (11) DEFAULT NULL COMMENT '复核人ID',
 	`student_id` 	INT (11) DEFAULT NULL COMMENT '考生ID',
 	PRIMARY KEY (`id`),
-	KEY `index1` (`student_id`),
+	KEY `index1` (`student_id`)
 ) ENGINE = INNODB 
 	DEFAULT CHARSET = utf8mb4 COMMENT = '复核记录表';