xiaofei 1 éve
szülő
commit
68e734c3d3

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamTaskService.java

@@ -145,7 +145,7 @@ public interface ExamTaskService extends IService<ExamTask> {
      * @param examTaskId 命题任务id
      * @return 命题任务审核表参数
      */
-    ExamTaskApprovalFormDto findExamTaskApprovalForm(Long examTaskId);
+    ExamTaskApprovalFormDto findExamTaskApprovalForm(Long examTaskId, Long examId, String paperNumber);
 
 
     void findExamTaskApprovalPdf(HttpServletResponse response, Long examTaskId, String htmlContext) throws Exception;

+ 11 - 5
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java

@@ -1524,14 +1524,20 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
     }
 
     @Override
-    public ExamTaskApprovalFormDto findExamTaskApprovalForm(Long examTaskId) {
+    public ExamTaskApprovalFormDto findExamTaskApprovalForm(Long examTaskId, Long examId, String paperNumber) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         // 1.basicInfo 部分
-        ExamTask examTask = this.getById(examTaskId);
+        ExamTask examTask = null;
+        if (examTaskId != null) {
+            examTask = this.getById(examTaskId);
+        } else if (examId != null && StringUtils.isNotBlank(paperNumber)) {
+            examTask = this.getByExamIdAndCourseCodeAndPaperNumber(examId, null, paperNumber);
+        } else {
+            throw ExceptionResultEnum.ERROR.exception("传入参数有误");
+        }
         if (Objects.isNull(examTask)) {
             throw ExceptionResultEnum.ERROR.exception("命题任务不存在");
         }
-        String paperNumber = examTask.getPaperNumber();
         String paperName = basicSemesterService.getById(basicExamService.getById(examTask.getExamId()).getSemesterId()).getName();
         Long teachingRoomId = examTask.getTeachingRoomId();
         SysOrg teachingRoom = sysOrgService.getOne(new QueryWrapper<SysOrg>().lambda().eq(SysOrg::getId, teachingRoomId));
@@ -1564,7 +1570,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         }
 
         // 2.ExamRoomInfo 部分
-        List<ExamPackageDetail> examPackageDetailDatasource = this.baseMapper.findExamPackageDetailByPaperNumber(schoolId, examTask.getExamId(), examTask.getCourseCode(), paperNumber, null);
+        List<ExamPackageDetail> examPackageDetailDatasource = this.baseMapper.findExamPackageDetailByPaperNumber(schoolId, examTask.getExamId(), examTask.getCourseCode(), examTask.getPaperNumber(), null);
         if (examPackageDetailDatasource.size() == 0) {
             throw ExceptionResultEnum.ERROR.exception("缺少该命题任务对应的考务数据");
         }
@@ -1580,7 +1586,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         basicInfo.setTeachingRoomId(teachingRoomId);
         basicInfo.setTeachingRoomName(teachingRoomName);
         basicInfo.setPaperName(paperName);
-        basicInfo.setPaperNumber(paperNumber);
+        basicInfo.setPaperNumber(examTask.getPaperNumber());
         basicInfo.setTeacherName(examTask.getTeacherName());
         basicInfo.setExamStartTime(examObjectDto.getExamStartTime());
         basicInfo.setExamEndTime(examObjectDto.getExamEndTime());

+ 4 - 1
distributed-print/install/mysql/upgrade/3.3.1.sql

@@ -546,7 +546,7 @@ CREATE TABLE IF NOT EXISTS `mark_document` (
     PRIMARY KEY (`id`) USING BTREE
     ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='归档文档表';
 
-
+-- 2024/03/07
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `enable`, `default_auth`, `front_display`) VALUES ('577', '文档管理', 'CourseDocumentManage', 'MENU', '561', '2', '1', '0', '1');
 UPDATE `sys_privilege` SET `sequence` = '1' WHERE (`id` = '487');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES ('578', '列表', 'List', 'LIST', '577', '1', 'AUTH', '583', '1', '0', '1');
