xiaofei 1 år sedan
förälder
incheckning
995d0b7d32
16 ändrade filer med 96 tillägg och 77 borttagningar
  1. 1 1
      distributed-print/install/mysql/upgrade/3.3.0.sql
  2. 23 25
      distributed-print/src/main/java/com/qmth/distributed/print/api/mark/ScanController.java
  3. 0 26
      distributed-print/src/main/java/com/qmth/distributed/print/config/SysProperty.java
  4. 1 3
      distributed-print/src/main/resources/application.properties
  5. 1 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java
  6. 2 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/mark/MarkProblemType.java
  7. 1 1
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/bean/vo/parseCard/Columns.java
  8. 1 1
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/bean/vo/parseCard/ElementParent.java
  9. 1 1
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/bean/vo/parseCard/Elements.java
  10. 1 1
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/bean/vo/parseCard/Pages.java
  11. 1 1
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/bean/vo/parseCard/Struct.java
  12. 1 1
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/bean/vo/parseCard/StructData.java
  13. 1 0
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/entity/MarkQuestion.java
  14. 15 3
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/enums/QuestionType.java
  15. 17 11
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/utils/CardParseUtils.java
  16. 29 1
      teachcloud-task/src/main/java/com/qmth/teachcloud/task/service/impl/PrintFinishServiceImpl.java

+ 1 - 1
distributed-print/install/mysql/upgrade/3.3.0.sql

