Selaa lähdekoodia

新增归档文件

yin 1 vuosi sitten
vanhempi
commit
06c06b061d

+ 12 - 0
distributed-print-business/src/main/resources/db/log/update-yin.sql

@@ -0,0 +1,12 @@
+CREATE TABLE IF NOT EXISTS `mark_paper` (
+    `id` bigint NOT NULL,
+    `exam_id` bigint NOT NULL COMMENT '考试ID',
+    `course_code` varchar(32) NOT NULL COMMENT '课程代码',
+    `course_name` varchar(100) NOT NULL COMMENT '科目名称',
+    `paper_number` varchar(64) DEFAULT NULL COMMENT '试卷编号',
+    `type` varchar(64) NOT NULL COMMENT '类型',
+    `name` varchar(64) DEFAULT NULL COMMENT '名称',
+    `file_count` int DEFAULT NULL COMMENT '文件数量',
+    `file_path` mediumtext COMMENT '文件地址',
+    PRIMARY KEY (`id`) USING BTREE
+    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='归档文档表';

+ 73 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/mark/MarkDocumentController.java

@@ -0,0 +1,73 @@
+package com.qmth.distributed.print.api.mark;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+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.RestController;
+
+import com.alibaba.fastjson.JSONObject;
+import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.util.Result;
+import com.qmth.teachcloud.common.util.ResultUtil;
+import com.qmth.teachcloud.mark.bean.document.ArchivePaperQuery;
+import com.qmth.teachcloud.mark.bean.document.MarkDocumantQuery;
+import com.qmth.teachcloud.mark.service.MarkDocumentService;
+import com.qmth.teachcloud.mark.service.MarkPaperService;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * <p>
+ * 归档管理 前端控制器
+ * </p>
+ */
+@Api(tags = "归档管理")
+@RestController
+@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_MARK + "/archive/document")
+public class MarkDocumentController {
+
+    @Autowired
+    private MarkPaperService markPaperService;
+    @Resource
+    private MarkDocumentService markDocumentService;
+
+    @ApiOperation(value = "文档管理列表")
+    @RequestMapping(value = "/list", method = RequestMethod.POST)
+    public Result list(@Validated ArchivePaperQuery query) {
+        return ResultUtil.ok(markPaperService.documentList(query));
+    }
+
+    @ApiOperation(value = "文档详情")
+    @RequestMapping(value = "/detail", method = RequestMethod.POST)
+    public Result detail(@Validated MarkDocumantQuery query) {
+        return ResultUtil.ok(markDocumentService.listByExamIdAndPaperNumber(query.getExamId(),query.getPaperNumber()));
+    }
+
+    @ApiOperation(value = "文档下载")
+    @RequestMapping(value = "/export", method = RequestMethod.POST)
+    public void export(@Validated MarkDocumantQuery query, HttpServletResponse response) {
+
+    }
+
+    @ApiOperation(value = "文档上传")
+    @RequestMapping(value = "/import", method = RequestMethod.POST)
+    public void importFile(@RequestBody JSONObject jsonObject, HttpServletResponse response) {
+    }
+
+    @ApiOperation(value = "文档新建")
+    @RequestMapping(value = "/save", method = RequestMethod.POST)
+    public void save(@RequestBody JSONObject jsonObject, HttpServletResponse response) {
+    }
+
+    @ApiOperation(value = "文档删除")
+    @RequestMapping(value = "/delete", method = RequestMethod.POST)
+    public void delete(@RequestBody JSONObject jsonObject, HttpServletResponse response) {
+    }
+}

+ 31 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/bean/document/ArchivePaperQuery.java

@@ -0,0 +1,31 @@
+package com.qmth.teachcloud.mark.bean.document;
+
+import javax.validation.constraints.NotNull;
+
+import com.qmth.teachcloud.mark.utils.PagerQuery;
+
+public class ArchivePaperQuery extends PagerQuery {
+	@NotNull(message = "考试Id不能为空")
+	private Long examId;
+	
+	private String courseCode;
+
+
+	public Long getExamId() {
+		return examId;
+	}
+
+	public void setExamId(Long examId) {
+		this.examId = examId;
+	}
+
+	public String getCourseCode() {
+		return courseCode;
+	}
+
+	public void setCourseCode(String courseCode) {
+		this.courseCode = courseCode;
+	}
+
+
+}