@@ -560,3 +560,6 @@ INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('586', '文档上传', '/api/admin/mark/archive/document/import', 'URL', '577', '4', 'AUTH', '1', '1', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('587', '文档删除', '/api/admin/mark/archive/document/delete', 'URL', '577', '5', 'AUTH', '1', '1', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('588', '文档下载', '/api/admin/mark/archive/document/download', 'URL', '577', '6', 'AUTH', '1', '1', '1');
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('786', '课程目标达成度模板配置查询', '/api/admin/set/course/degree/select', 'URL', '508', '15', 'AUTH', '1', '0', '1');
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('787', '课程目标达成度模板配置保存', '/api/admin/set/course/degree/save', 'URL', '508', '16', 'AUTH', '1', '0', '1');
+UPDATE `sys_privilege` SET `related` = '466,467,494,544,585,586,587,588' WHERE (`id` = '582');

+ 24 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskApplyController.java

@@ -3,6 +3,7 @@ package com.qmth.distributed.print.api;
 import com.qmth.boot.api.annotation.Aac;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.distributed.print.business.bean.dto.ExamTaskDetailCardDto;
+import com.qmth.distributed.print.business.bean.params.ApproveFormParams;
 import com.qmth.distributed.print.business.bean.params.ExamTaskApplyParam;
 import com.qmth.distributed.print.business.entity.ExamTask;
 import com.qmth.distributed.print.business.entity.ExamTaskApplyTemp;
@@ -23,11 +24,14 @@ import io.swagger.annotations.*;
 import org.activiti.engine.TaskService;
 import org.activiti.engine.task.Task;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BindingResult;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
 import javax.validation.constraints.Max;
 import javax.validation.constraints.Min;
 import java.io.IOException;
@@ -283,5 +287,25 @@ public class ExamTaskApplyController {
                                    @ApiParam(value = "唯一标识") @RequestParam(value = "uuid", required = false) String uuid) {
         return ResultUtil.ok(examTaskService.getTikuPaperData(examId, paperId, uuid));
     }
+
+    @ApiOperation(value = "入库申请-下载审批表-获取试卷审批表数据")
+    @RequestMapping(value = "/find_approve_form_json", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
+    public Result findApproveFormJson(@ApiParam(value = "命题任务id") @RequestParam(required = false) String examTaskId,
+                                      @ApiParam(value = "考试ID") @RequestParam(required = false) Long examId,
+                                      @ApiParam(value = "试卷编号") @RequestParam(required = false) String paperNumber) {
+        return ResultUtil.ok(examTaskService.findExamTaskApprovalForm(SystemConstant.convertIdToLong(examTaskId), examId, paperNumber));
+    }
+
+    @ApiOperation(value = "入库申请-下载审批表-下载审批表PDF")
+    @RequestMapping(value = "/find_approve_form_pdf", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "下载成功", response = Result.class)})
+    public void findApproveFormPdf(@Valid @RequestBody ApproveFormParams approveFormParams, BindingResult bindingResult) throws Exception {
+        if (bindingResult.hasErrors()) {
+            throw ExceptionResultEnum.ERROR.exception(bindingResult.getAllErrors().get(0).getDefaultMessage());
+        }
+        HttpServletResponse response = ServletUtil.getResponse();
+        examTaskService.findExamTaskApprovalPdf(response, approveFormParams.getExamTaskId(), approveFormParams.getHtmlContent());
+    }
 }
 

+ 0 - 18
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskAuditController.java

@@ -251,23 +251,5 @@ public class ExamTaskAuditController {
         TBTask tbTask = Objects.nonNull(map.get(SystemConstant.TASK)) ? (TBTask) map.get(SystemConstant.TASK) : null;
         return Objects.nonNull(tbTask) ? ResultUtil.ok(tbTask.getId()) : ResultUtil.error("创建任务失败");
     }
