浏览代码

新增下载复核历史

yin 3 月之前
父节点
当前提交
a705522cca

+ 6 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/mark/MarkArchiveController.java

@@ -100,4 +100,10 @@ public class MarkArchiveController {
         scoreReportVo.setSemesterName(basicSemester.getName());
         return ResultUtil.ok(scoreReportVo);
     }
+
+    @ApiOperation(value = "复核记录导出")
+    @RequestMapping(value = "score/history/export", method = RequestMethod.POST)
+    public void historyExport(@Validated ArchiveStudentQuery query, HttpServletResponse response) throws IOException {
+        markStudentService.historyExport(query, response);
+    }
 }

+ 99 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/bean/archivescore/ScoreHistoryVo.java

@@ -0,0 +1,99 @@
+package com.qmth.teachcloud.mark.bean.archivescore;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.common.annotation.ExcelProperty;
+
+public class ScoreHistoryVo {
+
+	@JsonSerialize(using = ToStringSerializer.class)
+	private Long studentId;
+	@ExcelProperty(name = "学号", width = 20, index = 1)
+	private String studentCode;
+	@ExcelProperty(name = "学生姓名", width = 20, index = 2)
+	private String studentName;
+	@ExcelProperty(name = "复核老师工号", width = 20, index = 3)
+	private String loginName;
+	@ExcelProperty(name = "复核老师姓名", width = 20, index = 4)
+	private String name;
+	@ExcelProperty(name = "大题号", width = 20, index = 5)
+	private Integer mainNumber;
+	@ExcelProperty(name = "小题号", width = 20, index = 6)
+	private Integer subNumber;
+	@ExcelProperty(name = "原始分数", width = 20, index = 7)
+	private Double originalScore;
+	@ExcelProperty(name = "复核后分数", width = 20, index = 8)
+	private Double score;
+
+	public Long getStudentId() {
+		return studentId;
+	}
+
+	public void setStudentId(Long studentId) {
+		this.studentId = studentId;
+	}
+
+	public String getStudentCode() {
+		return studentCode;
+	}
+
+	public void setStudentCode(String studentCode) {
+		this.studentCode = studentCode;
+	}
+
+	public String getStudentName() {
+		return studentName;
+	}
+
+	public void setStudentName(String studentName) {
+		this.studentName = studentName;
+	}
+
+	public String getLoginName() {
+		return loginName;
+	}
+
+	public void setLoginName(String loginName) {
+		this.loginName = loginName;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public Integer getMainNumber() {
+		return mainNumber;
+	}
+
+	public void setMainNumber(Integer mainNumber) {
+		this.mainNumber = mainNumber;
+	}
+
+	public Integer getSubNumber() {
+		return subNumber;
+	}
+
+	public void setSubNumber(Integer subNumber) {
+		this.subNumber = subNumber;
+	}
+
+	public Double getOriginalScore() {
+		return originalScore;
+	}
+
+	public void setOriginalScore(Double originalScore) {
+		this.originalScore = originalScore;
+	}
+
+	public Double getScore() {
+		return score;
+	}
+
+	public void setScore(Double score) {
+		this.score = score;
+	}
+}

+ 5 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/MarkHeaderHistoryMapper.java

@@ -1,7 +1,11 @@
 package com.qmth.teachcloud.mark.mapper;
 
+import com.qmth.teachcloud.mark.bean.archivescore.ScoreHistoryVo;
 import com.qmth.teachcloud.mark.entity.MarkHeaderHistory;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +17,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface MarkHeaderHistoryMapper extends BaseMapper<MarkHeaderHistory> {
 
+    List<ScoreHistoryVo> findByExamIdAndPaperNumber(@Param("examId") Long examId, @Param("paperNumber") String paperNumber);
 }

+ 4 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkHeaderHistoryService.java

@@ -1,8 +1,11 @@
 package com.qmth.teachcloud.mark.service;
 
+import com.qmth.teachcloud.mark.bean.archivescore.ScoreHistoryVo;
 import com.qmth.teachcloud.mark.entity.MarkHeaderHistory;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+
 /**
  * <p>
  * 复核历史表 服务类
@@ -13,4 +16,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface MarkHeaderHistoryService extends IService<MarkHeaderHistory> {
 
+    List<ScoreHistoryVo> findByExamIdAndPaperNumber(Long examId, String paperNumber);
 }

+ 3 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkStudentService.java

@@ -1,5 +1,6 @@
 package com.qmth.teachcloud.mark.service;
 
+import java.io.IOException;
 import java.util.List;
 import java.util.Set;
 
@@ -287,4 +288,6 @@ public interface MarkStudentService extends IService<MarkStudent> {
      * @return
      */
     List<MarkStudent> findNeedScoreCalculateStudent();
+
+    void historyExport(ArchiveStudentQuery query, HttpServletResponse response) throws IOException;
 }

+ 10 - 2
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkHeaderHistoryServiceImpl.java

@@ -1,10 +1,14 @@
 package com.qmth.teachcloud.mark.service.impl;
 