@@ -90,7 +90,7 @@ 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 ('962', '评卷区设置', '/api/admin/mark/group/update_picture_config', 'URL', '897', '13', 'AUTH', '1', '1', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('962', '评卷区设置', '/api/admin/mark/group/update_picture_config', 'URL', '897', '13', 'AUTH', '1', '1', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('963', '开启/关闭分班阅', '/api/admin/mark/group/update_open_mark_class', 'URL', '897', '14', 'AUTH', '1', '1', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('963', '开启/关闭分班阅', '/api/admin/mark/group/update_open_mark_class', 'URL', '897', '14', 'AUTH', '1', '1', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('964', '班级阅卷进度', '/api/admin/mark/group/class/summary', 'URL', '917', '20', 'AUTH', '1', '1', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('964', '班级阅卷进度', '/api/admin/mark/group/class/summary', 'URL', '917', '20', 'AUTH', '1', '1', '1');
-INSERT INTO `sys_privilege` (`id`, `name`, `url`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('965', '绑定评卷员', '/api/admin/mark/marker/add', '917', '21', 'AUTH', '1', '1', '1');
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('965', '绑定评卷员', '/api/admin/mark/marker/add', 'URL', '917', '21', 'AUTH', '1', '1', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('966', '评卷质量重新计算', '/api/admin/mark/quality/update', 'URL', '917', '22', 'AUTH', '1', '1', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('966', '评卷质量重新计算', '/api/admin/mark/quality/update', 'URL', '917', '22', 'AUTH', '1', '1', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('967', '评卷质量给分曲线', '/api/admin/mark/quality/chart', 'URL', '917', '23', 'AUTH', '1', '1', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('967', '评卷质量给分曲线', '/api/admin/mark/quality/chart', 'URL', '917', '23', 'AUTH', '1', '1', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `sequence`, `related`, `enable`, `default_auth`, `front_display`) VALUES ('970', '扫描端', 'scan', 'MENU', '11', '971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005', '1', '0', '0');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `sequence`, `related`, `enable`, `default_auth`, `front_display`) VALUES ('970', '扫描端', 'scan', 'MENU', '11', '971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005', '1', '0', '0');

+ 23 - 25
distributed-print/src/main/java/com/qmth/distributed/print/api/mark/ScanController.java

@@ -1,46 +1,43 @@
 package com.qmth.distributed.print.api.mark;
 package com.qmth.distributed.print.api.mark;
 
 
 
 
-import java.security.NoSuchAlgorithmException;
-import java.util.List;
-import java.util.Objects;
-import java.util.Set;
-import java.util.concurrent.TimeUnit;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import javax.validation.Valid;
-
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.qmth.boot.api.annotation.Aac;
+import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.boot.core.enums.Platform;
 import com.qmth.distributed.print.business.bean.params.ClientLoginParam;
 import com.qmth.distributed.print.business.bean.params.ClientLoginParam;
 import com.qmth.distributed.print.business.service.ClientService;
 import com.qmth.distributed.print.business.service.ClientService;
+import com.qmth.teachcloud.common.bean.auth.ExpireTimeBean;
 import com.qmth.teachcloud.common.bean.result.LoginClientResult;
 import com.qmth.teachcloud.common.bean.result.LoginClientResult;
 import com.qmth.teachcloud.common.bean.result.LoginResult;
 import com.qmth.teachcloud.common.bean.result.LoginResult;
+import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.BasicSchool;
 import com.qmth.teachcloud.common.entity.BasicSchool;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.entity.TBSession;
 import com.qmth.teachcloud.common.enums.AppSourceEnum;
 import com.qmth.teachcloud.common.enums.AppSourceEnum;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.service.BasicSemesterService;
 import com.qmth.teachcloud.common.service.CommonCacheService;
 import com.qmth.teachcloud.common.service.CommonCacheService;
 import com.qmth.teachcloud.common.service.SysUserService;
 import com.qmth.teachcloud.common.service.SysUserService;
 import com.qmth.teachcloud.common.service.TeachcloudCommonService;
 import com.qmth.teachcloud.common.service.TeachcloudCommonService;
 import com.qmth.teachcloud.common.util.*;
 import com.qmth.teachcloud.common.util.*;
+import com.qmth.teachcloud.mark.bean.sys.ActiveTimeVo;
+import com.qmth.teachcloud.mark.bean.sys.ApiStatusVo;
 import io.swagger.annotations.*;
 import io.swagger.annotations.*;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.validation.BindingResult;
 import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.RestController;
 
 
-import com.qmth.boot.api.annotation.Aac;
-import com.qmth.boot.api.constant.ApiConstant;
-import com.qmth.boot.core.enums.Platform;
-import com.qmth.distributed.print.config.SysProperty;
-import com.qmth.teachcloud.common.bean.auth.ExpireTimeBean;
-import com.qmth.teachcloud.common.contant.SystemConstant;
-import com.qmth.teachcloud.common.entity.TBSession;
-import com.qmth.teachcloud.common.service.BasicSemesterService;
-import com.qmth.teachcloud.mark.bean.sys.ActiveTimeVo;
-import com.qmth.teachcloud.mark.bean.sys.ApiStatusVo;
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.validation.Valid;
+import java.security.NoSuchAlgorithmException;
+import java.util.Objects;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -55,6 +52,9 @@ import com.qmth.teachcloud.mark.bean.sys.ApiStatusVo;
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_SCAN)
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_SCAN)
 public class ScanController {
 public class ScanController {
 
 
+    @Value("${com.qmth.fss.private.server}")
+    private String fileUriPrefix;
+
     @Resource
     @Resource
     BasicSemesterService basicSemesterService;
     BasicSemesterService basicSemesterService;
     @Resource
     @Resource
@@ -66,8 +66,6 @@ public class ScanController {
     @Resource
     @Resource
     private SysUserService sysUserService;
     private SysUserService sysUserService;
     @Resource
     @Resource
-    private SysProperty sysProperty;
-    @Resource
     private RedisUtil redisUtil;
     private RedisUtil redisUtil;
 
 
     /**
     /**
@@ -106,11 +104,11 @@ public class ScanController {
 
 
     @Aac(auth = false)
     @Aac(auth = false)
     @ApiOperation(value = "服务端状态")
     @ApiOperation(value = "服务端状态")
-    @RequestMapping("server/status")
+    @PostMapping("server/status")
     public ApiStatusVo status(HttpServletRequest request) {
     public ApiStatusVo status(HttpServletRequest request) {
         ApiStatusVo vo = new ApiStatusVo();
         ApiStatusVo vo = new ApiStatusVo();
-        vo.setFileUriPrefix(sysProperty.getFileUriPrefix());
-        vo.setVersion(sysProperty.getVersion());
+        vo.setFileUriPrefix(fileUriPrefix);
+        vo.setVersion(SystemConstant.VERSION_VALUE);
         vo.setTime(System.currentTimeMillis());
         vo.setTime(System.currentTimeMillis());
         return vo;
         return vo;
     }
     }

+ 0 - 26
distributed-print/src/main/java/com/qmth/distributed/print/config/SysProperty.java

@@ -1,26 +0,0 @@
-package com.qmth.distributed.print.config;
-
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
-
-@Component
-public class SysProperty {
-	@Value("${com.qmth.solar.app-version}")
-	private String version;
-    @Value("${teachcloud.file-uri-prefix}")
-    private String fileUriPrefix;
-	public String getVersion() {
-		return version;
-	}
-	public void setVersion(String version) {
-		this.version = version;
-	}
-	public String getFileUriPrefix() {
-		return fileUriPrefix;
-	}
-	public void setFileUriPrefix(String fileUriPrefix) {
-		this.fileUriPrefix = fileUriPrefix;
-	}
-	
-	
-}

+ 1 - 3
distributed-print/src/main/resources/application.properties

@@ -99,6 +99,4 @@ com.qmth.logging.file-path=/Users/xiaofei/qmth/temporary/zxzk/log/distributed-pr
 com.qmth.solar.access-key=274f823e5f59410f8b3bb6edcd8e2b6e
 com.qmth.solar.access-key=274f823e5f59410f8b3bb6edcd8e2b6e
 com.qmth.solar.access-secret=y7AO6W0TOdTF8HpWBwGHbp3wfIHsmUKr
 com.qmth.solar.access-secret=y7AO6W0TOdTF8HpWBwGHbp3wfIHsmUKr
 
 
-com.qmth.sms.server=https://solar.qmth.com.cn
-teachcloud.file-uri-prefix=file
-com.qmth.solar.app-version=@project.version@
+com.qmth.sms.server=https://solar.qmth.com.cn

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

@@ -250,7 +250,7 @@ public class SystemConstant {
     public static final String ID = "id";
     public static final String ID = "id";
     public static final String MODEL = "model";
     public static final String MODEL = "model";
     public static final String VERSION = "version";
     public static final String VERSION = "version";
-    public static final String VERSION_VALUE = "3.2.7.1";
+    public static final String VERSION_VALUE = "3.3.0.1";
     public static final String FLOW_ENTITY_ID = "flowEntityId";
     public static final String FLOW_ENTITY_ID = "flowEntityId";
     public static final String CUSTOM_FLOW_ID = "customFlowId";
     public static final String CUSTOM_FLOW_ID = "customFlowId";
     public static final String ACT_FLOW_ID = "actFlowId";
     public static final String ACT_FLOW_ID = "actFlowId";

+ 2 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/mark/MarkProblemType.java

@@ -1,5 +1,7 @@
 package com.qmth.teachcloud.common.enums.mark;
 package com.qmth.teachcloud.common.enums.mark;
 
 
+import com.baomidou.mybatisplus.annotation.EnumValue;
+
 import java.util.LinkedList;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.List;
 
 

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/vo/parseCard/Columns.java → teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/bean/vo/parseCard/Columns.java

@@ -1,4 +1,4 @@
-package com.qmth.distributed.print.business.bean.vo.parseCard;
+package com.qmth.teachcloud.mark.bean.vo.parseCard;
 
 
 import java.util.List;
 import java.util.List;
 
 

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/vo/parseCard/ElementParent.java → teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/bean/vo/parseCard/ElementParent.java

@@ -1,4 +1,4 @@
-package com.qmth.distributed.print.business.bean.vo.parseCard;
+package com.qmth.teachcloud.mark.bean.vo.parseCard;
 
 
 public class ElementParent {
 public class ElementParent {
     private String id;
     private String id;

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/vo/parseCard/Elements.java → teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/bean/vo/parseCard/Elements.java

@@ -1,4 +1,4 @@
-package com.qmth.distributed.print.business.bean.vo.parseCard;
+package com.qmth.teachcloud.mark.bean.vo.parseCard;
 
 
 public class Elements {
 public class Elements {
 
 

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/vo/parseCard/Pages.java → teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/bean/vo/parseCard/Pages.java

@@ -1,4 +1,4 @@
-package com.qmth.distributed.print.business.bean.vo.parseCard;
+package com.qmth.teachcloud.mark.bean.vo.parseCard;
 
 
 import java.util.List;
 import java.util.List;
 
 

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/vo/parseCard/Struct.java → teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/bean/vo/parseCard/Struct.java

@@ -1,4 +1,4 @@
-package com.qmth.distributed.print.business.bean.vo.parseCard;
+package com.qmth.teachcloud.mark.bean.vo.parseCard;
 
 
 public class Struct {
 public class Struct {
 
 

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/vo/parseCard/StructData.java → teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/bean/vo/parseCard/StructData.java

@@ -1,4 +1,4 @@
-package com.qmth.distributed.print.business.bean.vo.parseCard;
+package com.qmth.teachcloud.mark.bean.vo.parseCard;
 
 
 public class StructData {
 public class StructData {
 
 

+ 1 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/entity/MarkQuestion.java

@@ -2,6 +2,7 @@ package com.qmth.teachcloud.mark.entity;
 
 
 import java.io.Serializable;
 import java.io.Serializable;
 
 
+import com.baomidou.mybatisplus.annotation.EnumValue;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;

+ 15 - 3
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/enums/QuestionType.java

@@ -1,19 +1,27 @@
 package com.qmth.teachcloud.mark.enums;
 package com.qmth.teachcloud.mark.enums;
 
 
+import com.baomidou.mybatisplus.annotation.EnumValue;
+
 /**
 /**
  * 题型
  * 题型
- * 
  */
  */
 public enum QuestionType {
 public enum QuestionType {
-    SINGLE("单选", 1), MULTIPLE("多选", 2), TRUE_OR_FALSE("判断", 3);
+    SINGLE("单选题", 1, true),
+    MULTIPLE("多选题", 2, true),
+    TRUE_OR_FALSE("判断题", 3, true),
+    COMPLETION("填空题", 4, false),
+    QUESTION_ANSWER("解答题", 5, false);
 
 
     private String name;
     private String name;
 
 
+    @EnumValue
     private int value;
     private int value;
+    private Boolean isObjective;
 
 
-    private QuestionType(String name, int value) {
+    private QuestionType(String name, int value, Boolean isObjective) {
         this.name = name;
         this.name = name;
         this.value = value;
         this.value = value;
+        this.isObjective = isObjective;
     }
     }
 
 
     public String getName() {
     public String getName() {
@@ -24,6 +32,10 @@ public enum QuestionType {
         return value;
         return value;
     }
     }
 
 
+    public Boolean getObjective() {
+        return isObjective;
+    }
+
     public static QuestionType findByValue(int value) {
     public static QuestionType findByValue(int value) {
         for (QuestionType c : QuestionType.values()) {
         for (QuestionType c : QuestionType.values()) {
             if (c.getValue() == value) {
             if (c.getValue() == value) {

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 17 - 11
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/utils/CardParseUtils.java


+ 29 - 1
teachcloud-task/src/main/java/com/qmth/teachcloud/task/service/impl/PrintFinishServiceImpl.java

@@ -2,6 +2,7 @@ package com.qmth.teachcloud.task.service.impl;
 
 
 import com.qmth.distributed.print.business.bean.dto.initMarkData.ExamDetailCourseInitMarkDto;
 import com.qmth.distributed.print.business.bean.dto.initMarkData.ExamDetailCourseInitMarkDto;
 import com.qmth.distributed.print.business.bean.vo.PaperInfoVo;
 import com.qmth.distributed.print.business.bean.vo.PaperInfoVo;
+import com.qmth.teachcloud.mark.bean.vo.parseCard.Struct;
 import com.qmth.distributed.print.business.entity.ExamCard;
 import com.qmth.distributed.print.business.entity.ExamCard;
 import com.qmth.distributed.print.business.entity.ExamStudent;
 import com.qmth.distributed.print.business.entity.ExamStudent;
 import com.qmth.distributed.print.business.entity.ExamTaskDetail;
 import com.qmth.distributed.print.business.entity.ExamTaskDetail;
@@ -9,12 +10,15 @@ import com.qmth.distributed.print.business.service.ExamCardService;
 import com.qmth.distributed.print.business.service.ExamDetailCourseService;
 import com.qmth.distributed.print.business.service.ExamDetailCourseService;
 import com.qmth.distributed.print.business.service.ExamStudentService;
 import com.qmth.distributed.print.business.service.ExamStudentService;
 import com.qmth.distributed.print.business.service.ExamTaskDetailService;
 import com.qmth.distributed.print.business.service.ExamTaskDetailService;
+import com.qmth.teachcloud.mark.utils.CardParseUtils;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.enums.UploadFileEnum;
 import com.qmth.teachcloud.common.enums.UploadFileEnum;
 import com.qmth.teachcloud.mark.entity.MarkPaper;
 import com.qmth.teachcloud.mark.entity.MarkPaper;
+import com.qmth.teachcloud.mark.entity.MarkQuestion;
 import com.qmth.teachcloud.mark.entity.MarkStudent;
 import com.qmth.teachcloud.mark.entity.MarkStudent;
 import com.qmth.teachcloud.mark.entity.ScanAnswerCard;
 import com.qmth.teachcloud.mark.entity.ScanAnswerCard;
 import com.qmth.teachcloud.mark.enums.CardSource;
 import com.qmth.teachcloud.mark.enums.CardSource;
+import com.qmth.teachcloud.mark.enums.QuestionType;
 import com.qmth.teachcloud.mark.service.*;
 import com.qmth.teachcloud.mark.service.*;
 import com.qmth.teachcloud.mark.utils.FileStoreUtils;
 import com.qmth.teachcloud.mark.utils.FileStoreUtils;
 import com.qmth.teachcloud.task.service.PrintFinishService;
 import com.qmth.teachcloud.task.service.PrintFinishService;
@@ -101,7 +105,7 @@ public class PrintFinishServiceImpl implements PrintFinishService {
             for (PaperInfoVo paperInfoVo : paperInfoVoList) {
             for (PaperInfoVo paperInfoVo : paperInfoVoList) {
                 ExamCard examCard = examCardService.getById(paperInfoVo.getCardId());
                 ExamCard examCard = examCardService.getById(paperInfoVo.getCardId());
                 if (examCard != null) {
                 if (examCard != null) {
-
+                    // 解析卡格式中试卷结构并保存
                     this.insertMarkQuestion(dto.getExamId(), dto.getPaperNumber(), examCard.getContent());
                     this.insertMarkQuestion(dto.getExamId(), dto.getPaperNumber(), examCard.getContent());
 
 
                     ScanAnswerCard scanAnswerCard = scanAnswerCardService.getByExamIdAndCoursePaperIdAndCardId(dto.getExamId(), dto.getCoursePaperId(), paperInfoVo.getCardId());
                     ScanAnswerCard scanAnswerCard = scanAnswerCardService.getByExamIdAndCoursePaperIdAndCardId(dto.getExamId(), dto.getCoursePaperId(), paperInfoVo.getCardId());
@@ -142,6 +146,30 @@ public class PrintFinishServiceImpl implements PrintFinishService {
 
 
     @Override
     @Override
     public void insertMarkQuestion(Long examId, String paperNumber, String content) {
     public void insertMarkQuestion(Long examId, String paperNumber, String content) {
+        List<Struct> structList = CardParseUtils.parseCardContent(content);
+        if(CollectionUtils.isEmpty(structList)){
+            return;
+        }
+        List<MarkQuestion> markQuestionList = markQuestionService.listQuestionByExamIdAndPaperNumber(examId, paperNumber);
+        if(CollectionUtils.isEmpty(markQuestionList)){
+            List<MarkQuestion> markQuestions = new ArrayList<>();
+            for (Struct struct : structList) {
+                MarkQuestion markQuestion = new MarkQuestion();
+                markQuestion.setId(SystemConstant.getDbUuid());
+                markQuestion.setExamId(examId);
+                markQuestion.setPaperNumber(paperNumber);
+                markQuestion.setObjective(struct.getObjective());
+                markQuestion.setMainNumber(struct.getMainNumber());
+                markQuestion.setSubNumber(struct.getSubNumber());
+                markQuestion.setMainTitle(struct.getMainTitle());
+                markQuestion.setQuestionType(QuestionType.findByValue(struct.getType()));
+                markQuestion.setPaperIndex(struct.getPaperIndex());
+                markQuestion.setPageIndex(struct.getPageIndex());
+                markQuestions.add(markQuestion);
+            }
+            markQuestionService.saveBatch(markQuestions);
+        } else {
 
 
+        }
     }
     }
 }
 }

Vissa filer visades inte eftersom för många filer har ändrats