-
-    @ApiOperation(value = "命题任务-审批-获取试卷审批表数据")
-    @RequestMapping(value = "/find_approve_form_json", method = RequestMethod.POST)
-    @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
-    public Result findApproveFormJson(@ApiParam(value = "命题任务id", required = true) @RequestParam String examTaskId) {
-        return ResultUtil.ok((Object) examTaskService.findExamTaskApprovalForm(SystemConstant.convertIdToLong(examTaskId)));
-    }
-
-    @ApiOperation(value = "命题任务-审批-获取试卷审批表pdf")
-    @RequestMapping(value = "/find_approve_form_pdf", method = RequestMethod.POST)
-    @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
-    public void findApproveFormPdf(@Valid @RequestBody ApproveFormParams approveFormParams, BindingResult bindingResult) throws Exception {
-        if (bindingResult.hasErrors()) {
-            throw ExceptionResultEnum.ERROR.exception(bindingResult.getAllErrors().get(0).getDefaultMessage());
-        }
-        HttpServletResponse response = ServletUtil.getResponse();
-        examTaskService.findExamTaskApprovalPdf(response, approveFormParams.getExamTaskId(), approveFormParams.getHtmlContent());
-    }
 }
 

+ 34 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/SysAdminSetController.java

@@ -73,6 +73,8 @@ public class SysAdminSetController {
 
     @Resource
     TSchoolRoleService tSchoolRoleService;
+    @Resource
+    private FileUploadService fileUploadService;
 
     @ApiOperation(value = "数据还原")
     @ApiResponses({@ApiResponse(code = 200, message = "数据还原信息", response = ResultUtil.class)})
@@ -413,4 +415,36 @@ public class SysAdminSetController {
         sysAdminSetResult.setRoleIdList(CollectionUtils.isEmpty(roleIdList) ? new ArrayList<>() : roleIdList);
         return ResultUtil.ok(sysAdminSetResult);
     }
+
+    @ApiOperation(value = "课程目标达成度模板配置查询")
+    @ApiResponses({@ApiResponse(code = 200, message = "课程目标达成度模板配置查询", response = CustomPrivilegeResult.class)})
+    @RequestMapping(value = "/course/degree/select", method = RequestMethod.POST)
+    public Result sysadminCourseDegreeSelect(@ApiParam(value = "学校id ", required = true) @RequestParam Long schoolId) {
+        SysConfig sysConfig = commonCacheService.addSysConfigCache(schoolId, SystemConstant.SCHOOL_COURSE_DEGREE_TEMPLATE);
+        SysConfigResult sysConfigResult = new SysConfigResult();
+        if (sysConfig != null) {
+            sysConfigResult = new SysConfigResult(sysConfig);
+            sysConfigResult.setValue(fileUploadService.filePreview((Long) sysConfigResult.getValue()));
+        }
+        return ResultUtil.ok(sysConfigResult);
+    }
+
+    @ApiOperation(value = "课程目标达成度模板配置保存")
+    @ApiResponses({@ApiResponse(code = 200, message = "课程目标达成度模板配置保存", response = CustomPrivilegeResult.class)})
+    @RequestMapping(value = "/course/degree/save", method = RequestMethod.POST)
+    public Result sysadminCourseDegreeSave(@ApiParam(value = "学校ID", required = true) @RequestParam Long schoolId,
+                                           @ApiParam(value = "附件ID", required = true) @RequestParam Long attachmentId) {
+        SysConfig sysConfig = commonCacheService.addSysConfigCache(schoolId, SystemConstant.SCHOOL_COURSE_DEGREE_TEMPLATE);
+        if (sysConfig == null) {
+            sysConfig = new SysConfig(schoolId, SystemConstant.SCHOOL_COURSE_DEGREE_TEMPLATE, "课程目标达成度模板配置", String.valueOf(attachmentId));
+        } else {
+            sysConfig.setConfigValue(String.valueOf(attachmentId));
+        }
+        if (sysConfigService.saveOrUpdate(sysConfig)) {
+            commonCacheService.updateSysConfigCache(schoolId, SystemConstant.CLOUD_MARK_EXAM_SUBJECT_HEADER_SAVE_API);
+        }
+        SysConfigResult sysConfigResult = new SysConfigResult(sysConfig);
+        sysConfigResult.setValue(fileUploadService.filePreview((Long) sysConfigResult.getValue()));
+        return ResultUtil.ok(sysConfigResult);
+    }
 }

