浏览代码

卡格式新增sliceconfig,考生增加card number,轨迹还原优先从考生取

ting.yin 2 年之前
父节点
当前提交
3d55df193c

+ 6 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/ExamStudentDao.java

@@ -208,4 +208,10 @@ public interface ExamStudentDao extends PagingAndSortingRepository<ExamStudent,
     @Query("select distinct m.subjectCode from ExamStudent m where m.examId=?1 and m.subjectiveStatus in (?2) ")
     @Query("select distinct m.subjectCode from ExamStudent m where m.examId=?1 and m.subjectiveStatus in (?2) ")
     Set<String> findSubjectUnInspectedByExamId(int examId, SubjectiveStatus... status);
     Set<String> findSubjectUnInspectedByExamId(int examId, SubjectiveStatus... status);
 
 
+    @Query("select s.college from ExamStudent s where s.examId=?1 group by s.college")
+    public List<String> findDistinctCollege(int examId);
+
+    @Query("select distinct m.subjectCode from ExamStudent m where m.examId=?1 and m.college=?2 ")
+    public List<String> findDistinctSubjectCodeByCollege(int examId, String college);
+
 }
 }

+ 17 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/model/AnswerCard.java

@@ -2,6 +2,7 @@ package cn.com.qmth.stmms.biz.exam.model;
 
 
 import java.io.Serializable;
 import java.io.Serializable;
 import java.util.Date;
 import java.util.Date;
+import java.util.List;
 
 
 import javax.persistence.Column;
 import javax.persistence.Column;
 import javax.persistence.EmbeddedId;
 import javax.persistence.EmbeddedId;
@@ -12,6 +13,7 @@ import javax.persistence.Table;
 import javax.persistence.Temporal;
 import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 import javax.persistence.TemporalType;
 
 
+import cn.com.qmth.stmms.biz.mark.model.PictureConfigItem;
 import cn.com.qmth.stmms.common.enums.CardSource;
 import cn.com.qmth.stmms.common.enums.CardSource;
 
 
 /**
 /**
@@ -48,6 +50,9 @@ public class AnswerCard implements Serializable {
 
 
     private String md5;
     private String md5;
 
 
+    @Column(name = "slice_config", nullable = false)
+    private String sliceConfig;
+
     @Temporal(TemporalType.TIMESTAMP)
     @Temporal(TemporalType.TIMESTAMP)
     @Column(name = "update_time")
     @Column(name = "update_time")
     private Date updateTime;
     private Date updateTime;
@@ -144,4 +149,16 @@ public class AnswerCard implements Serializable {
         this.md5 = md5;
         this.md5 = md5;
     }
     }
 
 
+    public String getSliceConfig() {
+        return sliceConfig;
+    }
+
+    public void setSliceConfig(String sliceConfig) {
+        this.sliceConfig = sliceConfig;
+    }
+
+    public List<PictureConfigItem> getSliceConfigList() {
+        return PictureConfigItem.parse(sliceConfig);
+    }
+
 }
 }

+ 11 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/model/ExamStudent.java

@@ -277,6 +277,9 @@ public class ExamStudent implements Serializable {
     @Column(name = "inspector_id")
     @Column(name = "inspector_id")
     private Integer inspectorId;
     private Integer inspectorId;
 
 
+    @Column(name = "card_number", nullable = true)
+    private Integer cardNumber;
+
     /**
     /**
      * 科目备注信息
      * 科目备注信息
      */
      */
@@ -876,4 +879,12 @@ public class ExamStudent implements Serializable {
         this.problemRestTime = problemRestTime;
         this.problemRestTime = problemRestTime;
     }
     }
 
 
+    public Integer getCardNumber() {
+        return cardNumber;
+    }
+
+    public void setCardNumber(Integer cardNumber) {
+        this.cardNumber = cardNumber;
+    }
+
 }
 }

+ 4 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/ExamStudentService.java