+ 46 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/bean/document/ArchivePaperVo.java

@@ -0,0 +1,46 @@
+package com.qmth.teachcloud.mark.bean.document;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+
+public class ArchivePaperVo {
+
+	@JsonSerialize(using = ToStringSerializer.class)
+	private Long examId;
+	private String courseCode;
+	private String courseName;
+	private String paperNumber;
+
+	public Long getExamId() {
+		return examId;
+	}
+
+	public void setExamId(Long examId) {
+		this.examId = examId;
+	}
+
+	public String getCourseCode() {
+		return courseCode;
+	}
+
+	public void setCourseCode(String courseCode) {
+		this.courseCode = courseCode;
+	}
+
+	public String getCourseName() {
+		return courseName;
+	}
+
+	public void setCourseName(String courseName) {
+		this.courseName = courseName;
+	}
+
+	public String getPaperNumber() {
+		return paperNumber;
+	}
+
+	public void setPaperNumber(String paperNumber) {
+		this.paperNumber = paperNumber;
+	}
+
+}

+ 31 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/bean/document/MarkDocumantQuery.java

@@ -0,0 +1,31 @@
+package com.qmth.teachcloud.mark.bean.document;
+
+import javax.validation.constraints.NotNull;
+
+import com.qmth.teachcloud.mark.utils.PagerQuery;
+
+public class MarkDocumantQuery extends PagerQuery {
+	@NotNull(message = "考试Id不能为空")
+	private Long examId;
+	@NotNull(message = "paperNumber")
+	private String paperNumber;
+
+	public String getPaperNumber() {
+		return paperNumber;
+	}
+
+	public void setPaperNumber(String paperNumber) {
+		this.paperNumber = paperNumber;
+	}
+
+	public Long getExamId() {
+		return examId;
+	}
+
+	public void setExamId(Long examId) {
+		this.examId = examId;
+	}
+
+
+
+}

+ 124 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/entity/MarkDocument.java