+ 0 - 6
distributed-print/src/test/java/com/qmth/distributed/print/ServiceTest.java

@@ -127,12 +127,6 @@ public class ServiceTest {
         System.out.println(JSON.toJSONString(examPrintPlan));
     }
 
-    @Test
-    public void approveForm() {
-        Long examTask = 167675409079468032L;
-        System.out.println(JSON.toJSONString(examTaskService.findExamTaskApprovalForm(examTask)));
-    }
-
     @Test
     public void findExamObject() {
         String paperNumber = "cn004-0906-001";

+ 1 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java

@@ -154,6 +154,7 @@ public class SystemConstant {
     public static final String SYS_CODE_ENABLE = "sys.code.enable";
     //    public static final String SYS_MESSAGE_ENABLE = "sys.message.enable";
 //    public static final String SYS_MESSAGE_RESEND_COUNT = "sys.message.resendCount";
+    public static final String SCHOOL_COURSE_DEGREE_TEMPLATE = "school.course.degree.template";
     public static final String SYS_CONFIG_KEY_CHARSETS = "sys.txt.charset";
     public static final String PACKAGE_BARCODE_POSITION = "package.barcode.position";
     public static final String SYS_PDF_SIZE_LIST = "sys.pdf.size.list";

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

@@ -6,6 +6,7 @@ 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.common.contant.SystemConstant;
 import com.qmth.teachcloud.mark.enums.DocumentType;
 
 import io.swagger.annotations.ApiModel;
@@ -47,9 +48,20 @@ public class MarkDocument implements Serializable {
     private Integer fileCount;
     @ApiModelProperty(value = "文件地址")
     private String filePath;
+
     public MarkDocument() {
     }
 
+    public MarkDocument(Long examId, String courseCode, String courseName, String paperNumber, DocumentType type, String name) {
+        this.id = SystemConstant.getDbUuid();
+        this.examId = examId;
+        this.courseCode = courseCode;
+        this.courseName = courseName;
+        this.paperNumber = paperNumber;
+        this.type = type;
+        this.name = name;
+    }
+
     public Long getId() {
         return id;
     }

+ 11 - 3
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/enums/DocumentType.java

@@ -16,8 +16,7 @@ public enum DocumentType {
     TRACK("学生答卷轨迹图", 10),
     SIGN("期末考试签到表", 11),
     CHECK_IN("期考考试考场记录单", 12),
-    CUSTOM("自定义", 13),
-    ;
+    CUSTOM("自定义", 13);
 
     private String name;
 
@@ -47,10 +46,19 @@ public enum DocumentType {
         return null;
     }
 
-    public static List<DocumentType> getOptionList() {
+    /**
+     * 类型列表
+     *
+     * @param containsCustom 是否包含自定义类型
+     * @return
+     */
+    public static List<DocumentType> getOptionList(boolean containsCustom) {
         if (options == null) {
             options = new LinkedList<>();
             for (DocumentType status : DocumentType.values()) {
+                if (!containsCustom && status.equals(DocumentType.CUSTOM)) {
+                    continue;
+                }
                 options.add(status);
             }
         }

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

@@ -2,6 +2,7 @@ package com.qmth.teachcloud.mark.service;
 
 import java.util.List;
 
+import com.qmth.teachcloud.mark.entity.MarkPaper;
 import org.springframework.web.multipart.MultipartFile;
 
 import com.baomidou.mybatisplus.extension.service.IService;
@@ -23,4 +24,6 @@ public interface MarkDocumentService extends IService<MarkDocument> {
     void deleteById(Long id);
 
     String save(Long examId, String paperNumber, String documentName, MultipartFile file, String md5);
+
+    void initMarkDocument(MarkPaper markPaper);
 }

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

@@ -7,6 +7,7 @@ import java.util.Objects;
 import javax.annotation.Resource;
 
 import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.io.FilenameUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
@@ -51,7 +52,7 @@ public class MarkDocumentServiceImpl extends ServiceImpl<MarkDocumentMapper, Mar
         queryWrapper.lambda().eq(MarkDocument::getExamId, examId)
                 .eq(MarkDocument::getPaperNumber, paperNumber);
         List<MarkDocument> list = this.list(queryWrapper);
-        for (MarkDocument d:list) {
+        for (MarkDocument d : list) {
             d.setFilePath(teachcloudCommonService.filePreview(d.getFilePath()));
         }
         return list;
@@ -60,26 +61,26 @@ public class MarkDocumentServiceImpl extends ServiceImpl<MarkDocumentMapper, Mar
     @Override
     public String importById(Long id, MultipartFile file, String md5) {
         MarkDocument document = this.getById(id);
-        if(document==null){
+        if (document == null) {
             throw ExceptionResultEnum.ERROR.exception("文档不存在");
         }
-        if(document.getType().equals(DocumentType.CUSTOM)
-                ||document.getType().equals(DocumentType.SYLLABUS)
-                ||document.getType().equals(DocumentType.PROCESS_SCORE)){
+        if (document.getType().equals(DocumentType.CUSTOM)
+                || document.getType().equals(DocumentType.SYLLABUS)
+                || document.getType().equals(DocumentType.PROCESS_SCORE)) {
             throw ExceptionResultEnum.ERROR.exception("文档类型不正确");
         }
         try {
-            String fileMd5  = DigestUtils.md5Hex(file.getBytes());
+            String fileMd5 = DigestUtils.md5Hex(file.getBytes());
             if (!Objects.equals(fileMd5, md5)) {
                 throw ExceptionResultEnum.MD5_EQUALS_FALSE.exception();
             }
             String format = FilenameUtils.getExtension(file.getOriginalFilename());
             String name = document.getType().getName();
-            if(document.getType().equals(DocumentType.CUSTOM)){
+            if (document.getType().equals(DocumentType.CUSTOM)) {
                 name = document.getName();
             }
             String path = markFileService.uploadDocument(file.getInputStream(),
-                    md5,document.getExamId(),document.getPaperNumber(),String.valueOf(document.getType().getValue()),document.getName(),format);
+                    md5, document.getExamId(), document.getPaperNumber(), String.valueOf(document.getType().getValue()), document.getName(), format);
             UpdateWrapper<MarkDocument> updateWrapper = new UpdateWrapper<>();
             updateWrapper.lambda().set(MarkDocument::getFilePath, path)
                     .set(MarkDocument::getFileCount, 1)
@@ -95,10 +96,10 @@ public class MarkDocumentServiceImpl extends ServiceImpl<MarkDocumentMapper, Mar
     @Override
     public void deleteById(Long id) {
         MarkDocument document = this.getById(id);
-        if(document==null){
+        if (document == null) {
             throw ExceptionResultEnum.ERROR.exception("文档不存在");
         }
-        if(document.getType().equals(DocumentType.CUSTOM)){
+        if (document.getType().equals(DocumentType.CUSTOM)) {
             throw ExceptionResultEnum.ERROR.exception("文档类型不正确");
         }
         this.removeById(id);
@@ -106,8 +107,8 @@ public class MarkDocumentServiceImpl extends ServiceImpl<MarkDocumentMapper, Mar
 
     @Override
     public String save(Long examId, String paperNumber, String documentName, MultipartFile file, String md5) {
-        MarkPaper markPaper=markPaperService.getByExamIdAndPaperNumber(examId,paperNumber);
-        if(markPaper==null || !markPaper.getStatus().equals(MarkPaperStatus.FINISH)){
+        MarkPaper markPaper = markPaperService.getByExamIdAndPaperNumber(examId, paperNumber);
+        if (markPaper == null || !markPaper.getStatus().equals(MarkPaperStatus.FINISH)) {
             throw ExceptionResultEnum.ERROR.exception("评卷未结束或试卷不存在");
         }
         QueryWrapper<MarkDocument> queryWrapper = new QueryWrapper<>();
@@ -115,8 +116,8 @@ public class MarkDocumentServiceImpl extends ServiceImpl<MarkDocumentMapper, Mar
                 .eq(MarkDocument::getPaperNumber, paperNumber)
                 .eq(MarkDocument::getName, documentName);
         MarkDocument document = this.getOne(queryWrapper);
-        if(document!=null){
-            throw ExceptionResultEnum.ERROR.exception(documentName+"已存在");
+        if (document != null) {
+            throw ExceptionResultEnum.ERROR.exception(documentName + "已存在");
         }
         document = new MarkDocument();
         document.setExamId(examId);
@@ -127,17 +128,17 @@ public class MarkDocumentServiceImpl extends ServiceImpl<MarkDocumentMapper, Mar
         document.setName(documentName);
         document.setFileCount(1);
         try {
-            String fileMd5  = DigestUtils.md5Hex(file.getBytes());
+            String fileMd5 = DigestUtils.md5Hex(file.getBytes());
             if (!Objects.equals(fileMd5, md5)) {
                 throw ExceptionResultEnum.MD5_EQUALS_FALSE.exception();
             }
             String format = FilenameUtils.getExtension(file.getOriginalFilename());
             String name = document.getType().getName();
-            if(document.getType().equals(DocumentType.CUSTOM)){
+            if (document.getType().equals(DocumentType.CUSTOM)) {
                 name = document.getName();
             }
             String path = markFileService.uploadDocument(file.getInputStream(),
-                    md5,examId,paperNumber,String.valueOf(document.getType().getValue()),documentName,format);
+                    md5, examId, paperNumber, String.valueOf(document.getType().getValue()), documentName, format);
             document.setFilePath(path);
             this.save(document);
             return teachcloudCommonService.filePreview(path);
@@ -146,4 +147,16 @@ public class MarkDocumentServiceImpl extends ServiceImpl<MarkDocumentMapper, Mar
             throw new ParameterException("文件上传失败", e);
         }
     }
+
+    @Override
+    public void initMarkDocument(MarkPaper markPaper) {
+        List<MarkDocument> markDocumentList = this.listByExamIdAndPaperNumber(markPaper.getExamId(), markPaper.getPaperNumber());
+        if (CollectionUtils.isEmpty(markDocumentList)) {
+            for (DocumentType documentType : DocumentType.getOptionList(false)) {
+                MarkDocument markDocument = new MarkDocument(markPaper.getExamId(), markPaper.getCourseCode(), markPaper.getCourseName(), markPaper.getPaperNumber(), documentType, documentType.getName());
+            }
+        } else {
+
+        }
+    }
 }

+ 15 - 11
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkPaperServiceImpl.java

@@ -1,16 +1,5 @@
 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;
@@ -40,6 +29,15 @@ 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>
@@ -64,6 +62,8 @@ public class MarkPaperServiceImpl extends ServiceImpl<MarkPaperMapper, MarkPaper
     private MarkStudentService markStudentService;
     @Resource
     private MarkUserGroupService markUserGroupService;
+    @Resource
+    private MarkDocumentService markDocumentService;
 
 
     @Override
@@ -168,6 +168,9 @@ public class MarkPaperServiceImpl extends ServiceImpl<MarkPaperMapper, MarkPaper
                 for (MarkStudent markStudent : markStudentList) {
                     markStudentService.calculateObjectiveScore(markStudent);
                 }
+
+                // 结束评卷时,文档进行归档
+                markDocumentService.initMarkDocument(markPaper);
             }
 
             UpdateWrapper<MarkPaper> updateWrapper = new UpdateWrapper<>();
@@ -335,6 +338,7 @@ 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();