ting.yin 3 lat temu
rodzic
commit
c14001ac2a

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

@@ -88,7 +88,7 @@ public class CheckStudentController extends BaseExamController {
             cs.setChecked(true);
             cs.setUpdateTime(new Date());
             checkStudentService.save(cs);
-            return true;
+            return saveUploadStudent(student);
         } else {
             return false;
         }

+ 56 - 20
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/ScoreController.java

@@ -1,11 +1,47 @@
 package cn.com.qmth.stmms.admin.exam;
 
+import java.io.ByteArrayInputStream;
+import java.io.OutputStream;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import net.sf.json.JSONObject;
+
+import org.apache.commons.io.output.ByteArrayOutputStream;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
+
 import cn.com.qmth.stmms.admin.dto.ExamStudentDTO;
 import cn.com.qmth.stmms.admin.dto.ScoreEditDTO;
 import cn.com.qmth.stmms.admin.utils.ExportStudentExcel;
-import cn.com.qmth.stmms.biz.exam.model.*;
+import cn.com.qmth.stmms.biz.exam.model.Exam;
+import cn.com.qmth.stmms.biz.exam.model.ExamPackage;
+import cn.com.qmth.stmms.biz.exam.model.ExamQuestion;
+import cn.com.qmth.stmms.biz.exam.model.ExamStudent;
+import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
+import cn.com.qmth.stmms.biz.exam.model.MarkGroup;
 import cn.com.qmth.stmms.biz.exam.query.ExamStudentSearchQuery;
-import cn.com.qmth.stmms.biz.exam.service.*;
+import cn.com.qmth.stmms.biz.exam.service.CheckStudentService;
+import cn.com.qmth.stmms.biz.exam.service.ExamPackageService;
+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.ExamStudentService;
+import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
+import cn.com.qmth.stmms.biz.exam.service.MarkGroupService;
+import cn.com.qmth.stmms.biz.file.enums.FormatType;
 import cn.com.qmth.stmms.biz.file.service.FileService;
 import cn.com.qmth.stmms.biz.utils.DoubleUtil;
 import cn.com.qmth.stmms.biz.utils.ScoreItem;
@@ -15,24 +51,11 @@ import cn.com.qmth.stmms.common.domain.WebUser;
 import cn.com.qmth.stmms.common.enums.LogType;
 import cn.com.qmth.stmms.common.enums.MarkStatus;
 import cn.com.qmth.stmms.common.enums.Role;
+import cn.com.qmth.stmms.common.utils.Encodes;
 import cn.com.qmth.stmms.common.utils.ExportExcel;
 import cn.com.qmth.stmms.common.utils.RequestUtils;
-import net.sf.json.JSONObject;
 
-import org.apache.commons.lang.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.mvc.support.RedirectAttributes;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import java.math.BigDecimal;
-import java.util.*;
+import com.qmth.boot.tools.io.ZipWriter;
 
 @Controller
 @RequestMapping("/admin/exam/score")
@@ -227,6 +250,7 @@ public class ScoreController extends BaseExamController {
         String fileName = "成绩单.xlsx";
         query.setExamId(exam.getId());
         Set<String> subjectSet = new HashSet<>();
+        List<String> error = new ArrayList<String>();
         // 单科目导出
         if (StringUtils.isNotBlank(query.getSubjectCode())) {
             String exportMessage = enableExport(exam.getId(), query.getSubjectCode());
@@ -245,8 +269,11 @@ public class ScoreController extends BaseExamController {
             }
             for (ExamSubject subject : list) {
                 // 遍历所有科目,判断是否允许导出
-                if (enableExport(subject.getExamId(), subject.getCode()) == null) {
+                String meaages = enableExport(subject.getExamId(), subject.getCode());
+                if (meaages == null) {
                     subjectSet.add(subject.getCode());
+                } else {
+                    error.add(meaages);
                 }
             }
             if (list.size() != subjectSet.size()) {
@@ -281,7 +308,16 @@ public class ScoreController extends BaseExamController {
                 excel.write(response, fileName).dispose();
                 return null;
             } else {
-                new ExportExcel("成绩单", ExamStudentDTO.class).setDataList(list).write(response, fileName).dispose();
+                response.setHeader("Content-Disposition", "attachment; filename=" + Encodes.urlEncode("成绩单.zip"));
+                ZipWriter writer = ZipWriter.create(response.getOutputStream());
+                ByteArrayOutputStream os = new ByteArrayOutputStream();
+                new ExportExcel("成绩单", ExamStudentDTO.class).setDataList(list).write(os);
+                byte[] value = os.toByteArray();
+                writer.write(new ByteArrayInputStream(value), fileName);
+                if (!error.isEmpty()) {
+                    writer.write(StringUtils.join(error, ",").getBytes(), "error.txt");
+                }
+                writer.close();
                 return null;
             }
         } catch (Exception e) {
@@ -394,7 +430,7 @@ public class ScoreController extends BaseExamController {
     private String enableExport(int examId, String subjectCode) {
         ExamSubject subject = subjectService.find(examId, subjectCode);
         if (subject == null) {
-            return "该科目不存在";
+            return subjectCode + "该科目不存在";
         }
         if (DoubleUtil.sum(subject.getObjectiveScore(), subject.getSubjectiveScore()) == 0) {
             return subjectCode + "科目总分为0";

+ 4 - 2
stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectRangeController.java

@@ -174,8 +174,10 @@ public class ReportSubjectRangeController extends BaseExamController {
             writer.write(new ByteArrayInputStream(className), subjectName, "班级分析.xlsx");
             byte[] teacher = fileService.downloadReport(examId, subjectName, "任课老师统计", FormatType.XLSX);
             writer.write(new ByteArrayInputStream(teacher), subjectName, "任课老师统计.xlsx");
-            byte[] objective = fileService.downloadReport(examId, subjectName, "客观题分析", FormatType.XLSX);
-            writer.write(new ByteArrayInputStream(objective), subjectName, "客观题分析.xlsx");
+            if (fileService.reportExist(examId, subjectName, "客观题分析", FormatType.XLSX)) {
+                byte[] objective = fileService.downloadReport(examId, subjectName, "客观题分析", FormatType.XLSX);
+                writer.write(new ByteArrayInputStream(objective), subjectName, "客观题分析.xlsx");
+            }
             byte[] subjective = fileService.downloadReport(examId, subjectName, "主观题分析", FormatType.XLSX);
             writer.write(new ByteArrayInputStream(subjective), subjectName, "主观题分析.xlsx");
             byte[] group = fileService.downloadReport(examId, subjectName, "分组统计分析", FormatType.XLSX);