@@ -0,0 +1,124 @@
+package com.qmth.teachcloud.mark.entity;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.mark.enums.DocumentType;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * <p>
+ * 归档文档表
+ * </p>
+ */
+@TableName("mark_document")
+@ApiModel(value = "MarkDocument对象", description = "归档文档表")
+public class MarkDocument implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "ID")
+    @TableId(value = "id")
+    private Long id;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "考试ID")
+    private Long examId;
+
+    @ApiModelProperty(value = "课程代码")
+    private String courseCode;
+
+    @ApiModelProperty(value = "科目名称")
+    private String courseName;
+
+    @ApiModelProperty(value = "试卷编号(显示)")
+    private String paperNumber;
+    @ApiModelProperty(value = "材料类型")
+    private DocumentType type;
+    @ApiModelProperty(value = "材料名称")
+    private String name;
+    @ApiModelProperty(value = "文件数量")
+    private Integer fileCount;
+    @ApiModelProperty(value = "文件地址")
+    private String filePath;
+    public MarkDocument() {
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public String getCourseName() {
+        return courseName;
+    }
+
+    public void setCourseName(String courseName) {
+        this.courseName = courseName;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    public DocumentType getType() {
+        return type;
+    }
+
+    public void setType(DocumentType type) {
+        this.type = type;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Integer getFileCount() {
+        return fileCount;
+    }
+
+    public void setFileCount(Integer fileCount) {
+        this.fileCount = fileCount;
+    }
+
+    public String getFilePath() {
+        return filePath;
+    }
+
+    public void setFilePath(String filePath) {
+        this.filePath = filePath;
+    }
+}

+ 59 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/enums/DocumentType.java

@@ -0,0 +1,59 @@
+package com.qmth.teachcloud.mark.enums;
+
+import java.util.LinkedList;
+import java.util.List;
+
+public enum DocumentType {
+    SYLLABUS("课程教学大纲", 1),
+    PROCESS_SCORE("过程考核成绩", 2),
+    PAPER("试卷样卷", 3),
+    ANSWER("试卷评阅标准", 4),
+    PAPER_REPORT("试卷分析报告", 5),
+    APPROVE_RECORD("试卷审批记录", 6),
+    SCORE("学生期末考试成绩单", 7),
+    SCORE_REPORT("学生期末考试成绩分析", 8),
+    SHEET("学生答卷原图", 9),
+    TRACK("学生答卷轨迹图", 10),
+    SIGN("期末考试签到表", 11),
+    CHECK_IN("期考考试考场记录单", 12),
+    CUSTOM("自定义", 13),
+    ;
+
+    private String name;
+
+    private int value;
+
+    private static List<DocumentType> options;
+
+    private DocumentType(String name, int value) {
+        this.name = name;
+        this.value = value;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static DocumentType findByValue(int value) {
+        for (DocumentType c : DocumentType.values()) {
+            if (c.getValue() == value) {
+                return c;
+            }
+        }
+        return null;
+    }
+
+    public static List<DocumentType> getOptionList() {
+        if (options == null) {
+            options = new LinkedList<>();
+            for (DocumentType status : DocumentType.values()) {
+                options.add(status);
+            }
+        }
+        return options;
+    }
+}

+ 7 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/MarkDocumentMapper.java

@@ -0,0 +1,7 @@
+package com.qmth.teachcloud.mark.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.teachcloud.mark.entity.MarkDocument;
+
+public interface MarkDocumentMapper extends BaseMapper<MarkDocument> {
+}

+ 8 - 3
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/MarkPaperMapper.java

@@ -1,5 +1,9 @@
 package com.qmth.teachcloud.mark.mapper;
 
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -7,12 +11,11 @@ import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import com.qmth.teachcloud.common.bean.dto.mark.MarkSettingDto;
 import com.qmth.teachcloud.mark.bean.archivescore.ArchiveScoreQuery;
 import com.qmth.teachcloud.mark.bean.archivescore.ArchiveScoreVo;
+import com.qmth.teachcloud.mark.bean.document.ArchivePaperQuery;
+import com.qmth.teachcloud.mark.bean.document.ArchivePaperVo;
 import com.qmth.teachcloud.mark.dto.mark.score.CheckScoreListDto;
 import com.qmth.teachcloud.mark.dto.mark.score.MarkPaperPackageDto;
 import com.qmth.teachcloud.mark.entity.MarkPaper;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
 
 /**
  * <p>
@@ -40,4 +43,6 @@ public interface MarkPaperMapper extends BaseMapper<MarkPaper> {
     int getPaperNumberCount(@Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("coursePaperId") String coursePaperId, @Param("status") String status, @Param("dpr") DataPermissionRule dpr);
 
     List<MarkPaper> listByExamId(@Param("examId") Long examId, @Param("status") String status, @Param("dpr") DataPermissionRule dpr);
+
+    IPage<ArchivePaperVo> documentList(Page<ArchiveScoreVo> page, @Param("req") ArchivePaperQuery query, @Param("dpr")DataPermissionRule dpr);
 }

+ 18 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkDocumentService.java

@@ -0,0 +1,18 @@
+package com.qmth.teachcloud.mark.service;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.teachcloud.mark.entity.MarkDocument;
+
+/**
+ * <p>
+ * 考试科目表 服务类
+ * </p>
+ *
+ * @author xf
+ * @since 2023-09-22
+ */
+public interface MarkDocumentService extends IService<MarkDocument> {
+    List<MarkDocument> listByExamIdAndPaperNumber(Long examId, String paperNumber);
+}

+ 9 - 3
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkPaperService.java

@@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import com.qmth.teachcloud.common.bean.dto.mark.MarkSettingDto;
 import com.qmth.teachcloud.common.enums.mark.MarkPaperStatus;
+import com.qmth.teachcloud.mark.bean.document.ArchivePaperQuery;
+import com.qmth.teachcloud.mark.bean.document.ArchivePaperVo;
 import com.qmth.teachcloud.mark.bean.archivescore.ArchiveScoreQuery;
 import com.qmth.teachcloud.mark.bean.archivescore.ArchiveScoreVo;
 import com.qmth.teachcloud.mark.dto.mark.score.CheckScoreListDto;
@@ -27,6 +29,7 @@ public interface MarkPaperService extends IService<MarkPaper> {
     IPage<MarkSettingDto> listPaperSetting(Long examId, String courseCode, String paperNumber, Boolean groupStatus, Integer pageNumber, Integer pageSize);
 
     MarkPaper getByExamIdAndPaperNumber(Long examId, String paperNumber);
+
     MarkPaper getByExamIdAndPaperNumberAndPaperType(Long examId, String paperNumber, String paperType);
 
     void savePaperSetting(MarkPaper markPaper);
@@ -36,6 +39,7 @@ public interface MarkPaperService extends IService<MarkPaper> {
     List<MarkPaper> listQualityMarkPaperByStatus(MarkPaperStatus formal, int uploadCount);
 
     int getCourseCount(Long id, String courseCode, String coursePaperId, MarkPaperStatus status, DataPermissionRule dpr);
+
     int getPaperNumberCount(Long id, String courseCode, String coursePaperId, MarkPaperStatus status, DataPermissionRule dpr);
 
     IPage<CheckScoreListDto> listStudentScoreList(Long examId, String courseCode, String paperNumber, Integer pageNumber, Integer pageSize);
@@ -46,9 +50,9 @@ public interface MarkPaperService extends IService<MarkPaper> {
 
     IPage<MarkPaperPackageDto> listPackage(Long examId, String paperNumber, String packageCode, Integer pageNumber, Integer pageSize);
 
-	MarkPaper getByExamIdAndCoursePaperId(Long examId, String coursePaperId);
+    MarkPaper getByExamIdAndCoursePaperId(Long examId, String coursePaperId);
 
-	List<MarkPaper> listByExamId(Long examId, MarkPaperStatus status, DataPermissionRule dpr);
+    List<MarkPaper> listByExamId(Long examId, MarkPaperStatus status, DataPermissionRule dpr);
 
     void updateGroupStatusByExamIdAndPaperNumber(boolean groupStatus, Long examId, String paperNumber);
 
@@ -58,9 +62,11 @@ public interface MarkPaperService extends IService<MarkPaper> {
 
     SettingDto getSetting(Long examId, String paperNumber);
 
-	IPage<ArchiveScoreVo> scoreList(ArchiveScoreQuery query);
+    IPage<ArchiveScoreVo> scoreList(ArchiveScoreQuery query);
 
     void deleteByExamIdAndPaperNumber(Long examId, String paperNumber);
 
     void updateAbsentCount(Long examId, String paperNumber, int absentCount);
+
+    IPage<ArchivePaperVo> documentList(ArchivePaperQuery query);
 }

+ 30 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkDocumentServiceImpl.java

@@ -0,0 +1,30 @@
+package com.qmth.teachcloud.mark.service.impl;
+
+import java.util.List;
+
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.teachcloud.mark.entity.MarkDocument;
+import com.qmth.teachcloud.mark.mapper.MarkDocumentMapper;
+import com.qmth.teachcloud.mark.service.MarkDocumentService;
+
+/**
+ * <p>
+ * 考试科目表 服务实现类
+ * </p>
+ *
+ * @author xf
+ * @since 2023-09-22
+ */
+@Service
+public class MarkDocumentServiceImpl extends ServiceImpl<MarkDocumentMapper, MarkDocument> implements MarkDocumentService {
+    @Override
+    public List<MarkDocument> listByExamIdAndPaperNumber(Long examId, String paperNumber) {
+        QueryWrapper<MarkDocument> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(MarkDocument::getExamId, examId)
+                .eq(MarkDocument::getPaperNumber, paperNumber);
+        return this.list(queryWrapper);
+    }
+}

+ 21 - 10
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkPaperServiceImpl.java

@@ -1,5 +1,16 @@
 package com.qmth.teachcloud.mark.service.impl;
 
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+import javax.annotation.Resource;
+
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -18,6 +29,8 @@ import com.qmth.teachcloud.common.service.TeachcloudCommonService;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import com.qmth.teachcloud.mark.bean.archivescore.ArchiveScoreQuery;
 import com.qmth.teachcloud.mark.bean.archivescore.ArchiveScoreVo;
+import com.qmth.teachcloud.mark.bean.document.ArchivePaperQuery;
+import com.qmth.teachcloud.mark.bean.document.ArchivePaperVo;
 import com.qmth.teachcloud.mark.dto.mark.score.CheckScoreListDto;
 import com.qmth.teachcloud.mark.dto.mark.score.MarkPaperPackageDto;
 import com.qmth.teachcloud.mark.dto.mark.score.SettingDto;
@@ -27,15 +40,6 @@ import com.qmth.teachcloud.mark.entity.ScanPackage;
 import com.qmth.teachcloud.mark.mapper.MarkPaperMapper;
 import com.qmth.teachcloud.mark.service.*;
 import com.qmth.teachcloud.mark.utils.Calculator;
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import javax.annotation.Resource;
-import java.util.List;
-import java.util.Objects;
-import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -331,5 +335,12 @@ public class MarkPaperServiceImpl extends ServiceImpl<MarkPaperMapper, MarkPaper
                 .eq(MarkPaper::getPaperNumber, paperNumber);
         this.update(updateWrapper);
     }
-
+    @Override
+    public IPage<ArchivePaperVo> documentList(ArchivePaperQuery query) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        Page<ArchiveScoreVo> page = new Page<>(query.getPageNumber(), query.getPageSize());
+        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(sysUser.getSchoolId(), sysUser.getId(), ServletUtil.getRequest().getServletPath());
+        IPage<ArchivePaperVo> ret = this.baseMapper.documentList(page, query, dpr);
+        return ret;
+    }
 }

+ 136 - 112
teachcloud-mark/src/main/resources/mapper/MarkPaperMapper.xml

@@ -4,43 +4,43 @@
 
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.qmth.teachcloud.mark.entity.MarkPaper">
-        <result column="exam_id" property="examId" />
-        <result column="course_code" property="courseCode" />
-        <result column="course_name" property="courseName" />
-        <result column="paper_number" property="paperNumber" />
-        <result column="objective_score" property="objectiveScore" />
-        <result column="subjective_score" property="subjectiveScore" />
-        <result column="total_score" property="totalScore" />
-        <result column="upload_count" property="uploadCount" />
-        <result column="remark" property="remark" />
-        <result column="sheet_config" property="sheetConfig" />
-        <result column="pass_score" property="passScore" />
-        <result column="excellent_score" property="excellentScore" />
-        <result column="card_type" property="cardType" />
-        <result column="paper_file_path" property="paperFilePath" />
-        <result column="answer_file_path" property="answerFilePath" />
-        <result column="auto_scroll" property="autoScroll" />
-        <result column="mark_mode" property="markMode" />
-        <result column="mark_start_time" property="markStartTime" />
-        <result column="mark_end_time" property="markEndTime" />
-        <result column="sheet_view" property="sheetView" />
-        <result column="show_object_score" property="showObjectScore" />
-        <result column="open_mark_class" property="openMarkClass" />
-        <result column="status" property="status" />
+        <result column="exam_id" property="examId"/>
+        <result column="course_code" property="courseCode"/>
+        <result column="course_name" property="courseName"/>
+        <result column="paper_number" property="paperNumber"/>
+        <result column="objective_score" property="objectiveScore"/>
+        <result column="subjective_score" property="subjectiveScore"/>
+        <result column="total_score" property="totalScore"/>
+        <result column="upload_count" property="uploadCount"/>
+        <result column="remark" property="remark"/>
+        <result column="sheet_config" property="sheetConfig"/>
+        <result column="pass_score" property="passScore"/>
+        <result column="excellent_score" property="excellentScore"/>
+        <result column="card_type" property="cardType"/>
+        <result column="paper_file_path" property="paperFilePath"/>
+        <result column="answer_file_path" property="answerFilePath"/>
+        <result column="auto_scroll" property="autoScroll"/>
+        <result column="mark_mode" property="markMode"/>
+        <result column="mark_start_time" property="markStartTime"/>
+        <result column="mark_end_time" property="markEndTime"/>
+        <result column="sheet_view" property="sheetView"/>
+        <result column="show_object_score" property="showObjectScore"/>
+        <result column="open_mark_class" property="openMarkClass"/>
+        <result column="status" property="status"/>
     </resultMap>
     <select id="listPaperSetting" resultType="com.qmth.teachcloud.common.bean.dto.mark.MarkSettingDto">
         SELECT
-            mp.exam_id examId,
-            mp.course_code courseCode,
-            mp.course_name courseName,
-            mp.paper_number paperNumber,
-            mp.mark_mode markMode,
-            mp.group_status groupStatus,
-            mp.paper_type paperType
+        mp.exam_id examId,
+        mp.course_code courseCode,
+        mp.course_name courseName,
+        mp.paper_number paperNumber,
+        mp.mark_mode markMode,
+        mp.group_status groupStatus,
+        mp.paper_type paperType
         FROM
-            mark_paper mp
-                LEFT JOIN
-            sys_user su ON mp.user_id = su.id
+        mark_paper mp
+        LEFT JOIN
+        sys_user su ON mp.user_id = su.id
         <where>
             <if test="schoolId != null">
                 and su.school_id = #{schoolId}
@@ -69,65 +69,61 @@
                 </if>
             </if>
         </where>
-            order by mp.id desc
+        order by mp.id desc
     </select>
     <select id="listQualityMarkPaperByStatus" resultType="com.qmth.teachcloud.mark.entity.MarkPaper">
-        SELECT
-            exam_id examId,
-            paper_number paperNumber
-        FROM
-            mark_paper mp
-        WHERE
-            mp.status = #{status} AND upload_count > #{uploadCount}
-          AND EXISTS( SELECT
-                          1
-                      FROM
-                          basic_exam be
-                      WHERE
-                          be.enable = 1 AND mp.exam_id = be.id)
+        SELECT exam_id      examId,
+               paper_number paperNumber
+        FROM mark_paper mp
+        WHERE mp.status = #{status}
+          AND upload_count > #{uploadCount}
+          AND EXISTS(SELECT 1
+                     FROM basic_exam be
+                     WHERE be.enable = 1
+                       AND mp.exam_id = be.id)
     </select>
     <select id="listStudentScoreList" resultType="com.qmth.teachcloud.mark.dto.mark.score.CheckScoreListDto">
         SELECT
-            mp.exam_id examId,
-            mp.course_code courseCode,
-            mp.course_name courseName,
-            mp.paper_number paperNumber,
-            mp.student_count studentCount,
-            mp.upload_count uploadCount
+        mp.exam_id examId,
+        mp.course_code courseCode,
+        mp.course_name courseName,
+        mp.paper_number paperNumber,
+        mp.student_count studentCount,
+        mp.upload_count uploadCount
         FROM
-            mark_paper mp
-                LEFT JOIN sys_user su ON mp.user_id = su.id
+        mark_paper mp
+        LEFT JOIN sys_user su ON mp.user_id = su.id
         where mp.exam_id = #{examId}
-            <if test="courseCode != null and courseCode != ''">
-                AND mp.course_code = #{courseCode}
+        <if test="courseCode != null and courseCode != ''">
+            AND mp.course_code = #{courseCode}
+        </if>
+        <if test="paperNumber != null and paperNumber != ''">
+            AND mp.paper_number = #{paperNumber}
+        </if>
+        <if test="dpr != null">
+            <if test="dpr.requestUserId != null">
+                AND mp.user_id = #{dpr.requestUserId}
             </if>
-            <if test="paperNumber != null and paperNumber != ''">
-                AND mp.paper_number = #{paperNumber}
+            <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
+                AND su.org_id IN
+                <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
             </if>
-            <if test="dpr != null">
-                <if test="dpr.requestUserId != null">
-                    AND mp.user_id = #{dpr.requestUserId}
-                </if>
-                <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
-                    AND su.org_id IN
-                    <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
-                        #{item}
-                    </foreach>
-                </if>
-            </if>
-            order by mp.id desc
+        </if>
+        order by mp.id desc
     </select>
     <select id="listPackage" resultType="com.qmth.teachcloud.mark.dto.mark.score.MarkPaperPackageDto">
         SELECT distinct
-            sp.package_code packageCode
+        sp.package_code packageCode
         FROM
-            scan_package sp
+        scan_package sp
         WHERE
-            sp.exam_id = #{examId}
-            AND sp.course_paper_id = #{coursePaperId}
-            <if test="packageCode != null and packageCode != ''">
-                AND sp.package_code = #{packageCode}
-            </if>
+        sp.exam_id = #{examId}
+        AND sp.course_paper_id = #{coursePaperId}
+        <if test="packageCode != null and packageCode != ''">
+            AND sp.package_code = #{packageCode}
+        </if>
         ORDER BY sp.package_code
     </select>
     <select id="scoreList" resultType="com.qmth.teachcloud.mark.bean.archivescore.ArchiveScoreVo">
@@ -137,30 +133,32 @@
         avg(case when s.is_absent !=1 then s.objective_score+s.subjective_score else null end) avgScore,
         max(case when s.is_absent !=1 then s.objective_score+s.subjective_score else null end) maxScore,
         min(case when s.is_absent !=1 then s.objective_score+s.subjective_score else null end) minScore,
-        sum(case when s.objective_score+s.subjective_score >=t.total_score * t.pass_score/100 then 1 else 0 end) passCount,
-        sum(case when s.objective_score+s.subjective_score >=t.total_score * t.excellent_score/100 then 1 else 0 end) excellentCount
+        sum(case when s.objective_score+s.subjective_score >=t.total_score * t.pass_score/100 then 1 else 0 end)
+        passCount,
+        sum(case when s.objective_score+s.subjective_score >=t.total_score * t.excellent_score/100 then 1 else 0 end)
+        excellentCount
 
         FROM
-            mark_paper t 
-            left join mark_student s on t.exam_id=s.exam_id and t.course_paper_id=s.course_paper_id
-            left join sys_user su on t.user_id = su.id
+        mark_paper t
+        left join mark_student s on t.exam_id=s.exam_id and t.course_paper_id=s.course_paper_id
+        left join sys_user su on t.user_id = su.id
         WHERE
-            t.exam_id = #{req.examId}
-            <if test="req.courseCode != null and req.courseCode != ''">
-                AND t.course_code = #{req.courseCode}
+        t.exam_id = #{req.examId}
+        <if test="req.courseCode != null and req.courseCode != ''">
+            AND t.course_code = #{req.courseCode}
+        </if>
+        AND t.status = 'FINISH'
+        <if test="dpr != null">
+            <if test="dpr.requestUserId != null">
+                AND t.user_id = #{dpr.requestUserId}
             </if>
-            AND t.status = 'FINISH'
-            <if test="dpr != null">
-                <if test="dpr.requestUserId != null">
-                    AND t.user_id = #{dpr.requestUserId}
-                </if>
-                <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
-                    AND su.org_id IN
-                    <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
-                        #{item}
-                    </foreach>
-                </if>
+            <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
+                AND su.org_id IN
+                <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
             </if>
+        </if>
         group by t.id,t.exam_id,t.course_code,t.course_name,t.paper_number
         ORDER BY t.id desc
     </select>
@@ -212,22 +210,48 @@
     </select>
     <select id="listByExamId" resultType="com.qmth.teachcloud.mark.entity.MarkPaper">
         select mp.*
-            from mark_paper mp
-                left join sys_user su on mp.user_id = su.id
-            <where>
-                mp.exam_id = #{examId} AND mp.status = #{status}
-                <if test="dpr != null">
-                    <if test="dpr.requestUserId != null">
-                        AND mp.user_id = #{dpr.requestUserId}
-                    </if>
-                    <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
-                        AND su.org_id IN
-                        <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
-                            #{item}
-                        </foreach>
-                    </if>
+        from mark_paper mp
+        left join sys_user su on mp.user_id = su.id
+        <where>
+            mp.exam_id = #{examId} AND mp.status = #{status}
+            <if test="dpr != null">
+                <if test="dpr.requestUserId != null">
+                    AND mp.user_id = #{dpr.requestUserId}
                 </if>
-            </where>
+                <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
+                    AND su.org_id IN
+                    <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
+                        #{item}
+                    </foreach>
+                </if>
+            </if>
+        </where>
     </select>
 
+    <select id="documentList" resultType="com.qmth.teachcloud.mark.bean.document.ArchivePaperVo">
+        SELECT t.id,t.exam_id,t.course_code,t.course_name,t.paper_number
+        FROM
+        mark_paper t
+        left join mark_student s on t.exam_id=s.exam_id and t.course_paper_id=s.course_paper_id
+        left join sys_user su on t.user_id = su.id
+        WHERE
+        t.exam_id = #{req.examId}
+        <if test="req.courseCode != null and req.courseCode != ''">
+            AND t.course_code = #{req.courseCode}
+        </if>
+        AND t.status = 'FINISH'
+        <if test="dpr != null">
+            <if test="dpr.requestUserId != null">
+                AND t.user_id = #{dpr.requestUserId}
+            </if>
+            <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
+                AND su.org_id IN
+                <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+        </if>
+        group by t.id,t.exam_id,t.course_code,t.course_name,t.paper_number
+        ORDER BY t.id desc
+    </select>
 </mapper>