@@ -155,4 +155,8 @@ public interface ExamStudentService {
     public long countSheetCountByExamIdAndSubjectCode(int examId, String code);
     public long countSheetCountByExamIdAndSubjectCode(int examId, String code);
 
 
     public Set<String> findSubjectUnInspectedByExamId(int examId);
     public Set<String> findSubjectUnInspectedByExamId(int examId);
+
+    public List<String> findDistinctCollege(int examId);
+
+    public List<String> findDistinctSubjectCodeByCollege(int examId, String college);
 }
 }

+ 25 - 1
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/ExamStudentServiceImpl.java

@@ -29,6 +29,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 
 import cn.com.qmth.stmms.biz.common.BaseQueryService;
 import cn.com.qmth.stmms.biz.common.BaseQueryService;
 import cn.com.qmth.stmms.biz.exam.dao.ExamStudentDao;
 import cn.com.qmth.stmms.biz.exam.dao.ExamStudentDao;
+import cn.com.qmth.stmms.biz.exam.model.AnswerCard;
 import cn.com.qmth.stmms.biz.exam.model.Exam;
 import cn.com.qmth.stmms.biz.exam.model.Exam;
 import cn.com.qmth.stmms.biz.exam.model.ExamPackage;
 import cn.com.qmth.stmms.biz.exam.model.ExamPackage;
 import cn.com.qmth.stmms.biz.exam.model.ExamQuestion;
 import cn.com.qmth.stmms.biz.exam.model.ExamQuestion;
@@ -36,6 +37,7 @@ import cn.com.qmth.stmms.biz.exam.model.ExamStudent;
 import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
 import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
 import cn.com.qmth.stmms.biz.exam.model.MarkGroup;
 import cn.com.qmth.stmms.biz.exam.model.MarkGroup;
 import cn.com.qmth.stmms.biz.exam.query.ExamStudentSearchQuery;
 import cn.com.qmth.stmms.biz.exam.query.ExamStudentSearchQuery;
+import cn.com.qmth.stmms.biz.exam.service.AnswerCardService;
 import cn.com.qmth.stmms.biz.exam.service.CheckStudentService;
 import cn.com.qmth.stmms.biz.exam.service.CheckStudentService;
 import cn.com.qmth.stmms.biz.exam.service.ExamPackageService;
 import cn.com.qmth.stmms.biz.exam.service.ExamPackageService;
 import cn.com.qmth.stmms.biz.exam.service.ExamQuestionService;
 import cn.com.qmth.stmms.biz.exam.service.ExamQuestionService;
@@ -89,6 +91,9 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
     @Autowired
     @Autowired
     private CheckStudentService checkStudentService;
     private CheckStudentService checkStudentService;
 
 
+    @Autowired
+    private AnswerCardService cardService;
+
     public static final String LOGINNAME_SPLITE = "-";
     public static final String LOGINNAME_SPLITE = "-";
 
 
     public static final String USER_PASSWORD = "123456";
     public static final String USER_PASSWORD = "123456";
@@ -860,7 +865,16 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
         Map<MarkGroup, List<OriginTag>> tagMap = new HashMap<MarkGroup, List<OriginTag>>();
         Map<MarkGroup, List<OriginTag>> tagMap = new HashMap<MarkGroup, List<OriginTag>>();
         Exam exam = examService.findById(student.getExamId());
         Exam exam = examService.findById(student.getExamId());
         ExamSubject subject = subjectService.find(student.getExamId(), student.getSubjectCode());
         ExamSubject subject = subjectService.find(student.getExamId(), student.getSubjectCode());
-        List<PictureConfigItem> sliceConfig = subject.getSliceConfigList();
+        List<PictureConfigItem> sliceConfig = new ArrayList<PictureConfigItem>();
+        if (student.getCardNumber() != null) {
+            AnswerCard card = cardService.findByExamIdAndNumber(student.getExamId(), student.getCardNumber());
+            if (card != null) {
+                sliceConfig = card.getSliceConfigList();
+            }
+        }
+        if (sliceConfig.isEmpty()) {
+            sliceConfig = subject.getSliceConfigList();
+        }
         if (sliceConfig.isEmpty()) {
         if (sliceConfig.isEmpty()) {
             sliceConfig = exam.getSliceConfigList();
             sliceConfig = exam.getSliceConfigList();
         }
         }