+import java.util.List;
+
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.teachcloud.mark.bean.archivescore.ScoreHistoryVo;
 import com.qmth.teachcloud.mark.entity.MarkHeaderHistory;
 import com.qmth.teachcloud.mark.mapper.MarkHeaderHistoryMapper;
 import com.qmth.teachcloud.mark.service.MarkHeaderHistoryService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
 
 /**
  * <p>
@@ -17,4 +21,8 @@ import org.springframework.stereotype.Service;
 @Service
 public class MarkHeaderHistoryServiceImpl extends ServiceImpl<MarkHeaderHistoryMapper, MarkHeaderHistory> implements MarkHeaderHistoryService {
 
+    @Override
+    public List<ScoreHistoryVo> findByExamIdAndPaperNumber(Long examId, String paperNumber) {
+        return this.baseMapper.findByExamIdAndPaperNumber(examId, paperNumber);
+    }
 }

+ 51 - 31
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkStudentServiceImpl.java

@@ -1,5 +1,35 @@
 package com.qmth.teachcloud.mark.service.impl;
 
+import java.awt.*;
+import java.awt.color.ColorSpace;
+import java.awt.image.BufferedImage;
+import java.awt.image.ColorConvertOp;
+import java.io.*;
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.net.URLEncoder;
+import java.util.*;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import javax.annotation.Resource;
+import javax.imageio.ImageIO;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.NotNull;
+
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.ss.usermodel.CellStyle;
+import org.apache.poi.ss.usermodel.FillPatternType;
+import org.apache.poi.ss.usermodel.IndexedColors;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.FileCopyUtils;
+import org.springframework.web.multipart.MultipartFile;
+
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -55,37 +85,7 @@ import com.qmth.teachcloud.mark.params.MarkHeaderResult;
 import com.qmth.teachcloud.mark.service.*;
 import com.qmth.teachcloud.mark.utils.BatchGetDataUtil;
 import com.qmth.teachcloud.mark.utils.Calculator;
-import com.qmth.teachcloud.mark.utils.FileStoreUtils;
 import com.qmth.teachcloud.mark.utils.ScoreCalculateUtil;
-import org.apache.commons.codec.digest.DigestUtils;
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.io.FilenameUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.poi.ss.usermodel.CellStyle;
-import org.apache.poi.ss.usermodel.FillPatternType;
-import org.apache.poi.ss.usermodel.IndexedColors;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.FileCopyUtils;
-import org.springframework.web.multipart.MultipartFile;
-
-import javax.annotation.Resource;
-import javax.imageio.ImageIO;
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.constraints.NotNull;
-import java.awt.*;
-import java.awt.color.ColorSpace;
-import java.awt.image.BufferedImage;
-import java.awt.image.ColorConvertOp;
-import java.io.*;
-import java.lang.reflect.Field;
-import java.math.BigDecimal;
-import java.net.URLEncoder;
-import java.util.List;
-import java.util.*;
-import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -159,7 +159,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
     CommonCacheService commonCacheService;
 
     @Autowired
-    private FileStoreUtils fileStoreUtils;
+    private MarkHeaderHistoryService markHeaderHistoryService;
 
     @Override
     public List<String> listClassByExamIdAndCourseCode(Long examId, String paperNumber) {
@@ -2502,4 +2502,24 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
         SysConfig sysConfig = commonCacheService.addSysConfigCache(SystemConstant.MARK_SCORE_CALCULATE_JOB_DB_LIMIT);
         return this.baseMapper.findNeedScoreCalculateStudent(Objects.isNull(sysConfig) ? "limit 0,500" : sysConfig.getConfigValue());
     }
+
+    @Override
+    public void historyExport(ArchiveStudentQuery query, HttpServletResponse response) throws IOException{
+        List<ScoreHistoryVo> list =  markHeaderHistoryService.findByExamIdAndPaperNumber(query.getExamId(),query.getPaperNumber());
+        try {
+            log.debug("导出Excel开始...");
+            response.setHeader("Content-Disposition",
+                    "inline;filename=" + URLEncoder.encode("成绩复核导出", SystemConstant.CHARSET_NAME) + ".xlsx");
+            response.setContentType("application/vnd.ms-excel");
+            ServletOutputStream outputStream = response.getOutputStream();
+            ExcelWriter writer = ExcelWriter.create(ExcelType.XLSX);
+            writer.writeObjects("成绩复核", null, ScoreHistoryVo.class, list.listIterator());
+            writer.output(response.getOutputStream());
+            outputStream.flush();
+            outputStream.close();
+            log.debug("导出Excel结束");
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
 }

+ 20 - 0
teachcloud-mark/src/main/resources/mapper/MarkHeaderHistoryMapper.xml

@@ -19,4 +19,24 @@
         <result column="create_time" property="createTime" />
     </resultMap>
 
+    <select id="findByExamIdAndPaperNumber" resultType="com.qmth.teachcloud.mark.bean.archivescore.ScoreHistoryVo">
+        SELECT mh.student_id,
+        bes.student_code,
+        bes.student_name,
+        su.login_name,
+        su.real_name,
+        mh.main_number,
+        mh.sub_number,
+        mh.originalScore,
+        mh.score
+        FROM mark_header_history mh
+        left join sys_user su on mh.user_id = su.id
+        left join mark_student ms on mh.student_id = ms.id
+        left join basic_exam_student bes on ms.basic_student_id = bes.id
+        <where>
+            mh.exam_id = #{examId}
+            AND mh.paper_number = #{paperNumber}
+        </where>
+    </select>
+
 </mapper>