Browse Source

add uploadStudent

ting.yin 5 years ago
parent
commit
6a9329c27c

+ 59 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/StudentController.java

@@ -25,6 +25,7 @@ import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
 
 import cn.com.qmth.stmms.admin.vo.ExamStudentVO;
 import cn.com.qmth.stmms.admin.vo.ExamStudentVO;
+import cn.com.qmth.stmms.admin.vo.UploadStudentVO;
 import cn.com.qmth.stmms.biz.campus.model.Campus;
 import cn.com.qmth.stmms.biz.campus.model.Campus;
 import cn.com.qmth.stmms.biz.campus.service.CampusService;
 import cn.com.qmth.stmms.biz.campus.service.CampusService;
 import cn.com.qmth.stmms.biz.exam.model.Exam;
 import cn.com.qmth.stmms.biz.exam.model.Exam;
@@ -466,6 +467,64 @@ public class StudentController extends BaseExamController {
         return result;
         return result;
     }
     }
 
 
+    @RequestMapping(value = "/uploadTemplate")
+    public String uploadTemplate(HttpServletResponse response, RedirectAttributes redirectAttributes) {
+        try {
+            String fileName = "多媒体考生上传导入模板.xlsx";
+            List<UploadStudentVO> list = Lists.newArrayList();
+            list.add(new UploadStudentVO());
+            new ExportExcel("多媒体考生上传", UploadStudentVO.class, 2).setDataList(list).write(response, fileName).dispose();
+            return null;
+        } catch (Exception e) {
+            addMessage(redirectAttributes, "导入模板下载失败!失败信息:" + e.getMessage());
+        }
+        return "redirect:/admin/exam/student";
+    }
+
+    @RequestMapping(value = "/uploadImport", method = RequestMethod.POST)
+    public String uploadImportFile(HttpServletRequest request, MultipartFile file, RedirectAttributes redirectAttributes) {
+        int examId = getSessionExamId(request);
+        // Exam exam = examService.findById(examId);
+        try {
+            int successNum = 0;
+            int failureNum = 0;
+            StringBuilder failureMsg = new StringBuilder();
+            ImportExcel ei = new ImportExcel(file, 1, 0);
+            List<UploadStudentVO> list = ei.getDataList(UploadStudentVO.class);
+            for (UploadStudentVO studentVO : list) {
+                if (StringUtils.isBlank(studentVO.getExamNumber())) {
+                    continue;
+                }
+                ExamStudent student = studentService.findByExamIdAndExamNumber(examId, studentVO.getExamNumber());
+                if (student != null) {
+                    student.setUpload(true);
+                    student.setAbsent(false);
+                    student.setAnswers(null);
+                    student.setBatchCode(null);
+                    student.setSliceCount(0);
+                    student.setSheetCount(0);
+                    student.setPaperType(StringUtils.trimToNull(studentVO.getPaperType()));
+                    // 同步更新评卷任务
+                    if (saveUploadStudent(student)) {
+                        successNum++;
+                    }
+                } else {
+                    failureMsg.append("<br/>准考证号 " + studentVO.getExamNumber() + " 不存在; ");
+                    failureNum++;
+                }
+
+            }
+            if (failureNum > 0) {
+                failureMsg.insert(0, ",失败 " + failureNum + " 条用户");
+            }
+            addMessage(redirectAttributes, "已成功导入 " + successNum + " 条用户" + failureMsg);
+        } catch (Exception e) {
+            log.error("Batch import BreachStudent error!", e);
+            addMessage(redirectAttributes, "导入上传考生失败!失败信息:" + e.getMessage());
+        }
+        return "redirect:/admin/exam/student";
+    }
+
     private ExamStudent checkExamNumber(ExamStudent student, Map<String, ExamStudent> current,
     private ExamStudent checkExamNumber(ExamStudent student, Map<String, ExamStudent> current,
             Map<String, ExamStudent> saveMap) {
             Map<String, ExamStudent> saveMap) {
         ExamStudent previous = saveMap.get(student.getExamNumber());
         ExamStudent previous = saveMap.get(student.getExamNumber());

+ 29 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/vo/UploadStudentVO.java

@@ -0,0 +1,29 @@
+package cn.com.qmth.stmms.admin.vo;
+
+import cn.com.qmth.stmms.common.annotation.ExcelField;
+
+public class UploadStudentVO {
+
+    @ExcelField(title = "准考证号", align = 2, sort = 10)
+    private String examNumber;
+
+    @ExcelField(title = "试卷类型", align = 2, sort = 20)
+    private String paperType;
+
+    public String getExamNumber() {
+        return examNumber;
+    }
+
+    public void setExamNumber(String examNumber) {
+        this.examNumber = examNumber;
+    }
+
+    public String getPaperType() {
+        return paperType;
+    }
+
+    public void setPaperType(String paperType) {
+        this.paperType = paperType;
+    }
+
+}

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

@@ -16,7 +16,7 @@
 			<a href="${ctx}/admin/exam/student/template">下载模板</a>
 			<a href="${ctx}/admin/exam/student/template">下载模板</a>
 		</form>
 		</form>
 	</div>
 	</div>
-	    <div id="breachImportBox" class="hide">
+	<div id="breachImportBox" class="hide">
         <form id="breachImportForm" action="${ctx}/admin/exam/student/breachImport" method="post" enctype="multipart/form-data"
         <form id="breachImportForm" action="${ctx}/admin/exam/student/breachImport" method="post" enctype="multipart/form-data"
               style="padding-left:20px;text-align:center;" class="form-search" onsubmit="loading('正在导入,请稍等...');"><br/>
               style="padding-left:20px;text-align:center;" class="form-search" onsubmit="loading('正在导入,请稍等...');"><br/>
             <input id="breachUploadFile" name="file" type="file" style="width:330px"/><br/><br/>  
             <input id="breachUploadFile" name="file" type="file" style="width:330px"/><br/><br/>  
@@ -31,6 +31,14 @@
             <input id="absentBtnImportSubmit" class="btn btn-primary" type="submit" value="缺考考生导入"/>
             <input id="absentBtnImportSubmit" class="btn btn-primary" type="submit" value="缺考考生导入"/>
             <a href="${ctx}/admin/exam/student/absentTemplate">下载模板</a>
             <a href="${ctx}/admin/exam/student/absentTemplate">下载模板</a>
         </form>
         </form>
+    </div>
+    <div id="uploadImportBox" class="hide">
+        <form id="uploadImportForm" action="${ctx}/admin/exam/student/uploadImport" method="post" enctype="multipart/form-data"
+              style="padding-left:20px;text-align:center;" class="form-search" onsubmit="loading('正在导入,请稍等...');"><br/>
+            <input id="studentUploadFile" name="file" type="file" style="width:330px"/><br/><br/>  
+            <input id="uploadBtnImportSubmit" class="btn btn-primary" type="submit" value="多媒体考生上传导入"/>
+            <a href="${ctx}/admin/exam/student/uploadTemplate">下载模板</a>
+        </form>
     </div>
     </div>
 	<form id="searchForm"  action="${ctx}/admin/exam-param/student" method="post" class="breadcrumb form-search">
 	<form id="searchForm"  action="${ctx}/admin/exam-param/student" method="post" class="breadcrumb form-search">
 		<input type="hidden" id="pageNumber" name="pageNumber" value="${query.pageNumber }"/>
 		<input type="hidden" id="pageNumber" name="pageNumber" value="${query.pageNumber }"/>
@@ -103,6 +111,7 @@
                         <ul class="dropdown-menu">
                         <ul class="dropdown-menu">
                             <li><a href="##" id="breachBtnImport">违纪名单</a></li>
                             <li><a href="##" id="breachBtnImport">违纪名单</a></li>
                             <li><a href="##" id="absentBtnImport">缺考名单</a></li>
                             <li><a href="##" id="absentBtnImport">缺考名单</a></li>
+                            <li><a href="##" id="uploadBtnImport">多媒体上传名单</a></li>
                         </ul>
                         </ul>
             </div>
             </div>
 			</c:if>
 			</c:if>
@@ -228,6 +237,10 @@ $("#absentBtnImport").click(function(){
 	$.jBox($("#absentImportBox").html(), {title:"导入数据", buttons:{"关闭":true},
 	$.jBox($("#absentImportBox").html(), {title:"导入数据", buttons:{"关闭":true},
 		bottomText:"导入文件不能超过5M,仅允许导入“xls”或“xlsx”格式文件!"});
 		bottomText:"导入文件不能超过5M,仅允许导入“xls”或“xlsx”格式文件!"});
 });
 });
+$("#uploadBtnImport").click(function(){
+	$.jBox($("#uploadImportBox").html(), {title:"导入数据", buttons:{"关闭":true},
+		bottomText:"导入文件不能超过5M,仅允许导入“xls”或“xlsx”格式文件!"});
+});
 $("#export-button").click(function(){
 $("#export-button").click(function(){
 	$("#searchForm").attr("action","${ctx}/admin/exam/student/export");
 	$("#searchForm").attr("action","${ctx}/admin/exam/student/export");
 	$("#searchForm").submit();
 	$("#searchForm").submit();