@@ -1109,4 +1123,14 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
     public Set<String> findSubjectUnInspectedByExamId(int examId) {
     public Set<String> findSubjectUnInspectedByExamId(int examId) {
         return studentDao.findSubjectUnInspectedByExamId(examId, SubjectiveStatus.MARKED);
         return studentDao.findSubjectUnInspectedByExamId(examId, SubjectiveStatus.MARKED);
     }
     }
+
+    @Override
+    public List<String> findDistinctCollege(int examId) {
+        return studentDao.findDistinctCollege(examId);
+    }
+
+    @Override
+    public List<String> findDistinctSubjectCodeByCollege(int examId, String college) {
+        return studentDao.findDistinctSubjectCodeByCollege(examId, college);
+    }
 }
 }

+ 3 - 1
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/CardController.java

@@ -81,7 +81,8 @@ public class CardController extends BaseApiController {
             @RequestParam(required = false) Integer number, @RequestParam(required = false) String subjectCode,
             @RequestParam(required = false) Integer number, @RequestParam(required = false) String subjectCode,
             @RequestParam String source, @RequestParam Integer paperCount, @RequestParam Boolean singlePage,
             @RequestParam String source, @RequestParam Integer paperCount, @RequestParam Boolean singlePage,
             @RequestParam Boolean needAdapte, @RequestParam(required = false) String parameter,
             @RequestParam Boolean needAdapte, @RequestParam(required = false) String parameter,
-            @RequestParam(required = false) String remark, @RequestParam String md5, @RequestParam MultipartFile file) {
+            @RequestParam(required = false) String remark, @RequestParam String md5, @RequestParam String sliceConfig,
+            @RequestParam MultipartFile file) {
         ApiUser au = RequestUtils.getApiUser(request);
         ApiUser au = RequestUtils.getApiUser(request);
         subjectCode = StringUtils.trimToNull(subjectCode);
         subjectCode = StringUtils.trimToNull(subjectCode);
         validateExam(au, examId, ExamType.SCAN_IMAGE);
         validateExam(au, examId, ExamType.SCAN_IMAGE);
@@ -101,6 +102,7 @@ public class CardController extends BaseApiController {
                 card.setExamId(examId);
                 card.setExamId(examId);
                 card.setNumber(number);
                 card.setNumber(number);
             }
             }
+            card.setSliceConfig(sliceConfig);
             card.setMd5(md5);
             card.setMd5(md5);
             card.setNeedAdapte(needAdapte);
             card.setNeedAdapte(needAdapte);
             card.setPaperCount(paperCount);
             card.setPaperCount(paperCount);

+ 1 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/ScanController.java

@@ -81,6 +81,7 @@ public class ScanController extends BaseApiController {
                             continue;
                             continue;
                         }
                         }
                     }
                     }
+                    student.setCardNumber(sc.getCardNumber());
                     // 同步更新评卷任务
                     // 同步更新评卷任务
                     if (saveUploadStudent(student)) {
                     if (saveUploadStudent(student)) {
                         JSONObject obj = new JSONObject();
                         JSONObject obj = new JSONObject();

+ 10 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/api/utils/ScanStudentParameter.java

@@ -18,6 +18,8 @@ public class ScanStudentParameter {
 
 
     private boolean manual;
     private boolean manual;
 
 
+    private Integer cardNumber;
+
     public String getExamNumber() {
     public String getExamNumber() {
         return examNumber;
         return examNumber;
     }
     }
@@ -82,4 +84,12 @@ public class ScanStudentParameter {
         this.manual = manual;
         this.manual = manual;
     }
     }
 
 
+    public Integer getCardNumber() {
+        return cardNumber;
+    }
+
+    public void setCardNumber(Integer cardNumber) {
+        this.cardNumber = cardNumber;
+    }
+
 }
 }